????

Your IP : 3.134.253.166


Current Path : C:/inetpub/vhost/bcvt.kontum.gov.vn/www/
Upload File :
Current File : C:/inetpub/vhost/bcvt.kontum.gov.vn/www/95-es5.js

(function () {
  var absMids = {
    "esri/libs/amcharts4/index": "./node_modules/arcgis-js-api/libs/amcharts4/index.js"
  };
  var globalObj = this || window;
  var jsonpArray = globalObj["webpackJsonp"] = globalObj["webpackJsonp"] || [];

  if (jsonpArray.registerAbsMids) {
    jsonpArray.registerAbsMids(absMids);
  } else {
    var absMidsWaiting = jsonpArray.absMidsWaiting = jsonpArray.absMidsWaiting || [];
    absMidsWaiting.push(absMids);
  }
})(), (window["webpackJsonp"] = window["webpackJsonp"] || []).push([[95], {
  /***/
  "./node_modules/arcgis-js-api/libs/amcharts4/index.js":
  /*!************************************************************!*\
    !*** ./node_modules/arcgis-js-api/libs/amcharts4/index.js ***!
    \************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiLibsAmcharts4IndexJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.

    /*! *****************************************************************************
    Copyright (c) Microsoft Corporation. All rights reserved.
    Licensed under the Apache License, Version 2.0 (the "License"); you may not use
    this file except in compliance with the License. You may obtain a copy of the
    License at http://www.apache.org/licenses/LICENSE-2.0
    
    THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
    WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
    MERCHANTABLITY OR NON-INFRINGEMENT.
    
    See the Apache Version 2.0 License for specific language governing permissions
    and limitations under the License.
    ***************************************************************************** */


    !(__WEBPACK_AMD_DEFINE_RESULT__ = function () {
      return function (t) {
        function e(e) {
          for (var i, n, s = e[0], o = e[1], a = 0, h = []; a < s.length; a++) n = s[a], Object.prototype.hasOwnProperty.call(r, n) && r[n] && h.push(r[n][0]), r[n] = 0;

          for (i in o) Object.prototype.hasOwnProperty.call(o, i) && (t[i] = o[i]);

          for (l && l(e); h.length;) h.shift()();
        }

        function i(e) {
          if (n[e]) return n[e].exports;
          var r = n[e] = {
            i: e,
            l: !1,
            exports: {}
          };
          return t[e].call(r.exports, r, r.exports, i), r.l = !0, r.exports;
        }

        var n = {},
            r = {
          0: 0
        };
        i.e = function (t) {
          var e = [],
              n = r[t];
          if (0 !== n) if (n) e.push(n[2]);else {
            var s = new Promise(function (e, i) {
              n = r[t] = [e, i];
            });
            e.push(n[2] = s);
            var o,
                a = document.createElement("script");
            a.charset = "utf-8", a.timeout = 120, i.nc && a.setAttribute("nonce", i.nc), a.src = function (t) {
              return i.p + "" + ({
                1: "vendors~canvg",
                2: "vendors~pdfmake",
                3: "vendors~xlsx",
                4: "xlsx"
              }[t] || t) + ".js";
            }(t);
            var l = new Error();

            o = function o(e) {
              a.onerror = a.onload = null, clearTimeout(h);
              var i = r[t];

              if (0 !== i) {
                if (i) {
                  var n = e && ("load" === e.type ? "missing" : e.type),
                      s = e && e.target && e.target.src;
                  l.message = "Loading chunk " + t + " failed.\n(" + n + ": " + s + ")", l.name = "ChunkLoadError", l.type = n, l.request = s, i[1](l);
                }

                r[t] = void 0;
              }
            };

            var h = setTimeout(function () {
              o({
                type: "timeout",
                target: a
              });
            }, 12e4);
            a.onerror = a.onload = o, document.head.appendChild(a);
          }
          return Promise.all(e);
        }, i.m = t, i.c = n, i.d = function (t, e, n) {
          i.o(t, e) || Object.defineProperty(t, e, {
            enumerable: !0,
            get: n
          });
        }, i.r = function (t) {
          "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, {
            value: "Module"
          }), Object.defineProperty(t, "__esModule", {
            value: !0
          });
        }, i.t = function (t, e) {
          if (1 & e && (t = i(t)), 8 & e) return t;
          if (4 & e && "object" == typeof t && t && t.__esModule) return t;
          var n = Object.create(null);
          if (i.r(n), Object.defineProperty(n, "default", {
            enumerable: !0,
            value: t
          }), 2 & e && "string" != typeof t) for (var r in t) i.d(n, r, function (e) {
            return t[e];
          }.bind(null, r));
          return n;
        }, i.n = function (t) {
          var e = t && t.__esModule ? function () {
            return t["default"];
          } : function () {
            return t;
          };
          return i.d(e, "a", e), e;
        }, i.o = function (t, e) {
          return Object.prototype.hasOwnProperty.call(t, e);
        }, i.p = "", i.oe = function (t) {
          throw console.error(t), t;
        };
        var s = window.webpackJsonpEsriAmCharts = window.webpackJsonpEsriAmCharts || [],
            o = s.push.bind(s);
        s.push = e, s = s.slice();

        for (var a = 0; a < s.length; a++) e(s[a]);

        var l = o;
        return i(i.s = 1);
      }([function (t, e, i) {
        "use strict";

        var n, r;
        "undefined" != typeof window && window, void 0 === (r = "function" == typeof (n = function n() {
          function t(t, e) {
            var i = Object.prototype.toString.call(t),
                n = "[object Array]" === i || "[object NodeList]" === i || "[object HTMLCollection]" === i || "[object Object]" === i || "undefined" != typeof jQuery && t instanceof jQuery || "undefined" != typeof Elements && t instanceof Elements,
                r = 0,
                s = t.length;
            if (n) for (; r < s; r++) e(t[r]);else e(t);
          }

          function e(t) {
            if (!t.getBoundingClientRect) return {
              width: t.offsetWidth,
              height: t.offsetHeight
            };
            var e = t.getBoundingClientRect();
            return {
              width: Math.round(e.width),
              height: Math.round(e.height)
            };
          }

          function i(t, e) {
            Object.keys(e).forEach(function (i) {
              t.style[i] = e[i];
            });
          }

          if ("undefined" == typeof window) return null;

          var n = "undefined" != typeof window && window.Math == Math ? window : "undefined" != typeof self && self.Math == Math ? self : Function("return this")(),
              r = n.requestAnimationFrame || n.mozRequestAnimationFrame || n.webkitRequestAnimationFrame || function (t) {
            return n.setTimeout(t, 20);
          },
              s = function s(n, o) {
            function a() {
              var t,
                  e,
                  i = [];
              this.add = function (t) {
                i.push(t);
              }, this.call = function (n) {
                for (t = 0, e = i.length; t < e; t++) i[t].call(this, n);
              }, this.remove = function (n) {
                var r = [];

                for (t = 0, e = i.length; t < e; t++) i[t] !== n && r.push(i[t]);

                i = r;
              }, this.length = function () {
                return i.length;
              };
            }

            function l(t, n) {
              if (t) if (t.resizedAttached) t.resizedAttached.add(n);else {
                t.resizedAttached = new a(), t.resizedAttached.add(n), t.resizeSensor = document.createElement("div"), t.resizeSensor.dir = "ltr", t.resizeSensor.className = "resize-sensor";
                var s = {
                  pointerEvents: "none",
                  position: "absolute",
                  left: "0px",
                  top: "0px",
                  right: "0px",
                  bottom: "0px",
                  overflow: "hidden",
                  zIndex: "-1",
                  visibility: "hidden",
                  maxWidth: "100%"
                },
                    o = {
                  position: "absolute",
                  left: "0px",
                  top: "0px",
                  transition: "0s"
                };
                i(t.resizeSensor, s);
                var l = document.createElement("div");
                l.className = "resize-sensor-expand", i(l, s);
                var h = document.createElement("div");
                i(h, o), l.appendChild(h);
                var u = document.createElement("div");
                u.className = "resize-sensor-shrink", i(u, s);
                var p = document.createElement("div");
                i(p, o), i(p, {
                  width: "200%",
                  height: "200%"
                }), u.appendChild(p), t.resizeSensor.appendChild(l), t.resizeSensor.appendChild(u), t.appendChild(t.resizeSensor);
                var c,
                    d,
                    f = window.getComputedStyle(t),
                    g = f ? f.getPropertyValue("position") : null;
                "absolute" !== g && "relative" !== g && "fixed" !== g && (t.style.position = "relative");

                var y = e(t),
                    m = 0,
                    v = 0,
                    b = !0,
                    x = 0,
                    _ = function _() {
                  if (b) {
                    if (0 === t.offsetWidth && 0 === t.offsetHeight) return void (x || (x = r(function () {
                      x = 0, _();
                    })));
                    b = !1;
                  }

                  var e, i;
                  e = t.offsetWidth, i = t.offsetHeight, h.style.width = e + 10 + "px", h.style.height = i + 10 + "px", l.scrollLeft = e + 10, l.scrollTop = i + 10, u.scrollLeft = e + 10, u.scrollTop = i + 10;
                };

                t.resizeSensor.resetSensor = _;

                var P = function P() {
                  d = 0, c && (m = y.width, v = y.height, t.resizedAttached && t.resizedAttached.call(y));
                },
                    w = function w() {
                  y = e(t), (c = y.width !== m || y.height !== v) && !d && (d = r(P)), _();
                },
                    C = function C(t, e, i) {
                  t.attachEvent ? t.attachEvent("on" + e, i) : t.addEventListener(e, i);
                };

                C(l, "scroll", w), C(u, "scroll", w), r(_);
              }
            }

            t(n, function (t) {
              l(t, o);
            }), this.detach = function (t) {
              s.detach(n, t);
            }, this.reset = function () {
              n.resizeSensor.resetSensor();
            };
          };

          if (s.reset = function (e) {
            t(e, function (t) {
              t.resizeSensor.resetSensor();
            });
          }, s.detach = function (e, i) {
            t(e, function (t) {
              t && (t.resizedAttached && "function" == typeof i && (t.resizedAttached.remove(i), t.resizedAttached.length()) || t.resizeSensor && (t.contains(t.resizeSensor) && t.removeChild(t.resizeSensor), delete t.resizeSensor, delete t.resizedAttached));
            });
          }, "undefined" != typeof MutationObserver) {
            var o = new MutationObserver(function (t) {
              for (var e in t) if (t.hasOwnProperty(e)) for (var i = t[e].addedNodes, n = 0; n < i.length; n++) i[n].resizeSensor && s.reset(i[n]);
            });
            document.addEventListener("DOMContentLoaded", function (t) {
              o.observe(document.body, {
                childList: !0,
                subtree: !0
              });
            });
          }

          return s;
        }) ? n.call(e, i, e, t) : n) || (t.exports = r);
      }, function (t, e, i) {
        "use strict";

        function n(t, e) {
          function i() {
            this.constructor = t;
          }

          _as(t, e), t.prototype = null === e ? Object.create(e) : (i.prototype = e.prototype, new i());
        }

        function r(t, e, i, n) {
          return new (i || (i = Promise))(function (r, s) {
            function o(t) {
              try {
                l(n.next(t));
              } catch (t) {
                s(t);
              }
            }

            function a(t) {
              try {
                l(n["throw"](t));
              } catch (t) {
                s(t);
              }
            }

            function l(t) {
              t.done ? r(t.value) : new i(function (e) {
                e(t.value);
              }).then(o, a);
            }

            l((n = n.apply(t, e || [])).next());
          });
        }

        function s(t, e) {
          function i(i) {
            return function (o) {
              return function (i) {
                if (n) throw new TypeError("Generator is already executing.");

                for (; a;) try {
                  if (n = 1, r && (s = 2 & i[0] ? r["return"] : i[0] ? r["throw"] || ((s = r["return"]) && s.call(r), 0) : r.next) && !(s = s.call(r, i[1])).done) return s;

                  switch (r = 0, s && (i = [2 & i[0], s.value]), i[0]) {
                    case 0:
                    case 1:
                      s = i;
                      break;

                    case 4:
                      return a.label++, {
                        value: i[1],
                        done: !1
                      };

                    case 5:
                      a.label++, r = i[1], i = [0];
                      continue;

                    case 7:
                      i = a.ops.pop(), a.trys.pop();
                      continue;

                    default:
                      if (!(s = (s = a.trys).length > 0 && s[s.length - 1]) && (6 === i[0] || 2 === i[0])) {
                        a = 0;
                        continue;
                      }

                      if (3 === i[0] && (!s || i[1] > s[0] && i[1] < s[3])) {
                        a.label = i[1];
                        break;
                      }

                      if (6 === i[0] && a.label < s[1]) {
                        a.label = s[1], s = i;
                        break;
                      }

                      if (s && a.label < s[2]) {
                        a.label = s[2], a.ops.push(i);
                        break;
                      }

                      s[2] && a.ops.pop(), a.trys.pop();
                      continue;
                  }

                  i = e.call(t, a);
                } catch (t) {
                  i = [6, t], r = 0;
                } finally {
                  n = s = 0;
                }

                if (5 & i[0]) throw i[1];
                return {
                  value: i[0] ? i[1] : void 0,
                  done: !0
                };
              }([i, o]);
            };
          }

          var n,
              r,
              s,
              o,
              a = {
            label: 0,
            sent: function sent() {
              if (1 & s[0]) throw s[1];
              return s[1];
            },
            trys: [],
            ops: []
          };
          return o = {
            next: i(0),
            "throw": i(1),
            "return": i(2)
          }, "function" == typeof Symbol && (o[Symbol.iterator] = function () {
            return this;
          }), o;
        }

        function o(t) {
          var e = "function" == typeof Symbol && t[Symbol.iterator],
              i = 0;
          return e ? e.call(t) : {
            next: function next() {
              return t && i >= t.length && (t = void 0), {
                value: t && t[i++],
                done: !t
              };
            }
          };
        }

        function a(t, e) {
          var i = "function" == typeof Symbol && t[Symbol.iterator];
          if (!i) return t;
          var n,
              r,
              s = i.call(t),
              o = [];

          try {
            for (; (void 0 === e || e-- > 0) && !(n = s.next()).done;) o.push(n.value);
          } catch (t) {
            r = {
              error: t
            };
          } finally {
            try {
              n && !n.done && (i = s["return"]) && i.call(s);
            } finally {
              if (r) throw r.error;
            }
          }

          return o;
        }

        function l() {
          for (var t = [], e = 0; e < arguments.length; e++) t = t.concat(a(arguments[e]));

          return t;
        }

        function h(t) {
          return new hs(t);
        }

        function u(t) {
          return t instanceof hs;
        }

        function p(t) {
          return Number(t) !== t;
        }

        function c(t) {
          return {}.toString.call(t);
        }

        function d(t, e) {
          return t || e;
        }

        function f(t) {
          if ("string" == typeof t) return !0;
          throw new Error("Expected a string but got " + c(t));
        }

        function g(t) {
          if ("boolean" == typeof t) return !0;
          throw new Error("Expected a boolean but got " + c(t));
        }

        function y(t) {
          if ("number" != typeof t) throw new Error("Expected a number but got " + c(t));
          if (p(t)) throw new Error("Expected a number but got NaN");
          return !0;
        }

        function m(t) {
          var e = c(t);
          if ("[object Object]" === e) return !0;
          throw new Error("Expected an object but got " + e);
        }

        function v(t) {
          if (Array.isArray(t)) return !0;
          throw new Error("Expected an array but got " + c(t));
        }

        function b(t) {
          var e = c(t);
          if ("[object Date]" === e) return !0;
          throw new Error("Expected a date but got " + e);
        }

        function x(t) {
          if ("string" == typeof t) return t;
          if ("number" == typeof t) return "" + t;
          throw new Error("Expected a string or number but got " + c(t));
        }

        function _(t) {
          if ("string" == typeof t) {
            var e = +t;
            if (p(e)) throw new Error("Cannot cast string " + JSON.stringify(t) + " to a number");
            return e;
          }

          if ("number" == typeof t) {
            if (p(t)) throw new Error("Expected a number but got NaN");
            return t;
          }

          var i = c(t);
          if ("[object Date]" === i) return t.getTime();
          throw new Error("Expected a string, number, or date but got " + i);
        }

        function P(t) {
          return !!t;
        }

        function w(t) {
          if (S(t) && !A(t)) {
            var e = Number(t);
            return p(e) && T(t) && "" != t ? w(t.replace(/[^0-9.\-]+/g, "")) : e;
          }

          return t;
        }

        function C(t) {
          if (S(t) && !T(t)) {
            if (A(t)) return x(t);
            if (V(t)) return t.toString();
          }

          return t;
        }

        function O(t) {
          return !S(t) || A(t) || u(t) ? t : T(t) && -1 != t.indexOf("%") ? h(w(t)) : w(t);
        }

        function S(t) {
          return null != t;
        }

        function I(t) {
          if (S(t)) return t;
          throw new Error("Value doesn't exist");
        }

        function D(t, e) {
          return S(t) ? t : e;
        }

        function k(t) {
          return "[object Date]" === c(t);
        }

        function T(t) {
          return "string" == typeof t;
        }

        function A(t) {
          return "number" == typeof t && Number(t) == t;
        }

        function V(t) {
          return "object" == typeof t;
        }

        function F(t) {
          return Array.isArray(t);
        }

        function M(t, e, i) {
          return S(t) ? R(t = w(t), e, i) : t;
        }

        function j(t, e, i) {
          if (!A(e) || e <= 0) {
            var n = Math.round(t);
            return i && n - t == .5 && n--, n;
          }

          var r = Math.pow(10, e);
          return Math.round(t * r) / r;
        }

        function L(t, e) {
          if (!A(e) || e <= 0) return Math.ceil(t);
          var i = Math.pow(10, e);
          return Math.ceil(t * i) / i;
        }

        function E(t, e, i) {
          return t * (i - e) + e;
        }

        function R(t, e, i) {
          if (A(e)) {
            if (A(i) && i < e) {
              var n = i;
              i = e, e = n;
            }

            t < e && (t = e);
          }

          return A(i) && t > i && (t = i), t;
        }

        function B(t) {
          return j(Math.sin(cs * t), 10);
        }

        function N(t) {
          return j(Math.tan(cs * t), 10);
        }

        function H(t) {
          return j(Math.cos(cs * t), 10);
        }

        function W(t, e) {
          return A(t) ? A(e) && e > t ? e : t : A(e) ? e : null;
        }

        function X(t, e) {
          return A(t) ? A(e) && e < t ? e : t : A(e) ? e : null;
        }

        function Y(t, e) {
          return t.reduce(function (t, i) {
            return Math.abs(i - e) < Math.abs(t - e) ? i : t;
          });
        }

        function z(t, e) {
          var i = I(t.start),
              n = I(e.start),
              r = I(t.end),
              s = I(e.end);
          return Math.max(i, n) <= Math.min(r, s);
        }

        function U(t) {
          var e = I(t.start);
          return {
            start: 1 - I(t.end),
            end: 1 - e
          };
        }

        function G(t, e) {
          var i = I(t.start),
              n = I(e.start),
              r = I(t.end),
              s = I(e.end),
              o = Math.max(i, n),
              a = Math.min(r, s);
          return a < o ? void 0 : {
            start: o,
            end: a
          };
        }

        function K(t, e) {
          return t ? (e || (e = {
            x: 0,
            y: 0
          }), Math.sqrt(Math.pow(Math.abs(t.x - e.x), 2) + Math.pow(Math.abs(t.y - e.y), 2))) : 0;
        }

        function Z(t, e, i, n, r) {
          if (!t) return 0;
          e || (e = {
            x: 0,
            y: 0
          });
          var s = 0,
              o = t;
          if (r > 0) for (var a = 0; a <= r; a++) {
            var l = rt(t, e, i, n, a / r);
            s += K(o, l), o = l;
          }
          return s;
        }

        function q(t, e, i, n) {
          var r = K(e, n),
              s = K(t, i);
          return Math.abs(s / r);
        }

        function $(t, e, i) {
          return A(i) || (i = .5), {
            x: t.x + (e.x - t.x) * i,
            y: t.y + (e.y - t.y) * i
          };
        }

        function J(t, e, i, n) {
          var r = Q(e, n) - Q(t, i);
          return r < 0 && (r += 360), r;
        }

        function Q(t, e) {
          e || (e = {
            x: 2 * t.x,
            y: 2 * t.y
          });
          var i = e.x - t.x,
              n = e.y - t.y,
              r = Math.atan2(n, i) * ds;
          return r < 0 && (r += 360), lt(r);
        }

        function tt(t, e, i, n, r) {
          var s = J(e, i, n, r) - 90;
          s < 0 && (s += 360);
          var o = K(e, n),
              a = Math.cos(s) / o + e.x,
              l = Math.cos(s) / o + e.y;
          return {
            x: a - t.x,
            y: l - t.y
          };
        }

        function et(t) {
          if (t) {
            var e = t.length;

            if (0 !== e) {
              for (var i, n = void 0, r = void 0, s = void 0, o = 0; o < e; o++) {
                var a = t[o];
                (!A(r) || a.x > r) && (r = a.x), (!A(n) || a.x < n) && (n = a.x), (!A(i) || a.y < i) && (i = a.y), (!A(s) || a.y > s) && (s = a.y);
              }

              return {
                x: n,
                y: i,
                width: r - n,
                height: s - i
              };
            }
          }

          return {
            x: 0,
            y: 0,
            width: 0,
            height: 0
          };
        }

        function it(t) {
          var e = t.length;

          if (0 !== e) {
            for (var i = void 0, n = void 0, r = void 0, s = void 0, o = 0; o < e; o++) {
              var a = t[o];
              i = X(a.x, i), n = X(a.y, n), r = W(a.x + a.width, r), s = W(a.y + a.height, s);
            }

            return {
              x: i,
              y: n,
              width: r - i,
              height: s - n
            };
          }
        }

        function nt(t, e, i, n) {
          return {
            x: (1 - n) * (1 - n) * t.x + 2 * (1 - n) * n * i.x + n * n * e.x,
            y: (1 - n) * (1 - n) * t.y + 2 * (1 - n) * n * i.y + n * n * e.y
          };
        }

        function rt(t, e, i, n, r) {
          var s = {
            x: 0,
            y: 0
          },
              o = 1 - r,
              a = o * o,
              l = a * o;
          return s.x = t.x * l + 3 * i.x * a * r + 3 * n.x * o * r * r + e.x * r * r * r, s.y = t.y * l + 3 * i.y * a * r + 3 * n.y * o * r * r + e.y * r * r * r, s;
        }

        function st(t, e, i, n, r, s) {
          return r = at(r), s = at(s), {
            x: (-t.x + e.x / r + i.x) * r,
            y: (-t.y + e.y / s + i.y) * s
          };
        }

        function ot(t, e, i, n, r, s) {
          return r = at(r), s = at(s), {
            x: (e.x + i.x / r - n.x) * r,
            y: (e.y + i.y / s - n.y) * s
          };
        }

        function at(t) {
          return 1 - t + 1e-5;
        }

        function lt(t) {
          return 360 == t ? 360 : t % 360;
        }

        function ht(t, e, i) {
          if (e > i) {
            var n = e;
            e = i, i = n;
          }

          t = lt(t);
          var r = (e - lt(e)) / 360;
          return t < e && (t += 360 * (r + 1)), t > i && (t - 360 > e ? t -= 360 : t = t < e + (i - e) / 2 + 180 ? i : e), t < e && (t = t > e + (i - e) / 2 - 180 ? e : i), t;
        }

        function ut(t, e, i) {
          var n = Number.MAX_VALUE,
              r = Number.MAX_VALUE,
              s = -Number.MAX_VALUE,
              o = -Number.MAX_VALUE,
              a = [];
          A(i) || (i = 1), a.push(pt(i, t)), a.push(pt(i, e));

          for (var l = Math.min(90 * Math.floor(t / 90), 90 * Math.floor(e / 90)), h = Math.max(90 * Math.ceil(t / 90), 90 * Math.ceil(e / 90)), u = l; u <= h; u += 90) u >= t && u <= e && a.push(pt(i, u));

          for (var p = 0; p < a.length; p++) {
            var c = a[p];
            c.x < n && (n = c.x), c.y < r && (r = c.y), c.x > s && (s = c.x), c.y > o && (o = c.y);
          }

          return {
            x: n,
            y: r,
            width: s - n,
            height: o - r
          };
        }

        function pt(t, e) {
          return {
            x: t * H(e),
            y: t * B(e)
          };
        }

        function ct(t, e) {
          return t.x >= e.x && t.x <= e.x + e.width && t.y > e.y && t.y < e.y + e.height;
        }

        function dt(t, e, i, n) {
          return {
            x: ((t.x * e.y - e.x * t.y) * (i.x - n.x) - (t.x - e.x) * (i.x * n.y - i.y * n.x)) / ((t.x - e.x) * (i.y - n.y) - (t.y - e.y) * (i.x - n.x)),
            y: ((t.x * e.y - e.x * t.y) * (i.y - n.y) - (t.y - e.y) * (i.x * n.y - i.y * n.x)) / ((t.x - e.x) * (i.y - n.y) - (t.y - e.y) * (i.x - n.x))
          };
        }

        function ft(t, e) {
          for (var i = t.length, n = 0; n < i; ++n) if (t[n] === e) return n;

          return -1;
        }

        function gt(t, e) {
          for (var i = t.length, n = 0; n < i; ++n) if (e(t[n])) return !0;

          return !1;
        }

        function yt(t, e) {
          for (var i = t.length, n = new Array(i), r = 0; r < i; ++r) n[r] = e(t[r], r);

          return n;
        }

        function mt(t, e) {
          for (var i = t.length, n = 0; n < i; ++n) e(t[n], n);
        }

        function vt(t, e) {
          for (var i = t.length; i--;) e(t[i], i);
        }

        function bt(t, e) {
          for (var i = t.length, n = 0; n < i && e(t[n], n); ++n);
        }

        function xt(t, e) {
          for (var i = t.length, n = e; n < i; ++n) t[n - e] = t[n];

          t.length = i - e;
        }

        function _t(t) {
          var e = t.length;
          return e ? t[e - 1] : void 0;
        }

        function Pt(t) {
          return t[0];
        }

        function wt(t, e, i) {
          i = R(i, 0, t.length), t.splice(i, 0, e);
        }

        function Ct(t, e, i) {
          St(t, e), wt(t, e, i);
        }

        function Ot(t, e) {
          for (var i = e.length, n = 0; n < i; ++n) t.push(e[n]);
        }

        function St(t, e) {
          var i = !1,
              n = t.indexOf(e);

          if (-1 !== n) {
            i = !0, t.splice(n, 1);

            for (var r = t.length; n < r;) t[n] === e ? (t.splice(n, 1), --r) : ++n;
          }

          return i;
        }

        function It(t, e, i) {
          var n = ft(t, e);
          -1 !== n && jt(t, n), null == i ? t.push(e) : Mt(t, i, e);
        }

        function Dt(t, e, i) {
          A(i) ? 0 === i ? t.unshift(e) : t.splice(i, 0, e) : t.push(e);
        }

        function kt(t, e, i) {
          var n = t.indexOf(e);
          -1 !== n && t.splice(n, 1), A(i) ? t.splice(i, 0, e) : t.push(e);
        }

        function Tt(t) {
          return Array.isArray(t) ? t : [t];
        }

        function At(t, e) {
          return -1 !== ft(t, e);
        }

        function Vt(t) {
          for (var e = t.length, i = new Array(e), n = 0; n < e; ++n) i[n] = t[n];

          return i;
        }

        function Ft(t, e, i) {
          void 0 === i && (i = t.length);

          for (var n = new Array(i - e), r = e; r < i; ++r) n[r - e] = t[r];

          return n;
        }

        function Mt(t, e, i) {
          t.splice(e, 0, i);
        }

        function jt(t, e) {
          t.splice(e, 1);
        }

        function Lt(t, e, i) {
          for (var n = 0, r = t.length, s = !1; n < r;) {
            var o = n + r >> 1,
                a = e(i, t[o]);
            a < 0 ? r = o : 0 === a ? (s = !0, n = o + 1) : n = o + 1;
          }

          return {
            found: s,
            index: s ? n - 1 : n
          };
        }

        function Et(t, e) {
          for (var i = t.length, n = 0; n < i; ++n) if (e(t[n], n)) return n;

          return -1;
        }

        function Rt(t, e) {
          var i = Et(t, e);
          if (-1 !== i) return t[i];
        }

        function Bt(t) {
          for (var e, i, n = t.length; 0 !== n;) i = Math.floor(Math.random() * n), e = t[n -= 1], t[n] = t[i], t[i] = e;
        }

        function Nt() {
          for (var t = Date.now(), e = bs.length, i = 0; i < e; ++i) bs[i](t);

          for (xt(bs, e), i = 0; i < xs.length; ++i) xs[i](t);

          for (xs.length = 0, i = 0; i < _s.length; ++i) _s[i](t);

          _s.length = 0, 0 === bs.length && 0 === xs.length ? vs = !1 : ws(Nt);
        }

        function Ht() {
          vs || (vs = !0, ws(Nt));
        }

        function Wt(t) {
          bs.push(t), Ht();
        }

        function Xt(t) {
          xs.push(t), Ht();
        }

        function Yt(t) {
          _s.push(t), Ht();
        }

        function zt(t) {
          Ps.push(t);
        }

        function Ut() {
          for (var t = Date.now(), e = Ps.length, i = 0; i < e; ++i) Ps.shift()(t);
        }

        function Gt(t) {
          return function (e) {
            for (var i in t) if (qt(t, i) && !e([i, t[i]])) break;
          };
        }

        function Kt(t) {
          var e = [];

          for (var i in t) qt(t, i) && e.push(i);

          return e;
        }

        function Zt(t, e) {
          return Kt(t).sort(e);
        }

        function qt(t, e) {
          return {}.hasOwnProperty.call(t, e);
        }

        function $t(t, e) {
          return t[e];
        }

        function Jt(t, e) {
          for (var i in t) if (qt(t, i) && !e(i, t[i])) break;
        }

        function Qt(t, e) {
          Jt(t, function (t, i) {
            return e(t, i), !0;
          });
        }

        function te(t, e, i) {
          mt(Zt(t, i), function (i) {
            e(i, t[i]);
          });
        }

        function ee(t) {
          return Object.assign({}, t);
        }

        function ie(t, e) {
          return Object.assign({}, t, e);
        }

        function ne(t, e, i) {
          mt(i, function (i) {
            S(t[i]) && (e[i] = t[i]);
          });
        }

        function re(t, e, i) {
          mt(i, function (i) {
            S(t[i]) && !S(e[i]) && (e[i] = t[i]);
          });
        }

        function se(t, e, i) {
          mt(i, function (i) {
            e[i] = t[i];
          });
        }

        function oe(t, e) {
          ne(t, e, Kt(t));
        }

        function ae(t) {
          return function (e) {
            for (var i = t.length, n = 0; n < i && e(t[n]); ++n);
          };
        }

        function le(t) {
          var e = 0;
          return t(function (t) {
            return ++e, !0;
          }), e;
        }

        function he(t) {
          var e = [];
          return t(function (t) {
            return e.push(t), !0;
          }), e;
        }

        function ue(t, e) {
          t(e);
        }

        function pe(t, e) {
          t(function (t) {
            return e(t), !0;
          });
        }

        function ce(t, e) {
          return ae(he(t).sort(e));
        }

        function de(t, e) {
          return function (i) {
            return t(function (t) {
              return i(e(t));
            });
          };
        }

        function fe(t, e) {
          return function (i) {
            return t(function (t) {
              return !e(t) || i(t);
            });
          };
        }

        function ge() {
          for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];

          return function (e) {
            for (var i = !0, n = function n(t) {
              return i = e(t);
            }, r = t.length, s = 0; s < r && (t[s](n), i); ++s);
          };
        }

        function ye(t) {
          return function (e) {
            var i = !0,
                n = function n(t) {
              return i = e(t);
            };

            t(function (t) {
              return t(n), i;
            });
          };
        }

        function me(t) {
          return function (e) {
            var i = 0;
            t(function (t) {
              return e([i++, t]);
            });
          };
        }

        function ve(t, e) {
          var i = !1,
              n = 0;
          return t(function (t) {
            return e(t) ? (i = !0, !1) : (++n, !0);
          }), i ? n : -1;
        }

        function be(t, e) {
          var i;
          return t(function (t) {
            return !e(t) || (i = t, !1);
          }), i;
        }

        function xe(t, e) {
          var i;
          return t(function (t) {
            var n = e(t);
            return null === n || (i = n, !1);
          }), i;
        }

        function _e(t, e) {
          var i = !1;
          return t(function (t) {
            return !e(t) || (i = !0, !1);
          }), i;
        }

        function Pe(t, e, i) {
          return t(function (t) {
            return e = i(e, t), !0;
          }), e;
        }

        function we(t, e) {
          return null == t || e < t ? e : t;
        }

        function Ce(t) {
          return Pe(t, null, we);
        }

        function Oe(t, e) {
          return null == t || e > t ? e : t;
        }

        function Se(t) {
          return Pe(t, null, Oe);
        }

        function Ie(t, e) {
          void 0 === e && (e = "");
          var i = !0,
              n = "";
          return t(function (t) {
            return i ? i = !1 : n += e, n += t, !0;
          }), n;
        }

        function De(t, e) {
          return t === e ? 0 : t < e ? -1 : 1;
        }

        function ke(t, e) {
          return new Array(e + 1).join(t);
        }

        function Te(t) {
          for (var e = "", i = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", n = 0; n < t; n++) e += i.charAt(Math.floor(Math.random() * i.length));

          return e;
        }

        function Ae(t, e) {
          if (!(t >= 0 && t < e)) throw new Error("Index out of bounds: " + t);
        }

        function Ve(t, e) {
          return t === e ? 0 : t < e ? -1 : 1;
        }

        function Fe(t) {
          switch (t) {
            case 0:
              return 0;

            case -1:
              return 1;

            case 1:
              return -1;
          }
        }

        function Me(t, e) {
          return 0 === t ? e : t;
        }

        function je(t, e) {
          var i;
          return Zs[t] ? i = Zs[t] : "#" === t.charAt(0) ? i = Le(t) : t.match(/^rgba?\(/) && (i = Ee(t)), i || (i = {
            r: 0,
            g: 0,
            b: 0,
            a: 1
          }), S(e) && (i.a = e), i;
        }

        function Le(t) {
          t = t.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i, function (t, e, i, n) {
            return e + e + i + i + n + n;
          });
          var e = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);
          return e ? {
            r: parseInt(e[1], 16),
            g: parseInt(e[2], 16),
            b: parseInt(e[3], 16)
          } : void 0;
        }

        function Ee(t) {
          var e = (t = t.replace(/[ ]/g, "")).match(/^rgb\(([0-9]*),([0-9]*),([0-9]*)\)/i);
          if (e) e.push("1");else if (!(e = t.match(/^rgba\(([0-9]*),([0-9]*),([0-9]*),([.0-9]*)\)/i))) return;
          return {
            r: parseInt(e[1]),
            g: parseInt(e[2]),
            b: parseInt(e[3]),
            a: parseFloat(e[4])
          };
        }

        function Re(t) {
          return "#" + Ne(t.r.toString(16)) + Ne(t.g.toString(16)) + Ne(t.b.toString(16));
        }

        function Be(t) {
          return S(t.a) && 1 !== t.a ? "rgba(" + t.r + "," + t.g + "," + t.b + "," + t.a + ")" : "rgb(" + t.r + "," + t.g + "," + t.b + ")";
        }

        function Ne(t) {
          return 1 == t.length ? "0" + t : "" + t;
        }

        function He(t, e, i) {
          return i = R(i, 0, 1), t ? e ? {
            r: t.r + Math.round((e.r - t.r) * i),
            g: t.g + Math.round((e.g - t.g) * i),
            b: t.b + Math.round((e.b - t.b) * i),
            a: (t.a || 1) + Math.round(((e.a || 1) - (t.a || 1)) * i)
          } : t : e || t;
        }

        function We(t, e) {
          return t ? {
            r: Math.max(0, Math.min(255, t.r + Xe(t.r, e))),
            g: Math.max(0, Math.min(255, t.g + Xe(t.g, e))),
            b: Math.max(0, Math.min(255, t.b + Xe(t.b, e))),
            a: t.a
          } : t;
        }

        function Xe(t, e) {
          var i = e > 0 ? 255 - t : t;
          return Math.round(i * e);
        }

        function Ye(t, e) {
          if (t) {
            var i = Xe(Math.min(Math.max(t.r, t.g, t.b), 230), e);
            return {
              r: Math.max(0, Math.min(255, Math.round(t.r + i))),
              g: Math.max(0, Math.min(255, Math.round(t.g + i))),
              b: Math.max(0, Math.min(255, Math.round(t.b + i))),
              a: t.a
            };
          }

          return t;
        }

        function ze(t, e) {
          return Math.round(255 * e);
        }

        function Ue(t, e) {
          if (null == t || 1 == e) return t;
          var i = Ke(t);
          return i.s = e, Ge(i);
        }

        function Ge(t) {
          var e,
              i,
              n,
              r = t.h,
              s = t.s,
              o = t.l;
          if (0 == s) e = i = n = o;else {
            var a = function a(t, e, i) {
              return i < 0 && (i += 1), i > 1 && (i -= 1), i < 1 / 6 ? t + 6 * (e - t) * i : i < .5 ? e : i < 2 / 3 ? t + (e - t) * (2 / 3 - i) * 6 : t;
            },
                l = o < .5 ? o * (1 + s) : o + s - o * s,
                h = 2 * o - l;

            e = a(h, l, r + 1 / 3), i = a(h, l, r), n = a(h, l, r - 1 / 3);
          }
          return {
            r: Math.round(255 * e),
            g: Math.round(255 * i),
            b: Math.round(255 * n)
          };
        }

        function Ke(t) {
          var e = t.r / 255,
              i = t.g / 255,
              n = t.b / 255,
              r = Math.max(e, i, n),
              s = Math.min(e, i, n),
              o = 0,
              a = 0,
              l = (r + s) / 2;
          if (r === s) o = a = 0;else {
            var h = r - s;

            switch (a = l > .5 ? h / (2 - r - s) : h / (r + s), r) {
              case e:
                o = (i - n) / h + (i < n ? 6 : 0);
                break;

              case i:
                o = (n - e) / h + 2;
                break;

              case n:
                o = (e - i) / h + 4;
            }

            o /= 6;
          }
          return {
            h: o,
            s: a,
            l: l
          };
        }

        function Ze(t) {
          var e,
              i = t.r / 255,
              n = t.g / 255,
              r = t.b / 255,
              s = Math.max(i, n, r),
              o = Math.min(i, n, r),
              a = 0,
              l = s,
              h = s - o;
          if (e = 0 == s ? 0 : h / s, s == o) a = 0;else {
            switch (s) {
              case i:
                a = (n - r) / h + (n < r ? 6 : 0);
                break;

              case n:
                a = (r - i) / h + 2;
                break;

              case r:
                a = (i - n) / h + 4;
            }

            a /= 6;
          }
          return {
            h: a,
            s: e,
            v: l
          };
        }

        function qe(t) {
          var e = 0,
              i = 0,
              n = 0,
              r = t.h,
              s = t.s,
              o = t.v,
              a = Math.floor(6 * r),
              l = 6 * r - a,
              h = o * (1 - s),
              u = o * (1 - l * s),
              p = o * (1 - (1 - l) * s);

          switch (a % 6) {
            case 0:
              e = o, i = p, n = h;
              break;

            case 1:
              e = u, i = o, n = h;
              break;

            case 2:
              e = h, i = o, n = p;
              break;

            case 3:
              e = h, i = u, n = o;
              break;

            case 4:
              e = p, i = h, n = o;
              break;

            case 5:
              e = o, i = h, n = u;
          }

          return {
            r: Math.round(255 * e),
            g: Math.round(255 * i),
            b: Math.round(255 * n)
          };
        }

        function $e(t) {
          return (299 * t.r + 587 * t.g + 114 * t.b) / 1e3 >= 128;
        }

        function Je(t, e) {
          if (!S(t)) return new qs(void 0);

          if ("string" == typeof t) {
            var i = "_color_" + t + "_" + (e || "1"),
                n = Fs.getCache(i);
            if (n) return new qs({
              r: n.r,
              g: n.g,
              b: n.b,
              a: n.a
            });
            var r = je(t, e);
            return Fs.setCache(i, r), new qs(r);
          }

          return t instanceof qs ? (S(e) && (t.alpha = e), t) : new qs(t);
        }

        function Qe(t) {
          return t instanceof qs;
        }

        function ti(t) {
          return Je(t);
        }

        function ei(t) {
          return S(t) && !Qe(t) ? ti(t) : t;
        }

        function ii(t) {}

        function ni(t, e) {
          return Qt(t, function (t, i) {
            S(i) && (e[t] = i);
          }), e;
        }

        function ri(t) {
          return /^[^#]*/.exec(t)[0];
        }

        function si() {
          var t = "#";

          if (/apple/i.test(navigator.vendor)) {
            var e = document.baseURI;

            if (e) {
              e = ri(e);
              var i = ri(location.href);
              e !== i && (t = i + t);
            }
          }

          return t;
        }

        function oi(t, e) {
          return Qt(t, function (t, i) {
            S(i) && !S(e[t]) && (e[t] = i);
          }), e;
        }

        function ai(t, e) {
          return Qt(t, function (t, i) {
            e[t] = i;
          }), e;
        }

        function li(t) {
          return S(t) && "" !== t.toString();
        }

        function hi(t, e) {
          return A(t) ? t : null != t && A(t.value) && A(e) ? e * t.value : 0;
        }

        function ui(t, e, i) {
          var n;
          return A(t) ? (n = t) < 0 && (n = i ? e + n : e - n) : null != t && A(t.value) && (n = e * t.value), n;
        }

        function pi(t, e) {
          return t instanceof hs ? t.value : t / e;
        }

        function ci() {
          return window.devicePixelRatio || 1;
        }

        function di(t) {
          return t.replace(/\W+/g, "-").replace(/([a-z\d])([A-Z])/g, "$1-$2").toLowerCase();
        }

        function fi(t) {
          var e = t.split("");
          return e[0] = e[0].toUpperCase(), e.join("");
        }

        function gi(t) {
          return JSON.stringify(t);
        }

        function yi(t) {
          return t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
        }

        function mi(t, e, i, n) {
          if (t.length <= e) return [t];
          var r = [];
          if (i) for (var s = -1, o = t.replace(/([,;:!?\\\/\.\s]+)/g, ro + "$1" + ro).split(ro), a = 0; a < o.length; a++) {
            var l = o[a],
                h = l.length;

            if (0 !== h) {
              var u;

              if (h > e) {
                if (n && (l = Pi(l)), u = l.match(new RegExp(".{1," + e + "}", "g"))) {
                  if (n) for (var p = 0; p < u.length; p++) u[p] = Pi(u[p]);
                  r = r.concat(u);
                }
              } else -1 === s && (r.push(""), s = 0), r[s].length + h + 1 > e && "" !== r[s] && (r.push(""), s++), r[s] += l;

              s = r.length - 1;
            }
          } else if (u = t.match(new RegExp(".{1," + e + "}", "g"))) {
            if (n) for (p = 0; p < u.length; p++) u[p] = Pi(u[p]);
            r = u;
          }
          return 1 == r.length && i && r[0].length > e && (r = []), r;
        }

        function vi(t, e, i, n, r) {
          return t.length <= e ? t : ((e -= i.length) < 1 && (e = 1), (mi(t, e, n, r)[0] || "") + i);
        }

        function bi(t) {
          return t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "");
        }

        function xi(t) {
          return t.replace(/[\s\uFEFF\xA0]+$/g, "");
        }

        function _i(t) {
          return t.replace(/^[\s\uFEFF\xA0]+/g, "");
        }

        function Pi(t) {
          return t.split("").reverse().join("");
        }

        function wi(t) {
          var e = t.trim();
          return (e = t.replace(/^'(.*)'$/, "$1")) == t && (e = t.replace(/^"(.*)"$/, "$1")), e;
        }

        function Ci(t, e, i) {
          return void 0 === e && (e = 0), void 0 === i && (i = "0"), "string" != typeof t && (t = t.toString()), e > t.length ? Array(e - t.length + 1).join(i) + t : t;
        }

        function Oi(t) {
          if (void 0 === t) return to;
          var e = (t = (t = (t = t.toLowerCase().replace(/^\[[^\]]*\]/, "")).replace(/\[[^\]]+\]/, "")).trim()).match(/\/(date|number|duration)$/);
          return e ? e[1] : t === eo ? eo : t === io ? io : t === no ? no : t.match(/[#0]/) ? eo : t.match(/[ymwdhnsqaxkzgtei]/) ? io : to;
        }

        function Si(t) {
          return t.replace(/\/(date|number|duration)$/i, "");
        }

        function Ii(t) {
          return t ? t.replace(/<[^>]*>/g, "") : t;
        }

        function Di(t) {
          return t ? Ii(t.replace(/[\n\r]+/g, ". ")) : t;
        }

        function ki(t) {
          if (p(t)) return "NaN";
          if (t === 1 / 0) return "Infinity";
          if (t === -1 / 0) return "-Infinity";
          if (0 === t && 1 / t == -1 / 0) return "-0";
          var e = t < 0;
          t = Math.abs(t);
          var i,
              n = I(/^([0-9]+)(?:\.([0-9]+))?(?:e[\+\-]([0-9]+))?$/.exec("" + t)),
              r = n[1],
              s = n[2] || "";
          if (null == n[3]) i = "" === s ? r : r + "." + s;else {
            var o,
                a = +n[3];
            i = t < 1 ? "0." + ke("0", o = a - 1) + r + s : 0 == (o = a - s.length) ? r + s : o < 0 ? r + s.slice(0, o) + "." + s.slice(o) : r + s + ke("0", o);
          }
          return e ? "-" + i : i;
        }

        function Ti(t) {
          if (k(t)) return new Date(t);
          if (A(t)) return new Date(t);
          var e = Number(t);
          return A(e) ? new Date(e) : new Date(t);
        }

        function Ai(t) {
          if (k(t)) return t.getTime();
          if (A(t)) return t;

          if (T(t)) {
            var e = Number(t);
            return A(e) ? e : void 0;
          }
        }

        function Vi(t, e) {
          void 0 === e && (e = !1);
          var i = new Date(t.getFullYear(), 0, 1, 0, 0, 0, 0);
          return Math.floor((t.getTime() - i.getTime()) / 864e5) + 1;
        }

        function Fi(t, e) {
          void 0 === e && (e = !1);
          var i = Vi(t, e) - 1,
              n = Math.floor((i - (t.getDay() || 7) + 10) / 7);
          return 0 === n ? n = 53 : 53 === n && (n = 1), n;
        }

        function Mi(t, e) {
          void 0 === e && (e = !1);
          var i = Fi(new Date(t.getFullYear(), t.getMonth(), 1), e),
              n = Fi(t, e);
          return 1 == n && (n = 53), n - i + 1;
        }

        function ji(t, e, i, n) {
          void 0 === i && (i = 1), void 0 === n && (n = !1);
          var r = new Date(e, 0, 4, 0, 0, 0, 0);
          return n && r.setUTCFullYear(e), 7 * t + i - ((r.getDay() || 7) + 3);
        }

        function Li(t, e) {
          return t > 12 ? t -= 12 : 0 === t && (t = 12), S(e) ? t + (e - 1) : t;
        }

        function Ei(t, e, i, n) {
          if (void 0 === e && (e = !1), void 0 === i && (i = !1), void 0 === n && (n = !1), n) return e ? "Coordinated Universal Time" : "UTC";
          var r = t.toLocaleString("UTC"),
              s = t.toLocaleString("UTC", {
            timeZoneName: e ? "long" : "short"
          }).substr(r.length);
          return !1 === i && (s = s.replace(/ (standard|daylight|summer|winter) /i, " ")), s;
        }

        function Ri(t, e) {
          return Math.floor(Math.random() * e) + t;
        }

        function Bi(t, e, i) {
          return t > i ? i : t < e ? e : t;
        }

        function Ni(t, e, i) {
          var n = i - e;
          return t > i ? t = e + (t - n * Math.floor(t / n)) : t < e && (t = e + (t - n * Math.floor(t / n))), t;
        }

        function Hi(t, e) {
          var i = t.x,
              n = t.y,
              r = [];

          if (e) {
            for (; S(e.parent);) r.push(e), e = e.parent;

            r.reverse();

            for (var s = 0; s < r.length; s++) {
              var o = r[s],
                  a = o.rotation,
                  l = i - o.pixelX - o.ex,
                  h = n - o.pixelY - o.ey;
              o.dx && (i -= o.dx), o.dy && (n -= o.dy);
              var u = o.scale;
              o.group && (u = o.group.scale), i = (H(-a) * l - B(-a) * h) / u - o.pixelPaddingLeft, n = (H(-a) * h + B(-a) * l) / u - o.pixelPaddingTop;
            }
          }

          return {
            x: i,
            y: n
          };
        }

        function Wi(t, e) {
          var i = t.x,
              n = t.y;
          if (e) for (; S(e.parent);) {
            var r = e.rotation;
            i += e.pixelPaddingLeft + e.ex, n += e.pixelPaddingTop + e.ey, e.dx && (i += e.dx), e.dy && (n += e.dy);
            var s = e.scale;
            e.group && (s = e.group.scale);
            var o = e.pixelX + (i * H(r) - n * B(r)) * s,
                a = e.pixelY + (i * B(r) + n * H(r)) * s;
            i = o, n = a, e = e.parent;
          }
          return {
            x: i,
            y: n
          };
        }

        function Xi(t, e, i) {
          return Hi(Wi(t, e), i);
        }

        function Yi(t, e) {
          var i = Hi(t, e),
              n = Hi({
            x: t.x + t.width,
            y: t.y + t.height
          }, e);
          return {
            x: i.x,
            y: i.y,
            width: n.x - i.x,
            height: n.y - i.y
          };
        }

        function zi(t, e) {
          var i = Wi(t, e),
              n = Wi({
            x: t.x + t.width,
            y: t.y + t.height
          }, e);
          return {
            x: i.x,
            y: i.y,
            width: n.x - i.x,
            height: n.y - i.y
          };
        }

        function Ui(t, e, i) {
          try {
            var n = e.getBoundingClientRect();
            return A(i) || (i = 1), {
              x: (t.x - n.left) / i,
              y: (t.y - n.top) / i
            };
          } catch (e) {
            return t;
          }
        }

        function Gi(t, e) {
          try {
            var i = e.getBoundingClientRect();
            return {
              x: t.x + i.left,
              y: t.y + i.top
            };
          } catch (e) {
            return t;
          }
        }

        function Ki(t, e) {
          return e && e.htmlContainer ? Hi(Ui(t, I(e.htmlContainer), e.svgContainer.cssScale), e) : t;
        }

        function Zi(t, e) {
          return e && e.htmlContainer ? Gi(Wi(t, e), I(e.htmlContainer)) : t;
        }

        function qi(t) {
          var e = getComputedStyle(t),
              i = parseFloat(e.paddingLeft) + parseFloat(e.paddingRight),
              n = parseFloat(e.borderLeftWidth) + parseFloat(e.borderRightWidth);
          return t.clientWidth - i - n;
        }

        function $i(t) {
          var e = getComputedStyle(t),
              i = parseFloat(e.paddingTop) + parseFloat(e.paddingBottom),
              n = parseFloat(e.borderTopWidth) + parseFloat(e.borderBottomWidth);
          return t.clientHeight - i - n;
        }

        function Ji(t) {
          var e = ("" + t).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);
          return e ? Math.max(0, (e[1] ? e[1].length : 0) - (e[2] ? +e[2] : 0)) : 0;
        }

        function Qi(t) {
          var e = oo.exec(t);
          return {
            protocol: e && e[1] || "",
            separator: e && e[2] || "",
            authority: e && e[3] || "",
            domain: e && e[4] || "",
            port: e && e[5] || "",
            path: e && e[6] || "",
            query: e && e[7] || "",
            hash: e && e[8] || ""
          };
        }

        function tn(t) {
          return t.protocol + t.separator + t.authority + t.domain + t.port + t.path + t.query + t.hash;
        }

        function en(t) {
          return "" === t.protocol && "" === t.separator && "" === t.authority && "" === t.domain && "" === t.port;
        }

        function nn(t, e) {
          var i = Qi(t),
              n = Qi(e);
          if (en(i)) throw new Error("Left URL is not absolute");

          if (en(n)) {
            if ("" !== n.path) if ("/" === n.path[0]) i.path = n.path;else {
              var r = i.path.split(/\//),
                  s = n.path.split(/\//);
              if (0 === r.length ? 0 !== s.length && r.push("") : r.length > 1 && r.pop(), Ot(r, s), i.path = r.join("/"), "" !== i.path && "/" !== i.path[0]) throw new Error("URL path must start with /");
            }
            return i.query = n.query, i.hash = n.hash, tn(i);
          }

          return tn(n);
        }

        function rn() {
          return !!window.MSInputMethodContext && !!document.documentMode;
        }

        function sn(t) {
          return +t;
        }

        function on(t) {
          return t * t;
        }

        function an(t) {
          return t * (2 - t);
        }

        function ln(t) {
          return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;
        }

        function hn(t, e) {
          return Math.pow(t, e);
        }

        function un(t, e) {
          return 1 - Math.pow(1 - t, e);
        }

        function pn(t, e) {
          return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;
        }

        function cn(t) {
          return hn(t, 3);
        }

        function dn(t) {
          return un(t, 3);
        }

        function fn(t) {
          return pn(t, 3);
        }

        function gn(t) {
          return Math.pow(2, 10 * t - 10);
        }

        function yn(t) {
          return 1 - Math.pow(2, -10 * t);
        }

        function mn(t) {
          return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2;
        }

        function vn(t) {
          return 1 - Math.cos(t * ps);
        }

        function bn(t) {
          return Math.sin(t * ps);
        }

        function xn(t) {
          return (1 - Math.cos(us * t)) / 2;
        }

        function _n(t) {
          return t * t * t;
        }

        function Pn(t) {
          return --t * t * t + 1;
        }

        function wn(t) {
          return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;
        }

        function Cn(t) {
          return 1 - Math.sqrt(1 - t * t);
        }

        function On(t) {
          return Math.sqrt(1 - --t * t);
        }

        function Sn(t) {
          return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;
        }

        function In(t) {
          return 1 - Dn(1 - t);
        }

        function Dn(t) {
          return (t = +t) < ao ? mo * t * t : t < ho ? mo * (t -= lo) * t + uo : t < co ? mo * (t -= po) * t + fo : mo * (t -= go) * t + yo;
        }

        function kn(t) {
          return ((t *= 2) <= 1 ? 1 - Dn(1 - t) : Dn(t - 1) + 1) / 2;
        }

        function Tn(t) {
          return bo * Math.pow(2, 10 * --t) * Math.sin((_o - t) / xo);
        }

        function An(t) {
          return 1 - bo * Math.pow(2, -10 * (t = +t)) * Math.sin((t + _o) / xo);
        }

        function Vn(t) {
          return ((t = 2 * t - 1) < 0 ? bo * Math.pow(2, 10 * t) * Math.sin((_o - t) / xo) : 2 - bo * Math.pow(2, -10 * t) * Math.sin((_o + t) / xo)) / 2;
        }

        function Fn(t, e) {
          var i = !1,
              n = Date.now();
          return Wt(function r(s) {
            if (!i) {
              var o = s - n;
              o >= t ? e(1) : (Wt(r), e(o / t));
            }
          }), new fs(function () {
            i = !0;
          });
        }

        function Mn(t, e, i) {
          return e + (i - e) * t;
        }

        function jn(t, e, i) {
          return new hs(Mn(t, e.percent, i.percent));
        }

        function Ln(t, e, i) {
          return new qs(He(e.rgb, i.rgb, t));
        }

        function En(t, e) {
          return e + t.charAt(0).toUpperCase() + t.substr(1);
        }

        function Rn(t, e, i, n) {
          return t.addEventListener(e, i, n || !1), new fs(function () {
            t.removeEventListener(e, i, n || !1);
          });
        }

        function Bn(t) {
          if (T(t)) {
            var e = document.getElementById(t);
            if (null == e && (e = document.getElementsByClassName(t)[0]), e instanceof HTMLElement) return e;
          } else if (t instanceof HTMLElement) return t;
        }

        function Nn(t, e) {
          if (t) if (t.classList) t.classList.add(e);else {
            var i = t.getAttribute("class");
            i ? t.setAttribute("class", i.split(" ").filter(function (t) {
              return t !== e;
            }).join(" ") + " " + e) : t.setAttribute("class", e);
          }
        }

        function Hn(t, e) {
          if (t) if (t.classList) t.classList.remove(e);else {
            var i = t.getAttribute("class");
            i && t.setAttribute("class", i.split(" ").filter(function (t) {
              return t !== e;
            }).join(" "));
          }
        }

        function Wn(t, e, i) {
          t.style[e] = i;
        }

        function Xn(t, e) {
          return t.currentStyle ? t.currentStyle[e] : document.defaultView.getComputedStyle(t, null).getPropertyValue(e);
        }

        function Yn() {
          var t = document.createElement("input");
          t.style.position = "fixed", t.style.top = "0px", t.style.left = "-10000px", document.body.appendChild(t), t.focus(), t.blur(), document.body.removeChild(t);
        }

        function zn(t) {
          if (t instanceof HTMLElement) t.focus();else {
            var e = document.createElement("input"),
                i = document.createElementNS(Do, "foreignObject");
            i.appendChild(e), t.appendChild(i), e.focus(), e.disabled = !0, i.remove();
          }
        }

        function Un(t) {
          if (t.outerHTML) return t.outerHTML;
          var e = document.createElement("div"),
              i = t.cloneNode(!0);
          return e.appendChild(i), e.innerHTML;
        }

        function Gn(t) {
          return t instanceof Object && t && 1 === t.nodeType;
        }

        function Kn(t, e) {
          for (var i = e;;) {
            if (t === i) return !0;

            if (null == i.parentNode) {
              if (null == i.host) return !1;
              i = i.host;
            } else i = i.parentNode;
          }
        }

        function Zn(t) {
          for (var e = t.ownerDocument, i = t;;) {
            if (null == i.parentNode) return i === e || null != i.host ? i : null;
            i = i.parentNode;
          }
        }

        function qn(t, e) {
          mt(t.attributes, function (t) {
            null != t.value && e.setAttribute(t.name, t.value);
          });
        }

        function $n(t) {
          Xt(function () {
            try {
              var e = t.getBoundingClientRect(),
                  i = e.left - Math.round(e.left),
                  n = e.top - Math.round(e.top);
              0 !== i && Yt(function () {
                t.style.left = i + "px";
              }), 0 !== n && Yt(function () {
                t.style.top = n + "px";
              });
            } catch (t) {}
          });
        }

        function Jn() {
          if (!S(wo)) {
            var t = document.createElement("style");
            t.type = "text/css", document.head.appendChild(t), wo = t.sheet;
          }

          return wo;
        }

        function Qn(t) {
          if ("loading" !== document.readyState) t();else {
            var e = function e() {
              "loading" !== document.readyState && (document.removeEventListener("readystatechange", e), t());
            };

            document.addEventListener("readystatechange", e);
          }
        }

        function tr(t) {
          var e = Xn(t, "font-family");
          if (e) return e;
          var i = t.parentElement || t.parentNode;
          return i ? tr(i) : void 0;
        }

        function er(t) {
          var e = Xn(t, "font-size");
          if (e) return e;
          var i = t.parentElement || t.parentNode;
          return i ? er(i) : void 0;
        }

        function ir(t) {
          var e = t.getBoundingClientRect();
          return e.top >= 0 && e.left >= 0 && e.top <= (window.innerHeight || document.documentElement.clientHeight) && e.left <= (window.innerWidth || document.documentElement.clientWidth);
        }

        function nr(t) {
          switch (t) {
            case "year":
              return;

            case "month":
              return "year";

            case "week":
            case "day":
              return "month";

            case "hour":
              return "day";

            case "minute":
              return "hour";

            case "second":
              return "minute";

            case "millisecond":
              return "second";
          }
        }

        function rr(t, e) {
          return S(e) || (e = 1), Xo[t] * e;
        }

        function sr() {
          return new Date();
        }

        function or() {
          return sr().getTime();
        }

        function ar(t) {
          return new Date(t.getTime());
        }

        function lr(t, e, i, n) {
          t = new Date(t.getTime()), e = new Date(e.getTime());
          var r = 0,
              s = 0;
          n || "millisecond" == i || (r = t.getTimezoneOffset(), t.setUTCMinutes(t.getUTCMinutes() - r), s = e.getTimezoneOffset(), e.setUTCMinutes(e.getUTCMinutes() - s));
          var o = !1;

          switch (i) {
            case "year":
              t.getUTCFullYear() != e.getUTCFullYear() && (o = !0);
              break;

            case "month":
              t.getUTCFullYear() != e.getUTCFullYear() ? o = !0 : t.getUTCMonth() != e.getUTCMonth() && (o = !0);
              break;

            case "day":
              t.getUTCMonth() != e.getUTCMonth() ? o = !0 : t.getUTCDate() != e.getUTCDate() && (o = !0);
              break;

            case "hour":
              t.getUTCHours() != e.getUTCHours() && (o = !0);
              break;

            case "minute":
              t.getUTCMinutes() != e.getUTCMinutes() && (o = !0);
              break;

            case "second":
              t.getUTCSeconds() != e.getUTCSeconds() && (o = !0);
              break;

            case "millisecond":
              t.getTime() != e.getTime() && (o = !0);
          }

          if (o) return !0;
          var a = nr(i);
          return !!a && (t.setUTCMinutes(t.getUTCMinutes() + r), e.setUTCMinutes(e.getUTCMinutes() + s), lr(t, e, a, n));
        }

        function hr(t, e, i, n) {
          var r = 0;

          switch (n || "millisecond" == e || (r = t.getTimezoneOffset(), t.setUTCMinutes(t.getUTCMinutes() - r)), e) {
            case "day":
              var s = t.getUTCDate();
              t.setUTCDate(s + i);
              break;

            case "second":
              var o = t.getUTCSeconds();
              t.setUTCSeconds(o + i);
              break;

            case "millisecond":
              var a = t.getUTCMilliseconds();
              t.setUTCMilliseconds(a + i);
              break;

            case "hour":
              var l = t.getUTCHours();
              t.setUTCHours(l + i);
              break;

            case "minute":
              var h = t.getUTCMinutes();
              t.setUTCMinutes(h + i);
              break;

            case "year":
              var u = t.getUTCFullYear();
              t.setUTCFullYear(u + i);
              break;

            case "month":
              var p = t.getUTCMonth();
              t.setUTCMonth(p + i);
              break;

            case "week":
              var c = t.getUTCDate();
              t.setUTCDate(c + 7 * i);
          }

          if (!n && "millisecond" != e && (t.setUTCMinutes(t.getUTCMinutes() + r), "day" == e || "week" == e || "month" == e || "year" == e)) {
            var d = t.getTimezoneOffset();

            if (d != r) {
              var f = d - r;
              t.setUTCMinutes(t.getUTCMinutes() + f), t.getTimezoneOffset() != d && t.setUTCMinutes(t.getUTCMinutes() - f);
            }
          }

          return t;
        }

        function ur(t, e, i, n, r, s) {
          A(i) || (i = 1);
          var o = 0;

          switch (r || "millisecond" == e || (o = t.getTimezoneOffset(), t.setUTCMinutes(t.getUTCMinutes() - o)), e) {
            case "day":
              var a = t.getUTCDate();

              if (i > 1) {
                if (s) {
                  s = ur(s, "day", 1);
                  var l = t.getTime() - s.getTime(),
                      h = Math.floor(l / rr("day") / i),
                      u = rr("day", h * i);
                  t.setTime(s.getTime() + u - o * rr("minute"));
                }
              } else t.setUTCDate(a);

              t.setUTCHours(0, 0, 0, 0);
              break;

            case "second":
              var p = t.getUTCSeconds();
              i > 1 && (p = Math.floor(p / i) * i), t.setUTCSeconds(p, 0);
              break;

            case "millisecond":
              if (1 == i) return t;
              var c = t.getUTCMilliseconds();
              c = Math.floor(c / i) * i, t.setUTCMilliseconds(c);
              break;

            case "hour":
              var d = t.getUTCHours();
              i > 1 && (d = Math.floor(d / i) * i), t.setUTCHours(d, 0, 0, 0);
              break;

            case "minute":
              var f = t.getUTCMinutes();
              c = t.getUTCMilliseconds(), i > 1 && (f = Math.floor(f / i) * i), t.setUTCMinutes(f, 0, 0);
              break;

            case "month":
              var g = t.getUTCMonth();
              i > 1 && (g = Math.floor(g / i) * i), t.setUTCMonth(g, 1), t.setUTCHours(0, 0, 0, 0);
              break;

            case "year":
              var y = t.getUTCFullYear();
              i > 1 && (y = Math.floor(y / i) * i), t.setUTCFullYear(y, 0, 1), t.setUTCHours(0, 0, 0, 0);
              break;

            case "week":
              var m = t.getUTCDate(),
                  v = t.getUTCDay();
              A(n) || (n = 1), m = v >= n ? m - v + n : m - (7 + v) + n, t.setUTCDate(m), t.setUTCHours(0, 0, 0, 0);
          }

          if (!r && "millisecond" != e && (t.setUTCMinutes(t.getUTCMinutes() + o), "day" == e || "week" == e || "month" == e || "year" == e)) {
            var b = t.getTimezoneOffset();

            if (b != o) {
              var x = b - o;
              t.setUTCMinutes(t.getUTCMinutes() + x);
            }
          }

          return t;
        }

        function pr() {
          return null == zo && (zo = new Yo()), zo;
        }

        function cr() {
          if (null === Qo) {
            var t = document.createElement("div");
            t.hidden = !0, document.body.appendChild(t);
            var e = new $o(t, !0);
            Qo = new Jo(e.SVGContainer, "ghost");
          }

          return Qo;
        }

        function dr() {
          return null == ra && (ra = new la()), ra;
        }

        function fr(t, e, i) {
          return new Promise(function (n, r) {
            var s = S(i) && "blob" == i.responseType,
                o = new XMLHttpRequest();

            if (o.onload = function () {
              if (200 === o.status) {
                var t,
                    i = void 0;
                if (s) return t = o.response, void (l = t, new Promise(function (t, e) {
                  var i = new FileReader();
                  i.onload = function (e) {
                    t(i.result);
                  }, i.onerror = function (t) {
                    e(t);
                  }, i.readAsText(l);
                })).then(function (i) {
                  var r = {
                    xhr: o,
                    error: !1,
                    response: i,
                    blob: t,
                    type: o.getResponseHeader("Content-Type"),
                    target: e
                  };
                  n(r);
                });
                i = o.responseText || o.response;
                var a = {
                  xhr: o,
                  error: !1,
                  response: i,
                  blob: t,
                  type: o.getResponseHeader("Content-Type"),
                  target: e
                };
                n(a);
              } else r({
                xhr: o,
                error: !0,
                type: o.getResponseHeader("Content-Type"),
                target: e
              });

              var l;
            }, o.onerror = function () {
              r({
                xhr: o,
                error: !0,
                type: o.getResponseHeader("Content-Type"),
                target: e
              });
            }, o.open("GET", t, !0), i && i.withCredentials && (o.withCredentials = !0), S(i)) {
              if (S(i.requestHeaders)) for (var a = 0; a < i.requestHeaders.length; a++) {
                var l = i.requestHeaders[a];
                o.setRequestHeader(l.key, l.value);
              }
              S(i.responseType) && (o.responseType = i.responseType);
            }

            o.send();
          });
        }

        function gr(t) {
          return r(this, void 0, void 0, function () {
            var e;
            return s(this, function (i) {
              switch (i.label) {
                case 0:
                  e = t.sheet, i.label = 1;

                case 1:
                  return i.trys.push([1, 2,, 4]), [2, e.cssRules];

                case 2:
                  return i.sent(), [4, new Promise(function (i, n) {
                    t.addEventListener("load", function () {
                      i(e.cssRules);
                    }, !0), t.addEventListener("error", function (t) {
                      n(t);
                    }, !0), setTimeout(function () {
                      n(new Error("Timeout while waiting for <style> to load"));
                    }, 1e4);
                  })];

                case 3:
                  return [2, i.sent()];

                case 4:
                  return [2];
              }
            });
          });
        }

        function yr(t, e, i) {
          return r(this, void 0, void 0, function () {
            var n, r, o;
            return s(this, function (s) {
              switch (s.label) {
                case 0:
                  return [4, fr(e)];

                case 1:
                  n = s.sent(), (r = t.createElement("style")).textContent = n.response, t.head.appendChild(r), s.label = 2;

                case 2:
                  return s.trys.push([2,, 5, 6]), [4, gr(r)];

                case 3:
                  return o = s.sent(), [4, mr(t, e, o, i)];

                case 4:
                  return s.sent(), [3, 6];

                case 5:
                  return t.head.removeChild(r), [7];

                case 6:
                  return [2];
              }
            });
          });
        }

        function mr(t, e, i, n) {
          return r(this, void 0, void 0, function () {
            var r, o, a, l, h;
            return s(this, function (s) {
              switch (s.label) {
                case 0:
                  for (r = [], o = i.length, a = 0; a < o; a++) (l = i[a]).type === CSSRule.IMPORT_RULE ? (h = l.href) && (h = nn(e, h), r.push(yr(t, h, n))) : n(e, l);

                  return r.length ? [4, Promise.all(r)] : [3, 2];

                case 1:
                  s.sent(), s.label = 2;

                case 2:
                  return [2];
              }
            });
          });
        }

        function vr(t) {
          return r(this, void 0, void 0, function () {
            var e, i;
            return s(this, function (n) {
              switch (n.label) {
                case 0:
                  (e = document.createElement("iframe")).src = "about:blank", e.setAttribute("title", ""), document.head.appendChild(e), n.label = 1;

                case 1:
                  return n.trys.push([1,, 3, 4]), i = e.contentDocument, [4, Promise.all(yt(document.styleSheets, function (e) {
                    var n = e.href;
                    return null == n ? mr(i, location.href, e.cssRules, t) : (n = nn(location.href, n), yr(i, n, t));
                  }))];

                case 2:
                  return n.sent(), [3, 4];

                case 3:
                  return document.head.removeChild(e), [7];

                case 4:
                  return [2];
              }
            });
          });
        }

        function br(t) {
          var e = _r(t[0]),
              i = {
            x: 0,
            y: 0
          },
              n = Ms.minPolylineStep;

          A(n) || (n = .5);

          for (var r = 0, s = t.length; r < s; r++) {
            var o = t[r];
            K(o, i) > n && (e += _r(o), i = o);
          }

          return e;
        }

        function xr(t) {
          return " M" + j(t.x, 4) + "," + j(t.y, 4) + " ";
        }

        function _r(t) {
          return " L" + j(t.x, 4) + "," + j(t.y, 4) + " ";
        }

        function Pr(t, e) {
          return " Q" + j(e.x, 4) + "," + j(e.y, 4) + " " + j(t.x, 4) + "," + j(t.y, 4);
        }

        function wr(t, e, i) {
          return " C" + j(e.x, 4) + "," + j(e.y, 4) + " " + j(i.x, 4) + "," + j(i.y, 4) + " " + j(t.x, 4) + "," + j(t.y, 4);
        }

        function Cr() {
          return " Z";
        }

        function Or(t, e, i, n) {
          if (0 == e) return "";
          A(n) || (n = i);
          var r = "",
              s = ",",
              o = Math.ceil(Math.abs(e) / 180),
              a = 1;
          e < 0 && (a = 0);
          var l = 0,
              h = 0,
              u = -H(t) * i,
              p = -B(t) * n;
          if (e < .5 && i > 3e3) return _r({
            x: f = j(H(d = t + e) * i, 4),
            y: g = j(B(d) * n, 4)
          });

          for (var c = 0; c < o; c++) {
            var d, f, g;
            r += " a" + i + s + n + s + 0 + s + 0 + s + a + s + (f = j(H(d = t + e / o * (c + 1)) * i + u - l, 4)) + s + (g = j(B(d) * n + p - h, 4)), l = f, h = g;
          }

          return r;
        }

        function Sr(t, e, i, n, r, s, o) {
          if (0 == e) return "";
          if (A(n) || (n = 0), 0 == i && n <= 0) return "";

          if (i < n) {
            var a = i;
            i = n, n = a, A(r) && (r = r / n * i);
          }

          360 == (e = X(e, 360)) && (s = 0, o = 0);
          var l = t + e,
              h = B(X(e, 45) / 2),
              u = (r = A(r) ? r : i) / i * n,
              p = r / i * (s = s || 0),
              c = r / i * (o = A(o) ? o : s);
          s = R(s, 0, (i - n) / 2), p = R(p, 0, (r - u) / 2), o = R(o, 0, (i - n) / 2), c = R(c, 0, (r - u) / 2), s = j(R(s, 0, i * h), 4), p = j(R(p, 0, r * h), 4), o = j(R(o, 0, n * h), 4), c = j(R(c, 0, u * h), 4);
          var d = Math.asin(s / i / 2) * ds * 2,
              f = Math.asin(p / r / 2) * ds * 2;
          n < o && (n = o), u < c && (u = c);
          var g = Math.asin(o / n / 2) * ds * 2,
              y = Math.asin(c / u / 2) * ds * 2;
          A(g) || (g = 0), A(y) || (y = 0);
          var m = t + e / 2,
              v = {
            x: j(H(m) * n, 4),
            y: B(m) * u
          },
              b = {
            x: H(t) * (n + o),
            y: B(t) * (u + c)
          },
              x = {
            x: H(t) * (i - s),
            y: B(t) * (r - p)
          },
              _ = {
            x: H(l) * (i - s),
            y: B(l) * (r - p)
          },
              P = {
            x: H(l) * (n + o),
            y: B(l) * (u + c)
          },
              w = {
            x: H(t + d) * i,
            y: B(t + f) * r
          },
              C = {
            x: H(l - g) * n,
            y: B(l - y) * u
          };
          o += o * B(g / 2), c += c * B(y / 2), g > (l - t) / 2 && (C = v);
          var O = "";
          return 360 == e ? O = xr(x) : (O = xr(b), O += _r(x), O += Ir(w, s, p, !0)), O += Or(t + d, e - 2 * d, i, r), A(n) && 0 != n ? (360 == e && 0 == s ? O += xr(P) : (O += Ir(_, s, p, !0), O += _r(P), O += Ir(C, o, c, !0)), O += Or(l - g, -(e - 2 * g), n, u), (e < 360 || s > 0) && (O += Ir(b, o, c, !0)), O += _r(b)) : (O += Ir(_, s, p, !0), e < 360 && (O += _r(b))), O;
        }

        function Ir(t, e, i, n, r, s) {
          if (0 == e) return "";
          var o = ",";
          return " A" + e + o + i + o + (s = s || 0) + o + +(r = Boolean(r)) + o + +(n = Boolean(n)) + o + j(t.x, 4) + o + j(t.y, 4);
        }

        function Dr(t, e, i, n) {
          return A(i) || (i = 0), A(n) || (n = 0), xr({
            x: i,
            y: n
          }) + _r({
            x: i + t,
            y: n
          }) + _r({
            x: i + t,
            y: n + e
          }) + _r({
            x: i,
            y: n + e
          }) + " Z";
        }

        function kr(t, e) {
          var i = ",",
              n = " L";
          return e ? "M" + t.x + i + t.y + n + t.x + i + (t.y + t.height) + n + (t.x + t.width) + i + (t.y + t.height) + n + (t.x + t.width) + i + t.y + n + t.x + i + t.y : "M" + t.x + i + t.y + n + (t.x + t.width) + i + t.y + n + (t.x + t.width) + i + (t.y + t.height) + n + t.x + i + (t.y + t.height) + n + t.x + i + t.y;
        }

        function Tr(t, e) {
          var i = cr().add("path").node;

          if (i.setAttribute("d", t), i.getPointAtLength && i.getTotalLength) {
            for (var n = i.getTotalLength(), r = [], s = 0; s < e; s++) {
              var o = i.getPointAtLength(s / e * n);
              r.push({
                x: o.x,
                y: o.y
              });
            }

            return r;
          }

          i.remove();
        }

        function Ar(t, e, i, n, r, s, o, a, l) {
          A(a) || (a = 0), A(a) || (l = a);

          for (var h = r + .01, u = a * cs, p = []; h < i + o;) {
            var c = s;
            if (c / 2 > h && (c = 2 * h), (u += 2 * Math.asin(c / 2 / h)) * ds > l + (i - r) / o * 360) break;
            var d = u * ds,
                f = {
              x: t + h * Math.cos(u),
              y: e + h * n / i * Math.sin(u)
            };
            p.push(f), h = r + d / 360 * o;
          }

          return p.shift(), p;
        }

        function Vr(t) {
          if (!t || 0 == t.length) return "";
          var e = xr(t[0]);
          if (t && t.length > 0) for (var i = 1; i < t.length; i++) e += _r(t[i]);
          return e;
        }

        function Fr(t, e, i, n, r, s) {
          var o = t.x,
              a = t.y,
              l = e.x,
              h = e.y,
              u = K(t, e);
          s && (i = u / Math.round(u / i));
          var p = Fs.getCache(gi(["wavedLine", t.x, e.x, t.y, e.y, i, n]));

          if (!p) {
            if (u > 0) {
              var c = Math.atan2(h - a, l - o),
                  d = Math.cos(c),
                  f = Math.sin(c),
                  g = i * d,
                  y = i * f;
              if (i <= 1 || n <= 1) p = _r(e);else {
                var m = Math.round(2 * u / i),
                    v = [],
                    b = 1;
                l < o && (b *= -1), h < a && (b *= -1);

                for (var x = 0; x <= m; x++) {
                  var _ = o + x * g / 2 + (b *= -1) * n / 2 * f,
                      P = a + x * y / 2 - b * n / 2 * d;

                  v.push({
                    x: _,
                    y: P
                  });
                }

                p = new sl(r, r).smooth(v);
              }
            } else p = "";

            Fs.setCache(gi(["wavedLine", t.x, e.x, t.y, e.y, i, n]), p);
          }

          return p;
        }

        function Mr(t, e) {
          var i = Bn(t);

          if (i) {
            i.innerHTML = "";
            var n = new $o(i),
                r = new Jo(n.SVGContainer, "svg-" + (qo.length - 1)),
                s = new _a();
            s.htmlContainer = i, s.svgContainer = n, s.width = h(100), s.height = h(100), s.background.fillOpacity = 0, s.paper = r, r.append(s.group), s.relativeWidth = 1, s.relativeHeight = 1, n.container = s;
            var o = s.createChild(e);
            o.topParent = s;
            var a = o.uid;
            Fs.invalidSprites[a] = [], Fs.invalidDatas[a] = [], Fs.invalidPositions[a] = [], Fs.invalidLayouts[a] = [], s.baseId = a, o.isBaseSprite = !0, o.focusFilter = new Ol(), Fs.baseSprites.push(o), Fs.baseSpritesByUid[a] = o, o.maskRectangle = {
              x: 0,
              y: 0,
              width: n.width,
              height: n.height
            }, s.events.on("maxsizechanged", function (t) {
              0 != t.previousWidth && 0 != t.previousHeight || s.deepInvalidate(), o.maskRectangle && (o.maskRectangle = {
                x: 0,
                y: 0,
                width: n.width,
                height: n.height
              });
            });

            var u = null,
                p = function p() {
              o.isDisposed() ? u = null : null == Zn(o.dom) ? (function () {
                for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];

                console && console.warn.apply(console, l(t));
              }("Chart was not disposed", o.uid), u = null) : u = setTimeout(p, 1e3);
            };

            p(), o.addDisposer(new fs(function () {
              null !== u && clearTimeout(u), St(Fs.baseSprites, o), Fs.baseSpritesByUid[o.uid] = void 0;
            })), o.addDisposer(s);
            var c = s.createChild(_a);
            c.topParent = s, c.width = h(100), c.height = h(100), c.isMeasured = !1, s.tooltipContainer = c, o.tooltip = new il(), o.tooltip.hide(0), o.tooltip.setBounds({
              x: 0,
              y: 0,
              width: c.maxWidth,
              height: c.maxHeight
            }), c.events.on("maxsizechanged", function () {
              I(o.tooltip).setBounds({
                x: 0,
                y: 0,
                width: c.maxWidth,
                height: c.maxHeight
              });
            }, void 0, !1);
            var d = new Za();

            if (d.events.on("inited", function () {
              d.__disabled = !0;
            }, void 0, !1), s.preloader = d, o instanceof _a && !o.hasLicense()) {
              var f = c.createChild(Dl);
              c.events.on("maxsizechanged", function (t) {
                c.maxWidth <= 100 || c.maxHeight <= 50 ? f.hide() : (f.isHidden || f.isHiding) && f.show();
              }, void 0, !1), o.logo = f, f.align = "left", f.valign = "bottom";
            }

            if (o.numberFormatter, s.isStandaloneInstance = !0, Ms.onlyShowOnViewport) {
              if (ir(i)) Ms.queue && Lr(o);else {
                o.__disabled = !0, o.tooltipContainer.__disabled = !0;
                var g = new gs([Rn(window, "DOMContentLoaded", function () {
                  Rr(o);
                }), Rn(window, "load", function () {
                  Rr(o);
                }), Rn(window, "resize", function () {
                  Rr(o);
                }), Rn(window, "scroll", function () {
                  Rr(o);
                })]);
                o.addDisposer(g), o.vpDisposer = g;
              }
            } else Ms.queue && Lr(o);
            return o;
          }

          throw Ls.log("html container not found"), new Error("html container not found");
        }

        function jr() {
          for (; 0 !== Fs.baseSprites.length;) Fs.baseSprites.pop().dispose();
        }

        function Lr(t) {
          -1 == Fs.queue.indexOf(t) && (t.__disabled = !0, t.tooltipContainer.__disabled = !0, t.events.disableType("appeared"), 0 == Fs.queue.length && Br(t), t.addDisposer(new fs(function () {
            Er(t);
          })), Fs.queue.push(t));
        }

        function Er(t) {
          var e = Fs.queue.indexOf(t);

          if (e >= 0) {
            Fs.queue.splice(Fs.queue.indexOf(t), 1);
            var i = Fs.queue[e];
            i && Br(i);
          }
        }

        function Rr(t) {
          t.__disabled && ir(t.htmlContainer) && (t.vpDisposer && t.vpDisposer.dispose(), Lr(t));
        }

        function Br(t) {
          t.__disabled = !1, t.tooltipContainer.__disabled = !1, t.events.enableType("appeared"), t.showOnInit && t.events.on("appeared", function () {
            Er(t);
          }), t.vpDisposer && t.vpDisposer.dispose(), t instanceof Fa ? (t.invalidateData(), t.reinit(), t.events.once("datavalidated", function () {
            t.showOnInit ? t.appear() : Er(t);
          })) : t.showOnInit ? t.appear() : Er(t);
        }

        function Nr(t, e) {
          var i;
          T(e) && (S(Fs.registeredClasses[e]) ? e = Fs.registeredClasses[e] : (e = Fs.registeredClasses.Container, i = new Error("Class [" + e + "] is not loaded.")));
          var n = Mr(t, e);
          return i && n.raiseCriticalError(i), n;
        }

        function Hr(t, e, i) {
          var n, r;
          S(i) || (i = t.type, delete t.type), S(e) || (e = t.container, delete t.container), T(i) && S(Fs.registeredClasses[i]) ? n = Fs.registeredClasses[i] : "function" != typeof i ? (n = _a, r = new Error("Class [" + i + "] is not loaded.")) : n = i;
          var s = Mr(e, n);
          return r ? s.raiseCriticalError(r) : s.config = t, s;
        }

        function Wr(t) {
          -1 === Fs.themes.indexOf(t) && Fs.themes.push(t);
        }

        function Xr(t) {
          St(Fs.themes, t);
        }

        function Yr() {
          Fs.themes = [];
        }

        function zr(t) {
          Ms.licenses.push(t);
        }

        function Ur(t, e) {
          var i = Fs.registeredClasses[e];
          return null != i && t instanceof i;
        }

        i.r(e);
        var Gr = {};
        i.r(Gr), i.d(Gr, "isNaN", function () {
          return p;
        }), i.d(Gr, "getType", function () {
          return c;
        }), i.d(Gr, "getDefault", function () {
          return d;
        }), i.d(Gr, "checkString", function () {
          return f;
        }), i.d(Gr, "checkBoolean", function () {
          return g;
        }), i.d(Gr, "checkNumber", function () {
          return y;
        }), i.d(Gr, "checkObject", function () {
          return m;
        }), i.d(Gr, "checkArray", function () {
          return v;
        }), i.d(Gr, "checkDate", function () {
          return b;
        }), i.d(Gr, "castString", function () {
          return x;
        }), i.d(Gr, "castNumber", function () {
          return _;
        }), i.d(Gr, "toBoolean", function () {
          return P;
        }), i.d(Gr, "toNumber", function () {
          return w;
        }), i.d(Gr, "toText", function () {
          return C;
        }), i.d(Gr, "toNumberOrPercent", function () {
          return O;
        }), i.d(Gr, "hasValue", function () {
          return S;
        }), i.d(Gr, "getValue", function () {
          return I;
        }), i.d(Gr, "getValueDefault", function () {
          return D;
        }), i.d(Gr, "isDate", function () {
          return k;
        }), i.d(Gr, "isString", function () {
          return T;
        }), i.d(Gr, "isNumber", function () {
          return A;
        }), i.d(Gr, "isObject", function () {
          return V;
        }), i.d(Gr, "isArray", function () {
          return F;
        });
        var Kr = {};
        i.r(Kr), i.d(Kr, "PI", function () {
          return us;
        }), i.d(Kr, "HALFPI", function () {
          return ps;
        }), i.d(Kr, "RADIANS", function () {
          return cs;
        }), i.d(Kr, "DEGREES", function () {
          return ds;
        }), i.d(Kr, "toNumberRange", function () {
          return M;
        }), i.d(Kr, "round", function () {
          return j;
        }), i.d(Kr, "ceil", function () {
          return L;
        }), i.d(Kr, "stretch", function () {
          return E;
        }), i.d(Kr, "fitToRange", function () {
          return R;
        }), i.d(Kr, "sin", function () {
          return B;
        }), i.d(Kr, "tan", function () {
          return N;
        }), i.d(Kr, "cos", function () {
          return H;
        }), i.d(Kr, "max", function () {
          return W;
        }), i.d(Kr, "min", function () {
          return X;
        }), i.d(Kr, "closest", function () {
          return Y;
        }), i.d(Kr, "intersect", function () {
          return z;
        }), i.d(Kr, "invertRange", function () {
          return U;
        }), i.d(Kr, "intersection", function () {
          return G;
        }), i.d(Kr, "getDistance", function () {
          return K;
        }), i.d(Kr, "getCubicCurveDistance", function () {
          return Z;
        }), i.d(Kr, "getScale", function () {
          return q;
        }), i.d(Kr, "getMidPoint", function () {
          return $;
        }), i.d(Kr, "getRotation", function () {
          return J;
        }), i.d(Kr, "getAngle", function () {
          return Q;
        }), i.d(Kr, "getCenterShift", function () {
          return tt;
        }), i.d(Kr, "getBBox", function () {
          return et;
        }), i.d(Kr, "getCommonRectangle", function () {
          return it;
        }), i.d(Kr, "getPointOnQuadraticCurve", function () {
          return nt;
        }), i.d(Kr, "getPointOnCubicCurve", function () {
          return rt;
        }), i.d(Kr, "getCubicControlPointA", function () {
          return st;
        }), i.d(Kr, "getCubicControlPointB", function () {
          return ot;
        }), i.d(Kr, "adjustTension", function () {
          return at;
        }), i.d(Kr, "normalizeAngle", function () {
          return lt;
        }), i.d(Kr, "fitAngleToRange", function () {
          return ht;
        }), i.d(Kr, "getArcRect", function () {
          return ut;
        }), i.d(Kr, "getArcPoint", function () {
          return pt;
        }), i.d(Kr, "isInRectangle", function () {
          return ct;
        }), i.d(Kr, "getLineIntersection", function () {
          return dt;
        });
        var Zr = {};
        i.r(Zr), i.d(Zr, "indexOf", function () {
          return ft;
        }), i.d(Zr, "any", function () {
          return gt;
        }), i.d(Zr, "map", function () {
          return yt;
        }), i.d(Zr, "each", function () {
          return mt;
        }), i.d(Zr, "eachReverse", function () {
          return vt;
        }), i.d(Zr, "eachContinue", function () {
          return bt;
        }), i.d(Zr, "shiftLeft", function () {
          return xt;
        }), i.d(Zr, "last", function () {
          return _t;
        }), i.d(Zr, "first", function () {
          return Pt;
        }), i.d(Zr, "insert", function () {
          return wt;
        }), i.d(Zr, "setIndex", function () {
          return Ct;
        }), i.d(Zr, "pushAll", function () {
          return Ot;
        }), i.d(Zr, "remove", function () {
          return St;
        }), i.d(Zr, "move", function () {
          return It;
        }), i.d(Zr, "add", function () {
          return Dt;
        }), i.d(Zr, "replace", function () {
          return kt;
        }), i.d(Zr, "toArray", function () {
          return Tt;
        }), i.d(Zr, "has", function () {
          return At;
        }), i.d(Zr, "copy", function () {
          return Vt;
        }), i.d(Zr, "slice", function () {
          return Ft;
        }), i.d(Zr, "insertIndex", function () {
          return Mt;
        }), i.d(Zr, "removeIndex", function () {
          return jt;
        }), i.d(Zr, "getSortedIndex", function () {
          return Lt;
        }), i.d(Zr, "findIndex", function () {
          return Et;
        }), i.d(Zr, "find", function () {
          return Rt;
        }), i.d(Zr, "shuffle", function () {
          return Bt;
        });
        var qr = {};
        i.r(qr), i.d(qr, "entries", function () {
          return Gt;
        }), i.d(qr, "keys", function () {
          return Kt;
        }), i.d(qr, "keysOrdered", function () {
          return Zt;
        }), i.d(qr, "hasKey", function () {
          return qt;
        }), i.d(qr, "getKey", function () {
          return $t;
        }), i.d(qr, "eachContinue", function () {
          return Jt;
        }), i.d(qr, "each", function () {
          return Qt;
        }), i.d(qr, "eachOrdered", function () {
          return te;
        }), i.d(qr, "copy", function () {
          return ee;
        }), i.d(qr, "merge", function () {
          return ie;
        }), i.d(qr, "copyProperties", function () {
          return ne;
        }), i.d(qr, "softCopyProperties", function () {
          return re;
        }), i.d(qr, "forceCopyProperties", function () {
          return se;
        }), i.d(qr, "copyAllProperties", function () {
          return oe;
        });
        var $r = {};
        i.r($r), i.d($r, "fromArray", function () {
          return ae;
        }), i.d($r, "length", function () {
          return le;
        }), i.d($r, "toArray", function () {
          return he;
        }), i.d($r, "eachContinue", function () {
          return ue;
        }), i.d($r, "each", function () {
          return pe;
        }), i.d($r, "sort", function () {
          return ce;
        }), i.d($r, "map", function () {
          return de;
        }), i.d($r, "filter", function () {
          return fe;
        }), i.d($r, "concat", function () {
          return ge;
        }), i.d($r, "flatten", function () {
          return ye;
        }), i.d($r, "indexed", function () {
          return me;
        }), i.d($r, "findIndex", function () {
          return ve;
        }), i.d($r, "find", function () {
          return be;
        }), i.d($r, "findMap", function () {
          return xe;
        }), i.d($r, "contains", function () {
          return _e;
        }), i.d($r, "foldl", function () {
          return Pe;
        }), i.d($r, "min", function () {
          return Ce;
        }), i.d($r, "max", function () {
          return Se;
        }), i.d($r, "join", function () {
          return Ie;
        }), i.d($r, "ListIterator", function () {
          return Ss;
        });
        var Jr = {};
        i.r(Jr), i.d(Jr, "order", function () {
          return De;
        }), i.d(Jr, "repeat", function () {
          return ke;
        }), i.d(Jr, "random", function () {
          return Te;
        });
        var Qr = {};
        i.r(Qr), i.d(Qr, "order", function () {
          return Ve;
        });
        var ts = {};
        i.r(ts), i.d(ts, "rgb", function () {
          return je;
        }), i.d(ts, "hexToRgb", function () {
          return Le;
        }), i.d(ts, "rgbaToRgb", function () {
          return Ee;
        }), i.d(ts, "rgbToHex", function () {
          return Re;
        }), i.d(ts, "rgbToRGBA", function () {
          return Be;
        }), i.d(ts, "pad2", function () {
          return Ne;
        }), i.d(ts, "interpolate", function () {
          return He;
        }), i.d(ts, "lighten", function () {
          return We;
        }), i.d(ts, "getLightnessStep", function () {
          return Xe;
        }), i.d(ts, "brighten", function () {
          return Ye;
        }), i.d(ts, "getBrightnessStep", function () {
          return ze;
        }), i.d(ts, "saturate", function () {
          return Ue;
        }), i.d(ts, "hslToRgb", function () {
          return Ge;
        }), i.d(ts, "rgbToHsl", function () {
          return Ke;
        }), i.d(ts, "rgbToHsv", function () {
          return Ze;
        }), i.d(ts, "hsvToRgb", function () {
          return qe;
        }), i.d(ts, "isLight", function () {
          return $e;
        });
        var es = {};
        i.r(es), i.d(es, "used", function () {
          return ii;
        }), i.d(es, "copyProperties", function () {
          return ni;
        }), i.d(es, "stripHash", function () {
          return ri;
        }), i.d(es, "getBaseURI", function () {
          return si;
        }), i.d(es, "softCopyProperties", function () {
          return oi;
        }), i.d(es, "copy", function () {
          return ai;
        }), i.d(es, "isNotEmpty", function () {
          return li;
        }), i.d(es, "relativeToValue", function () {
          return hi;
        }), i.d(es, "relativeRadiusToValue", function () {
          return ui;
        }), i.d(es, "valueToRelative", function () {
          return pi;
        }), i.d(es, "getPixelRatio", function () {
          return ci;
        }), i.d(es, "camelToDashed", function () {
          return di;
        }), i.d(es, "capitalize", function () {
          return fi;
        }), i.d(es, "stringify", function () {
          return gi;
        }), i.d(es, "escapeForRgex", function () {
          return yi;
        }), i.d(es, "splitTextByCharCount", function () {
          return mi;
        }), i.d(es, "truncateWithEllipsis", function () {
          return vi;
        }), i.d(es, "trim", function () {
          return bi;
        }), i.d(es, "rtrim", function () {
          return xi;
        }), i.d(es, "ltrim", function () {
          return _i;
        }), i.d(es, "reverseString", function () {
          return Pi;
        }), i.d(es, "unquote", function () {
          return wi;
        }), i.d(es, "padString", function () {
          return Ci;
        }), i.d(es, "getFormat", function () {
          return Oi;
        }), i.d(es, "cleanFormat", function () {
          return Si;
        }), i.d(es, "stripTags", function () {
          return Ii;
        }), i.d(es, "plainText", function () {
          return Di;
        }), i.d(es, "numberToString", function () {
          return ki;
        }), i.d(es, "anyToDate", function () {
          return Ti;
        }), i.d(es, "anyToNumber", function () {
          return Ai;
        }), i.d(es, "getYearDay", function () {
          return Vi;
        }), i.d(es, "getWeek", function () {
          return Fi;
        }), i.d(es, "getMonthWeek", function () {
          return Mi;
        }), i.d(es, "getDayFromWeek", function () {
          return ji;
        }), i.d(es, "get12Hours", function () {
          return Li;
        }), i.d(es, "getTimeZone", function () {
          return Ei;
        }), i.d(es, "random", function () {
          return Ri;
        }), i.d(es, "fitNumber", function () {
          return Bi;
        }), i.d(es, "fitNumberRelative", function () {
          return Ni;
        }), i.d(es, "svgPointToSprite", function () {
          return Hi;
        }), i.d(es, "spritePointToSvg", function () {
          return Wi;
        }), i.d(es, "spritePointToSprite", function () {
          return Xi;
        }), i.d(es, "svgRectToSprite", function () {
          return Yi;
        }), i.d(es, "spriteRectToSvg", function () {
          return zi;
        }), i.d(es, "documentPointToSvg", function () {
          return Ui;
        }), i.d(es, "svgPointToDocument", function () {
          return Gi;
        }), i.d(es, "documentPointToSprite", function () {
          return Ki;
        }), i.d(es, "spritePointToDocument", function () {
          return Zi;
        }), i.d(es, "width", function () {
          return qi;
        }), i.d(es, "height", function () {
          return $i;
        }), i.d(es, "decimalPlaces", function () {
          return Ji;
        }), i.d(es, "parseUrl", function () {
          return Qi;
        }), i.d(es, "serializeUrl", function () {
          return tn;
        }), i.d(es, "joinUrl", function () {
          return nn;
        }), i.d(es, "isIE", function () {
          return rn;
        });
        var is = {};
        i.r(is), i.d(is, "linear", function () {
          return sn;
        }), i.d(is, "quadIn", function () {
          return on;
        }), i.d(is, "quadOut", function () {
          return an;
        }), i.d(is, "quadInOut", function () {
          return ln;
        }), i.d(is, "polyIn", function () {
          return hn;
        }), i.d(is, "polyOut", function () {
          return un;
        }), i.d(is, "polyInOut", function () {
          return pn;
        }), i.d(is, "polyIn3", function () {
          return cn;
        }), i.d(is, "polyOut3", function () {
          return dn;
        }), i.d(is, "polyInOut3", function () {
          return fn;
        }), i.d(is, "expIn", function () {
          return gn;
        }), i.d(is, "expOut", function () {
          return yn;
        }), i.d(is, "expInOut", function () {
          return mn;
        }), i.d(is, "sinIn", function () {
          return vn;
        }), i.d(is, "sinOut", function () {
          return bn;
        }), i.d(is, "sinInOut", function () {
          return xn;
        }), i.d(is, "cubicIn", function () {
          return _n;
        }), i.d(is, "cubicOut", function () {
          return Pn;
        }), i.d(is, "cubicInOut", function () {
          return wn;
        }), i.d(is, "circleIn", function () {
          return Cn;
        }), i.d(is, "circleOut", function () {
          return On;
        }), i.d(is, "circleInOut", function () {
          return Sn;
        }), i.d(is, "bounceIn", function () {
          return In;
        }), i.d(is, "bounceOut", function () {
          return Dn;
        }), i.d(is, "bounceInOut", function () {
          return kn;
        }), i.d(is, "elasticIn", function () {
          return Tn;
        }), i.d(is, "elasticOut", function () {
          return An;
        }), i.d(is, "elasticInOut", function () {
          return Vn;
        });
        var ns = {};
        i.r(ns), i.d(ns, "timeUnitDurations", function () {
          return Xo;
        }), i.d(ns, "getNextUnit", function () {
          return nr;
        }), i.d(ns, "getDuration", function () {
          return rr;
        }), i.d(ns, "now", function () {
          return sr;
        }), i.d(ns, "getTime", function () {
          return or;
        }), i.d(ns, "copy", function () {
          return ar;
        }), i.d(ns, "checkChange", function () {
          return lr;
        }), i.d(ns, "add", function () {
          return hr;
        }), i.d(ns, "round", function () {
          return ur;
        });
        var rs = {};
        i.r(rs), i.d(rs, "polyline", function () {
          return br;
        }), i.d(rs, "moveTo", function () {
          return xr;
        }), i.d(rs, "lineTo", function () {
          return _r;
        }), i.d(rs, "quadraticCurveTo", function () {
          return Pr;
        }), i.d(rs, "cubicCurveTo", function () {
          return wr;
        }), i.d(rs, "closePath", function () {
          return Cr;
        }), i.d(rs, "arcTo", function () {
          return Or;
        }), i.d(rs, "arc", function () {
          return Sr;
        }), i.d(rs, "arcToPoint", function () {
          return Ir;
        }), i.d(rs, "rectangle", function () {
          return Dr;
        }), i.d(rs, "rectToPath", function () {
          return kr;
        }), i.d(rs, "pathToPoints", function () {
          return Tr;
        }), i.d(rs, "spiralPoints", function () {
          return Ar;
        }), i.d(rs, "pointsToPath", function () {
          return Vr;
        });
        var ss = {};
        i.r(ss), i.d(ss, "System", function () {
          return js;
        }), i.d(ss, "system", function () {
          return Ls;
        }), i.d(ss, "BaseObject", function () {
          return $s;
        }), i.d(ss, "BaseObjectEvents", function () {
          return Js;
        }), i.d(ss, "Component", function () {
          return Fa;
        }), i.d(ss, "Container", function () {
          return _a;
        }), i.d(ss, "DataItem", function () {
          return Va;
        }), i.d(ss, "Sprite", function () {
          return ba;
        }), i.d(ss, "SpriteEventDispatcher", function () {
          return Co;
        }), i.d(ss, "SpriteState", function () {
          return Po;
        }), i.d(ss, "registry", function () {
          return Fs;
        }), i.d(ss, "Registry", function () {
          return Vs;
        }), i.d(ss, "options", function () {
          return Ms;
        }), i.d(ss, "CSVParser", function () {
          return Ca;
        }), i.d(ss, "DataLoader", function () {
          return Sa;
        }), i.d(ss, "dataLoader", function () {
          return Ia;
        }), i.d(ss, "DataParser", function () {
          return Pa;
        }), i.d(ss, "DataSource", function () {
          return Da;
        }), i.d(ss, "JSONParser", function () {
          return Oa;
        }), i.d(ss, "SVGDefaults", function () {
          return Oo;
        }), i.d(ss, "Button", function () {
          return La;
        }), i.d(ss, "Circle", function () {
          return Ea;
        }), i.d(ss, "Ellipse", function () {
          return Ra;
        }), i.d(ss, "Image", function () {
          return Ba;
        }), i.d(ss, "Label", function () {
          return Ma;
        }), i.d(ss, "Line", function () {
          return Na;
        }), i.d(ss, "Popup", function () {
          return Uo;
        }), i.d(ss, "Modal", function () {
          return Go;
        }), i.d(ss, "PointedRectangle", function () {
          return Wa;
        }), i.d(ss, "PointedShape", function () {
          return Ha;
        }), i.d(ss, "Polyarc", function () {
          return Ya;
        }), i.d(ss, "Polygon", function () {
          return Ua;
        }), i.d(ss, "Polyline", function () {
          return Xa;
        }), i.d(ss, "Polyspline", function () {
          return Ga;
        }), i.d(ss, "Preloader", function () {
          return Za;
        }), i.d(ss, "Rectangle", function () {
          return xa;
        }), i.d(ss, "ResizeButton", function () {
          return qa;
        }), i.d(ss, "RoundedRectangle", function () {
          return ja;
        }), i.d(ss, "Scrollbar", function () {
          return $a;
        }), i.d(ss, "Slider", function () {
          return Ja;
        }), i.d(ss, "Slice", function () {
          return Ka;
        }), i.d(ss, "TextLink", function () {
          return Qa;
        }), i.d(ss, "Tooltip", function () {
          return il;
        }), i.d(ss, "Trapezoid", function () {
          return nl;
        }), i.d(ss, "Triangle", function () {
          return rl;
        }), i.d(ss, "WavedCircle", function () {
          return al;
        }), i.d(ss, "WavedLine", function () {
          return ll;
        }), i.d(ss, "WavedRectangle", function () {
          return hl;
        }), i.d(ss, "ZoomOutButton", function () {
          return ul;
        }), i.d(ss, "PlayButton", function () {
          return pl;
        }), i.d(ss, "Cone", function () {
          return gl;
        }), i.d(ss, "Rectangle3D", function () {
          return ml;
        }), i.d(ss, "Slice3D", function () {
          return vl;
        }), i.d(ss, "Export", function () {
          return ma;
        }), i.d(ss, "ExportMenu", function () {
          return ga;
        }), i.d(ss, "DateFormatter", function () {
          return ua;
        }), i.d(ss, "DurationFormatter", function () {
          return pa;
        }), i.d(ss, "NumberFormatter", function () {
          return ha;
        }), i.d(ss, "TextFormatter", function () {
          return la;
        }), i.d(ss, "getTextFormatter", function () {
          return dr;
        }), i.d(ss, "Inertia", function () {
          return No;
        }), i.d(ss, "Interaction", function () {
          return Yo;
        }), i.d(ss, "getInteraction", function () {
          return pr;
        }), i.d(ss, "InteractionKeyboardObject", function () {
          return Bo;
        }), i.d(ss, "InteractionObject", function () {
          return Ro;
        }), i.d(ss, "InteractionObjectEventDispatcher", function () {
          return Eo;
        }), i.d(ss, "MouseCursorStyle", function () {
          return sa;
        }), i.d(ss, "AMElement", function () {
          return Mo;
        }), i.d(ss, "Group", function () {
          return jo;
        }), i.d(ss, "Paper", function () {
          return Jo;
        }), i.d(ss, "Tension", function () {
          return sl;
        }), i.d(ss, "Basis", function () {
          return ol;
        }), i.d(ss, "SVGContainer", function () {
          return $o;
        }), i.d(ss, "ColorModifier", function () {
          return cl;
        }), i.d(ss, "LinearGradient", function () {
          return ia;
        }), i.d(ss, "LinearGradientModifier", function () {
          return fl;
        }), i.d(ss, "RadialGradientModifier", function () {
          return bl;
        }), i.d(ss, "LinePattern", function () {
          return xl;
        }), i.d(ss, "Pattern", function () {
          return ea;
        }), i.d(ss, "RadialGradient", function () {
          return na;
        }), i.d(ss, "RectPattern", function () {
          return _l;
        }), i.d(ss, "ColorizeFilter", function () {
          return Pl;
        }), i.d(ss, "DesaturateFilter", function () {
          return wl;
        }), i.d(ss, "DropShadowFilter", function () {
          return el;
        }), i.d(ss, "BlurFilter", function () {
          return Cl;
        }), i.d(ss, "Filter", function () {
          return tl;
        }), i.d(ss, "FocusFilter", function () {
          return Ol;
        }), i.d(ss, "LightenFilter", function () {
          return yl;
        }), i.d(ss, "GlobalAdapter", function () {
          return Us;
        }), i.d(ss, "globalAdapter", function () {
          return Gs;
        }), i.d(ss, "Adapter", function () {
          return Ks;
        }), i.d(ss, "Animation", function () {
          return Io;
        }), i.d(ss, "animate", function () {
          return Fn;
        }), i.d(ss, "nextFrame", function () {
          return Wt;
        }), i.d(ss, "readFrame", function () {
          return Xt;
        }), i.d(ss, "writeFrame", function () {
          return Yt;
        }), i.d(ss, "whenIdle", function () {
          return zt;
        }), i.d(ss, "triggerIdle", function () {
          return Ut;
        }), i.d(ss, "Cache", function () {
          return Ts;
        }), i.d(ss, "cache", function () {
          return As;
        }), i.d(ss, "Color", function () {
          return qs;
        }), i.d(ss, "color", function () {
          return Je;
        }), i.d(ss, "isColor", function () {
          return Qe;
        }), i.d(ss, "castColor", function () {
          return ti;
        }), i.d(ss, "ColorSet", function () {
          return Sl;
        }), i.d(ss, "InterfaceColorSet", function () {
          return ta;
        }), i.d(ss, "DictionaryDisposer", function () {
          return Is;
        }), i.d(ss, "Dictionary", function () {
          return Ds;
        }), i.d(ss, "DictionaryTemplate", function () {
          return ks;
        }), i.d(ss, "Disposer", function () {
          return fs;
        }), i.d(ss, "MultiDisposer", function () {
          return gs;
        }), i.d(ss, "MutableValueDisposer", function () {
          return ys;
        }), i.d(ss, "CounterDisposer", function () {
          return ms;
        }), i.d(ss, "StyleRule", function () {
          return Ao;
        }), i.d(ss, "StyleClass", function () {
          return Fo;
        }), i.d(ss, "getElement", function () {
          return Bn;
        }), i.d(ss, "addClass", function () {
          return Nn;
        }), i.d(ss, "removeClass", function () {
          return Hn;
        }), i.d(ss, "blur", function () {
          return Yn;
        }), i.d(ss, "focus", function () {
          return zn;
        }), i.d(ss, "outerHTML", function () {
          return Un;
        }), i.d(ss, "isElement", function () {
          return Gn;
        }), i.d(ss, "copyAttributes", function () {
          return qn;
        }), i.d(ss, "fixPixelPerfect", function () {
          return $n;
        }), i.d(ss, "ready", function () {
          return Qn;
        }), i.d(ss, "EventDispatcher", function () {
          return Cs;
        }), i.d(ss, "TargetedEventDispatcher", function () {
          return Os;
        }), i.d(ss, "ListIterator", function () {
          return Ss;
        }), i.d(ss, "min", function () {
          return Ce;
        }), i.d(ss, "max", function () {
          return Se;
        }), i.d(ss, "join", function () {
          return Ie;
        }), i.d(ss, "Keyboard", function () {
          return Ho;
        }), i.d(ss, "keyboard", function () {
          return Wo;
        }), i.d(ss, "Language", function () {
          return aa;
        }), i.d(ss, "IndexedIterable", function () {
          return Es;
        }), i.d(ss, "ListGrouper", function () {
          return Rs;
        }), i.d(ss, "ListDisposer", function () {
          return Bs;
        }), i.d(ss, "List", function () {
          return Ns;
        }), i.d(ss, "ListTemplate", function () {
          return Hs;
        }), i.d(ss, "Morpher", function () {
          return za;
        }), i.d(ss, "reverse", function () {
          return Fe;
        }), i.d(ss, "or", function () {
          return Me;
        }), i.d(ss, "Percent", function () {
          return hs;
        }), i.d(ss, "percent", function () {
          return h;
        }), i.d(ss, "isPercent", function () {
          return u;
        }), i.d(ss, "Plugin", function () {
          return Il;
        }), i.d(ss, "Responsive", function () {
          return ka;
        }), i.d(ss, "ResponsiveBreakpoints", function () {
          return Aa;
        }), i.d(ss, "defaultRules", function () {
          return Ta;
        }), i.d(ss, "OrderedList", function () {
          return Ws;
        }), i.d(ss, "SortedList", function () {
          return Xs;
        }), i.d(ss, "OrderedListTemplate", function () {
          return Ys;
        }), i.d(ss, "SortedListTemplate", function () {
          return zs;
        }), i.d(ss, "PX", function () {
          return Qs;
        }), i.d(ss, "STRING", function () {
          return to;
        }), i.d(ss, "NUMBER", function () {
          return eo;
        }), i.d(ss, "DATE", function () {
          return io;
        }), i.d(ss, "DURATION", function () {
          return no;
        }), i.d(ss, "PLACEHOLDER", function () {
          return ro;
        }), i.d(ss, "PLACEHOLDER2", function () {
          return so;
        }), i.d(ss, "isNaN", function () {
          return p;
        }), i.d(ss, "checkString", function () {
          return f;
        }), i.d(ss, "checkBoolean", function () {
          return g;
        }), i.d(ss, "checkNumber", function () {
          return y;
        }), i.d(ss, "checkObject", function () {
          return m;
        }), i.d(ss, "castString", function () {
          return x;
        }), i.d(ss, "castNumber", function () {
          return _;
        }), i.d(ss, "isString", function () {
          return T;
        }), i.d(ss, "isNumber", function () {
          return A;
        }), i.d(ss, "isObject", function () {
          return V;
        }), i.d(ss, "isArray", function () {
          return F;
        }), i.d(ss, "Validatable", function () {
          return fa;
        }), i.d(ss, "path", function () {
          return rs;
        }), i.d(ss, "colors", function () {
          return ts;
        }), i.d(ss, "ease", function () {
          return is;
        }), i.d(ss, "math", function () {
          return Kr;
        }), i.d(ss, "array", function () {
          return Zr;
        }), i.d(ss, "number", function () {
          return Qr;
        }), i.d(ss, "object", function () {
          return qr;
        }), i.d(ss, "string", function () {
          return Jr;
        }), i.d(ss, "time", function () {
          return ns;
        }), i.d(ss, "utils", function () {
          return es;
        }), i.d(ss, "iter", function () {
          return $r;
        }), i.d(ss, "type", function () {
          return Gr;
        }), i.d(ss, "create", function () {
          return Nr;
        }), i.d(ss, "createFromConfig", function () {
          return Hr;
        }), i.d(ss, "disposeAllCharts", function () {
          return jr;
        }), i.d(ss, "useTheme", function () {
          return Wr;
        }), i.d(ss, "unuseTheme", function () {
          return Xr;
        }), i.d(ss, "unuseAllThemes", function () {
          return Yr;
        }), i.d(ss, "addLicense", function () {
          return zr;
        });
        var os = {};
        i.r(os), i.d(os, "GaugeChartDataItem", function () {
          return Ih;
        }), i.d(os, "GaugeChart", function () {
          return Dh;
        }), i.d(os, "RadarChartDataItem", function () {
          return Ch;
        }), i.d(os, "RadarChart", function () {
          return Oh;
        }), i.d(os, "XYChartDataItem", function () {
          return ch;
        }), i.d(os, "XYChart", function () {
          return dh;
        }), i.d(os, "SerialChartDataItem", function () {
          return Rl;
        }), i.d(os, "SerialChart", function () {
          return Bl;
        }), i.d(os, "PieChart3DDataItem", function () {
          return Nh;
        }), i.d(os, "PieChart3D", function () {
          return Hh;
        }), i.d(os, "PieChartDataItem", function () {
          return Lh;
        }), i.d(os, "PieChart", function () {
          return Eh;
        }), i.d(os, "SlicedChart", function () {
          return Xh;
        }), i.d(os, "SlicedChartDataItem", function () {
          return Wh;
        }), i.d(os, "FlowDiagramDataItem", function () {
          return Uh;
        }), i.d(os, "FlowDiagram", function () {
          return Gh;
        }), i.d(os, "SankeyDiagramDataItem", function () {
          return $h;
        }), i.d(os, "SankeyDiagram", function () {
          return Jh;
        }), i.d(os, "ChordDiagramDataItem", function () {
          return iu;
        }), i.d(os, "ChordDiagram", function () {
          return nu;
        }), i.d(os, "TreeMapDataItem", function () {
          return hu;
        }), i.d(os, "TreeMap", function () {
          return uu;
        }), i.d(os, "XYChart3DDataItem", function () {
          return yu;
        }), i.d(os, "XYChart3D", function () {
          return mu;
        }), i.d(os, "ChartDataItem", function () {
          return Tl;
        }), i.d(os, "Chart", function () {
          return Al;
        }), i.d(os, "LegendDataItem", function () {
          return Fl;
        }), i.d(os, "Legend", function () {
          return jl;
        }), i.d(os, "LegendSettings", function () {
          return Ml;
        }), i.d(os, "HeatLegend", function () {
          return vu;
        }), i.d(os, "SeriesDataItem", function () {
          return Ll;
        }), i.d(os, "Series", function () {
          return El;
        }), i.d(os, "XYSeriesDataItem", function () {
          return hh;
        }), i.d(os, "XYSeries", function () {
          return uh;
        }), i.d(os, "LineSeriesDataItem", function () {
          return gh;
        }), i.d(os, "LineSeries", function () {
          return yh;
        }), i.d(os, "LineSeriesSegment", function () {
          return fh;
        }), i.d(os, "CandlestickSeriesDataItem", function () {
          return xu;
        }), i.d(os, "CandlestickSeries", function () {
          return _u;
        }), i.d(os, "OHLCSeriesDataItem", function () {
          return wu;
        }), i.d(os, "OHLCSeries", function () {
          return Cu;
        }), i.d(os, "ColumnSeriesDataItem", function () {
          return su;
        }), i.d(os, "ColumnSeries", function () {
          return ou;
        }), i.d(os, "StepLineSeriesDataItem", function () {
          return Su;
        }), i.d(os, "StepLineSeries", function () {
          return Iu;
        }), i.d(os, "RadarSeriesDataItem", function () {
          return mh;
        }), i.d(os, "RadarSeries", function () {
          return vh;
        }), i.d(os, "RadarColumnSeriesDataItem", function () {
          return ku;
        }), i.d(os, "RadarColumnSeries", function () {
          return Tu;
        }), i.d(os, "PieSeriesDataItem", function () {
          return Mh;
        }), i.d(os, "PieSeries", function () {
          return jh;
        }), i.d(os, "FunnelSeries", function () {
          return Mu;
        }), i.d(os, "FunnelSeriesDataItem", function () {
          return Fu;
        }), i.d(os, "PyramidSeries", function () {
          return Lu;
        }), i.d(os, "PyramidSeriesDataItem", function () {
          return ju;
        }), i.d(os, "PictorialStackedSeries", function () {
          return Ru;
        }), i.d(os, "PictorialStackedSeriesDataItem", function () {
          return Eu;
        }), i.d(os, "PieTick", function () {
          return Fh;
        }), i.d(os, "FunnelSlice", function () {
          return Au;
        }), i.d(os, "PieSeries3DDataItem", function () {
          return Rh;
        }), i.d(os, "PieSeries3D", function () {
          return Bh;
        }), i.d(os, "TreeMapSeriesDataItem", function () {
          return au;
        }), i.d(os, "TreeMapSeries", function () {
          return lu;
        }), i.d(os, "ColumnSeries3DDataItem", function () {
          return fu;
        }), i.d(os, "ColumnSeries3D", function () {
          return gu;
        }), i.d(os, "ConeSeriesDataItem", function () {
          return Nu;
        }), i.d(os, "ConeSeries", function () {
          return Hu;
        }), i.d(os, "CurvedColumnSeries", function () {
          return Yu;
        }), i.d(os, "CurvedColumnSeriesDataItem", function () {
          return Xu;
        }), i.d(os, "AxisDataItem", function () {
          return Wl;
        }), i.d(os, "Axis", function () {
          return Xl;
        }), i.d(os, "Grid", function () {
          return Ul;
        }), i.d(os, "AxisTick", function () {
          return Zl;
        }), i.d(os, "AxisLabel", function () {
          return Gl;
        }), i.d(os, "AxisLine", function () {
          return Yl;
        }), i.d(os, "AxisFill", function () {
          return zl;
        }), i.d(os, "AxisRenderer", function () {
          return ql;
        }), i.d(os, "AxisBreak", function () {
          return Nl;
        }), i.d(os, "AxisBullet", function () {
          return $l;
        }), i.d(os, "ValueAxisDataItem", function () {
          return th;
        }), i.d(os, "ValueAxis", function () {
          return eh;
        }), i.d(os, "CategoryAxisDataItem", function () {
          return ah;
        }), i.d(os, "CategoryAxis", function () {
          return lh;
        }), i.d(os, "CategoryAxisBreak", function () {
          return oh;
        }), i.d(os, "DateAxisDataItem", function () {
          return nh;
        }), i.d(os, "DateAxis", function () {
          return rh;
        }), i.d(os, "DurationAxisDataItem", function () {
          return zu;
        }), i.d(os, "DurationAxis", function () {
          return Uu;
        }), i.d(os, "DateAxisBreak", function () {
          return ih;
        }), i.d(os, "ValueAxisBreak", function () {
          return Ql;
        }), i.d(os, "AxisRendererX", function () {
          return sh;
        }), i.d(os, "AxisRendererY", function () {
          return Jl;
        }), i.d(os, "AxisRendererRadial", function () {
          return wh;
        }), i.d(os, "AxisLabelCircular", function () {
          return _h;
        }), i.d(os, "AxisRendererCircular", function () {
          return Ph;
        }), i.d(os, "AxisFillCircular", function () {
          return bh;
        }), i.d(os, "GridCircular", function () {
          return xh;
        }), i.d(os, "AxisRendererX3D", function () {
          return pu;
        }), i.d(os, "AxisRendererY3D", function () {
          return cu;
        }), i.d(os, "Tick", function () {
          return Kl;
        }), i.d(os, "Bullet", function () {
          return Vl;
        }), i.d(os, "LabelBullet", function () {
          return Kh;
        }), i.d(os, "CircleBullet", function () {
          return Gu;
        }), i.d(os, "ErrorBullet", function () {
          return Ku;
        }), i.d(os, "XYChartScrollbar", function () {
          return ph;
        }), i.d(os, "ClockHand", function () {
          return Sh;
        }), i.d(os, "FlowDiagramNode", function () {
          return Yh;
        }), i.d(os, "FlowDiagramLink", function () {
          return zh;
        }), i.d(os, "SankeyNode", function () {
          return Zh;
        }), i.d(os, "SankeyLink", function () {
          return qh;
        }), i.d(os, "ChordNode", function () {
          return Qh;
        }), i.d(os, "ChordLink", function () {
          return eu;
        }), i.d(os, "NavigationBarDataItem", function () {
          return Zu;
        }), i.d(os, "NavigationBar", function () {
          return qu;
        }), i.d(os, "Column", function () {
          return ru;
        }), i.d(os, "Candlestick", function () {
          return bu;
        }), i.d(os, "OHLC", function () {
          return Pu;
        }), i.d(os, "RadarColumn", function () {
          return Du;
        }), i.d(os, "Column3D", function () {
          return du;
        }), i.d(os, "ConeColumn", function () {
          return Bu;
        }), i.d(os, "CurvedColumn", function () {
          return Wu;
        }), i.d(os, "XYCursor", function () {
          return Ju;
        }), i.d(os, "Cursor", function () {
          return $u;
        }), i.d(os, "RadarCursor", function () {
          return Qu;
        });

        var _as = function as(t, e) {
          return (_as = Object.setPrototypeOf || {
            __proto__: []
          } instanceof Array && function (t, e) {
            t.__proto__ = e;
          } || function (t, e) {
            for (var i in e) e.hasOwnProperty(i) && (t[i] = e[i]);
          })(t, e);
        },
            _ls = function ls() {
          return (_ls = Object.assign || function (t) {
            for (var e, i = 1, n = arguments.length; i < n; i++) for (var r in e = arguments[i]) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]);

            return t;
          }).apply(this, arguments);
        },
            hs = function () {
          function t(t) {
            this._value = t;
          }

          return Object.defineProperty(t.prototype, "value", {
            get: function get() {
              return this._value / 100;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(t.prototype, "percent", {
            get: function get() {
              return this._value;
            },
            enumerable: !0,
            configurable: !0
          }), t.prototype.toString = function () {
            return this._value + "%";
          }, t;
        }(),
            us = Math.PI,
            ps = us / 2,
            cs = us / 180,
            ds = 180 / us,
            fs = function () {
          function t(t) {
            this._disposed = !1, this._dispose = t;
          }

          return t.prototype.isDisposed = function () {
            return this._disposed;
          }, t.prototype.dispose = function () {
            this._disposed || (this._disposed = !0, this._dispose());
          }, t;
        }(),
            gs = function (t) {
          function e(e) {
            return t.call(this, function () {
              mt(e, function (t) {
                t.dispose();
              });
            }) || this;
          }

          return n(e, t), e;
        }(fs),
            ys = function (t) {
          function e() {
            var e = t.call(this, function () {
              S(e._disposer) && (e._disposer.dispose(), e._disposer = void 0);
            }) || this;
            return e;
          }

          return n(e, t), e.prototype.get = function () {
            return this._value;
          }, e.prototype.set = function (t, e) {
            S(this._disposer) && this._disposer.dispose(), this._disposer = e, this._value = t;
          }, e.prototype.reset = function () {
            this.set(void 0, void 0);
          }, e;
        }(fs),
            ms = function (t) {
          function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e._counter = 0, e;
          }

          return n(e, t), e.prototype.increment = function () {
            var t = this;
            return ++this._counter, new fs(function () {
              0 === --t._counter && t.dispose();
            });
          }, e;
        }(fs),
            vs = !1,
            bs = [],
            xs = [],
            _s = [],
            Ps = [],
            ws = "function" == typeof requestAnimationFrame ? function (t) {
          requestAnimationFrame(t);
        } : function (t) {
          setTimeout(t, 1e3 / 60);
        },
            Cs = function () {
          function t() {
            this._listeners = [], this._killed = [], this._disabled = {}, this._iterating = 0, this._enabled = !0, this._disposed = !1;
          }

          return t.prototype.isDisposed = function () {
            return this._disposed;
          }, t.prototype.dispose = function () {
            if (!this._disposed) {
              this._disposed = !0;
              var t = this._listeners;
              this._iterating = 1, this._listeners = null, this._disabled = null;

              try {
                mt(t, function (t) {
                  t.disposer.dispose();
                });
              } finally {
                this._killed = null, this._iterating = null;
              }
            }
          }, t.prototype.hasListeners = function () {
            return 0 !== this._listeners.length;
          }, t.prototype.hasListenersByType = function (t) {
            return gt(this._listeners, function (e) {
              return (null === e.type || e.type === t) && !e.killed;
            });
          }, t.prototype.enable = function () {
            this._enabled = !0;
          }, t.prototype.disable = function () {
            this._enabled = !1;
          }, t.prototype.enableType = function (t) {
            delete this._disabled[t];
          }, t.prototype.disableType = function (t, e) {
            void 0 === e && (e = 1 / 0), this._disabled[t] = e;
          }, t.prototype._removeListener = function (t) {
            if (0 === this._iterating) {
              var e = this._listeners.indexOf(t);

              if (-1 === e) throw new Error("Invalid state: could not remove listener");

              this._listeners.splice(e, 1);
            } else this._killed.push(t);
          }, t.prototype._removeExistingListener = function (t, e, i, n) {
            if (this._disposed) throw new Error("EventDispatcher is disposed");

            this._eachListener(function (r) {
              r.once !== t || r.type !== e || null != i && r.callback !== i || r.context !== n || r.disposer.dispose();
            });
          }, t.prototype.isEnabled = function (t) {
            if (this._disposed) throw new Error("EventDispatcher is disposed");
            return this._enabled && this._listeners.length > 0 && this.hasListenersByType(t) && null == this._disabled[t];
          }, t.prototype.has = function (t, e, i) {
            return -1 !== Et(this._listeners, function (n) {
              return !0 !== n.once && n.type === t && (null == e || n.callback === e) && n.context === i;
            });
          }, t.prototype._shouldDispatch = function (t) {
            if (this._disposed) throw new Error("EventDispatcher is disposed");
            var e = this._disabled[t];
            return A(e) ? (e <= 1 ? delete this._disabled[t] : --this._disabled[t], !1) : this._enabled;
          }, t.prototype._eachListener = function (t) {
            var e = this;
            ++this._iterating;

            try {
              mt(this._listeners, t);
            } finally {
              0 === --this._iterating && 0 !== this._killed.length && (mt(this._killed, function (t) {
                e._removeListener(t);
              }), this._killed.length = 0);
            }
          }, t.prototype.dispatchImmediately = function (t, e) {
            this._shouldDispatch(t) && this._eachListener(function (i) {
              i.killed || null !== i.type && i.type !== t || i.dispatch(t, e);
            });
          }, t.prototype.dispatch = function (t, e) {
            this._shouldDispatch(t) && this._eachListener(function (i) {
              i.killed || null !== i.type && i.type !== t || zt(function () {
                i.killed || i.dispatch(t, e);
              });
            });
          }, t.prototype._on = function (t, e, i, n, r, s) {
            var o = this;
            if (this._disposed) throw new Error("EventDispatcher is disposed");

            this._removeExistingListener(t, e, i, n);

            var a = {
              type: e,
              callback: i,
              context: n,
              shouldClone: r,
              dispatch: s,
              killed: !1,
              once: t,
              disposer: new fs(function () {
                a.killed = !0, o._removeListener(a);
              })
            };
            return this._listeners.push(a), a;
          }, t.prototype.onAll = function (t, e, i) {
            return void 0 === i && (i = !0), this._on(!1, null, t, e, i, function (i, n) {
              return t.call(e, i, n);
            }).disposer;
          }, t.prototype.on = function (t, e, i, n) {
            return void 0 === n && (n = !0), this._on(!1, t, e, i, n, function (t, n) {
              return e.call(i, n);
            }).disposer;
          }, t.prototype.once = function (t, e, i, n) {
            void 0 === n && (n = !0);

            var r = this._on(!0, t, e, i, n, function (t, n) {
              r.disposer.dispose(), e.call(i, n);
            });

            return r.disposer;
          }, t.prototype.off = function (t, e, i) {
            this._removeExistingListener(!1, t, e, i);
          }, t.prototype.copyFrom = function (t) {
            var e = this;
            if (this._disposed) throw new Error("EventDispatcher is disposed");
            if (t === this) throw new Error("Cannot copyFrom the same TargetedEventDispatcher");
            mt(t._listeners, function (t) {
              !t.killed && t.shouldClone && (null === t.type ? e.onAll(t.callback, t.context) : t.once ? e.once(t.type, t.callback, t.context) : e.on(t.type, t.callback, t.context));
            });
          }, t;
        }(),
            Os = function (t) {
          function e(e) {
            var i = t.call(this) || this;
            return i.target = e, i;
          }

          return n(e, t), e.prototype.copyFrom = function (t) {
            var e = this;
            if (this._disposed) throw new Error("EventDispatcher is disposed");
            if (t === this) throw new Error("Cannot copyFrom the same TargetedEventDispatcher");
            mt(t._listeners, function (i) {
              i.context !== t.target && !i.killed && i.shouldClone && (null === i.type ? e.onAll(i.callback, i.context) : i.once ? e.once(i.type, i.callback, i.context) : e.on(i.type, i.callback, i.context));
            });
          }, e;
        }(Cs),
            Ss = function () {
          function t(t, e) {
            this.createNewItems = !1, this.list = t, this._create = e, this.reset();
          }

          return t.prototype.reset = function () {
            this._listCopy = he(this.list.iterator());
          }, t.prototype.clear = function () {
            this._listCopy.length = 0;
          }, t.prototype.getFirst = function () {
            return this.returnItem(0);
          }, t.prototype.getLast = function () {
            return this.returnItem(this._listCopy.length - 1);
          }, t.prototype.find = function (t) {
            var e = Et(this._listCopy, t);

            if (-1 !== e) {
              var i = this._listCopy[e];
              return St(this._listCopy, i), i;
            }

            return this.getLast();
          }, t.prototype.removeItem = function (t) {
            return St(this._listCopy, t);
          }, t.prototype.returnItem = function (t) {
            if (t >= 0 && t < this._listCopy.length) {
              var e = this._listCopy[t];
              return St(this._listCopy, e), e;
            }

            if (this.createNewItems) return this._create();
          }, t.prototype.iterator = function () {
            return ae(this._listCopy);
          }, t;
        }(),
            Is = function (t) {
          function e(e) {
            var i = e.events.on("removed", function (t) {
              t.oldValue.dispose();
            }, void 0, !1);
            return t.call(this, function () {
              i.dispose(), pe(e.iterator(), function (t) {
                t[1].dispose();
              });
            }) || this;
          }

          return n(e, t), e;
        }(fs),
            Ds = function () {
          function t() {
            this.events = new Cs(), this._dictionary = {};
          }

          return t.prototype.hasKey = function (t) {
            return qt(this._dictionary, t);
          }, t.prototype.getKey = function (t) {
            return this._dictionary[t];
          }, t.prototype.insertKey = function (t, e) {
            if (qt(this._dictionary, t)) throw new Error("Key " + t + " already exists in dictionary");
            this._dictionary[t] = e, this.events.isEnabled("insertKey") && this.events.dispatchImmediately("insertKey", {
              type: "insertKey",
              target: this,
              key: t,
              newValue: e
            });
          }, t.prototype.setKey = function (t, e) {
            if (qt(this._dictionary, t)) {
              var i = this._dictionary[t];
              i !== e && (this._dictionary[t] = e, this.events.isEnabled("setKey") && this.events.dispatchImmediately("setKey", {
                type: "setKey",
                target: this,
                key: t,
                oldValue: i,
                newValue: e
              }), this.events.isEnabled("removed") && this.events.dispatchImmediately("removed", {
                type: "removed",
                target: this,
                oldValue: i
              }));
            } else this._dictionary[t] = e, this.events.isEnabled("insertKey") && this.events.dispatchImmediately("insertKey", {
              type: "insertKey",
              target: this,
              key: t,
              newValue: e
            });
          }, t.prototype.updateKey = function (t, e) {
            if (!qt(this._dictionary, t)) throw new Error("Key " + t + " doesn't exist in dictionary");
            var i = this._dictionary[t],
                n = e(i);
            i !== n && (this._dictionary[t] = n, this.events.isEnabled("setKey") && this.events.dispatchImmediately("setKey", {
              type: "setKey",
              target: this,
              key: t,
              oldValue: i,
              newValue: n
            }), this.events.isEnabled("removed") && this.events.dispatchImmediately("removed", {
              type: "removed",
              target: this,
              oldValue: i
            }));
          }, t.prototype.removeKey = function (t) {
            if (qt(this._dictionary, t)) {
              var e = this._dictionary[t];
              delete this._dictionary[t], this.events.isEnabled("removeKey") && this.events.dispatchImmediately("removeKey", {
                type: "removeKey",
                target: this,
                key: t,
                oldValue: e
              }), this.events.isEnabled("removed") && this.events.dispatchImmediately("removed", {
                type: "removed",
                target: this,
                oldValue: e
              });
            }
          }, t.prototype.insertKeyIfEmpty = function (t, e) {
            return this.hasKey(t) || this.insertKey(t, e()), this.getKey(t);
          }, t.prototype.clear = function () {
            var t = this;
            this.events.isEnabled("removed") && Qt(this._dictionary, function (e, i) {
              t.events.dispatchImmediately("removed", {
                type: "removed",
                target: t,
                oldValue: i
              });
            }), this._dictionary = {}, this.events.isEnabled("cleared") && this.events.dispatchImmediately("cleared", {
              type: "cleared",
              target: this
            });
          }, t.prototype.copyFrom = function (t) {
            var e = this;
            pe(t.iterator(), function (t) {
              e.setKey(t[0], t[1]);
            });
          }, t.prototype.iterator = function () {
            return Gt(this._dictionary);
          }, t.prototype[Symbol.iterator] = function () {
            var t, e, i, n;
            return s(this, function (r) {
              switch (r.label) {
                case 0:
                  for (e in t = [], this._dictionary) t.push(e);

                  i = 0, r.label = 1;

                case 1:
                  return i < t.length ? (n = t[i], qt(this._dictionary, n) ? [4, [n, this._dictionary[n]]] : [3, 3]) : [3, 4];

                case 2:
                  r.sent(), r.label = 3;

                case 3:
                  return i++, [3, 1];

                case 4:
                  return [2];
              }
            });
          }, t.prototype.each = function (t) {
            pe(this.iterator(), function (e) {
              var i = a(e, 2),
                  n = i[0],
                  r = i[1];
              return t(n, r);
            });
          }, t.prototype.sortedIterator = function () {
            return ce(this.iterator(), function (t, e) {
              return De(t[0], e[0]);
            });
          }, t;
        }(),
            ks = function (t) {
          function e(e) {
            var i = t.call(this) || this;
            return i.template = e, i;
          }

          return n(e, t), Object.defineProperty(e.prototype, "template", {
            get: function get() {
              return this._template;
            },
            set: function set(t) {
              t.isTemplate = !0, this._template = t;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.copyFrom = function (t) {
            var e = this;
            pe(t.iterator(), function (t) {
              e.setKey(t[0], t[1].clone());
            });
          }, e.prototype.create = function (t) {
            var e = this;
            return this.insertKeyIfEmpty(t, function () {
              return e.template.clone();
            });
          }, e;
        }(Ds),
            Ts = function () {
          function t() {
            this._storage = new Ds(), this.ttl = 1e3;
          }

          return t.prototype.set = function (t, e, i, n) {
            var r = this._storage.insertKeyIfEmpty(t, function () {
              return new Ds();
            }),
                s = {
              touched: new Date().getTime(),
              ttl: A(n) ? n : this.ttl,
              value: i
            };

            r.setKey(e, s);
          }, t.prototype.get = function (t, e, i) {
            if (void 0 === i && (i = void 0), this._storage.hasKey(t)) {
              var n = this._storage.getKey(t);

              if (n.hasKey(e)) {
                var r = n.getKey(e);
                return r.ttl && r.touched + r.ttl < new Date().getTime() && (r.expired = !0), r.expired ? (n.removeKey(e), i) : r.value;
              }

              return i;
            }

            return i;
          }, t.prototype.clear = function (t) {
            t ? this._storage.removeKey(t) : this._storage.clear();
          }, t;
        }(),
            As = new Ts(),
            Vs = function () {
          function t() {
            this.events = new Cs(), this.themes = [], this.loadedThemes = {}, this._uidCount = 0, this.registeredClasses = {}, this._placeholders = {}, this.invalidSprites = {}, this.invalidDatas = {}, this.invalidRawDatas = [], this.invalidDataItems = [], this.invalidDataRange = [], this.invalidPositions = {}, this.invalidLayouts = {}, this.baseSprites = [], this.baseSpritesByUid = {}, this.queue = [], this.uid = this.getUniqueId(), this.invalidSprites.noBase = [], this.invalidDatas.noBase = [], this.invalidLayouts.noBase = [], this.invalidPositions.noBase = [];
          }

          return t.prototype.getUniqueId = function () {
            var t = this._uidCount;
            return this._uidCount += 1, "id-" + t;
          }, Object.defineProperty(t.prototype, "map", {
            get: function get() {
              return this._map || (this._map = new Ds()), this._map;
            },
            enumerable: !0,
            configurable: !0
          }), t.prototype.setCache = function (t, e, i) {
            As.set(this.uid, t, e, i);
          }, t.prototype.getCache = function (t, e) {
            return void 0 === e && (e = void 0), As.get(this.uid, t, e);
          }, t.prototype.dispatch = function (t, e) {
            this.events.isEnabled(t) && (e ? (e.type = t, e.target = e.target || this, this.events.dispatch(t, {
              type: t,
              target: this
            })) : this.events.dispatch(t, {
              type: t,
              target: this
            }));
          }, t.prototype.dispatchImmediately = function (t, e) {
            this.events.isEnabled(t) && (e ? (e.type = t, e.target = e.target || this, this.events.dispatchImmediately(t, e)) : this.events.dispatchImmediately(t, {
              type: t,
              target: this
            }));
          }, t.prototype.getPlaceholder = function (t) {
            return S(this._placeholders[t]) ? this._placeholders[t] : (this._placeholders[t] = "__amcharts_" + t + "_" + Te(8) + "__", this._placeholders[t]);
          }, t.prototype.addToInvalidComponents = function (t) {
            t.baseId ? It(this.invalidDatas[t.baseId], t) : It(this.invalidDatas.noBase, t);
          }, t.prototype.removeFromInvalidComponents = function (t) {
            t.baseId && St(this.invalidDatas[t.baseId], t), St(this.invalidDatas.noBase, t);
          }, t.prototype.addToInvalidSprites = function (t) {
            t.baseId ? Dt(this.invalidSprites[t.baseId], t) : Dt(this.invalidSprites.noBase, t);
          }, t.prototype.removeFromInvalidSprites = function (t) {
            t.baseId && St(this.invalidSprites[t.baseId], t), St(this.invalidSprites.noBase, t);
          }, t.prototype.addToInvalidPositions = function (t) {
            t.baseId ? Dt(this.invalidPositions[t.baseId], t) : Dt(this.invalidPositions.noBase, t);
          }, t.prototype.removeFromInvalidPositions = function (t) {
            t.baseId && St(this.invalidPositions[t.baseId], t), St(this.invalidPositions.noBase, t);
          }, t.prototype.addToInvalidLayouts = function (t) {
            t.baseId ? Dt(this.invalidLayouts[t.baseId], t) : Dt(this.invalidLayouts.noBase, t);
          }, t.prototype.removeFromInvalidLayouts = function (t) {
            t.baseId && St(this.invalidLayouts[t.baseId], t), St(this.invalidLayouts.noBase, t);
          }, t;
        }(),
            Fs = new Vs(),
            Ms = {
          verbose: !0,
          commercialLicense: !1,
          classNamePrefix: "amcharts-",
          autoSetClassName: !1,
          minPolylineStep: .5,
          onlyShowOnViewport: !1,
          queue: !1,
          licenses: []
        },
            js = function () {
          function t() {
            this._isPaused = !1, this.animations = [], this.uid = Fs.getUniqueId(), this.dummyCounter = 0, this._frameRequested = !1, this.updateStepDuration = 45, this.time = Date.now();
          }

          return t.prototype.reportTime = function (t, e) {
            this.dummyCounter, e && (this.time = Date.now());
          }, t.prototype.update = function () {
            var t = this;

            if (!this._isPaused) {
              this._frameRequested = !1;
              var e = Date.now();
              Fs.dispatchImmediately("enterframe");

              for (var i in Fs.invalidDatas) if (qt(Fs.invalidDatas, i)) {
                for (var n = Fs.invalidDatas[i]; n.length > 0;) {
                  var r = (s = n[0]).dataProvider;
                  if (s.isDisposed()) St(n, s);else if (r && r.dataInvalid) try {
                    if (r.validateData(), r.dataValidationProgress < 1) break;
                  } catch (t) {
                    St(n, r), r.raiseCriticalError(t);
                  } else try {
                    if (s.validateData(), s.dataValidationProgress < 1) break;
                  } catch (t) {
                    St(n, s), s.raiseCriticalError(t);
                  }
                }

                if (Date.now() - e > this.updateStepDuration) break;
              }

              for (; Fs.invalidRawDatas.length > 0;) if ((s = Fs.invalidRawDatas[0]).isDisposed()) St(Fs.invalidRawDatas, s);else try {
                s.validateRawData();
              } catch (t) {
                St(Fs.invalidRawDatas, s), s.raiseCriticalError(t);
              }

              for (; Fs.invalidDataItems.length > 0;) {
                if (r = (s = Fs.invalidDataItems[0]).dataProvider, s.isDisposed() || s.dataInvalid || r && r.dataInvalid) ;else try {
                  s.validateDataItems();
                } catch (t) {
                  St(Fs.invalidDataItems, s), s.raiseCriticalError(t);
                }
                St(Fs.invalidDataItems, s);
              }

              for (; Fs.invalidDataRange.length > 0;) {
                var s;
                if (r = (s = Fs.invalidDataRange[0]).dataProvider, s.isDisposed() || s.dataInvalid || r && r.dataInvalid) ;else try {
                  s.validateDataRange(), s.skipRangeEvent || s.dispatchImmediately("datarangechanged"), s.skipRangeEvent = !1;
                } catch (t) {
                  St(Fs.invalidDataRange, s), s.raiseCriticalError(t);
                }
                St(Fs.invalidDataRange, s);
              }

              var o = [];
              Qt(Fs.invalidLayouts, function (e) {
                t.validateLayouts(e);
              }), Qt(Fs.invalidPositions, function (e) {
                t.validatePositions(e);
              });
              var a = !1;

              if (e = Date.now(), Qt(Fs.invalidSprites, function (i, n) {
                for (var r = 0; n.length > 0;) {
                  if (t.validateLayouts(i), t.validatePositions(i), 5 == ++r) {
                    if (Date.now() - e > t.updateStepDuration) break;
                    r = 0;
                  }

                  var s = n[n.length - 1];

                  if (s && !s.isDisposed()) {
                    if (s._systemCheckIfValidate()) {
                      if (t.checkIfValidate2(s)) try {
                        s._systemUpdate(o);
                      } catch (t) {
                        s.invalid = !1, St(n, s), s.raiseCriticalError(t);
                      } else o.push(s);
                    } else o.push(s);
                    s.invalid = !1;
                  }

                  St(n, s);
                }

                Fs.invalidSprites[i] = Fs.invalidSprites[i].concat(o);
              }), Qt(Fs.invalidSprites, function (t, e) {
                e.length > 0 && (a = !0);
              }), Qt(Fs.invalidDatas, function (t, e) {
                e.length > 0 && (a = !0);
              }), mt(Vt(this.animations), function (t) {
                t.update();
              }), Qt(Fs.invalidLayouts, function (e) {
                t.validateLayouts(e);
              }), Qt(Fs.invalidPositions, function (e) {
                t.validatePositions(e);
              }), Ut(), Qt(Fs.invalidLayouts, function (e) {
                t.validateLayouts(e);
              }), Qt(Fs.invalidPositions, function (e) {
                t.validatePositions(e);
              }), Fs.dispatchImmediately("exitframe"), (a || this.animations.length > 0 || [].length > 0) && this.requestFrame(), this.updateStepDuration < 200) {
                var l = !0;
                Qt(Fs.invalidDatas, function (t, e) {
                  e.length > 0 && (l = !1);
                }), Qt(Fs.invalidSprites, function (t, e) {
                  e.length > 0 && (l = !1);
                }), l && (this.updateStepDuration = 200);
              }
            }
          }, t.prototype.checkIfValidate2 = function (t) {
            return !(t.dataItem && t.dataItem.component && t.dataItem.component.dataInvalid && !t.dataItem.component.isTemplate);
          }, t.prototype.requestFrame = function () {
            var t = this;
            this._frameRequested || (ws(function () {
              t.update();
            }), this._frameRequested = !0);
          }, t.prototype.validatePositions = function (t) {
            for (var e = Fs.invalidPositions[t]; e.length > 0;) {
              var i = e[e.length - 1];
              if (i.isDisposed()) St(e, i);else try {
                i._systemValidatePositions();
              } catch (t) {
                i.positionInvalid = !1, St(e, i), i.raiseCriticalError(t);
              }
            }
          }, t.prototype.validateLayouts = function (t) {
            for (var e = Fs.invalidLayouts[t]; e.length > 0;) {
              var i = e[e.length - 1];
              if (i.isDisposed()) St(e, i);else try {
                i.children.each(function (t) {
                  t._systemValidateLayouts();
                }), i.validateLayout();
              } catch (t) {
                i.layoutInvalid = !1, St(e, i), i.raiseCriticalError(t);
              }
            }
          }, t.prototype.log = function (t) {
            !function () {
              for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];

              Ms.verbose && console && console.log.apply(console, l(t));
            }(t);
          }, Object.defineProperty(t.prototype, "isPaused", {
            get: function get() {
              return this._isPaused;
            },
            set: function set(t) {
              this._isPaused = t, t || (this._frameRequested = !1, this.requestFrame());
            },
            enumerable: !0,
            configurable: !0
          }), t.VERSION = "4.7.0", t;
        }(),
            Ls = new js(),
            Es = function () {
          function t(t, e, i) {
            this._array = t, this._start = e, this._end = i;
          }

          return t.prototype.iterator = function () {
            var t = this;
            return function (e) {
              if (t._start !== t._end) if (t._start < t._end) for (var i = t._start; i < t._end && e(t._array[i]); ++i);else for (i = t._start - 1; i >= t._end && e(t._array[i]); --i);
            };
          }, t.prototype.backwards = function () {
            return new t(this._array, this._end, this._start);
          }, t.prototype.range = function (e, i) {
            if (e <= i) {
              if (this._start === this._end) return this;

              if (this._start < this._end) {
                var n = i - e;
                return e = Math.max(this._start + e, this._start), i = Math.min(e + n, this._end), new t(this._array, e, i);
              }

              return n = i - e, e = Math.max(this._start - e, this._end), i = Math.max(e - n, this._end), new t(this._array, e, i);
            }

            throw new Error("Start index must be lower than end index");
          }, t;
        }(),
            Rs = function (t) {
          function e(e, i, n) {
            var r = t.call(this, [e.events.on("inserted", function (t) {
              var i = t.newValue,
                  n = r._getKey(i),
                  s = 0;

              ue(e.iterator(), function (t) {
                return t !== i && (r._getKey(t) === n && ++s, !0);
              }), r._insert(i, n, s);
            }, void 0, !1), e.events.on("removed", function (t) {
              r._remove(t.oldValue);
            }, void 0, !1)]) || this;
            return r._keys = [], r._groups = {}, r._getKey = i, r._sort = n, pe(e.iterator(), function (t) {
              r._insert(t, i(t));
            }), r;
          }

          return n(e, t), e.prototype._insert = function (t, e, i) {
            if (null == this._groups[e]) {
              this._groups[e] = [];
              var n = Lt(this._keys, this._sort, e),
                  r = n.found,
                  s = n.index;
              if (r) throw new Error("Key already exists: " + e);
              Mt(this._keys, s, e);
            }

            null == i ? this._groups[e].push(t) : Mt(this._groups[e], i, t);
          }, e.prototype._remove = function (t) {
            var e = this._getKey(t),
                i = this._groups[e];

            if (null != i && (St(i, t), 0 === i.length)) {
              delete this._groups[e];
              var n = Lt(this._keys, this._sort, e),
                  r = n.found,
                  s = n.index;
              if (!r) throw new Error("Key doesn't exist: " + e);
              jt(this._keys, s);
            }
          }, e.prototype.iterator = function () {
            var t = this;
            return ye(de(ae(this._keys), function (e) {
              return ae(t._groups[e]);
            }));
          }, e;
        }(gs),
            Bs = function (t) {
          function e(e) {
            var i = e.events.on("removed", function (t) {
              t.oldValue.dispose();
            }, void 0, !1);
            return t.call(this, function () {
              i.dispose(), pe(e.iterator(), function (t) {
                t.dispose();
              });
            }) || this;
          }

          return n(e, t), e;
        }(fs),
            Ns = function () {
          function t(t) {
            void 0 === t && (t = []), this.events = new Cs(), this._values = t;
          }

          return Object.defineProperty(t.prototype, "values", {
            get: function get() {
              return this._values;
            },
            enumerable: !0,
            configurable: !0
          }), t.prototype.contains = function (t) {
            return -1 !== this._values.indexOf(t);
          }, t.prototype.removeValue = function (t) {
            for (var e = 0, i = this._values.length; e < i;) this._values[e] === t ? (this.removeIndex(e), --i) : ++e;
          }, t.prototype.indexOf = function (t) {
            return ft(this._values, t);
          }, Object.defineProperty(t.prototype, "length", {
            get: function get() {
              return this._values.length;
            },
            enumerable: !0,
            configurable: !0
          }), t.prototype.hasIndex = function (t) {
            return t >= 0 && t < this._values.length;
          }, t.prototype.getIndex = function (t) {
            return this._values[t];
          }, t.prototype.setIndex = function (t, e) {
            Ae(t, this._values.length);
            var i = this._values[t];
            return i !== e && (this._values[t] = e, this.events.isEnabled("setIndex") && this.events.dispatchImmediately("setIndex", {
              type: "setIndex",
              target: this,
              index: t,
              oldValue: i,
              newValue: e
            }), this.events.isEnabled("removed") && this.events.dispatchImmediately("removed", {
              type: "removed",
              target: this,
              oldValue: i
            }), this.events.isEnabled("inserted") && this.events.dispatchImmediately("inserted", {
              type: "inserted",
              target: this,
              newValue: e
            })), i;
          }, t.prototype.insertIndex = function (t, e) {
            Ae(t, this._values.length + 1), Mt(this._values, t, e), this.events.isEnabled("insertIndex") && this.events.dispatchImmediately("insertIndex", {
              type: "insertIndex",
              target: this,
              index: t,
              newValue: e
            }), this.events.isEnabled("inserted") && this.events.dispatchImmediately("inserted", {
              type: "inserted",
              target: this,
              newValue: e
            });
          }, t.prototype._sortQuicksort = function (t, e, i) {
            if (t < e) {
              var n = this._sortPartition(t, e, i);

              this._sortQuicksort(t, n, i), this._sortQuicksort(n + 1, e, i);
            }
          }, t.prototype._sortPartition = function (t, e, i) {
            for (var n = this._values, r = n[t], s = t - 1, o = e + 1;;) {
              do {
                ++s;
              } while (i(n[s], r) < 0);

              do {
                --o;
              } while (i(n[o], r) > 0);

              if (s >= o) return o;
              this.swap(s, o);
            }
          }, t.prototype.sort = function (t) {
            this._sortQuicksort(0, this._values.length - 1, t);
          }, t.prototype.swap = function (t, e) {
            var i = this._values.length;

            if (Ae(t, i), Ae(e, i), t !== e) {
              var n = this._values[t],
                  r = this._values[e];
              this._values[t] = r, this.events.isEnabled("setIndex") && this.events.dispatchImmediately("setIndex", {
                type: "setIndex",
                target: this,
                index: t,
                oldValue: n,
                newValue: r
              }), this._values[e] = n, this.events.isEnabled("setIndex") && this.events.dispatchImmediately("setIndex", {
                type: "setIndex",
                target: this,
                index: e,
                oldValue: r,
                newValue: n
              });
            }
          }, t.prototype.removeIndex = function (t) {
            Ae(t, this._values.length);
            var e = this._values[t];
            return jt(this._values, t), this.events.isEnabled("removeIndex") && this.events.dispatchImmediately("removeIndex", {
              type: "removeIndex",
              target: this,
              index: t,
              oldValue: e
            }), this.events.isEnabled("removed") && this.events.dispatchImmediately("removed", {
              type: "removed",
              target: this,
              oldValue: e
            }), e;
          }, t.prototype.moveValue = function (t, e) {
            var i = this.indexOf(t);

            if (-1 !== i) {
              var n = this._values[i];
              jt(this._values, i), this.events.isEnabled("removeIndex") && this.events.dispatchImmediately("removeIndex", {
                type: "removeIndex",
                target: this,
                index: i,
                oldValue: n
              });
            }

            null == e ? (e = this._values.length, this._values.push(t)) : Mt(this._values, e, t), this.events.isEnabled("insertIndex") && this.events.dispatchImmediately("insertIndex", {
              type: "insertIndex",
              target: this,
              index: e,
              newValue: t
            }), -1 === i && this.events.isEnabled("inserted") && this.events.dispatchImmediately("inserted", {
              type: "inserted",
              target: this,
              newValue: t
            });
          }, t.prototype.push = function (t) {
            var e = this._values.push(t) - 1;
            return this.events.isEnabled("insertIndex") && this.events.dispatchImmediately("insertIndex", {
              type: "insertIndex",
              target: this,
              index: e,
              newValue: t
            }), this.events.isEnabled("inserted") && this.events.dispatchImmediately("inserted", {
              type: "inserted",
              target: this,
              newValue: t
            }), t;
          }, t.prototype.unshift = function (t) {
            this.insertIndex(0, t);
          }, t.prototype.pushAll = function (t) {
            var e = this;
            mt(t, function (t) {
              e.push(t);
            });
          }, t.prototype.copyFrom = function (t) {
            this.pushAll(t._values);
          }, t.prototype.pop = function () {
            return this._values.length - 1 < 0 ? void 0 : this.removeIndex(this._values.length - 1);
          }, t.prototype.shift = function () {
            return this._values.length ? this.removeIndex(0) : void 0;
          }, t.prototype.setAll = function (t) {
            var e = this,
                i = Vt(this._values);
            this._values.length = 0, mt(t, function (t) {
              e._values.push(t);
            }), this.events.isEnabled("setAll") && this.events.dispatchImmediately("setAll", {
              type: "setAll",
              target: this,
              oldArray: i,
              newArray: this._values
            }), this.events.isEnabled("removed") && mt(i, function (t) {
              e.events.dispatchImmediately("removed", {
                type: "removed",
                target: e,
                oldValue: t
              });
            }), this.events.isEnabled("inserted") && mt(this._values, function (t) {
              e.events.dispatchImmediately("inserted", {
                type: "inserted",
                target: e,
                newValue: t
              });
            });
          }, t.prototype.clear = function () {
            this.setAll([]);
          }, t.prototype.iterator = function () {
            return ae(this._values);
          }, t.prototype[Symbol.iterator] = function () {
            var t, e;
            return s(this, function (i) {
              switch (i.label) {
                case 0:
                  t = this._values.length, e = 0, i.label = 1;

                case 1:
                  return e < t ? [4, this._values[e]] : [3, 4];

                case 2:
                  i.sent(), i.label = 3;

                case 3:
                  return ++e, [3, 1];

                case 4:
                  return [2];
              }
            });
          }, t.prototype.each = function (t) {
            mt(this._values, t);
          }, t.prototype.range = function (t, e) {
            if (t <= e) {
              var i = e - t;
              return t = Math.max(t, 0), e = Math.min(t + i, this._values.length), new Es(this._values, t, e);
            }

            throw new Error("Start index must be lower than end index");
          }, t.prototype.backwards = function () {
            return new Es(this._values, this._values.length, 0);
          }, t;
        }(),
            Hs = function (t) {
          function e(e) {
            var i = t.call(this) || this;
            return i.template = e, i;
          }

          return n(e, t), Object.defineProperty(e.prototype, "template", {
            get: function get() {
              return this._template;
            },
            set: function set(t) {
              t.isTemplate = !0, this._template = t;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.copyFrom = function (t) {
            var e = this;
            pe(t.iterator(), function (t) {
              e.push(t.clone());
            });
          }, e.prototype.create = function (t) {
            var e = null != t ? new t() : this.template.clone();
            return this.push(e), e;
          }, e.prototype.clone = function () {
            for (var t = new e(this.template), i = this.values, n = i.length, r = 0; r < n; ++r) t.push(i[r].clone());

            return t;
          }, e;
        }(Ns),
            Ws = function () {
          function t(t) {
            this._values = [], this.events = new Cs(), null != t && this.setAll(t);
          }

          return Object.defineProperty(t.prototype, "values", {
            get: function get() {
              return this._values;
            },
            enumerable: !0,
            configurable: !0
          }), t.prototype._insert = function (t) {
            return this._values.push(t), this._values.length - 1;
          }, Object.defineProperty(t.prototype, "length", {
            get: function get() {
              return this._values.length;
            },
            enumerable: !0,
            configurable: !0
          }), t.prototype.indexOf = function (t) {
            return ft(this._values, t);
          }, t.prototype.contains = function (t) {
            return -1 !== this.indexOf(t);
          }, t.prototype.getIndex = function (t) {
            return this._values[t];
          }, Object.defineProperty(t.prototype, "first", {
            get: function get() {
              return this._values[0];
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(t.prototype, "last", {
            get: function get() {
              return this._values[this._values.length - 1];
            },
            enumerable: !0,
            configurable: !0
          }), t.prototype.insert = function (t) {
            var e = this._insert(t);

            this.events.isEnabled("inserted") && this.events.dispatchImmediately("inserted", {
              type: "inserted",
              target: this,
              index: e,
              newValue: t
            });
          }, t.prototype.remove = function (t) {
            var e = this.indexOf(t);

            if (-1 !== e) {
              var i = this._values[e];
              jt(this._values, e), this.events.isEnabled("removed") && this.events.dispatchImmediately("removed", {
                type: "removed",
                target: this,
                index: e,
                oldValue: i
              });
            }
          }, t.prototype.setAll = function (t) {
            var e = this;
            vt(this._values, function (t, i) {
              e._values.pop(), e.events.isEnabled("removed") && e.events.dispatchImmediately("removed", {
                type: "removed",
                target: e,
                index: i,
                oldValue: t
              });
            }), mt(t, function (t) {
              e.insert(t);
            });
          }, t.prototype.clear = function () {
            this.setAll([]);
          }, t.prototype.slice = function (e, i) {
            var n = new t();
            return n._values = this._values.slice(e, i), n;
          }, t.prototype.findClosestIndex = function (t, e, i) {
            void 0 === i && (i = "any");
            var n,
                r,
                s = -1,
                o = 0;
            return ue(this.iterator(), function (a) {
              var l = e(a);

              if ("any" === i) {
                if (l === t) return s = o, !1;
                var h = Math.abs(t - l);
                (!S(r) || r > h) && (s = o, n = l, r = h);
              } else "left" === i && l < t ? (!S(n) || n < l) && (s = o, n = l) : "right" === i && l >= t && (!S(n) || n >= l) && (s = o, n = l);

              return ++o, !0;
            }), -1 === s && ("left" === i ? s = 0 : "right" === i && (s = this.length - 1)), s;
          }, t.prototype.iterator = function () {
            return ae(this._values);
          }, t.prototype[Symbol.iterator] = function () {
            var t, e;
            return s(this, function (i) {
              switch (i.label) {
                case 0:
                  t = this._values.length, e = 0, i.label = 1;

                case 1:
                  return e < t ? [4, this._values[e]] : [3, 4];

                case 2:
                  i.sent(), i.label = 3;

                case 3:
                  return ++e, [3, 1];

                case 4:
                  return [2];
              }
            });
          }, t.prototype.each = function (t) {
            mt(this._values, t);
          }, t;
        }(),
            Xs = function (t) {
          function e(e) {
            var i = t.call(this) || this;
            return i._ordering = e, i;
          }

          return n(e, t), e.prototype._insert = function (t) {
            var e = Lt(this._values, this._ordering, t).index;
            return Mt(this._values, e, t), e;
          }, e.prototype.indexOf = function (t) {
            var e = Lt(this._values, this._ordering, t),
                i = e.found,
                n = e.index;
            return i ? n : -1;
          }, e.prototype.update = function (t) {
            var e = ft(this._values, t);

            if (-1 !== e) {
              var i = this._values.length - 1;
              (0 === e || this._ordering(this._values[e - 1], t) < 0) && (e === i || this._ordering(t, this._values[e + 1]) < 0) || (jt(this._values, e), this._insert(t));
            }
          }, e;
        }(Ws),
            Ys = function (t) {
          function e(e) {
            var i = t.call(this) || this;
            return i.template = e, i;
          }

          return n(e, t), Object.defineProperty(e.prototype, "template", {
            get: function get() {
              return this._template;
            },
            set: function set(t) {
              t.isTemplate = !0, this._template = t;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.copyFrom = function (t) {
            var e = this;
            pe(t.iterator(), function (t) {
              e.insert(t.clone());
            });
          }, e.prototype.slice = function (t, i) {
            var n = new e(this.template);
            return n._values = this._values.slice(t, i), n;
          }, e.prototype.create = function (t) {
            var e = null != t ? new t() : this.template.clone();
            return this.insert(e), e;
          }, e;
        }(Ws),
            zs = function (t) {
          function e(e, i) {
            var n = t.call(this, i) || this;
            return n.template = e, n;
          }

          return n(e, t), Object.defineProperty(e.prototype, "template", {
            get: function get() {
              return this._template;
            },
            set: function set(t) {
              t.isTemplate = !0, this._template = t;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.copyFrom = function (t) {
            var e = this;
            pe(t.iterator(), function (t) {
              e.insert(t.clone());
            });
          }, e.prototype.create = function (t) {
            var e = null != t ? new t() : this.template.clone();
            return this.insert(e), e;
          }, e;
        }(Xs),
            Us = function () {
          function t() {
            this._callbackId = 0, this._callbacks = new Xs(function (t, e) {
              return Me(Ve(t.priority, e.priority), Ve(t.id, e.id));
            });
          }

          return t.prototype.addAll = function (t, e, i, n, r) {
            void 0 === n && (n = 0), this._callbacks.insert({
              id: ++this._callbackId,
              key: e,
              callback: i,
              priority: n,
              scope: r,
              type: t
            });
          }, t.prototype.isEnabled = function (t, e) {
            return this._callbacks.length > 0;
          }, t.prototype.applyAll = function (t, e, i) {
            var n = this._callbacks.values,
                r = n.length;
            if (0 == r) return i;

            for (var s = 0; s < r; ++s) {
              var o = n[s];
              o.key === e && t instanceof o.type && (i = o.callback.call(o.scope, i, t, e));
            }

            return i;
          }, t;
        }(),
            Gs = new Us(),
            Ks = function () {
          function t(t) {
            this._callbackId = 0, this._callbacks = new Xs(function (t, e) {
              return Me(Ve(t.priority, e.priority), Ve(t.id, e.id));
            }), this.object = t, this.events = this._callbacks.events;
          }

          return t.prototype.add = function (t, e, i, n) {
            void 0 === i && (i = 0), this._callbacks.insert({
              id: ++this._callbackId,
              key: t,
              callback: e,
              priority: i,
              scope: n
            });
          }, t.prototype.has = function (t, e, i, n) {
            return void 0 === i && (i = 0), !1;
          }, t.prototype.remove = function (t, e) {
            var i = this;
            mt(he(this._callbacks.iterator()), function (n) {
              n.key !== t || A(e) && e !== n.priority || i._callbacks.remove(n);
            });
          }, t.prototype.isEnabled = function (t) {
            return this._callbacks.length > 0 || Gs.isEnabled(this.object, t);
          }, t.prototype.apply = function (t, e) {
            var i = this._callbacks.values,
                n = i.length;
            if (n > 0) for (var r = 0; r < n; ++r) {
              var s = i[r];
              s.key === t && (e = s.callback.call(s.scope, e, this.object, t));
            }
            return e = Gs.applyAll(this.object, t, e);
          }, t.prototype.keys = function () {
            return he(de(this._callbacks.iterator(), function (t) {
              return t.key;
            }));
          }, t.prototype.copyFrom = function (t) {
            var e = this;
            pe(t._callbacks.iterator(), function (t) {
              e.add(t.key, t.callback, t.priority, t.scope);
            });
          }, t.prototype.clear = function () {
            this._callbacks.clear();
          }, t;
        }(),
            Zs = {
          aliceblue: {
            r: 240,
            g: 248,
            b: 255
          },
          antiquewhite: {
            r: 250,
            g: 235,
            b: 215
          },
          aqua: {
            r: 0,
            g: 255,
            b: 255
          },
          aquamarine: {
            r: 127,
            g: 255,
            b: 212
          },
          azure: {
            r: 240,
            g: 255,
            b: 255
          },
          beige: {
            r: 245,
            g: 245,
            b: 220
          },
          bisque: {
            r: 255,
            g: 228,
            b: 196
          },
          black: {
            r: 0,
            g: 0,
            b: 0
          },
          blanchedalmond: {
            r: 255,
            g: 235,
            b: 205
          },
          blue: {
            r: 0,
            g: 0,
            b: 255
          },
          blueviolet: {
            r: 138,
            g: 43,
            b: 226
          },
          brown: {
            r: 165,
            g: 42,
            b: 42
          },
          burlywood: {
            r: 222,
            g: 184,
            b: 135
          },
          cadetblue: {
            r: 95,
            g: 158,
            b: 160
          },
          chartreuse: {
            r: 127,
            g: 255,
            b: 0
          },
          chocolate: {
            r: 210,
            g: 105,
            b: 30
          },
          coral: {
            r: 255,
            g: 127,
            b: 80
          },
          cornflowerblue: {
            r: 100,
            g: 149,
            b: 237
          },
          cornsilk: {
            r: 255,
            g: 248,
            b: 220
          },
          crimson: {
            r: 220,
            g: 20,
            b: 60
          },
          cyan: {
            r: 0,
            g: 255,
            b: 255
          },
          darkblue: {
            r: 0,
            g: 0,
            b: 139
          },
          darkcyan: {
            r: 0,
            g: 139,
            b: 139
          },
          darkgoldenrod: {
            r: 184,
            g: 134,
            b: 11
          },
          darkgray: {
            r: 169,
            g: 169,
            b: 169
          },
          darkgrey: {
            r: 169,
            g: 169,
            b: 169
          },
          darkgreen: {
            r: 0,
            g: 100,
            b: 0
          },
          darkkhaki: {
            r: 189,
            g: 183,
            b: 107
          },
          darkmagenta: {
            r: 139,
            g: 0,
            b: 139
          },
          darkolivegreen: {
            r: 85,
            g: 107,
            b: 47
          },
          darkorange: {
            r: 255,
            g: 140,
            b: 0
          },
          darkorchid: {
            r: 153,
            g: 50,
            b: 204
          },
          darkred: {
            r: 139,
            g: 0,
            b: 0
          },
          darksalmon: {
            r: 233,
            g: 150,
            b: 122
          },
          darkseagreen: {
            r: 143,
            g: 188,
            b: 143
          },
          darkslateblue: {
            r: 72,
            g: 61,
            b: 139
          },
          darkslategray: {
            r: 47,
            g: 79,
            b: 79
          },
          darkslategrey: {
            r: 47,
            g: 79,
            b: 79
          },
          darkturquoise: {
            r: 0,
            g: 206,
            b: 209
          },
          darkviolet: {
            r: 148,
            g: 0,
            b: 211
          },
          deeppink: {
            r: 255,
            g: 20,
            b: 147
          },
          deepskyblue: {
            r: 0,
            g: 191,
            b: 255
          },
          dimgray: {
            r: 105,
            g: 105,
            b: 105
          },
          dimgrey: {
            r: 105,
            g: 105,
            b: 105
          },
          dodgerblue: {
            r: 30,
            g: 144,
            b: 255
          },
          firebrick: {
            r: 178,
            g: 34,
            b: 34
          },
          floralwhite: {
            r: 255,
            g: 250,
            b: 240
          },
          forestgreen: {
            r: 34,
            g: 139,
            b: 34
          },
          fuchsia: {
            r: 255,
            g: 0,
            b: 255
          },
          gainsboro: {
            r: 220,
            g: 220,
            b: 220
          },
          ghostwhite: {
            r: 248,
            g: 248,
            b: 255
          },
          gold: {
            r: 255,
            g: 215,
            b: 0
          },
          goldenrod: {
            r: 218,
            g: 165,
            b: 32
          },
          gray: {
            r: 128,
            g: 128,
            b: 128
          },
          grey: {
            r: 128,
            g: 128,
            b: 128
          },
          green: {
            r: 0,
            g: 128,
            b: 0
          },
          greenyellow: {
            r: 173,
            g: 255,
            b: 47
          },
          honeydew: {
            r: 240,
            g: 255,
            b: 240
          },
          hotpink: {
            r: 255,
            g: 105,
            b: 180
          },
          indianred: {
            r: 205,
            g: 92,
            b: 92
          },
          indigo: {
            r: 75,
            g: 0,
            b: 130
          },
          ivory: {
            r: 255,
            g: 255,
            b: 240
          },
          khaki: {
            r: 240,
            g: 230,
            b: 140
          },
          lavender: {
            r: 230,
            g: 230,
            b: 250
          },
          lavenderblush: {
            r: 255,
            g: 240,
            b: 245
          },
          lawngreen: {
            r: 124,
            g: 252,
            b: 0
          },
          lemonchiffon: {
            r: 255,
            g: 250,
            b: 205
          },
          lightblue: {
            r: 173,
            g: 216,
            b: 230
          },
          lightcoral: {
            r: 240,
            g: 128,
            b: 128
          },
          lightcyan: {
            r: 224,
            g: 255,
            b: 255
          },
          lightgoldenrodyellow: {
            r: 250,
            g: 250,
            b: 210
          },
          lightgray: {
            r: 211,
            g: 211,
            b: 211
          },
          lightgrey: {
            r: 211,
            g: 211,
            b: 211
          },
          lightgreen: {
            r: 144,
            g: 238,
            b: 144
          },
          lightpink: {
            r: 255,
            g: 182,
            b: 193
          },
          lightsalmon: {
            r: 255,
            g: 160,
            b: 122
          },
          lightseagreen: {
            r: 32,
            g: 178,
            b: 170
          },
          lightskyblue: {
            r: 135,
            g: 206,
            b: 250
          },
          lightslategray: {
            r: 119,
            g: 136,
            b: 153
          },
          lightslategrey: {
            r: 119,
            g: 136,
            b: 153
          },
          lightsteelblue: {
            r: 176,
            g: 196,
            b: 222
          },
          lightyellow: {
            r: 255,
            g: 255,
            b: 224
          },
          lime: {
            r: 0,
            g: 255,
            b: 0
          },
          limegreen: {
            r: 50,
            g: 205,
            b: 50
          },
          linen: {
            r: 250,
            g: 240,
            b: 230
          },
          magenta: {
            r: 255,
            g: 0,
            b: 255
          },
          maroon: {
            r: 128,
            g: 0,
            b: 0
          },
          mediumaquamarine: {
            r: 102,
            g: 205,
            b: 170
          },
          mediumblue: {
            r: 0,
            g: 0,
            b: 205
          },
          mediumorchid: {
            r: 186,
            g: 85,
            b: 211
          },
          mediumpurple: {
            r: 147,
            g: 112,
            b: 219
          },
          mediumseagreen: {
            r: 60,
            g: 179,
            b: 113
          },
          mediumslateblue: {
            r: 123,
            g: 104,
            b: 238
          },
          mediumspringgreen: {
            r: 0,
            g: 250,
            b: 154
          },
          mediumturquoise: {
            r: 72,
            g: 209,
            b: 204
          },
          mediumvioletred: {
            r: 199,
            g: 21,
            b: 133
          },
          midnightblue: {
            r: 25,
            g: 25,
            b: 112
          },
          mintcream: {
            r: 245,
            g: 255,
            b: 250
          },
          mistyrose: {
            r: 255,
            g: 228,
            b: 225
          },
          moccasin: {
            r: 255,
            g: 228,
            b: 181
          },
          navajowhite: {
            r: 255,
            g: 222,
            b: 173
          },
          navy: {
            r: 0,
            g: 0,
            b: 128
          },
          oldlace: {
            r: 253,
            g: 245,
            b: 230
          },
          olive: {
            r: 128,
            g: 128,
            b: 0
          },
          olivedrab: {
            r: 107,
            g: 142,
            b: 35
          },
          orange: {
            r: 255,
            g: 165,
            b: 0
          },
          orangered: {
            r: 255,
            g: 69,
            b: 0
          },
          orchid: {
            r: 218,
            g: 112,
            b: 214
          },
          palegoldenrod: {
            r: 238,
            g: 232,
            b: 170
          },
          palegreen: {
            r: 152,
            g: 251,
            b: 152
          },
          paleturquoise: {
            r: 175,
            g: 238,
            b: 238
          },
          palevioletred: {
            r: 219,
            g: 112,
            b: 147
          },
          papayawhip: {
            r: 255,
            g: 239,
            b: 213
          },
          peachpuff: {
            r: 255,
            g: 218,
            b: 185
          },
          peru: {
            r: 205,
            g: 133,
            b: 63
          },
          pink: {
            r: 255,
            g: 192,
            b: 203
          },
          plum: {
            r: 221,
            g: 160,
            b: 221
          },
          powderblue: {
            r: 176,
            g: 224,
            b: 230
          },
          purple: {
            r: 128,
            g: 0,
            b: 128
          },
          rebeccapurple: {
            r: 102,
            g: 51,
            b: 153
          },
          red: {
            r: 255,
            g: 0,
            b: 0
          },
          rosybrown: {
            r: 188,
            g: 143,
            b: 143
          },
          royalblue: {
            r: 65,
            g: 105,
            b: 225
          },
          saddlebrown: {
            r: 139,
            g: 69,
            b: 19
          },
          salmon: {
            r: 250,
            g: 128,
            b: 114
          },
          sandybrown: {
            r: 244,
            g: 164,
            b: 96
          },
          seagreen: {
            r: 46,
            g: 139,
            b: 87
          },
          seashell: {
            r: 255,
            g: 245,
            b: 238
          },
          sienna: {
            r: 160,
            g: 82,
            b: 45
          },
          silver: {
            r: 192,
            g: 192,
            b: 192
          },
          skyblue: {
            r: 135,
            g: 206,
            b: 235
          },
          slateblue: {
            r: 106,
            g: 90,
            b: 205
          },
          slategray: {
            r: 112,
            g: 128,
            b: 144
          },
          slategrey: {
            r: 112,
            g: 128,
            b: 144
          },
          snow: {
            r: 255,
            g: 250,
            b: 250
          },
          springgreen: {
            r: 0,
            g: 255,
            b: 127
          },
          steelblue: {
            r: 70,
            g: 130,
            b: 180
          },
          tan: {
            r: 210,
            g: 180,
            b: 140
          },
          teal: {
            r: 0,
            g: 128,
            b: 128
          },
          thistle: {
            r: 216,
            g: 191,
            b: 216
          },
          tomato: {
            r: 255,
            g: 99,
            b: 71
          },
          turquoise: {
            r: 64,
            g: 224,
            b: 208
          },
          violet: {
            r: 238,
            g: 130,
            b: 238
          },
          wheat: {
            r: 245,
            g: 222,
            b: 179
          },
          white: {
            r: 255,
            g: 255,
            b: 255
          },
          whitesmoke: {
            r: 245,
            g: 245,
            b: 245
          },
          yellow: {
            r: 255,
            g: 255,
            b: 0
          },
          yellowgreen: {
            r: 154,
            g: 205,
            b: 50
          }
        },
            qs = function () {
          function t(t) {
            this._value = t;
          }

          return Object.defineProperty(t.prototype, "rgb", {
            get: function get() {
              return this._value;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(t.prototype, "hex", {
            get: function get() {
              return this._value ? Re(this._value) : "none";
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(t.prototype, "rgba", {
            get: function get() {
              return this._value ? Be(this._value) : "none";
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(t.prototype, "alpha", {
            get: function get() {
              return null != this._value && null != this._value.a ? this._value.a : 1;
            },
            set: function set(t) {
              this._value && (this._value.a = t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(t.prototype, "lightColor", {
            get: function get() {
              return this._lightColor || (this._lightColor = new t({
                r: 255,
                g: 255,
                b: 255
              })), this._lightColor;
            },
            set: function set(t) {
              this._lightColor = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(t.prototype, "darkColor", {
            get: function get() {
              return this._darkColor || (this._darkColor = new t({
                r: 0,
                g: 0,
                b: 0
              })), this._darkColor;
            },
            set: function set(t) {
              this._darkColor = t;
            },
            enumerable: !0,
            configurable: !0
          }), t.prototype.toString = function () {
            return this.alpha < 1 ? this.rgba : this.hex;
          }, t.prototype.lighten = function (e) {
            return new t(We(this.rgb, e));
          }, t.prototype.brighten = function (e) {
            return new t(Ye(this.rgb, e));
          }, t.prototype.saturate = function (e) {
            return new t(Ue(this.rgb, e));
          }, Object.defineProperty(t.prototype, "alternative", {
            get: function get() {
              if (null != this.rgb) return $e(this.rgb) ? this.darkColor : this.lightColor;
              throw new Error("Color does not exist");
            },
            enumerable: !0,
            configurable: !0
          }), t;
        }(),
            $s = function () {
          function t() {
            this._disposed = !1, this._disposers = [], this.className = "BaseObject";
          }

          return t.prototype.debug = function () {}, Object.defineProperty(t.prototype, "uid", {
            get: function get() {
              return this._uid || (this._uid = Fs.getUniqueId(), Fs.map.setKey(this._uid, this)), this._uid;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(t.prototype, "id", {
            get: function get() {
              return this._id;
            },
            set: function set(t) {
              this._id = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(t.prototype, "map", {
            get: function get() {
              return this._map || (this._map = new Ds()), this._map;
            },
            enumerable: !0,
            configurable: !0
          }), t.prototype.applyTheme = function () {
            var t = this;

            if (Fs) {
              var e = this.getCurrentThemes();
              e && mt(e, function (e, i) {
                e(t);
              });
            }
          }, Object.defineProperty(t.prototype, "themes", {
            get: function get() {
              return this._themes;
            },
            set: function set(t) {
              this._themes = t;
            },
            enumerable: !0,
            configurable: !0
          }), t.prototype.getCurrentThemes = function () {
            return this.themes || Fs.themes;
          }, t.prototype.isDisposed = function () {
            return this._disposed;
          }, t.prototype.dispose = function () {
            if (!this._disposed) {
              this._disposed = !0;
              var t = this._disposers;

              for (this._disposers = null; 0 !== t.length;) t.shift().dispose();

              this.clearCache(), this.clonedFrom && this.clonedFrom.clones.removeValue(this);
              var e = this._uid;
              null != e && Fs.map.removeKey(e);
            }
          }, t.prototype.addDisposer = function (t) {
            this._disposers.push(t);
          }, t.prototype.removeDispose = function (t) {
            if (!this._disposed) {
              var e = ft(this._disposers, t);
              e > -1 && this._disposers.splice(e, 1);
            }

            t.dispose();
          }, t.prototype.clone = function (t) {
            t || (t = "clone-" + Fs.getUniqueId());
            var e = new this.constructor();
            return e.cloneId = t, e.copyFrom(this), e;
          }, Object.defineProperty(t.prototype, "clones", {
            get: function get() {
              return this._clones || (this._clones = new Ns()), this._clones;
            },
            enumerable: !0,
            configurable: !0
          }), t.prototype.copyFrom = function (t) {
            t.clones.push(this), this.clonedFrom = t;
          }, Object.defineProperty(t.prototype, "className", {
            get: function get() {
              return this._className;
            },
            set: function set(t) {
              this._className = t;
            },
            enumerable: !0,
            configurable: !0
          }), t.prototype.setCache = function (t, e, i) {
            As.set(this.uid, t, e, i);
          }, t.prototype.getCache = function (t, e) {
            return void 0 === e && (e = void 0), As.get(this.uid, t, e);
          }, t.prototype.clearCache = function () {
            As.clear(this.uid);
          }, t.prototype.setTimeout = function (t, e) {
            var i = this,
                n = setTimeout(function () {
              i.removeDispose(r), t();
            }, e),
                r = new fs(function () {
              clearTimeout(n);
            });
            return this._disposers.push(r), r;
          }, t.prototype.setInterval = function (t, e) {
            var i = this,
                n = setInterval(function () {
              i.removeDispose(r), t();
            }, e),
                r = new fs(function () {
              clearTimeout(n);
            });
            return this._disposers.push(r), r;
          }, Object.defineProperty(t.prototype, "config", {
            set: function set(t) {
              try {
                this.processConfig(t);
              } catch (t) {
                this.raiseCriticalError(t);
              }
            },
            enumerable: !0,
            configurable: !0
          }), t.prototype.processConfig = function (e) {
            var i = this;

            if (e) {
              var n = this;

              if (te(e, function (e, r) {
                var s,
                    o = r;
                if ("callback" == e && "function" == typeof r && r.call(n), i.hasProperty(e)) {
                  if (!V(o) || !S(o.type) || V(n[e]) && S(n[e].className) && !o.forceCreate && n[e].className == o.type ? s = n[e] : (s = i.createClassInstance(o.type)) ? n[e] = s : s = n[e], s instanceof Ks) i.processAdapters(s, o);else if (s instanceof Cs) i.processEvents(s, o);else if ("locale" == e && T(o)) document["am4lang_" + o] && (n[e] = document["am4lang_" + o]);else if ("parent" == e && T(o)) {
                    var a = i.map.getKey(o);
                    if (!a) throw Error('Non-existing ID in config: "' + o + '".');
                    n[e] = a;
                  } else if (i.asIs(e)) n[e] = o;else if (i.asFunction(e) && T(o)) {
                    if (!S(Fs.registeredClasses[o])) throw Error("Invalid easing function: " + o);
                    n[e] = Fs.registeredClasses[o];
                  } else if (o instanceof t) n[e] = o;else if (s instanceof t) s.config = o;else if (s instanceof Hs || s instanceof Ys || s instanceof zs) {
                    if (F(o)) s instanceof Hs ? i.processListTemplate(o, s) : i.processOrderedTemplate(o, s);else if (V(o)) if (o instanceof t) s.template = o;else {
                      var l = void 0;
                      l = S(o.template) ? o.template : o, s.template instanceof t ? s.template.config = l : Qt(l, function (e, n) {
                        var r = s.template[e];
                        r instanceof Ks ? i.processAdapters(r, n) : r instanceof Cs ? i.processEvents(r, n) : r instanceof ks ? i.processDictionaryTemplate(r, n) : s.template[e] instanceof t ? s.template[e].config = n : V(n) && S(n.type) ? (r = i.createClassInstance(n.type)) ? (r instanceof t && (r.config = n), s.template[e] = r) : s.template[e] = n : r instanceof Ns ? i.processList(n, r) : s.template[e] = i.maybeColorOrPercent(n);
                      }), S(o.values) && (s instanceof Hs ? i.processListTemplate(o.values, s) : i.processOrderedTemplate(o.values, s));
                    }
                  } else s instanceof Ns ? "children" == e ? i.processList(o, s, i) : i.processList(o, s) : s instanceof ks ? i.processDictionaryTemplate(s, o) : s instanceof Ds ? i.processDictionary(s, o) : s instanceof qs || s instanceof hs ? n[e] = i.maybeColorOrPercent(o) : V(s) && V(o) ? oe(o, s) : (o = i.maybeColorOrPercent(o), n[e] = o);
                } else i.isReserved(e) || (n[e] = o);
              }, this.configOrder), this.processingErrors.length) {
                var r = this.processingErrors.join("\n");
                throw this._processingErrors = [], Error(r);
              }
            }
          }, t.prototype.maybeColorOrPercent = function (t) {
            if (T(t)) {
              if (t.match(/^[\-]?[0-9.]+\%$/)) return h(w(t));
              if (t.match(/^\#[0-9abcdef]{3,}$/i)) return Je(t);
            }

            return t;
          }, t.prototype.processAdapters = function (t, e) {
            var i = this;
            F(e) ? mt(e, function (e, n) {
              t.add(e.key, e.callback, e.priority || 0, i);
            }) : V(e) && Qt(e, function (e, i) {
              t.has(e, i) || t.add(e, i);
            });
          }, t.prototype.processEvents = function (t, e) {
            var i = this;
            V(e) ? Qt(e, function (e, i) {
              t.has(e, i) || t.on(e, i);
            }) : F(e) && mt(e, function (e, n) {
              t.on(e.type, e.callback, i);
            });
          }, t.prototype.processDictionaryTemplate = function (e, i) {
            V(i) && Qt(i, function (i, n) {
              var r;
              (r = "template" == i ? e.template : e.hasKey(i) ? e.getKey(i) : e.create(i)) instanceof t ? r.config = n : V(r) && V(n) ? oe(n, r) : r.setKey(i, n);
            });
          }, t.prototype.processDictionary = function (t, e) {
            V(e) && Qt(e, function (e, i) {
              t.setKey(e, i);
            });
          }, t.prototype.processListTemplate = function (e, i) {
            var n = this;

            for (mt(e, function (e, r) {
              var s,
                  o = n.getConfigEntryType(e);
              if (i.hasIndex(r) && !e.forceCreate) s = i.getIndex(r);else {
                if (e instanceof t) return void i.push(e);
                s = o ? i.create(o) : i.create();
              }
              e === s || V(e) && (s instanceof t ? s.config = e : V(s) && V(e) ? oe(e, s) : i.setIndex(i.indexOf(s), e));
            }); e.length > i.length;) i.pop();
          }, t.prototype.processOrderedTemplate = function (e, i) {
            var n = this;
            mt(e, function (e, r) {
              var s,
                  o = n.getConfigEntryType(e);
              s = o ? i.create(o) : i.create(), V(e) && (s instanceof t ? s.config = e : V(s) && V(e) ? oe(e, s) : i.insert(e));
            });
          }, t.prototype.processList = function (e, i, n) {
            var r = this;
            F(e) || (e = [e]);
            var s = i.length;

            for (mt(e, function (e, o) {
              if (V(e)) {
                var a = void 0;
                if (o < s && !e.forceCreate) a = i.getIndex(o);else {
                  if (e instanceof t) return void i.push(e);
                  a = r.createEntryInstance(e), n ? a.parent = n : i.push(a);
                }
                a instanceof t ? a.config = e : V(a) && V(e) && oe(e, a);
              } else i.hasIndex(o) ? i.setIndex(o, e) : i.push(e);
            }); e.length > i.length;) i.pop();
          }, t.prototype.configOrder = function (t, e) {
            return t == e ? 0 : "language" == t ? -1 : "language" == e ? 1 : 0;
          }, t.prototype.asIs = function (t) {
            return -1 != ft(["locale"], t);
          }, t.prototype.asFunction = function (t) {
            return !1;
          }, t.prototype.createClassInstance = function (t) {
            if (S(Fs.registeredClasses[t])) return new Fs.registeredClasses[t]();
          }, t.prototype.createEntryInstance = function (t) {
            var e;
            return S(t.type) && (e = this.createClassInstance(t.type)), e || t;
          }, t.prototype.getConfigEntryType = function (t) {
            if (S(t.type)) {
              if (S(Fs.registeredClasses[t.type])) return Fs.registeredClasses[t.type];
              throw Error('Invalid type: "' + t.type + '".');
            }
          }, t.prototype.hasProperty = function (t) {
            return t in this;
          }, t.prototype.isReserved = function (t) {
            return -1 !== ["type", "forceCreate"].indexOf(t);
          }, Object.defineProperty(t.prototype, "processingErrors", {
            get: function get() {
              return this._processingErrors || (this._processingErrors = []), this._processingErrors;
            },
            enumerable: !0,
            configurable: !0
          }), t;
        }(),
            Js = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "BaseObjectEvents", e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "events", {
            get: function get() {
              return this._eventDispatcher || (this._eventDispatcher = new Cs(), this._disposers.push(this._eventDispatcher)), this._eventDispatcher;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.dispatch = function (t, e) {
            this._eventDispatcher && this.events.isEnabled(t) && (e ? (e.type = t, e.target = e.target || this, this.events.dispatch(t, {
              type: t,
              target: this
            })) : this.events.dispatch(t, {
              type: t,
              target: this
            }));
          }, e.prototype.dispatchImmediately = function (t, e) {
            this._eventDispatcher && this.events.isEnabled(t) && (e ? (e.type = t, e.target = e.target || this, this.events.dispatchImmediately(t, e)) : this.events.dispatchImmediately(t, {
              type: t,
              target: this
            }));
          }, e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), e._eventDispatcher && this.events.copyFrom(e._eventDispatcher);
          }, e;
        }($s),
            Qs = "px",
            to = "string",
            eo = "number",
            io = "date",
            no = "duration",
            ro = "__§§§__",
            so = "__§§§§__",
            oo = /^([a-zA-Z][a-zA-Z0-9\+\.\-]*:)?(?:(\/\/)([^\@]+\@)?([^\/\?\#\:]*)(\:[0-9]+)?)?([^\?\#]*)(\?[^\#]*)?(\#.*)?$/;

        Fs.registeredClasses["ease.linear"] = sn, Fs.registeredClasses["ease.quadIn"] = on, Fs.registeredClasses["ease.quadOut"] = an, Fs.registeredClasses["ease.quadInOut"] = ln, Fs.registeredClasses["ease.polyIn"] = hn, Fs.registeredClasses["ease.polyOut"] = un, Fs.registeredClasses["ease.polyInOut"] = pn, Fs.registeredClasses["ease.polyIn3"] = cn, Fs.registeredClasses["ease.polyOut3"] = dn, Fs.registeredClasses["ease.polyInOut3"] = fn, Fs.registeredClasses["ease.expIn"] = gn, Fs.registeredClasses["ease.expOut"] = yn, Fs.registeredClasses["ease.expInOut"] = mn, Fs.registeredClasses["ease.sinIn"] = vn, Fs.registeredClasses["ease.sinOut"] = bn, Fs.registeredClasses["ease.sinInOut"] = xn, Fs.registeredClasses["ease.cubicIn"] = _n, Fs.registeredClasses["ease.cubicOut"] = Pn, Fs.registeredClasses["ease.cubicInOut"] = wn, Fs.registeredClasses["ease.circleIn"] = Cn, Fs.registeredClasses["ease.circleOut"] = On, Fs.registeredClasses["ease.circleInOut"] = Sn;
        var ao = 4 / 11,
            lo = 6 / 11,
            ho = 8 / 11,
            uo = .75,
            po = 9 / 11,
            co = 10 / 11,
            fo = .9375,
            go = 21 / 22,
            yo = 63 / 64,
            mo = 1 / ao / ao;
        Fs.registeredClasses["ease.bounceIn"] = In, Fs.registeredClasses["ease.bounceOut"] = Dn, Fs.registeredClasses["ease.bounceInOut"] = kn;

        var vo = 2 * Math.PI,
            bo = 1,
            xo = .3 / vo,
            _o = Math.asin(1 / bo) * xo;

        Fs.registeredClasses["ease.elasticIn"] = Tn, Fs.registeredClasses["ease.elasticOut"] = An, Fs.registeredClasses["ease.elasticInOut"] = Vn;

        var Po = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.transitionDuration = 0, e.transitionEasing = Pn, e.properties = {}, e.propertyFields = {}, e.filters = new Ns(), e.isTemplate = !1, e.className = "SpriteState", e._disposers.push(new Bs(e.filters)), e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "adapter", {
            get: function get() {
              var t = this;
              return this._adapterO || (this._adapterO = new Ks(this), this._adapterO.events.on("inserted", function (e) {
                t[e.newValue.key] = t[e.newValue.key];
              }, void 0, !1), this._adapterO.events.on("removed", function (e) {
                t[e.newValue.key] = t[e.newValue.key];
              }, void 0, !1)), this._adapterO;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.getPropertyValue = function (t) {
            var e = this.properties[t],
                i = this.sprite;

            if (i) {
              var n = this.propertyFields[t];
              if (S(n) && i.dataItem && (e = i.dataItem.dataContext[n]), S(e)) this._adapterO && (e = this._adapterO.apply(t, e));else {
                var r = i.getPropertyValue(t);
                (e = this._adapterO ? this._adapterO.apply(t, r) : r) == r && (e = void 0);
              }
            }

            return e;
          }, e.prototype.copyFrom = function (t) {
            t && t != this && (this.transitionDuration = t.transitionDuration, this.transitionEasing = t.transitionEasing, ni(t.properties, this.properties), ni(t.propertyFields, this.propertyFields), this.filters.copyFrom(t.filters), t._adapterO && this.adapter.copyFrom(t._adapterO));
          }, Object.defineProperty(e.prototype, "allValues", {
            get: function get() {
              var t = this,
                  e = {};
              return Qt(this.properties, function (i, n) {
                e[i] = t.getPropertyValue(i);
              }), this._adapterO && Qt(this._adapterO.keys(), function (i, n) {
                var r = t.getPropertyValue(n);
                e[n] = r;
              }), Qt(this.propertyFields, function (i) {
                var n = t.getPropertyValue(i);
                e[i] = n;
              }), e;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.reset = function () {
            this.properties = {}, this.filters.clear();
          }, e.prototype.processConfig = function (e) {
            S(e) && S(e.properties) && Qt(e.properties, function (t, i) {
              T(i) && (i.match(/^[0-9.\-]+\%$/) ? e.properties[t] = h(w(i)) : i.match(/^\#[0-9abcdef]{3,}$/i) && (e.properties[t] = ei(i)));
            }), t.prototype.processConfig.call(this, e);
          }, e.prototype.asFunction = function (e) {
            return "transitionEasing" == e || t.prototype.asIs.call(this, e);
          }, e;
        }($s);

        Fs.registeredClasses.SpriteState = Po;

        var wo,
            Co = function (t) {
          function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e._interactionEvents = new Ds(), e;
          }

          return n(e, t), e.prototype._dispatchSpriteEvent = function (t) {
            if (!this.target.disabled && !this.target.isTemplate && this.target.events.isEnabled(t.type)) {
              var e = ie(t, {
                target: this.target
              });
              this.target.events.dispatchImmediately(e.type, e);
            }
          }, e.prototype._dispatchSpritePointEvent = function (t) {
            if (!this.target.disabled && !this.target.isTemplate && this.target.events.isEnabled(t.type)) {
              var e = ie(t, {
                target: this.target,
                spritePoint: Ki(t.point, this.target),
                svgPoint: this.target.getSvgPoint(t.point)
              });
              this.target.events.dispatchImmediately(e.type, e);
            }
          }, e.prototype._addInteractionObjectEvent = function (t, e, i, n) {
            var r = this;
            return this._interactionEvents.insertKeyIfEmpty(t, function () {
              var s = r.target.interactions.events.on(t, e, i, n);
              return new ms(function () {
                r._interactionEvents.removeKey(t), s.dispose();
              });
            }).increment();
          }, e.prototype._on = function (e, i, n, r, s, o) {
            var a = t.prototype._on.call(this, e, i, n, r, s, o),
                l = [a.disposer];

            switch (i) {
              case "hit":
              case "track":
              case "doublehit":
              case "wheel":
              case "wheelup":
              case "wheeldown":
              case "wheelleft":
              case "wheelright":
                l.push(this._addInteractionObjectEvent(i, this._dispatchSpritePointEvent, this, s));
                break;

              case "rightclick":
              case "down":
              case "up":
              case "drag":
              case "dragged":
              case "dragstart":
              case "dragstop":
              case "over":
              case "out":
              case "swipe":
              case "swipeleft":
              case "swiperight":
              case "resize":
              case "focus":
              case "blur":
              case "toggled":
                l.push(this._addInteractionObjectEvent(i, this._dispatchSpriteEvent, this, s));
            }

            switch (i) {
              case "hit":
              case "doublehit":
              case "rightclick":
              case "down":
              case "up":
                this.target.clickable = !0;
                break;

              case "toggled":
                this.target.togglable = !0;
                break;

              case "drag":
              case "dragstart":
              case "dragstop":
                this.target.draggable = !0;
                break;

              case "track":
                this.target.trackable = !0;
                break;

              case "resize":
                this.target.resizable = !0;
                break;

              case "swipe":
              case "swipeleft":
              case "swiperight":
                this.target.swipeable = !0;
                break;

              case "wheel":
              case "wheelup":
              case "wheeldown":
              case "wheelleft":
              case "wheelright":
                this.target.wheelable = !0;
                break;

              case "over":
                this.target.hoverable = !0;

              case "out":
                this.target.hoverable = !0;
                break;

              case "focus":
              case "blur":
                this.target.focusable = !0;
            }

            return a.disposer = new gs(l), a;
          }, e;
        }(Os),
            Oo = function () {
          function t() {}

          return t.opacity = 1, t.strokeOpacity = 1, t.strokeWidth = 1, t.fillOpacity = 1, t.fill = Je("#000000"), t.stroke = Je("#000000"), t.focusable = void 0, t.tabindex = 0, t;
        }(),
            So = function () {
          function t(t) {
            this._disposer = new fs(function () {
              for (; 0 !== t.length;) t[0].dispose();
            });
          }

          return t.prototype.isDisposed = function () {
            return this._disposer.isDisposed();
          }, t.prototype.dispose = function () {
            this._disposer.dispose();
          }, t;
        }(),
            Io = function (t) {
          function e(e, i, n, r) {
            var s = t.call(this) || this;
            return s.duration = 0, s.easing = sn, s.progress = 0, s._loop = 0, s._pause = !1, s._delayTimeout = null, s._time = 0, s._isFinished = !1, s.className = "Animation", s.object = e, s.animationOptions = Tt(i), s.duration = n, r && (s.easing = r), s.applyTheme(), s;
          }

          return n(e, t), e.prototype.debug = function () {}, e.prototype.dispose = function () {
            t.prototype.dispose.call(this), this.pause();
          }, e.prototype.delay = function (t) {
            var e = this;

            if (t > 0) {
              this.pause(), It(this.object.animations, this);
              var i = setTimeout(function () {
                e._delayTimeout = null, e.start();
              }, t);
              this._delayTimeout = new fs(function () {
                clearTimeout(i);
              });
            }

            return this;
          }, e.prototype._start = function () {
            this._isFinished = !1, this._delayTimeout && (this.removeDispose(this._delayTimeout), this._delayTimeout = null), this.stopSameAnimations(), this._pause = !1, It(Ls.animations, this), It(this.object.animations, this), Ls.requestFrame();
          }, e.prototype.start = function () {
            this._start(), this._startTime = Date.now(), this._time = 0, this.staticOptions = [];

            for (var t = this.animationOptions.length - 1; t >= 0; t--) {
              var e = this.animationOptions[t];
              if (S(e.from) || (e.childObject ? e.from = e.childObject[e.property] : (e.from = this.object[e.property], S(e.from) || (e.from = Oo[e.property]))), e.from == e.to) St(this.animationOptions, e);else if (S(e.from)) {
                if (A(e.to)) {
                  if (e.updateMethod = Mn, e.from instanceof hs) {
                    var i = this.object[En(e.property, "pixel")];
                    isNaN(i) ? (this.staticOptions.push(e), St(this.animationOptions, e)) : e.from = i;
                  } else isNaN(e.from) && (this.staticOptions.push(e), St(this.animationOptions, e));
                } else e.to instanceof qs ? e.from ? e.updateMethod = Ln : (this.staticOptions.push(e), St(this.animationOptions, e)) : e.to instanceof hs ? (e.updateMethod = jn, isNaN(e.from) || (i = this.object[En(e.property, "relative")], isNaN(i) || (e.from = h(100 * i)))) : (this.staticOptions.push(e), St(this.animationOptions, e));
              } else this.staticOptions.push(e), St(this.animationOptions, e);
            }

            if (this.applyStaticOptions(), this.events.isEnabled("animationstarted")) {
              var n = {
                type: "animationstarted",
                target: this,
                progress: this.progress
              };
              this.events.dispatchImmediately("animationstarted", n);
            }

            return this.update(), 0 === this.duration && this.end(), this;
          }, e.prototype.loop = function (t) {
            return A(t) || (t = 1 / 0), this._loop = t, this;
          }, e.prototype.pause = function () {
            return this._pause = !0, this._delayTimeout && (this.removeDispose(this._delayTimeout), this._delayTimeout = null), St(Ls.animations, this), St(this.object.animations, this), this;
          }, e.prototype.resume = function () {
            return this._start(), this._startTime = Date.now() - this._time, this;
          }, e.prototype.end = function () {
            if (0 == this._loop && this.pause(), this.setProgress(1), this.applyStaticOptions(), this.events.isEnabled("animationended")) {
              var t = {
                type: "animationended",
                target: this,
                progress: this.progress
              };
              this.events.dispatchImmediately("animationended", t);
            }

            return this._loop > 0 ? (this._loop--, this.start()) : (this.stop(), this._isFinished = !0), this;
          }, e.prototype.kill = function () {
            this.pause(), this._isFinished = !0;
          }, e.prototype.isFinished = function () {
            return this._isFinished;
          }, e.prototype.applyStaticOptions = function () {
            var t = this;
            mt(this.staticOptions, function (e) {
              e.childObject ? e.childObject[e.property] = 1 == t.progress ? e.to : e.from : t.object[e.property] = 1 == t.progress ? e.to : e.from;
            });
          }, e.prototype.stop = function (t) {
            if (this.pause(), !t && this.events.isEnabled("animationstopped")) {
              var e = {
                type: "animationstopped",
                target: this,
                progress: this.progress
              };
              this.events.dispatchImmediately("animationstopped", e);
            }

            return this;
          }, e.prototype.setProgress = function (t) {
            var e = this;

            if (this._time = this.duration * t, mt(this.animationOptions, function (i) {
              if (i.updateMethod && S(i.from)) {
                var n = i.updateMethod(t, i.from, i.to);
                i.childObject ? i.childObject[i.property] = n : e.object[i.property] = n;
              }
            }), this.progress = t, this.events.isEnabled("animationprogress")) {
              var i = {
                type: "animationprogress",
                target: this,
                progress: this.progress
              };
              this.events.dispatchImmediately("animationprogress", i);
            }

            Ls.requestFrame();
          }, e.prototype.update = function () {
            if (!this._pause) {
              var t = void 0;
              this._time = R(Date.now() - this._startTime, 0, this.duration);
              var e = this._time / this.duration;
              t = this.easing(e), (0 == this.duration || !A(t) || e >= 1) && (t = 1), this.setProgress(t), 1 == j(this._time / this.duration, 6) && this.end();
            }

            return this;
          }, Object.defineProperty(e.prototype, "delayed", {
            get: function get() {
              return !!this._delayTimeout;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.stopSameAnimations = function () {
            var t = this;
            mt(Vt(this.object.animations), function (e) {
              if (e !== t && !e.delayed) {
                var i = [];
                mt(t.animationOptions, function (t) {
                  mt(e.animationOptions, function (n) {
                    t.property == n.property && t.childObject == n.childObject && (i.push(n), 0 == e.animationOptions.length && e.kill());
                  });
                }), mt(i, function (t) {
                  St(e.animationOptions, t);
                });
              }
            });
          }, e.prototype.asFunction = function (e) {
            return "easing" == e || t.prototype.asIs.call(this, e);
          }, e;
        }(Js),
            Do = "http://www.w3.org/2000/svg",
            ko = "http://www.w3.org/2000/xmlns/",
            To = "http://www.w3.org/1999/xlink",
            Ao = function (t) {
          function e(e, i) {
            var n = t.call(this, function () {
              var t = Jn(),
                  e = ft(t.cssRules, n._rule);
              if (-1 === e) throw new Error("Could not dispose StyleRule");
              t.deleteRule(e);
            }) || this;
            return n._rule = function (t) {
              var e = Jn(),
                  i = e.cssRules.length;
              return e.insertRule(t + "{}", i), e.cssRules[i];
            }(e), Qt(i, function (t, e) {
              n.setStyle(t, e);
            }), n;
          }

          return n(e, t), Object.defineProperty(e.prototype, "selector", {
            get: function get() {
              return this._rule.selectorText;
            },
            set: function set(t) {
              this._rule.selectorText = t;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype._setVendorPrefixName = function (t, e) {
            var i = this._rule.style;
            i.setProperty("-webkit-" + t, e, ""), i.setProperty("-moz-" + t, e, ""), i.setProperty("-ms-" + t, e, ""), i.setProperty("-o-" + t, e, ""), i.setProperty(t, e, "");
          }, e.prototype.setStyle = function (t, e) {
            "transition" === t ? this._setVendorPrefixName(t, e) : this._rule.style.setProperty(t, e, "");
          }, e;
        }(fs),
            Vo = 0,
            Fo = function (t) {
          function e(e, i) {
            var n = this,
                r = S(i) ? i : "__style_" + ++Vo + "__";
            return (n = t.call(this, "." + r, e) || this)._className = r, n;
          }

          return n(e, t), Object.defineProperty(e.prototype, "className", {
            get: function get() {
              return this._className;
            },
            set: function set(t) {
              this._className = t, this.selector = "." + t;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.toString = function () {
            return this._className;
          }, e;
        }(Ao),
            Mo = function () {
          function t(t) {
            this._isDisposed = !1, this._x = 0, this._y = 0, this._rotation = 0, this._scale = 1, this.node = "string" == typeof t ? document.createElementNS(Do, t) : t;
          }

          return t.prototype.removeNode = function () {
            this.node && this.node.parentNode && this.node.parentNode.removeChild(this.node);
          }, Object.defineProperty(t.prototype, "transformString", {
            get: function get() {
              if (this.node) return this._transformString;
            },
            enumerable: !0,
            configurable: !0
          }), t.prototype.transform = function () {
            var t = "translate(" + this._x + "," + this._y + ")";
            1 != this._scale && (t += (t ? " " : "") + "scale(" + this._scale + ")"), 0 != this._rotation && (t += (t ? " " : "") + "rotate(" + this._rotation + ")"), this._transformString = t, this.node.setAttribute("transform", t);
          }, t.prototype.getBBox = function () {
            var t = {
              width: 0,
              height: 0,
              x: 0,
              y: 0
            };
            if (this.node && this.node.parentNode) try {
              var e = this.node.getBBox();
              t.x = e.x, t.y = e.y, t.width = e.width, t.height = e.height;
            } catch (t) {}
            return t;
          }, t.prototype.moveTo = function (t) {
            if (t) {
              var e = t.x,
                  i = t.y;
              this._x == e && this._y == i || (this._x = e, this._y = i, this.transform());
            }
          }, Object.defineProperty(t.prototype, "content", {
            get: function get() {
              return this.node.innerHTML || "";
            },
            set: function set(t) {
              this.node.innerHTML = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(t.prototype, "textContent", {
            get: function get() {
              return this.node.textContent || "";
            },
            set: function set(t) {
              this.node.textContent = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(t.prototype, "x", {
            get: function get() {
              return this._x;
            },
            set: function set(t) {
              this._x != t && (this._x = t, this.transform());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(t.prototype, "y", {
            get: function get() {
              return this._y;
            },
            set: function set(t) {
              this._y != t && (this._y = t, this.transform());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(t.prototype, "rotation", {
            get: function get() {
              return this._rotation;
            },
            set: function set(t) {
              this._rotation != t && (this._rotation = t, this.transform());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(t.prototype, "scale", {
            get: function get() {
              return this._scale;
            },
            set: function set(t) {
              this._scale != t && (this._scale = t, this.transform());
            },
            enumerable: !0,
            configurable: !0
          }), t.prototype.removeAttr = function (t) {
            this.node.removeAttribute(t);
          }, t.prototype.attr = function (t) {
            var e = this;
            return Qt(t, function (t, i) {
              S(i) ? e.node.setAttribute(t, i) : e.node.removeAttribute(t);
            }), this;
          }, t.prototype.getAttr = function (t) {
            return this.node.getAttribute(t);
          }, t.prototype.attrNS = function (t, e, i) {
            return this.node.setAttributeNS(t, e, i), this;
          }, t.prototype.getAttrNS = function (t, e) {
            return this.node.getAttributeNS(t, e);
          }, t.prototype.removeStyle = function (t) {
            delete this.node.style[t];
          }, t.prototype.getStyle = function (t) {
            return this.node.style[t];
          }, t.prototype.addStyle = function (t) {
            var e = this;
            return Qt(t, function (t, i) {
              S(i) ? e.node.style[t] = i : e.removeStyle(t);
            }), this;
          }, t.prototype.addClass = function (t) {
            Nn(this.node, t);
          }, t.prototype.removeClass = function (t) {
            Hn(this.node, t);
          }, t.prototype.setClass = function (t) {
            this.node.setAttribute("class", t);
          }, t.prototype.removeChildNodes = function () {
            for (; this.node.childNodes.length > 0;) this.node.removeChild(this.node.firstChild);
          }, t.prototype.isDisposed = function () {
            return this._isDisposed;
          }, t.prototype.dispose = function () {
            this.removeNode();
          }, t;
        }(),
            jo = function (t) {
          function e(e) {
            return t.call(this, e) || this;
          }

          return n(e, t), e.prototype.add = function (t) {
            t && this.node.appendChild(t.node);
          }, e.prototype.addToBack = function (t) {
            if (t) {
              var e = this.node.childNodes[0];
              e ? e != t.node && this.node.insertBefore(t.node, e) : this.node.appendChild(t.node);
            }
          }, e.prototype.removeElement = function (t) {
            if (t) try {
              t.node && t.node.parentNode == this.node && this.node.removeChild(t.node);
            } catch (t) {}
          }, e.prototype.hasChild = function (t) {
            for (var e = 0; e < this.node.childNodes.length; e++) if (this.node.childNodes[e] == t.node) return !0;

            return !1;
          }, Object.defineProperty(e.prototype, "content", {
            get: function get() {
              return this.node.innerHTML;
            },
            set: function set(t) {
              this.node.innerHTML = t;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.removeChildren = function () {
            if (this.node.childNodes) for (; this.node.childNodes.length > 0;) {
              var t = this.node.firstChild;
              t && t.parentNode && t.parentNode.removeChild(t);
            }
          }, e;
        }(Mo),
            Lo = new Ds(),
            Eo = function (t) {
          function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e._domEvents = {}, e;
          }

          return n(e, t), e.prototype._addDOMEvent = function (t, e, i, n) {
            var r = this;

            if (!this._domEvents[t]) {
              var s = function s(t) {
                i.call(n, e, t);
              };

              this.target.element.addEventListener(t, s, !1), this._domEvents[t] = new ms(function () {
                delete r._domEvents[t], r.target.element.removeEventListener(t, s, !1);
              });
            }

            return this._domEvents[t].increment();
          }, e.prototype._dispatchKeyboardEvent = function (t, e) {
            this.target.events.isEnabled(t) && this.target.events.dispatchImmediately(t, {
              type: t,
              target: this.target,
              event: e
            });
          }, e.prototype._on = function (e, i, n, r, s, o) {
            var a = t.prototype._on.call(this, e, i, n, r, s, o),
                l = [a.disposer];

            switch (i) {
              case "hit":
              case "doublehit":
              case "rightclick":
              case "down":
              case "up":
                this.target.clickable = !0;
                break;

              case "drag":
              case "dragstart":
              case "dragstop":
                this.target.draggable = !0;
                break;

              case "track":
                this.target.trackable = !0;
                break;

              case "resize":
                this.target.resizable = !0;
                break;

              case "swipe":
              case "swipeleft":
              case "swiperight":
                this.target.swipeable = !0;
                break;

              case "wheel":
              case "wheelup":
              case "wheeldown":
              case "wheelleft":
              case "wheelright":
                this.target.wheelable = !0;
                break;

              case "over":
              case "out":
                this.target.hoverable = !0;
                break;

              case "focus":
              case "blur":
              case "focusin":
              case "focusout":
                this.target.focusable = !0;
                break;

              case "keydown":
              case "keyup":
              case "keypress":
              case "input":
                l.push(this._addDOMEvent(i, i, this._dispatchKeyboardEvent, this));
            }

            return a.disposer = new gs(l), a;
          }, e;
        }(Os),
            Ro = function (t) {
          function e(e) {
            var i = t.call(this) || this;
            return i._eventDispatcher = new Eo(i), i.eventDisposers = new Ds(), i.replacedStyles = new Ds(), i._clickable = !1, i._contextMenuDisabled = !1, i._hoverable = !1, i._trackable = !1, i._draggable = !1, i._swipeable = !1, i._resizable = !1, i._wheelable = !1, i._inert = !1, i._isHover = !1, i._isHoverByTouch = !1, i._isDown = !1, i._isFocused = !1, i._isTouchProtected = !1, i._inertiaOptions = new Ds(), i.inertias = new Ds(), i._hitOptions = {}, i._hoverOptions = {}, i._swipeOptions = {}, i._keyboardOptions = {}, i._mouseOptions = {}, i._cursorOptions = {
              defaultStyle: [{
                property: "cursor",
                value: "default"
              }]
            }, i._disposers.push(i._eventDispatcher), i._element = e, i.className = "InteractionObject", i._disposers.push(new Is(i.inertias)), i._disposers.push(new Is(i.eventDisposers)), i.applyTheme(), i;
          }

          return n(e, t), Object.defineProperty(e.prototype, "events", {
            get: function get() {
              return this._eventDispatcher;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "isHover", {
            get: function get() {
              return this._isHover;
            },
            set: function set(t) {
              this.isHover != t && (this._isHover = t, t ? pr().overObjects.moveValue(this) : pr().overObjects.removeValue(this));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "isHoverByTouch", {
            get: function get() {
              return this._isHoverByTouch;
            },
            set: function set(t) {
              this.isHoverByTouch != t && (this._isHoverByTouch = t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "overPointers", {
            get: function get() {
              return this._overPointers || (this._overPointers = new Ns()), this._overPointers;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "isDown", {
            get: function get() {
              return this._isDown;
            },
            set: function set(t) {
              this.isDown != t && (this._isDown = t, t ? pr().downObjects.moveValue(this) : pr().downObjects.removeValue(this));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "downPointers", {
            get: function get() {
              return this._downPointers || (this._downPointers = new Ns()), this._downPointers;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "isFocused", {
            get: function get() {
              return this._isFocused;
            },
            set: function set(t) {
              this.isFocused != t && (this._isFocused = t, pr().focusedObject = t ? this : void 0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "isTouchProtected", {
            get: function get() {
              return this._isTouchProtected;
            },
            set: function set(t) {
              this._isTouchProtected != t && (this._isTouchProtected = t, t ? pr().unprepElement(this) : (this.draggable || this.swipeable || this.trackable || this.resizable) && pr().prepElement(this));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "clickable", {
            get: function get() {
              return this._clickable;
            },
            set: function set(t) {
              this._clickable !== t && (this._clickable = t, pr().processClickable(this));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "contextMenuDisabled", {
            get: function get() {
              return this._contextMenuDisabled;
            },
            set: function set(t) {
              this._contextMenuDisabled !== t && (this._contextMenuDisabled = t, pr().processContextMenu(this));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "hoverable", {
            get: function get() {
              return this._hoverable;
            },
            set: function set(t) {
              this._hoverable !== t && (this._hoverable = t, pr().processHoverable(this));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "trackable", {
            get: function get() {
              return this._trackable;
            },
            set: function set(t) {
              this._trackable !== t && (this._trackable = t, pr().processTrackable(this));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "draggable", {
            get: function get() {
              return this._draggable;
            },
            set: function set(t) {
              this._draggable !== t && (this._draggable = t, pr().processDraggable(this));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "swipeable", {
            get: function get() {
              return this._swipeable;
            },
            set: function set(t) {
              this._swipeable !== t && (this._swipeable = t, pr().processSwipeable(this));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "resizable", {
            get: function get() {
              return this._resizable;
            },
            set: function set(t) {
              this._resizable !== t && (this._resizable = t, pr().processResizable(this));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "wheelable", {
            get: function get() {
              return this._wheelable;
            },
            set: function set(t) {
              this._wheelable !== t && (this._wheelable = t, pr().processWheelable(this));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "inert", {
            get: function get() {
              return this._inert;
            },
            set: function set(t) {
              this._inert !== t && (this._inert = t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "focusable", {
            get: function get() {
              return this._focusable;
            },
            set: function set(t) {
              this._focusable !== t && (this._focusable = t, this._focusable && -1 == this.tabindex && (this._tabindex = 1), pr().processFocusable(this));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "tabindex", {
            get: function get() {
              return D(this._tabindex, -1);
            },
            set: function set(t) {
              this._tabindex !== t && (this._tabindex = t, t > -1 && (this.focusable = !0), pr().processFocusable(this));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "element", {
            get: function get() {
              return this._element;
            },
            set: function set(t) {
              this._element = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "originalPosition", {
            get: function get() {
              return this._originalPosition || {
                x: 0,
                y: 0
              };
            },
            set: function set(t) {
              this._originalPosition = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "originalScale", {
            get: function get() {
              return D(this._originalScale, 1);
            },
            set: function set(t) {
              this._originalScale !== t && (this._originalScale = t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "originalAngle", {
            get: function get() {
              return D(this._originalAngle, 0);
            },
            set: function set(t) {
              this._originalAngle !== t && (this._originalAngle = t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "inertiaOptions", {
            get: function get() {
              return this.sprite && this.sprite._adapterO ? this.sprite._adapterO.apply("inertiaOptions", this._inertiaOptions) : this._inertiaOptions;
            },
            set: function set(t) {
              this._inertiaOptions = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "hitOptions", {
            get: function get() {
              return this.sprite && this.sprite._adapterO ? this.sprite._adapterO.apply("hitOptions", this._hitOptions) : this._hitOptions;
            },
            set: function set(t) {
              this._hitOptions = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "hoverOptions", {
            get: function get() {
              return this.sprite && this.sprite._adapterO ? this.sprite._adapterO.apply("hoverOptions", this._hoverOptions) : this._hoverOptions;
            },
            set: function set(t) {
              this._hoverOptions = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "swipeOptions", {
            get: function get() {
              return this.sprite && this.sprite._adapterO ? this.sprite._adapterO.apply("swipeOptions", this._swipeOptions) : this._swipeOptions;
            },
            set: function set(t) {
              this._swipeOptions = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "keyboardOptions", {
            get: function get() {
              return this.sprite && this.sprite._adapterO ? this.sprite._adapterO.apply("keyboardOptions", this._keyboardOptions) : this._keyboardOptions;
            },
            set: function set(t) {
              this._keyboardOptions = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "mouseOptions", {
            get: function get() {
              return this.sprite && this.sprite._adapterO ? this.sprite._adapterO.apply("mouseOptions", this._mouseOptions) : this._mouseOptions;
            },
            set: function set(t) {
              this._mouseOptions = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "cursorOptions", {
            get: function get() {
              return this.sprite && this.sprite._adapterO ? this.sprite._adapterO.apply("cursorOptions", this._cursorOptions) : this._cursorOptions;
            },
            set: function set(t) {
              this._cursorOptions = t;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), this.inertiaOptions = e.inertiaOptions, this.hitOptions = e.hitOptions, this.hoverOptions = e.hoverOptions, this.swipeOptions = e.swipeOptions, this.keyboardOptions = e.keyboardOptions, this.cursorOptions = e.cursorOptions, this.contextMenuDisabled = e.contextMenuDisabled, pr().applyCursorOverStyle(this);
          }, e.prototype.setEventDisposer = function (t, e, i) {
            var n = this.eventDisposers.getKey(t);
            e ? null == n && this.eventDisposers.setKey(t, i()) : null != n && (n.dispose(), this.eventDisposers.removeKey(t));
          }, e.prototype.dispose = function () {
            t.prototype.dispose.call(this);
            var e = pr();
            e.overObjects.removeValue(this), e.downObjects.removeValue(this), e.trackedObjects.removeValue(this), e.transformedObjects.removeValue(this), this.isHover && this.wheelable && e.unlockWheel(), e.focusedObject === this && (e.focusedObject = void 0);
          }, e;
        }(Js),
            Bo = function () {
          function t(t, e) {
            this._disposed = !1, this.directionX = 0, this.directionY = 0, this.interaction = t, this.keyboardEvent = e, this._startedOn = new Date().getTime(), pr().processDragStart(t), Ls.animations.push(this), this.update();
          }

          return t.prototype.update = function () {
            var t = this.interaction,
                e = pr().getKeyboardOption(t, "speed"),
                i = pr().getKeyboardOption(t, "accelleration"),
                n = pr().getKeyboardOption(t, "accellerationDelay"),
                r = {
              x: 0,
              y: 0
            };
            this.keyboardEvent.shiftKey ? (e *= .5, i = 1) : this.keyboardEvent.ctrlKey && (e *= 2);

            var s = new Date().getTime() - this._startedOn,
                o = s - n;

            if (i > 0 && o > 0) {
              var a = s / n;
              s = n, r.x += this.directionX * (e * i * a * o), r.y += this.directionY * (e * i * a * o);
            }

            r.x += this.directionX * (e * s), r.y += this.directionY * (e * s), pr().handleTransformMove(t, r, {
              x: 0,
              y: 0
            }, this.keyboardEvent, !0, !1);
          }, t.prototype.isDisposed = function () {
            return this._disposed;
          }, t.prototype.dispose = function () {
            this._disposed || (pr().processDragStop(this.interaction), St(Ls.animations, this));
          }, t;
        }(),
            No = function (t) {
          function e(e, i, n, r) {
            var s = t.call(this) || this;
            return s.animations = [], s.className = "Inertia", s.interaction = e, s.type = i, s.point = n, s.startPoint = r, s._disposers.push(new So(s.animations)), s;
          }

          return n(e, t), Object.defineProperty(e.prototype, "x", {
            get: function get() {
              return this.point.x;
            },
            set: function set(t) {
              A(t) && (this.point.x = t, this.handleMove());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "y", {
            get: function get() {
              return this.point.y;
            },
            set: function set(t) {
              A(t) && (this.point.y = t, this.handleMove());
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.handleMove = function () {
            if (this.interaction.events.isEnabled("drag")) {
              var t = {
                type: "drag",
                target: this.interaction,
                shift: {
                  x: this.x - this.startPoint.x,
                  y: this.y - this.startPoint.y
                },
                startPoint: this.startPoint,
                point: {
                  x: this.x,
                  y: this.y
                },
                touch: !1
              };
              this.interaction.events.dispatchImmediately("drag", t);
            }
          }, e.prototype.done = function () {
            this.interaction.inertias.removeKey(this.type), "move" === this.type && pr().processDragStop(this.interaction), this.dispose();
          }, e;
        }($s),
            Ho = function () {
          function t() {}

          return t.prototype.getEventKey = function (t) {
            var e;

            switch (t.keyCode || t.which) {
              case 38:
                e = "up";
                break;

              case 40:
                e = "down";
                break;

              case 37:
                e = "left";
                break;

              case 39:
                e = "right";
                break;

              case 13:
                e = "enter";
                break;

              case 27:
                e = "esc";
                break;

              case 36:
                e = "home";
                break;

              case 35:
                e = "end";
                break;

              case 9:
                e = "tab";
                break;

              case 17:
                e = "ctrl";
                break;

              case 18:
                e = "alt";
                break;

              case 16:
                e = "shift";
                break;

              case 32:
                e = "space";
                break;

              case 36:
                e = "home";
                break;

              case 35:
                e = "end";
                break;

              case 33:
                e = "pgup";
                break;

              case 34:
                e = "pgdn";
                break;

              case 45:
                e = "ins";
                break;

              case 46:
                e = "del";
                break;

              case 107:
                e = "plus";
                break;

              case 109:
                e = "minus";
                break;

              default:
                e = "other";
            }

            return e;
          }, t.prototype.isKey = function (t, e) {
            var i = this.getEventKey(t);
            return T(e) && (e = [e]), -1 !== e.indexOf(i);
          }, t.prototype.shiftKey = function (t) {
            return t.shiftKey;
          }, t.prototype.ctrlKey = function (t) {
            return t.ctrlKey;
          }, t.prototype.altKey = function (t) {
            return t.altKey;
          }, t.prototype.metaKey = function (t) {
            return t.metaKey;
          }, t;
        }(),
            Wo = new Ho(),
            Xo = {
          millisecond: 1,
          second: 1e3,
          minute: 6e4,
          hour: 36e5,
          day: 864e5,
          week: 6048e5,
          month: 2592e6,
          year: 31536e6
        },
            Yo = function (t) {
          function e() {
            var i = t.call(this) || this;
            return i._globalEventsAdded = !1, i._pointerEvents = {
              pointerdown: "mousedown",
              pointerup: "mouseup",
              pointermove: "mousemove",
              pointercancel: "mouseup",
              pointerover: "mouseover",
              pointerout: "mouseout",
              wheel: "wheel"
            }, i._usePointerEventsOnly = !1, i._useTouchEventsOnly = !1, i._addHoverEvents = !0, i._passiveSupported = !1, i._delayedEvents = {
              out: []
            }, i.overObjects = new Ns(), i.downObjects = new Ns(), i.trackedObjects = new Ns(), i.transformedObjects = new Ns(), i.pointers = new Ds(), i.inertiaOptions = new Ds(), i.hitOptions = {
              doubleHitTime: 300,
              hitTolerance: 10,
              noFocus: !0
            }, i.hoverOptions = {
              touchOutBehavior: "leave",
              touchOutDelay: 1e3
            }, i.swipeOptions = {
              time: 500,
              verticalThreshold: 75,
              horizontalThreshold: 30
            }, i.keyboardOptions = {
              speed: .1,
              accelleration: 1.2,
              accellerationDelay: 2e3
            }, i.mouseOptions = {
              sensitivity: 1
            }, i.className = "Interaction", i.body = i.getInteraction(document.body), i._disposers.push(i.body), window.hasOwnProperty("PointerEvent") ? (i._pointerEvents.pointerdown = "pointerdown", i._pointerEvents.pointerup = "pointerup", i._pointerEvents.pointermove = "pointermove", i._pointerEvents.pointercancel = "pointercancel", i._pointerEvents.pointerover = "pointerover", i._pointerEvents.pointerout = "pointerout") : window.hasOwnProperty("MSPointerEvent") ? (i._pointerEvents.pointerdown = "MSPointerDown", i._pointerEvents.pointerup = "MSPointerUp", i._pointerEvents.pointermove = "MSPointerMove", i._pointerEvents.pointercancel = "MSPointerUp", i._pointerEvents.pointerover = "MSPointerOver", i._pointerEvents.pointerout = "MSPointerOut") : "undefined" != typeof matchMedia && matchMedia("(pointer:fine)").matches ? "ontouchstart" in window && (i._addHoverEvents = !1, i._useTouchEventsOnly = !0) : window.navigator.userAgent.match(/MSIE /) ? i._usePointerEventsOnly = !0 : i._useTouchEventsOnly = !0, "onwheel" in document.createElement("div") ? i._pointerEvents.wheel = "wheel" : S(document.onmousewheel) && (i._pointerEvents.wheel = "mousewheel"), i.inertiaOptions.setKey("move", {
              time: 100,
              duration: 500,
              factor: 1,
              easing: dn
            }), i.inertiaOptions.setKey("resize", {
              time: 100,
              duration: 500,
              factor: 1,
              easing: dn
            }), i._passiveSupported = e.passiveSupported, i.applyTheme(), i;
          }

          return n(e, t), e.prototype.fullFF = function () {
            return window.navigator.userAgent.match(/Firefox/) && !window.navigator.userAgent.match(/Android/);
          }, e.prototype.debug = function () {}, e.prototype.addGlobalEvents = function () {
            var t = this;
            this._globalEventsAdded || (this._useTouchEventsOnly || (this._disposers.push(Rn(document, this._pointerEvents.pointerdown, function (e) {
              t.handleGlobalPointerDown(e);
            })), this._disposers.push(Rn(document, this._pointerEvents.pointermove, function (e) {
              t.handleGlobalPointerMove(e);
            })), this._disposers.push(Rn(document, this._pointerEvents.pointerup, function (e) {
              t.handleGlobalPointerUp(e);
            })), this._disposers.push(Rn(document, this._pointerEvents.pointercancel, function (e) {
              t.handleGlobalPointerUp(e, !0);
            }))), this._usePointerEventsOnly || (this._disposers.push(Rn(document, "touchstart", function (e) {
              t.handleGlobalTouchStart(e);
            })), this._disposers.push(Rn(document, "touchmove", function (e) {
              t.handleGlobalTouchMove(e);
            })), this._disposers.push(Rn(document, "touchend", function (e) {
              t.handleGlobalTouchEnd(e);
            }))), this._disposers.push(Rn(document, "keydown", function (e) {
              t.handleGlobalKeyDown(e);
            })), this._disposers.push(Rn(document, "keyup", function (e) {
              t.handleGlobalKeyUp(e);
            })), this._globalEventsAdded = !0);
          }, e.prototype.processClickable = function (t) {
            this.processTouchable(t);
          }, e.prototype.processContextMenu = function (t) {
            t.contextMenuDisabled ? t.eventDisposers.hasKey("contextMenuDisabled") || t.eventDisposers.setKey("contextMenuDisabled", Rn(t.element, "contextmenu", function (t) {
              t.preventDefault();
            })) : t.eventDisposers.hasKey("contextMenuDisabled") && t.eventDisposers.getKey("contextMenuDisabled").dispose();
          }, e.prototype.processHoverable = function (t) {
            var e = this;
            if (t.hoverable || t.trackable) this.addGlobalEvents(), this.applyCursorOverStyle(t), !t.eventDisposers.hasKey("hoverable") && this._addHoverEvents && t.eventDisposers.setKey("hoverable", new gs([Rn(t.element, this._pointerEvents.pointerout, function (i) {
              return e.handlePointerOut(t, i);
            }), Rn(t.element, this._pointerEvents.pointerover, function (i) {
              return e.handlePointerOver(t, i);
            })])), t.trackable;else {
              var i = t.eventDisposers.getKey("hoverable");
              null != i && (i.dispose(), t.eventDisposers.removeKey("hoverable"));
            }
            this.processTouchable(t);
          }, e.prototype.processMovable = function (t) {
            (t.draggable || t.swipeable || t.trackable || t.resizable) && (this.isGlobalElement(t) || t.isTouchProtected || this.prepElement(t), this.applyCursorOverStyle(t)), this.processTouchable(t);
          }, e.prototype.processTrackable = function (t) {
            this.processHoverable(t), this.processMovable(t), t.trackable ? this.trackedObjects.moveValue(t) : this.trackedObjects.removeValue(t);
          }, e.prototype.processDraggable = function (t) {
            this.processMovable(t);
          }, e.prototype.processSwipeable = function (t) {
            this.processMovable(t);
          }, e.prototype.processResizable = function (t) {
            this.processMovable(t);
          }, e.prototype.processWheelable = function (t) {
            var e = this;
            if (t.wheelable) t.eventDisposers.hasKey("wheelable") || t.eventDisposers.setKey("wheelable", new gs([Rn(t.element, this._pointerEvents.wheel, function (i) {
              return e.handleMouseWheel(t, i);
            }, !!this._passiveSupported && {
              passive: !1
            }), t.events.on("out", function (i) {
              t.wheelable && e.unlockWheel();
            }), t.events.on("over", function (i) {
              t.wheelable && e.lockWheel();
            })]));else {
              var i = t.eventDisposers.getKey("wheelable");
              null != i && (i.dispose(), t.eventDisposers.removeKey("wheelable"));
            }
          }, e.prototype.processFocusable = function (t) {
            var e = this;
            if (!0 === t.focusable && t.tabindex > -1 && !this._useTouchEventsOnly) t.eventDisposers.hasKey("focusable") || t.eventDisposers.setKey("focusable", new gs([Rn(t.element, "focus", function (i) {
              return e.handleFocus(t, i);
            }), Rn(t.element, "blur", function (i) {
              return e.handleBlur(t, i);
            }), Rn(t.element, this._pointerEvents.pointerdown, function (i) {
              return e.handleFocusBlur(t, i);
            }), Rn(t.element, "touchstart", function (i) {
              return e.handleFocusBlur(t, i);
            }, !!this._passiveSupported && {
              passive: !1
            })]));else {
              var i = t.eventDisposers.getKey("focusable");
              null != i && (i.dispose(), t.eventDisposers.removeKey("focusable"));
            }
          }, e.prototype.processTouchable = function (t) {
            var e = this;
            if (t.clickable || t.hoverable || t.trackable || t.draggable || t.swipeable || t.resizable) this.addGlobalEvents(), t.eventDisposers.hasKey("touchable") || (this._useTouchEventsOnly || this._usePointerEventsOnly ? this._useTouchEventsOnly ? this._usePointerEventsOnly || t.eventDisposers.setKey("touchable", Rn(t.element, "touchstart", function (i) {
              return e.handleTouchDown(t, i);
            }, !!this._passiveSupported && {
              passive: !1
            })) : t.eventDisposers.setKey("touchable", Rn(t.element, this._pointerEvents.pointerdown, function (i) {
              return e.handlePointerDown(t, i);
            })) : t.eventDisposers.setKey("touchable", new gs([Rn(t.element, this._pointerEvents.pointerdown, function (i) {
              return e.handlePointerDown(t, i);
            }), Rn(t.element, "touchstart", function (i) {
              return e.handleTouchDown(t, i);
            }, !!this._passiveSupported && {
              passive: !1
            })])));else {
              var i = t.eventDisposers.getKey("touchable");
              null != i && (i.dispose(), t.eventDisposers.removeKey("touchable"));
            }
          }, e.prototype.handleFocus = function (t, e) {
            if (t.focusable) {
              if (t.isFocused = !0, t.events.isEnabled("focus") && !Ls.isPaused) {
                var i = {
                  type: "focus",
                  target: t,
                  event: e
                };
                t.events.dispatchImmediately("focus", i);
              }
            } else e.preventDefault();
          }, e.prototype.handleFocusBlur = function (t, e) {
            !1 !== t.focusable && this.getHitOption(t, "noFocus") && t.events.once("focus", function () {
              t.events.disableType("blur"), Yn(), t.sprite && t.sprite.handleBlur(), t.events.enableType("blur");
            });
          }, e.prototype.handleBlur = function (t, e) {
            if (t.focusable) {
              if (t.isFocused = !1, t.events.isEnabled("blur") && !Ls.isPaused) {
                var i = {
                  type: "blur",
                  target: t,
                  event: e
                };
                t.events.dispatchImmediately("blur", i);
              }
            } else e.preventDefault();
          }, e.prototype.handleGlobalKeyDown = function (t) {
            if (this.focusedObject) if (Wo.isKey(t, "esc")) Yn();else if (this.focusedObject.draggable && Wo.isKey(t, ["up", "down", "left", "right"])) {
              t.preventDefault();
              var e = this.focusedObject;
              if (e.eventDisposers.hasKey("interactionKeyboardObject")) return;
              var i = new Bo(e, t);

              switch (e.eventDisposers.setKey("interactionKeyboardObject", i), Wo.getEventKey(t)) {
                case "up":
                  i.directionY = -1;
                  break;

                case "down":
                  i.directionY = 1;
                  break;

                case "left":
                  i.directionX = -1;
                  break;

                case "right":
                  i.directionX = 1;
              }
            }
          }, e.prototype.handleGlobalKeyUp = function (t) {
            if (this.focusedObject) {
              var e = this.focusedObject.eventDisposers.getKey("interactionKeyboardObject");
              null != e && (t.preventDefault(), e.dispose(), this.focusedObject.eventDisposers.removeKey("interactionKeyboardObject"));
            }
          }, e.prototype.handleGlobalPointerMove = function (t) {
            var e = this.getPointer(t);

            if (e.point = this.getPointerPoint(t), this.events.isEnabled("track") && !Ls.isPaused) {
              var i = {
                type: "track",
                target: this,
                event: t,
                pointer: e,
                touch: e.touch
              };
              this.events.dispatchImmediately("track", i);
            }

            this.addBreadCrumb(e, e.point), this.handleGlobalMove(e, t);
          }, e.prototype.handleGlobalPointerDown = function (t) {
            this.processDelayed();
            var e = this.getPointer(t);

            if (this.events.isEnabled("down") && !Ls.isPaused) {
              var i = {
                type: "down",
                target: this,
                event: t,
                pointer: e,
                touch: e.touch
              };
              this.events.dispatchImmediately("down", i);
            }
          }, e.prototype.preventTouchAction = function (t) {
            t.defaultPrevented || t.preventDefault();
          }, e.prototype.handleGlobalPointerUp = function (t, e) {
            void 0 === e && (e = !1);
            var i = this.getPointer(t);

            if (this.events.isEnabled("up") && !Ls.isPaused) {
              var n = {
                type: "up",
                target: this,
                event: t,
                pointer: i,
                touch: i.touch
              };
              this.events.dispatchImmediately("up", n);
            }

            this.handleGlobalUp(i, t, e);
          }, e.prototype.handleGlobalTouchMove = function (t) {
            for (var e = 0; e < t.changedTouches.length; e++) {
              var i = this.getPointer(t.changedTouches[e]);

              if (i.point = this.getPointerPoint(t.changedTouches[e]), this.events.isEnabled("track") && !Ls.isPaused) {
                var n = {
                  type: "track",
                  target: this,
                  event: t,
                  pointer: i,
                  touch: i.touch
                };
                this.events.dispatchImmediately("track", n);
              }

              this.addBreadCrumb(i, i.point), this.handleGlobalMove(i, t);
            }
          }, e.prototype.handleGlobalTouchStart = function (t) {
            this.processDelayed();

            for (var e = 0; e < t.changedTouches.length; e++) {
              var i = this.getPointer(t.changedTouches[e]);

              if (!this._usePointerEventsOnly && this.events.isEnabled("down") && !Ls.isPaused) {
                var n = {
                  type: "down",
                  target: this,
                  event: t,
                  pointer: i,
                  touch: i.touch
                };
                this.events.dispatchImmediately("down", n);
              }
            }
          }, e.prototype.handleGlobalTouchEnd = function (t) {
            for (var e = 0; e < t.changedTouches.length; e++) {
              var i = this.getPointer(t.changedTouches[e]);

              if (this.events.isEnabled("up") && !Ls.isPaused) {
                var n = {
                  type: "up",
                  target: this,
                  event: t,
                  pointer: i,
                  touch: i.touch
                };
                this.events.dispatchImmediately("up", n);
              }

              this.handleGlobalUp(i, t);
            }
          }, e.prototype.handlePointerDown = function (t, e) {
            var i = this.getPointer(e);
            (i.touch || 1 == e.which || 3 == e.which) && (i.button = e.which, this.resetPointer(i, e), this.handleDown(t, i, e));
          }, e.prototype.handlePointerOver = function (t, e) {
            var i = this.getPointer(e);
            this.handleOver(t, i, e);
          }, e.prototype.handlePointerOut = function (t, e) {
            var i = this.getPointer(e);
            this.handleOut(t, i, e);
          }, e.prototype.handleMouseWheel = function (t, e) {
            var i = this.getPointer(e);
            i.point = this.getPointerPoint(e);
            var n = 0,
                r = 0,
                s = 1;
            if (1 == e.deltaMode && (s = 50), s *= this.getMouseOption(t, "sensitivity"), !(e instanceof WheelEvent)) throw new Error("Invalid event type");
            n = Math.round(-1 * e.wheelDeltaX || e.deltaX) * s, r = Math.round(-1 * e.wheelDeltaY || e.deltaY) * s, this.handleWheel(t, i, n, r, e);
          }, e.prototype.handleTouchDown = function (t, e) {
            for (var i = 0; i < e.changedTouches.length; i++) {
              var n = this.getPointer(e.changedTouches[i]);
              this.maybePreventDefault(t, e, n), this.resetPointer(n, e.changedTouches[i]), this.handleDown(t, n, e);
            }
          }, e.prototype.handleHit = function (t, e, i) {
            var n = or();

            if (t.lastHit && t.lastHit >= n - this.getHitOption(t, "doubleHitTime")) {
              if (n - t.lastHit < 100) return;

              if (t.lastHit = void 0, t.lastHitPointer = void 0, t.events.isEnabled("doublehit") && !Ls.isPaused) {
                var r = {
                  type: "doublehit",
                  target: t,
                  point: e.point,
                  event: i,
                  touch: e.touch
                };
                t.events.dispatchImmediately("doublehit", r);
              }
            } else t.lastHit = n, t.lastHitPointer = e, 3 === e.button ? t.events.isEnabled("rightclick") && !Ls.isPaused && (r = {
              type: "rightclick",
              target: t,
              event: i
            }, t.events.dispatchImmediately("rightclick", r)) : t.events.isEnabled("hit") && !Ls.isPaused && (r = {
              type: "hit",
              target: t,
              event: i,
              point: e.point,
              touch: e.touch
            }, t.events.dispatchImmediately("hit", r));
          }, e.prototype.handleOver = function (t, e, i, n) {
            if (void 0 === n && (n = !1), t.hoverable && (this.processDelayed(), t.overPointers.moveValue(e), !t.isHover && (t.isHover = !0, this.overObjects.moveValue(t), this.handleTrack(this.body, e, i, !0), t.events.isEnabled("over") && !Ls.isPaused))) {
              var r = {
                type: "over",
                target: t,
                event: i,
                pointer: e,
                touch: e.touch
              };
              t.events.dispatchImmediately("over", r);
            }
          }, e.prototype.handleOut = function (t, e, i, n, r) {
            var s = this;

            if (void 0 === n && (n = !1), void 0 === r && (r = !1), t.hoverable && (t.overPointers.removeValue(e), t.isHover && (!t.hasDelayedOut || r))) {
              if (n && t.overPointers.length) return;

              if (e.touch && !r && !this.old(e)) {
                var o = this.getHoverOption(t, "touchOutBehavior");
                if ("leave" == o) return this._delayedEvents.out.push({
                  type: "out",
                  io: t,
                  pointer: e,
                  event: i,
                  keepUntil: or() + 500
                }), void (t.hasDelayedOut = !0);
                if ("delay" == o && this.getHoverOption(t, "touchOutDelay")) return void this._delayedEvents.out.push({
                  type: "out",
                  io: t,
                  pointer: e,
                  event: i,
                  keepUntil: or() + 500,
                  timeout: this.setTimeout(function () {
                    s.handleOut(t, e, i, !0);
                  }, this.getHoverOption(t, "touchOutDelay"))
                });
              }

              if (t.isHover = !1, this.overObjects.removeValue(t), t.events.isEnabled("out") && !Ls.isPaused) {
                var a = {
                  type: "out",
                  target: t,
                  event: i,
                  pointer: e,
                  touch: e.touch
                };
                t.events.dispatchImmediately("out", a);
              }

              t.overPointers.clear(), t.hasDelayedOut = !1;
            }
          }, e.prototype.processDelayed = function () {
            for (var t; t = this._delayedEvents.out.pop();) t.timeout && t.timeout.dispose(), this.handleOut(t.io, t.pointer, t.event, !1, !0);
          }, e.prototype.handleDown = function (t, e, i) {
            if (this.maybePreventDefault(t, i, e), t.inert && this.stopInertia(t), this.handleOver(t, e, i, !0), t.downPointers.moveValue(e), this.applyCursorDownStyle(t, e), t.isDown || (!1 !== t.focusable && this.getHitOption(t, "noFocus") && this.focusedObject && Yn(), t.isDown = !0, this.downObjects.moveValue(t), t.draggable && this.processDragStart(t, e, i), t.resizable && this.processResizeStart(t, e, i)), t.events.isEnabled("down") && !Ls.isPaused) {
              var n = {
                type: "down",
                target: t,
                event: i,
                pointer: e,
                touch: e.touch
              };
              t.events.dispatchImmediately("down", n);
            }
          }, e.prototype.handleGlobalUp = function (t, e, i) {
            var n = this;
            void 0 === i && (i = !1), pe(this.downObjects.backwards().iterator(), function (r) {
              r && r.downPointers.contains(t) && n.handleUp(r, t, e, i);
            });
          }, e.prototype.handleUp = function (t, e, i, n) {
            if (void 0 === n && (n = !1), this.restoreCursorDownStyle(t, e), t.downPointers.removeValue(e), (e.touch || this._useTouchEventsOnly) && this.handleOut(t, e, i, !0), t.isDown) {
              if (0 == t.downPointers.length && (t.isDown = !1, this.downObjects.removeValue(t)), t.events.isEnabled("up") && !Ls.isPaused) {
                var r = {
                  type: "up",
                  target: t,
                  event: i,
                  pointer: e,
                  touch: e.touch
                };
                t.events.dispatchImmediately("up", r);
              }

              n || (t.swipeable && this.swiped(t, e) ? this.handleSwipe(t, e, i) : (t.clickable && !this.moved(e, this.getHitOption(t, "hitTolerance")) && this.handleHit(t, e, i), t.inert && this.moved(e, this.getHitOption(t, "hitTolerance")) ? this.handleInertia(t, e) : t.draggable && this.processDragStop(t, e, i), t.resizable && this.processResizeStop(t, e, i)));
            }
          }, e.prototype.maybePreventDefault = function (t, e, i) {
            !S(e) || !(t.draggable || t.swipeable || t.trackable || t.resizable) || this.isGlobalElement(t) || !1 === e.cancelable || t.isTouchProtected && i && i.touch || e.preventDefault();
          }, e.prototype.handleGlobalMove = function (t, e) {
            var i,
                n = this;

            if (!t.touch) {
              var r = "function" == typeof (i = t.lastEvent).composedPath ? i.composedPath()[0] : i.target;
              pe(this.overObjects.backwards().iterator(), function (i) {
                if (i && i.overPointers.contains(t) && i.hoverable) {
                  var s = !1;
                  i.element && t.lastEvent && Kn(i.element, r) || (s = !0), s && n.handleOut(i, t, e, !0);
                }
              });
            }

            pe(this.transformedObjects.backwards().iterator(), function (i) {
              !i.downPointers.contains(t) || i.swipeable && n.swiping(i, t) || !i.draggable && !i.resizable || n.handleTransform(i, e);
            }), pe(this.trackedObjects.backwards().iterator(), function (i) {
              i.overPointers.contains(t) || n.handleTrack(i, t, e);
            });
          }, e.prototype.handleTrack = function (t, e, i, n) {
            if (void 0 === n && (n = !1), (n || this.moved(e, 0)) && t.events.isEnabled("track") && !Ls.isPaused) {
              var r = {
                type: "track",
                target: t,
                event: i,
                point: e.point,
                pointer: e,
                touch: e.touch
              };
              t.events.dispatchImmediately("track", r);
            }
          }, e.prototype.handleSwipe = function (t, e, i) {
            if (t.events.isEnabled("swipe") && !Ls.isPaused) {
              var n = {
                type: "swipe",
                target: t,
                event: i,
                touch: e.touch
              };
              t.events.dispatchImmediately("swipe", n);
            }

            e.startPoint.x < e.point.x ? t.events.isEnabled("swiperight") && !Ls.isPaused && (n = {
              type: "swiperight",
              target: t,
              event: i,
              touch: e.touch
            }, t.events.dispatchImmediately("swiperight", n)) : t.events.isEnabled("swipeleft") && !Ls.isPaused && (n = {
              type: "swipeleft",
              target: t,
              event: i,
              touch: e.touch
            }, t.events.dispatchImmediately("swipeleft", n));
          }, e.prototype.handleWheel = function (t, e, i, n, r) {
            var s = {
              x: i,
              y: n
            };
            t.events.isEnabled("wheel") && !Ls.isPaused && t.events.dispatchImmediately("wheel", {
              type: "wheel",
              target: t,
              event: r,
              point: e.point,
              shift: s
            }), i < 0 ? t.events.isEnabled("wheelleft") && !Ls.isPaused && t.events.dispatchImmediately("wheelleft", {
              type: "wheelleft",
              target: t,
              event: r,
              point: e.point,
              shift: s
            }) : i > 0 ? t.events.isEnabled("swiperight") && !Ls.isPaused && t.events.dispatchImmediately("wheelright", {
              type: "wheelright",
              target: t,
              event: r,
              point: e.point,
              shift: s
            }) : n < 0 ? t.events.isEnabled("wheelup") && !Ls.isPaused && t.events.dispatchImmediately("wheelup", {
              type: "wheelup",
              target: t,
              event: r,
              point: e.point,
              shift: s
            }) : n > 0 && t.events.isEnabled("wheeldown") && !Ls.isPaused && t.events.dispatchImmediately("wheeldown", {
              type: "wheeldown",
              target: t,
              event: r,
              point: e.point,
              shift: s
            });
          }, e.prototype.handleInertia = function (t, e) {
            t.draggable && 0 === t.downPointers.length && this.handleMoveInertia(t, e), t.resizable && t.downPointers.length > 1 && this.handleResizeInertia(t, e);
          }, e.prototype.handleMoveInertia = function (t, e) {
            var i = t,
                n = {
              x: e.point.x,
              y: e.point.y
            },
                r = {
              x: e.startPoint.x,
              y: e.startPoint.y
            },
                s = new No(i, "move", n, r),
                o = this.getTrailPoint(e, or() - this.getInertiaOption(t, "move", "time"));

            if (void 0 !== o) {
              var a = this.getInertiaOption(t, "move", "factor"),
                  l = [{
                to: e.point.x + (e.point.x - o.point.x) * a,
                property: "x"
              }, {
                to: e.point.y + (e.point.y - o.point.y) * a,
                property: "y"
              }],
                  h = new Io(s, l, this.getInertiaOption(t, "move", "duration"), this.getInertiaOption(t, "move", "easing")).start();
              this._disposers.push(h.events.on("animationended", function (t) {
                s.done();
              })), t.inertias.setKey("move", s);
            } else this.processDragStop(t, e, e.lastUpEvent);
          }, e.prototype.handleResizeInertia = function (t, e) {}, e.prototype.handleTransform = function (t, e) {
            var i,
                n,
                r,
                s = t.downPointers.getIndex(0),
                o = null,
                a = null;
            s && (o = s.point, a = s.startPoint), r = n = {
              x: t.originalPosition.x,
              y: t.originalPosition.y
            };

            for (var l = !0, h = 1; h < t.downPointers.length; h++) {
              var u = t.downPointers.getIndex(h);

              if (a.x != u.startPoint.x && a.y != u.startPoint.y) {
                l = !1, n = (i = u).point, r = i.startPoint;
                break;
              }
            }

            var p = s && this.moved(s, 0);
            if (t.draggable && s && s.dragStartEvents && s.dragStartEvents.length && p && t.events.isEnabled("dragstart") && !Ls.isPaused && t.events.dispatchImmediately("dragstart", s.dragStartEvents.shift()), l && t.draggable) this.handleTransformMove(t, o, a, e, p, s.touch);else {
              var c = i && this.moved(i, 0);
              t.draggable && t.resizable ? (this.handleTransformMove(t, o, a, e, p && c, s.touch), this.handleTransformResize(t, o, a, n, r, e, p && c, s.touch)) : (t.draggable && this.handleTransformMove(t, o, a, e, p, s.touch), !t.resizable || l && !e.ctrlKey || this.handleTransformResize(t, o, a, n, r, e, p && c, s.touch));
            }
          }, e.prototype.handleTransformMove = function (t, e, i, n, r, s) {
            if (r && t.events.isEnabled("drag") && !Ls.isPaused && (!t.isTouchProtected || !s)) {
              var o = {
                type: "drag",
                target: t,
                event: n,
                shift: {
                  x: e.x - i.x,
                  y: e.y - i.y
                },
                startPoint: i,
                point: e,
                touch: s
              };
              t.events.dispatchImmediately("drag", o);
            }
          }, e.prototype.handleTransformResize = function (t, e, i, n, r, s, o, a) {
            if (t.events.isEnabled("resize") && !Ls.isPaused && (!t.isTouchProtected || !a)) {
              var l = {
                type: "resize",
                target: t,
                event: s,
                scale: q(e, i, n, r),
                startPoint1: i,
                point1: e,
                startPoint2: r,
                point2: n,
                touch: a
              };
              t.events.dispatchImmediately("resize", l);
            }
          }, e.prototype.processDragStart = function (t, e, i) {
            this.transformedObjects.moveValue(t);
            var n = {
              type: "dragstart",
              target: t,
              event: i,
              touch: !!e && e.touch
            };
            e && (e.dragTarget = t), e && e.dragStartEvents ? e.dragStartEvents.push(n) : Ls.isPaused || t.dispatchImmediately("dragstart", n);
          }, e.prototype.processDragStop = function (t, e, i) {
            if (e || (e = this.getDragPointer(t)), e && (e.dragTarget = void 0), this.transformedObjects.removeValue(t), (!e || this.moved(e, 0)) && t.events.isEnabled("dragstop") && !Ls.isPaused) {
              var n = {
                type: "dragstop",
                target: t,
                touch: !!e && e.touch
              };
              t.events.dispatchImmediately("dragstop", n);
            }
          }, e.prototype.processResizeStart = function (t, e, i) {
            this.transformedObjects.moveValue(t);
          }, e.prototype.processResizeStop = function (t, e, i) {
            this.transformedObjects.removeValue(t);
          }, e.prototype.dragStart = function (t, e) {
            e || (e = this.getDragPointer(t)), e && this.handleDown(t, e, e.lastDownEvent);
          }, e.prototype.dragStop = function (t, e) {
            e || (e = this.getDragPointer(t)), e && this.handleGlobalUp(e, e.lastUpEvent);
          }, e.prototype.getDragPointer = function (t) {
            return t ? t.downPointers.getIndex(0) : this.transformedObjects.length ? this.getDragPointer(this.transformedObjects.getIndex(0)) : void 0;
          }, e.prototype.getPointerId = function (t) {
            return (S(t.identifier) ? "" + t.identifier : S(t.pointerId) ? "" + t.pointerId : "m").replace("-", "");
          }, e.prototype.getPointerPoint = function (t) {
            return {
              x: t.clientX,
              y: t.clientY
            };
          }, e.prototype.getPointer = function (t) {
            var e,
                i = this.getPointerId(t),
                n = this.getPointerPoint(t);
            return this.pointers.hasKey(i) ? (e = this.pointers.getKey(i)).touch = this.isPointerTouch(t) : (e = {
              id: i,
              touch: this.isPointerTouch(t),
              startPoint: n,
              startTime: or(),
              point: n,
              track: [],
              swipeCanceled: !1,
              dragStartEvents: []
            }, this.addBreadCrumb(e, n), this.pointers.setKey(i, e)), e.lastEvent = t, e;
          }, e.prototype.isPointerTouch = function (t) {
            if ("undefined" != typeof Touch && t instanceof Touch) return !0;
            if ("undefined" != typeof PointerEvent && t instanceof PointerEvent && S(t.pointerType)) switch (t.pointerType) {
              case "touch":
              case "pen":
              case 2:
                return !0;

              case "mouse":
              case 4:
                return !1;

              default:
                return !(t instanceof MouseEvent);
            } else if (S(t.type) && t.type.match(/^mouse/)) return !1;
            return !0;
          }, e.prototype.resetPointer = function (t, e) {
            var i = this.getPointerPoint(e);
            t.startTime = or(), t.startPoint = {
              x: i.x,
              y: i.y
            }, t.point = {
              x: i.x,
              y: i.y
            }, t.track = [], t.swipeCanceled = !1;
          }, e.prototype.addBreadCrumb = function (t, e) {
            t.track.push({
              timestamp: or(),
              point: e
            });
          }, e.prototype.lockDocument = function () {
            this.prepElement(this.body);
          }, e.prototype.unlockDocument = function () {
            0 == this.transformedObjects.length && this.restoreAllStyles(this.body);
          }, e.prototype.lockElement = function (t) {
            this.prepElement(t);
          }, e.prototype.unlockElement = function (t) {
            this.restoreAllStyles(t);
          }, e.prototype.lockWheel = function () {
            window.addEventListener(this._pointerEvents.wheel, this.wheelLockEvent, !!this._passiveSupported && {
              passive: !1
            });
          }, e.prototype.unlockWheel = function () {
            window.removeEventListener(this._pointerEvents.wheel, this.wheelLockEvent);
          }, e.prototype.isLocalElement = function (t, e, i) {
            var n = this.getCache("local_pointer_" + t.id);
            if (S(n)) return n;
            var r = (Zn(e) || document).elementFromPoint(t.point.x, t.point.y),
                s = r && Kn(e, r);
            return this.setCache("local_pointer_" + t.id + "_" + i, s, 100), s;
          }, e.prototype.wheelLockEvent = function (t) {
            return t.preventDefault(), !1;
          }, e.prototype.prepElement = function (t) {
            var e = t.element;

            if (e) {
              for (var i = ["touchAction", "webkitTouchAction", "MozTouchAction", "MSTouchAction", "msTouchAction", "oTouchAction", "userSelect", "webkitUserSelect", "MozUserSelect", "MSUserSelect", "msUserSelect", "oUserSelect", "touchSelect", "webkitTouchSelect", "MozTouchSelect", "MSTouchSelect", "msTouchSelect", "oTouchSelect", "touchCallout", "webkitTouchCallout", "MozTouchCallout", "MSTouchCallout", "msTouchCallout", "oTouchCallout", "contentZooming", "webkitContentZooming", "MozContentZooming", "MSContentZooming", "msContentZooming", "oContentZooming", "userDrag", "webkitUserDrag", "MozUserDrag", "MSUserDrag", "msUserDrag", "oUserDrag"], n = 0; n < i.length; n++) i[n] in e.style && this.setTemporaryStyle(t, i[n], "none");

              this.setTemporaryStyle(t, "tapHighlightColor", "rgba(0, 0, 0, 0)");
            }
          }, e.prototype.unprepElement = function (t) {
            var e = t.element;

            if (e) {
              for (var i = ["touchAction", "webkitTouchAction", "MozTouchAction", "MSTouchAction", "msTouchAction", "oTouchAction", "userSelect", "webkitUserSelect", "MozUserSelect", "MSUserSelect", "msUserSelect", "oUserSelect", "touchSelect", "webkitTouchSelect", "MozTouchSelect", "MSTouchSelect", "msTouchSelect", "oTouchSelect", "touchCallout", "webkitTouchCallout", "MozTouchCallout", "MSTouchCallout", "msTouchCallout", "oTouchCallout", "contentZooming", "webkitContentZooming", "MozContentZooming", "MSContentZooming", "msContentZooming", "oContentZooming", "userDrag", "webkitUserDrag", "MozUserDrag", "MSUserDrag", "msUserDrag", "oUserDrag"], n = 0; n < i.length; n++) i[n] in e.style && this.restoreStyle(t, i[n]);

              this.restoreStyle(t, "tapHighlightColor");
            }
          }, e.prototype.getHitOption = function (t, e) {
            var i = t.hitOptions[e];
            return void 0 === i && (i = this.hitOptions[e]), i;
          }, e.prototype.getHoverOption = function (t, e) {
            var i = t.hoverOptions[e];
            return void 0 === i && (i = this.hoverOptions[e]), i;
          }, e.prototype.getSwipeOption = function (t, e) {
            var i = t.swipeOptions[e];
            return void 0 === i && (i = this.swipeOptions[e]), i;
          }, e.prototype.getKeyboardOption = function (t, e) {
            var i = t.keyboardOptions[e];
            return void 0 === i && (i = this.keyboardOptions[e]), i;
          }, e.prototype.getMouseOption = function (t, e) {
            var i = t.mouseOptions[e];
            return void 0 === i && (i = this.mouseOptions[e]), i;
          }, e.prototype.getInertiaOption = function (t, e, i) {
            var n = t.inertiaOptions.getKey(e);
            return n && S(n[i]) ? n[i] : this.inertiaOptions.getKey(e)[i];
          }, e.prototype.stopInertia = function (t) {
            for (var e, i = ["move", "resize"], n = 0; n < i.length; n++) if (e = i[n], t.inertias.hasKey(e)) {
              var r = t.inertias.getKey(e);

              if (r) {
                r.dispose();
                continue;
              }
            }
          }, e.prototype.swiping = function (t, e) {
            var i = or();
            return !(e.swipeCanceled || !t.swipeable) && Math.abs(e.startPoint.y - e.point.y) < this.getSwipeOption(t, "verticalThreshold") && e.startTime > i - this.getSwipeOption(t, "time");
          }, e.prototype.swiped = function (t, e) {
            var i = or();
            return !e.swipeCanceled && Math.abs(e.startPoint.x - e.point.x) > this.getSwipeOption(t, "horizontalThreshold") && Math.abs(e.startPoint.y - e.point.y) < this.getSwipeOption(t, "verticalThreshold") && e.startTime > i - this.getSwipeOption(t, "time");
          }, e.prototype.applyCursorOverStyle = function (t) {
            var e = t.cursorOptions;
            if (S(e.overStyle)) for (var i = 0; i < e.overStyle.length; i++) Wn(t.element, e.overStyle[i].property, e.overStyle[i].value);
          }, e.prototype.applyCursorDownStyle = function (t, e) {
            if (!e.touch) {
              var i = t.cursorOptions.downStyle;
              if (t.downPointers.contains(e) && S(i)) for (var n = 0; n < i.length; n++) this.setTemporaryStyle(this.body, i[n].property, i[n].value), this.setTemporaryStyle(t, i[n].property, i[n].value);
            }
          }, e.prototype.restoreCursorDownStyle = function (t, e) {
            if (!e.touch) {
              var i = t.cursorOptions.downStyle;
              if (t.downPointers.contains(e) && S(i)) for (var n = 0; n < i.length; n++) this.restoreStyle(this.body, i[n].property), this.restoreStyle(t, i[n].property);
            }
          }, e.prototype.setGlobalStyle = function (t) {
            for (var e = pr().body, i = F(t) ? t : [t], n = 0; n < i.length; n++) this.setTemporaryStyle(e, i[n].property, i[n].value);
          }, e.prototype.restoreGlobalStyle = function (t) {
            for (var e = pr().body, i = F(t) ? t : [t], n = 0; n < i.length; n++) this.restoreStyle(e, i[n].property);
          }, e.prototype.isGlobalElement = function (t) {
            return document.body === t.element;
          }, e.prototype.moved = function (t, e, i) {
            void 0 === i && (i = 300);
            var n = this.getShift(t);
            return Math.abs(n.x) > e || Math.abs(n.y) > e;
          }, e.prototype.old = function (t, e) {
            return void 0 === e && (e = 300), or() - t.startTime > e;
          }, e.prototype.getShift = function (t) {
            return {
              x: t.startPoint.x - t.point.x,
              y: t.startPoint.y - t.point.y
            };
          }, e.prototype.getTrailPoint = function (t, e) {
            for (var i, n = 0; n < t.track.length; n++) if (t.track[n].timestamp >= e) {
              i = t.track[n];
              break;
            }

            return i;
          }, e.prototype.pointerExists = function (t, e) {
            var i = !1;
            return t.each(function (t) {
              t != e && (i = t.point.x == e.point.x && t.point.y == e.point.y);
            }), i;
          }, e.prototype.getInteraction = function (t) {
            return new Ro(t);
          }, e.prototype.setTemporaryStyle = function (t, e, i) {
            var n = t.element;
            S(n.style[e]) && !t.replacedStyles.hasKey(e) && t.replacedStyles.setKey(e, n.style[e]), Wn(n, e, i);
          }, e.prototype.restoreStyle = function (t, e) {
            t.replacedStyles.hasKey(e) ? (t.element.style[e] = t.replacedStyles.getKey(e), t.replacedStyles.removeKey(e)) : delete t.element.style[e];
          }, e.prototype.restoreAllStyles = function (t) {
            pe(t.replacedStyles.iterator(), function (e) {
              var i = e[0],
                  n = e[1];
              t.element.style[i] = n, t.replacedStyles.removeKey(i);
            });
          }, e.prototype.dispose = function () {
            this.isDisposed() || (t.prototype.dispose.call(this), this.restoreAllStyles(this.body), this.unlockWheel());
          }, e.prototype.log = function (t, e, i) {
            if (e.changedTouches) for (var n = 0; n < e.changedTouches.length; n++) this.logTouch(t, e.type, e.changedTouches[n]);else {
              var r = "";
              if (e.pointerType) switch (e.pointerType) {
                case 2:
                  r = "touch";
                  break;

                case 4:
                  r = "mouse";
                  break;

                default:
                  r = e.pointerType;
              } else r = "undefined" != typeof TouchEvent && e instanceof TouchEvent ? "touch" : e.type.match(/^mouse/) ? "mouse" : "???";
              var s = "";
              s = S(e.identifier) ? e.identifier : S(e.pointerId) ? e.pointerId : "???", i ? console.log(t + " (" + i.uid + ")  " + e.type + "  " + r + "  " + s) : console.log(t + "  " + e.type + "  " + r + "  " + s);
            }
          }, e.prototype.logTouch = function (t, e, i) {
            console.log(t + "  " + e + "  touch  " + i.identifier);
          }, Object.defineProperty(e, "passiveSupported", {
            get: function get() {
              var t = this;
              if (null == this._passiveSupported) try {
                var e = Object.defineProperty({}, "passive", {
                  get: function get() {
                    t._passiveSupported = !0;
                  }
                });
                window.addEventListener("test", e, e), window.removeEventListener("test", e, e);
              } catch (t) {
                this._passiveSupported = !1;
              }
              return this._passiveSupported;
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(Js),
            zo = null,
            Uo = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.adapter = new Ks(e), e._elements = {}, e._IOs = {}, e._content = "", e._title = "", e._classPrefix = "ampopup", e._defaultStyles = !0, e._showCurtain = !1, e._draggable = !0, e._align = "center", e._verticalAlign = "middle", e._shift = {
              x: 0,
              y: 0
            }, e._tempShift = {
              x: 0,
              y: 0
            }, e._readerTitle = "", e._closable = !0, e._cssLoaded = !1, e._fitTo = "window", e.isTemplate = !1, e._sized = !1, e.className = "Popup", e;
          }

          return n(e, t), e.prototype.open = function () {
            this.container && (this._elements.wrapper && this.container.appendChild(this._elements.wrapper), this._elements.curtain && (this.container.appendChild(this._elements.curtain), this.showCurtain = this.showCurtain), this.positionElement(), this.dispatchImmediately("opened"));
          }, e.prototype.close = function () {
            this._elements.wrapper && this._elements.wrapper.parentElement && this._elements.wrapper.parentElement.removeChild(this._elements.wrapper), this._elements.curtain && this._elements.curtain.parentElement && this._elements.curtain.parentElement.removeChild(this._elements.curtain), this.dispatchImmediately("closed"), this.releasePointers();
          }, e.prototype.dispose = function () {
            this.close(), t.prototype.dispose.call(this);
          }, e.prototype.positionElement = function (t) {
            var e = this;
            void 0 === t && (t = !0), this._elements.wrapper && setTimeout(function () {
              if (e._elements.wrapper) {
                if (t || !e._sized) {
                  if (e._elements.wrapper.style.opacity = "0.01", e._elements.wrapper.style.left = "0", e._elements.wrapper.style.top = "0", e._elements.wrapper.style.margin = "0 0 0 0", !e._elements.wrapper.style.width) {
                    var i = e._elements.wrapper.getBoundingClientRect();

                    e._elements.wrapper.style.width = i.width + "px", e._elements.wrapper.style.height = i.height + "px";
                  }

                  e._sized = !0;
                }

                setTimeout(function () {
                  if (e._elements.wrapper) {
                    var i;

                    switch (!t && e._sized || !e._bbox ? (i = e._elements.wrapper.getBoundingClientRect(), e._elements.wrapper.style.opacity = "") : i = e._bbox, e.align) {
                      case "left":
                        e._elements.wrapper.style.left = "0", e._elements.wrapper.style.right = "auto", e._elements.wrapper.style.marginLeft = e.toStyle(e._shift.x + e._tempShift.x);
                        break;

                      case "center":
                        e._elements.wrapper.style.left = "50%", e._elements.wrapper.style.right = "auto", e._elements.wrapper.style.marginLeft = e.toStyle(Math.round(-i.width / 2) + (e._shift.x + e._tempShift.x));
                        break;

                      case "right":
                        e._elements.wrapper.style.left = "auto", e._elements.wrapper.style.right = "0", e._elements.wrapper.style.marginLeft = e.toStyle(e._shift.x + e._tempShift.x);
                        break;

                      default:
                        e._elements.wrapper.style.left = e.toStyle(e.left) || "auto", e._elements.wrapper.style.right = e.toStyle(e.right) || "auto", e._elements.wrapper.style.marginLeft = e.toStyle(e._shift.x + e._tempShift.x);
                    }

                    switch (e.verticalAlign) {
                      case "top":
                        e._elements.wrapper.style.top = "0", e._elements.wrapper.style.bottom = "auto", e._elements.wrapper.style.marginTop = e.toStyle(e._shift.y + e._tempShift.y);
                        break;

                      case "middle":
                        e._elements.wrapper.style.top = "50%", e._elements.wrapper.style.bottom = "auto", e._elements.wrapper.style.marginTop = e.toStyle(Math.round(-i.height / 2) + (e._shift.y + e._tempShift.y));
                        break;

                      case "bottom":
                        e._elements.wrapper.style.top = "auto", e._elements.wrapper.style.bottom = "0", e._elements.wrapper.style.marginTop = e.toStyle(e._shift.y + e._tempShift.y);
                        break;

                      default:
                        e._elements.wrapper.style.top = e.toStyle(e.top) || "auto", e._elements.wrapper.style.bottom = e.toStyle(e.bottom) || "auto", e._elements.wrapper.style.marginTop = e.toStyle(e._shift.y + e._tempShift.y);
                    }
                  }
                }, 1);
              }
            }, 1);
          }, e.prototype.setupDragging = function () {
            var t = this;
            this.draggable ? (this._IOs.wrapper.events.has("drag") || this._IOs.wrapper.events.on("drag", function (e) {
              t._tempShift.x = e.shift.x, t._tempShift.y = e.shift.y, t.positionElement(!1);
            }), this._IOs.wrapper.events.has("dragstop") || this._IOs.wrapper.events.on("dragstop", function (e) {
              t._shift.x += t._tempShift.x, t._shift.y += t._tempShift.y, t._tempShift.x = 0, t._tempShift.y = 0, t.positionElement(!1);
            })) : this._IOs.wrapper && (this._IOs.wrapper.events.has("drag") && this._IOs.wrapper.events.off("drag"), this._IOs.wrapper.events.has("dragstop") && this._IOs.wrapper.events.off("dragstop"));
          }, e.prototype.toStyle = function (t) {
            return S(t) ? A(t) ? t + "px" : t.toString() : null;
          }, Object.defineProperty(e.prototype, "classPrefix", {
            get: function get() {
              return this.adapter.apply("classPrefix", this._classPrefix);
            },
            set: function set(t) {
              this._classPrefix = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "classPrefixRaw", {
            get: function get() {
              return this._classPrefix;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "content", {
            get: function get() {
              return this.adapter.apply("content", this._content);
            },
            set: function set(t) {
              this._content != t && (this._content = t, this._elements.content || this.createContentElement(), this._elements.content.innerHTML = t, this.positionElement());
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.getClassNames = function () {
            return this.adapter.apply("classNames", {
              wrapperClass: this.classPrefix + "",
              titleClass: this.classPrefix + "-title",
              contentClass: this.classPrefix + "-content",
              curtainClass: this.classPrefix + "-curtain",
              closeClass: this.classPrefix + "-close"
            });
          }, e.prototype.createContentElement = function () {
            if (!this._elements.wrapper) {
              var t = this.getClassNames(),
                  e = document.createElement("div");
              e.className = t.contentClass, e.style.opacity = "0.01";
              var i = document.createElement("a");
              i.className = t.closeClass;
              var n = document.createElement("div");
              n.innerHTML = this.title, n.className = t.titleClass, this.title || (n.style.display = "none");
              var r = document.createElement("div");
              r.innerHTML = this.content, this._IOs.wrapper = pr().getInteraction(e), this._disposers.push(this._IOs.wrapper), this._IOs.wrapper.events.on("over", this.disablePointers, this), this._IOs.wrapper.events.on("out", this.releasePointers, this), this._IOs.close = pr().getInteraction(i), this._disposers.push(this._IOs.close), i.style.visibility = "hidden", e.setAttribute("role", "dialog"), e.appendChild(i), e.appendChild(n), e.appendChild(r), this.container.appendChild(e), this._elements.wrapper = e, this._elements.content = r, this._elements.title = n, this._elements.close = i, this.defaultStyles && this.loadDefaultCSS(), this.createCurtainElement(), this.applyEvents(), this.applyReaderSettings(), this.setupDragging();
            }
          }, Object.defineProperty(e.prototype, "title", {
            get: function get() {
              return this.adapter.apply("title", this._title);
            },
            set: function set(t) {
              this._title != t && (this._title = t, this._elements.content || this.createContentElement(), this._elements.title.innerHTML = t, this.positionElement(), this.applyReaderSettings());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "readerTitle", {
            get: function get() {
              return this.adapter.apply("readerTitle", "" != this._readerTitle ? this._readerTitle : this.title);
            },
            set: function set(t) {
              this._readerTitle != t && (this._readerTitle = t, this.applyReaderSettings());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "closable", {
            get: function get() {
              return this.adapter.apply("closable", this._closable);
            },
            set: function set(t) {
              t !== this._closable && (this._closable = t, this.applyEvents());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "fitTo", {
            get: function get() {
              return this.adapter.apply("fitTo", this._fitTo);
            },
            set: function set(t) {
              t != this._fitTo && (this._fitTo = t, this.positionElement());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "defaultStyles", {
            get: function get() {
              return this.adapter.apply("defaultStyles", this._defaultStyles);
            },
            set: function set(t) {
              this._defaultStyles != t && (this._defaultStyles = t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "showCurtain", {
            get: function get() {
              return this.adapter.apply("showCurtain", this._showCurtain);
            },
            set: function set(t) {
              this._showCurtain != t && (this._showCurtain = t, this._elements.curtain && (this._elements.curtain.style.display = t ? "block" : "none"));
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.createCurtainElement = function () {
            var t = this.getClassNames(),
                e = document.createElement("div");
            e.className = t.curtainClass, this.container.appendChild(e), this._IOs.curtain = pr().getInteraction(e), this._disposers.push(this._IOs.curtain), this._IOs.curtain.events.on("over", this.disablePointers, this), this._IOs.curtain.events.on("out", this.releasePointers, this), e.style.display = this.showCurtain ? "block" : "none", this._elements.curtain = e;
          }, Object.defineProperty(e.prototype, "draggable", {
            get: function get() {
              return this.adapter.apply("draggable", this._draggable);
            },
            set: function set(t) {
              this._draggable != t && (this._draggable = t, this.setupDragging());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "align", {
            get: function get() {
              return this.adapter.apply("align", this._align);
            },
            set: function set(t) {
              this._align != t && (this._align = t, this.positionElement());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "verticalAlign", {
            get: function get() {
              return this.adapter.apply("verticalAlign", this._verticalAlign);
            },
            set: function set(t) {
              this._verticalAlign != t && (this._verticalAlign = t, this.positionElement());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "left", {
            get: function get() {
              return this.adapter.apply("left", this._left);
            },
            set: function set(t) {
              this.left != t && (this._left = t, this._align = "none", this.positionElement());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "right", {
            get: function get() {
              return this.adapter.apply("right", this._right);
            },
            set: function set(t) {
              this.right != t && (this._right = t, this._align = "none", this.positionElement());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "top", {
            get: function get() {
              return this.adapter.apply("top", this._top);
            },
            set: function set(t) {
              this.top != t && (this._top = t, this._verticalAlign = "none", this.positionElement());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "bottom", {
            get: function get() {
              return this.adapter.apply("bottom", this._bottom);
            },
            set: function set(t) {
              this.bottom != t && (this._bottom = t, this._verticalAlign = "none", this.positionElement());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "elements", {
            get: function get() {
              return this._elements;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.loadDefaultCSS = function () {
            var t;
            this._cssLoaded || (this._disposers.push(((t = this.classPrefix) || (t = "ampopup"), Lo.insertKeyIfEmpty(t, function () {
              var e = new gs([new Ao("." + t, {
                overflow: "visible",
                position: "absolute",
                top: "0",
                left: "0",
                "z-index": "2000"
              }), new Ao("." + t + "-curtain", {
                width: "100%",
                height: "100%",
                position: "absolute",
                top: "0",
                left: "0",
                "z-index": "2001",
                background: "#fff",
                opacity: "0.5"
              }), new Ao("." + t + "-title", {
                "font-weight": "bold",
                "font-size": "120%"
              }), new Ao("." + t + "-content", {
                padding: "1em 2em",
                background: "rgb(255, 255, 255);",
                "background-color": "rgba(255, 255, 255, 0.8)",
                color: "#000",
                display: "inline-block",
                position: "absolute",
                top: "0",
                left: "0",
                "max-width": "90%",
                "max-height": "90%",
                overflow: "auto",
                "z-index": "2002"
              }), new Ao("." + t + "-close", {
                display: "block",
                position: "absolute",
                top: "0.3em",
                right: "0.3em",
                "background-color": "rgb(100, 100, 100)",
                background: "rgba(100, 100, 100, 0.1) url(data:image/svg+xml;charset=utf-8;base64,PHN2ZyBoZWlnaHQ9IjUxMiIgdmVyc2lvbj0iMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQ0NS4yIDEwOS4ybC00Mi40LTQyLjRMMjU2IDIxMy42IDEwOS4yIDY2LjhsLTQyLjQgNDIuNEwyMTMuNiAyNTYgNjYuOCA0MDIuOGw0Mi40IDQyLjRMMjU2IDI5OC40bDE0Ni44IDE0Ni44IDQyLjQtNDIuNEwyOTguNCAyNTYiLz48L3N2Zz4=) no-repeat center",
                "background-size": "80%",
                width: "1.2em",
                height: "1.2em",
                cursor: "pointer"
              })]);
              return new ms(function () {
                Lo.removeKey(t), e.dispose();
              });
            }).increment())), Qt(this._elements, function (t, e) {
              e.style.display = "";
            }), this._cssLoaded = !0);
          }, e.prototype.applyEvents = function () {
            var t = this;
            if (this._IOs.close) if (this.closable) {
              this._IOs.close.element.style.visibility = "visible";
              var e = [pr().body.events.on("keyup", function (e) {
                Wo.isKey(e.event, "esc") && t.closable && t.close();
              }), this._IOs.close.events.on("hit", function (e) {
                t.close();
              })];
              e.push(this._IOs.curtain.events.on("hit", function (e) {
                t.showCurtain && t.close();
              })), this._disposers.push(new gs(e));
            } else this._IOs.close.element.style.visibility = "hidden";
          }, e.prototype.disablePointers = function () {
            this.sprite && (this._spriteInteractionsEnabled = this.sprite.interactionsEnabled, this.sprite.interactionsEnabled = !1);
          }, e.prototype.releasePointers = function () {
            S(this._spriteInteractionsEnabled) && (this.sprite.interactionsEnabled = this._spriteInteractionsEnabled, this._spriteInteractionsEnabled = void 0);
          }, e.prototype.applyReaderSettings = function () {
            this.elements.wrapper.setAttribute("aria-label", this.readerTitle);
          }, e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), this.container = e.container, this.sprite = e.sprite, this.classPrefix = e.classPrefixRaw, this.content = e.content, this.title = e.title, this.readerTitle = e.readerTitle, this.defaultStyles = e.defaultStyles, this.showCurtain = e.showCurtain, this.align = e.align, this.verticalAlign = e.verticalAlign, this.left = e.left, this.right = e.right, this.top = e.top, this.bottom = e.bottom, this.adapter.copyFrom(e.adapter);
          }, e;
        }(Js),
            Go = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.adapter = new Ks(e), e.className = "Modal", e.showCurtain = !0, e.draggable = !1, e;
          }

          return n(e, t), e;
        }(Uo),
            Ko = i(0),
            Zo = i.n(Ko),
            qo = [],
            $o = function () {
          function t(t, e) {
            var i = this;

            if (this._disposed = !1, this.autoResize = !0, this.nonExportableSprites = [], this._disposers = [], this.cssScale = 1, this.htmlElement = t, !e) {
              var n = function n() {
                i.autoResize && i.measure();
              };

              this.resizeSensor = new Zo.a(t, n), this._disposers.push(new fs(function () {
                i.resizeSensor.detach(n);
              }));
            }

            qo.push(this);
            var r = document.createElement("div"),
                s = r.style;
            s.width = "100%", s.height = "100%", s.position = "relative", t.appendChild(r), this.SVGContainer = r;
          }

          return t.prototype.measure = function () {
            var t = qi(this.htmlElement),
                e = $i(this.htmlElement),
                i = this.container;
            i && (this.width == t && this.height == e || (this.width = t, this.height = e, t > 0 && (i.maxWidth = t), e > 0 && (i.maxHeight = e), $n(this.SVGContainer)), i.maxWidth || (i.maxWidth = 0), i.maxHeight || (i.maxHeight = 0), this.cssScale = 1, this.checkTransform(this.htmlElement));
          }, Object.defineProperty(t.prototype, "container", {
            get: function get() {
              return this._container;
            },
            set: function set(t) {
              this._container = t, this.measure();
            },
            enumerable: !0,
            configurable: !0
          }), t.prototype.isDisposed = function () {
            return this._disposed;
          }, t.prototype.dispose = function () {
            this._disposed || St(qo, this), mt(this._disposers, function (t) {
              t.dispose();
            });
          }, Object.defineProperty(t.prototype, "hideOverflow", {
            set: function set(t) {
              this.SVGContainer.style.overflow = t ? "hidden" : "";
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(t.prototype, "modal", {
            get: function get() {
              return S(this._modal) || (this._modal = new Go(), this._modal.container = this.SVGContainer, this._disposers.push(this._modal)), this._modal;
            },
            enumerable: !0,
            configurable: !0
          }), t.prototype.openModal = function (t, e) {
            this.closeModal();
            var i = this.modal;
            return i.content = t, i.readerTitle = e, i.open(), i;
          }, t.prototype.closeModal = function () {
            this._modal && this.modal.close();
          }, Object.defineProperty(t.prototype, "popups", {
            get: function get() {
              if (!S(this._popups)) {
                var t = new Uo();
                t.container = this.SVGContainer, this._popups = new Hs(t), this._disposers.push(new Bs(this._popups)), this._disposers.push(this._popups.template);
              }

              return this._popups;
            },
            enumerable: !0,
            configurable: !0
          }), t.prototype.openPopup = function (t, e) {
            var i = this.popups.create();
            return i.content = t, S(e) && (i.title = e), i.open(), i;
          }, t.prototype.closeAllPopups = function () {
            this.popups.each(function (t) {
              t.close();
            });
          }, t.prototype.checkTransform = function (t) {
            if (window.getComputedStyle) {
              if (t && t.style) {
                var e = window.getComputedStyle(t, null);

                if (e) {
                  var i = e.getPropertyValue("-webkit-transform") || e.getPropertyValue("-moz-transform") || e.getPropertyValue("-ms-transform") || e.getPropertyValue("-o-transform") || e.getPropertyValue("transform");

                  if (i && "none" !== i) {
                    var n = i.split("(")[1].split(")")[0].split(","),
                        r = Number(n[0]),
                        s = Number(n[1]),
                        o = Math.sqrt(r * r + s * s);
                    isNaN(o) || (this.cssScale *= o);
                  }
                }
              }

              t.parentNode && t.parentNode instanceof HTMLElement && this.checkTransform(t.parentNode);
            }
          }, t;
        }(),
            Jo = function () {
          function t(t, e) {
            this.container = t, this.id = e;
            var i = document.createElementNS(Do, "svg");
            i.setAttribute("version", "1.1"), i.setAttributeNS(ko, "xmlns", Do), i.setAttributeNS(ko, "xmlns:xlink", To), i.setAttribute("role", "group"), this.container.appendChild(i);
            var n = document.createElementNS(Do, "desc");
            n.appendChild(document.createTextNode("JavaScript chart by amCharts")), i.appendChild(n), this.defs = document.createElementNS(Do, "defs"), i.appendChild(this.defs), i.style.width = "100%", i.style.height = "100%", i.style.overflow = "visible", this.svg = i;
          }

          return t.prototype.add = function (t) {
            return new Mo(t);
          }, t.prototype.addGroup = function (t) {
            return new jo(t);
          }, t.prototype.append = function (t) {
            t && this.svg.appendChild(t.node);
          }, t.prototype.appendDef = function (t) {
            t && this.defs.appendChild(t.node);
          }, t.prototype.foreignObject = function () {
            return new Mo("foreignObject");
          }, t.prototype.supportsForeignObject = function () {
            return document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Extensibility", "1.1");
          }, t;
        }(),
            Qo = null,
            ta = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e._purposes = {
              stroke: Je("#e5e5e5"),
              fill: Je("#f3f3f3"),
              primaryButton: Je("#6794dc"),
              primaryButtonHover: Je("#6771dc"),
              primaryButtonDown: Je("#68dc75"),
              primaryButtonActive: Je("#68dc75"),
              primaryButtonText: Je("#FFFFFF"),
              primaryButtonStroke: Je("#FFFFFF"),
              secondaryButton: Je("#d9d9d9"),
              secondaryButtonHover: Je("#d9d9d9").brighten(-.25),
              secondaryButtonDown: Je("#d9d9d9").brighten(-.35),
              secondaryButtonActive: Je("#d9d9d9").brighten(.35),
              secondaryButtonText: Je("#000000"),
              secondaryButtonStroke: Je("#FFFFFF"),
              grid: Je("#000000"),
              background: Je("#ffffff"),
              alternativeBackground: Je("#000000"),
              text: Je("#000000"),
              alternativeText: Je("#FFFFFF"),
              disabledBackground: Je("#999999"),
              positive: Je("#67dc75"),
              negative: Je("#dc6788")
            }, e.className = "InterfaceColorSet", e.applyTheme(), e;
          }

          return n(e, t), e.prototype.debug = function () {}, e.prototype.getFor = function (t) {
            return this._purposes[t];
          }, e.prototype.setFor = function (t, e) {
            this._purposes[t] = e;
          }, e;
        }($s);

        Fs.registeredClasses.InterfaceColorSet = ta;

        var ea = function (t) {
          function e() {
            var e = t.call(this) || this;
            e._elements = new Ns(), e.properties = {}, e.className = "Pattern", e.width = 10, e.height = 10, e.x = 0, e.y = 0, e.patternUnits = "userSpaceOnUse";
            var i = new ta();
            return e.backgroundFill = i.getFor("background"), e.backgroundOpacity = 0, e.fillOpacity = 1, e.fill = i.getFor("alternativeBackground"), e.stroke = i.getFor("alternativeBackground"), e.strokeOpacity = 1, e.strokeWidth = 1, e.shapeRendering = "crispEdges", e.rotation = 0, e.element = e.paper.addGroup("pattern"), e.id = "pattern-" + Fs.getUniqueId(), e.element.attr({
              id: e.id
            }), e._disposers.push(e.element), e._disposers.push(new Bs(e._elements)), e.patternUnits = e.patternUnits, e.width = e.width, e.height = e.height, e.applyTheme(), e;
          }

          return n(e, t), e.prototype.draw = function () {
            var t = this,
                e = this.element;

            if (e) {
              e.removeChildNodes();
              var i = this.paper.add("rect");
              i.attr({
                width: this.width,
                height: this.height,
                "shape-rendering": "crispEdges",
                fill: this.backgroundFill.hex,
                "fill-opacity": this.backgroundOpacity,
                stroke: this.backgroundFill.hex,
                "stroke-opacity": this.backgroundOpacity
              }), e.add(i), e.attr({
                x: this.x,
                y: this.y,
                width: this.width,
                height: this.height,
                stroke: this.stroke.hex,
                fill: this.fill.hex,
                "fill-opacity": this.fillOpacity,
                "stroke-opacity": this.strokeOpacity,
                "stroke-width": this.strokeWidth,
                "shape-rendering": this.shapeRendering,
                patternUnits: this.patternUnits
              }), pe(this._elements.iterator(), function (e) {
                e.rotation = t.rotation, t.element.add(e);
              });
            }
          }, e.prototype.animate = function (t, e, i) {
            return new Io(this, t, e, i).start();
          }, e.prototype.addElement = function (t) {
            this._elements.push(t), this._disposers.push(t);
          }, e.prototype.removeElement = function (t) {
            this._elements.removeValue(t), this.removeDispose(t);
          }, Object.defineProperty(e.prototype, "elements", {
            get: function get() {
              return this._elements;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "fillOpacity", {
            get: function get() {
              return this.properties.fillOpacity;
            },
            set: function set(t) {
              this.properties.fillOpacity = t, this.draw();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "fill", {
            get: function get() {
              return this.properties.fill;
            },
            set: function set(t) {
              this.properties.fill = t, this.draw();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "backgroundFill", {
            get: function get() {
              return this.properties.backgroundFill;
            },
            set: function set(t) {
              this.properties.backgroundFill = t, this.draw();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "backgroundOpacity", {
            get: function get() {
              return this.properties.backgroundOpacity;
            },
            set: function set(t) {
              this.properties.backgroundOpacity = t, this.draw();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "stroke", {
            get: function get() {
              return this.properties.stroke;
            },
            set: function set(t) {
              this.properties.stroke = t, this.draw();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "strokeOpacity", {
            get: function get() {
              return this.properties.strokeOpacity;
            },
            set: function set(t) {
              this.properties.strokeOpacity = t, this.draw();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "strokeWidth", {
            get: function get() {
              return this.properties.strokeWidth;
            },
            set: function set(t) {
              this.properties.strokeWidth = t, this.draw();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "shapeRendering", {
            get: function get() {
              return this.properties.shapeRendering;
            },
            set: function set(t) {
              this.properties.shapeRendering = t, this.draw();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "rotation", {
            get: function get() {
              return this.properties.rotation;
            },
            set: function set(t) {
              this.properties.rotation = t, this.draw();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "patternUnits", {
            get: function get() {
              return this.properties.patternUnits;
            },
            set: function set(t) {
              this.properties.patternUnits = t, this.draw();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "width", {
            get: function get() {
              return this.properties.width;
            },
            set: function set(t) {
              this.properties.width = t, this.draw();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "height", {
            get: function get() {
              return this.properties.height;
            },
            set: function set(t) {
              this.properties.height = t, this.draw();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "x", {
            get: function get() {
              return this.properties.x;
            },
            set: function set(t) {
              this.properties.x = t, this.draw();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "y", {
            get: function get() {
              return this.properties.y;
            },
            set: function set(t) {
              this.properties.y = t, this.draw();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "paper", {
            get: function get() {
              return this._paper ? this._paper : cr();
            },
            set: function set(t) {
              this._paper != t && (this._paper = t, this.draw(), t.appendDef(this.element));
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.copyFrom = function (e) {
            var i = this;
            t.prototype.copyFrom.call(this, e), Qt(e.properties, function (t, e) {
              i[t] = e;
            });
          }, Object.defineProperty(e.prototype, "animations", {
            get: function get() {
              return this._animations || (this._animations = [], this._disposers.push(new So(this._animations))), this._animations;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.processConfig = function (e) {
            if (e && S(e.elements) && F(e.elements)) for (var i = 0, n = e.elements.length; i < n; i++) {
              var r = e.elements[i];

              if (S(r.type)) {
                var s = this.createEntryInstance(r);
                s instanceof $s && (s.config = r), this.addElement(S(r.typeProperty) ? s[r.typeProperty] : s.element);
              }
            }
            t.prototype.processConfig.call(this, e);
          }, e;
        }($s);

        Fs.registeredClasses.Pattern = ea;

        var ia = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e._stops = new Ns(), e._rotation = 0, e.className = "LinearGradient", e._stops.events.on("setIndex", e.validate, e), e._stops.events.on("inserted", e.validate, e), e.element = e.paper.addGroup("linearGradient"), e.id = "gradient-" + Fs.getUniqueId(), e.element.attr({
              id: e.id
            }), e._disposers.push(e.element), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.validate = function () {
            var t = this,
                e = (this._rotation + 90) * cs,
                i = Math.round(50 + 50 * Math.sin(e + Math.PI)) + "%",
                n = Math.round(50 + 50 * Math.cos(e)) + "%",
                r = Math.round(50 + 50 * Math.sin(e)) + "%",
                s = Math.round(50 + 50 * Math.cos(e + Math.PI)) + "%",
                o = this.element;
            o.removeChildNodes(), o.attr({
              x1: i,
              x2: r,
              y1: n,
              y2: s
            }), pe(me(this._stops.iterator()), function (e) {
              var i = e[0],
                  n = e[1],
                  r = n.offset;
              A(r) || (r = i / (t._stops.length - 1));
              var s = t.paper.add("stop");
              S(n.color) && s.attr({
                "stop-color": n.color.toString()
              }), A(n.opacity) && s.attr({
                "stop-opacity": n.opacity
              }), A(r) && s.attr({
                offset: r
              }), o.add(s);
            });
          }, e.prototype.clear = function () {
            this._stops.clear();
          }, e.prototype.addColor = function (t, e, i) {
            this._stops.push({
              color: t,
              opacity: e,
              offset: i
            });
          }, Object.defineProperty(e.prototype, "stops", {
            get: function get() {
              return this._stops;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "paper", {
            get: function get() {
              return this._paper ? this._paper : cr();
            },
            set: function set(t) {
              this._paper != t && (this._paper = t, this.validate(), t.appendDef(this.element));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "rotation", {
            get: function get() {
              return this._rotation;
            },
            set: function set(t) {
              this._rotation = t, this.validate();
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), this.stops.copyFrom(e.stops), this._rotation = e.rotation;
          }, e;
        }($s);

        Fs.registeredClasses.LinearGradient = ia;

        var na = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e._stops = new Ns(), e.element = e.paper.addGroup("radialGradient"), e.id = "gradient-" + Fs.getUniqueId(), e.element.attr({
              id: e.id
            }), e._disposers.push(e.element), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.draw = function () {
            var t,
                e = this,
                i = this.element;
            A(this.cx) && ((t = this.cx) instanceof hs && (t = t.percent + "%"), i.attr({
              cx: t
            })), A(this.cy) && ((t = this.cy) instanceof hs && (t = t.percent + "%"), i.attr({
              cy: t
            })), this.fx && ((t = this.fx) instanceof hs && (t = t.percent + "%"), i.attr({
              fx: t
            })), this.fy && ((t = this.fy) instanceof hs && (t = t.percent + "%"), i.attr({
              fy: t
            })), i.removeChildNodes(), pe(me(this._stops.iterator()), function (t) {
              var n = t[0],
                  r = t[1],
                  s = r.offset;
              A(s) || (s = n / (e._stops.length - 1));
              var o = e.paper.add("stop");
              S(r.color) && o.attr({
                "stop-color": r.color.toString()
              }), A(r.opacity) && o.attr({
                "stop-opacity": r.opacity
              }), A(s) && o.attr({
                offset: s
              }), i.add(o);
            });
          }, e.prototype.addColor = function (t, e, i) {
            this._stops.push({
              color: t,
              opacity: e,
              offset: i
            }), this.draw();
          }, Object.defineProperty(e.prototype, "paper", {
            get: function get() {
              return this._paper ? this._paper : cr();
            },
            set: function set(t) {
              this._paper != t && (this._paper = t, this.draw(), t.appendDef(this.element));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "cx", {
            get: function get() {
              return this._cx;
            },
            set: function set(t) {
              this._cx = t, this.draw();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "cy", {
            get: function get() {
              return this._cy;
            },
            set: function set(t) {
              this._cy = t, this.draw();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "fx", {
            get: function get() {
              return this._fx;
            },
            set: function set(t) {
              this._fx = t, this.draw();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "fy", {
            get: function get() {
              return this._fy;
            },
            set: function set(t) {
              this._fy = t, this.draw();
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), this.stops.copyFrom(e.stops), this.cx = e.cx, this.cy = e.cy, this.fx = e.fx, this.fy = e.fy;
          }, Object.defineProperty(e.prototype, "stops", {
            get: function get() {
              return this._stops;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.clear = function () {
            this._stops.clear();
          }, e;
        }($s);

        Fs.registeredClasses.RadialGradient = na;

        var ra,
            sa = function () {
          function t() {}

          return t.grab = [{
            property: "cursor",
            value: "move"
          }, {
            property: "cursor",
            value: "grab"
          }, {
            property: "cursor",
            value: "-webkit-grab"
          }], t.grabbing = [{
            property: "cursor",
            value: "move"
          }, {
            property: "cursor",
            value: "grabbing"
          }, {
            property: "cursor",
            value: "-webkit-grabbing"
          }], t.pointer = [{
            property: "cursor",
            value: "pointer"
          }], t["default"] = [{
            property: "cursor",
            value: "default"
          }], t.horizontalResize = [{
            property: "cursor",
            value: "ew-resize"
          }], t.verticalResize = [{
            property: "cursor",
            value: "ns-resize"
          }], t;
        }(),
            oa = {
          _decimalSeparator: ".",
          _thousandSeparator: ",",
          _big_number_suffix_3: "k",
          _big_number_suffix_6: "M",
          _big_number_suffix_9: "G",
          _big_number_suffix_12: "T",
          _big_number_suffix_15: "P",
          _big_number_suffix_18: "E",
          _big_number_suffix_21: "Z",
          _big_number_suffix_24: "Y",
          _small_number_suffix_3: "m",
          _small_number_suffix_6: "μ",
          _small_number_suffix_9: "n",
          _small_number_suffix_12: "p",
          _small_number_suffix_15: "f",
          _small_number_suffix_18: "a",
          _small_number_suffix_21: "z",
          _small_number_suffix_24: "y",
          _byte_suffix_B: "B",
          _byte_suffix_KB: "KB",
          _byte_suffix_MB: "MB",
          _byte_suffix_GB: "GB",
          _byte_suffix_TB: "TB",
          _byte_suffix_PB: "PB",
          _date: "yyyy-MM-dd",
          _date_millisecond: "mm:ss SSS",
          _date_second: "HH:mm:ss",
          _date_minute: "HH:mm",
          _date_hour: "HH:mm",
          _date_day: "MMM dd",
          _date_week: "ww",
          _date_month: "MMM",
          _date_year: "yyyy",
          _duration_millisecond: "SSS",
          _duration_millisecond_second: "ss.SSS",
          _duration_millisecond_minute: "mm:ss SSS",
          _duration_millisecond_hour: "hh:mm:ss SSS",
          _duration_millisecond_day: "d'd' mm:ss SSS",
          _duration_millisecond_week: "d'd' mm:ss SSS",
          _duration_millisecond_month: "M'm' dd'd' mm:ss SSS",
          _duration_millisecond_year: "y'y' MM'm' dd'd' mm:ss SSS",
          _duration_second: "ss",
          _duration_second_minute: "mm:ss",
          _duration_second_hour: "hh:mm:ss",
          _duration_second_day: "d'd' hh:mm:ss",
          _duration_second_week: "d'd' hh:mm:ss",
          _duration_second_month: "M'm' dd'd' hh:mm:ss",
          _duration_second_year: "y'y' MM'm' dd'd' hh:mm:ss",
          _duration_minute: "mm",
          _duration_minute_hour: "hh:mm",
          _duration_minute_day: "d'd' hh:mm",
          _duration_minute_week: "d'd' hh:mm",
          _duration_minute_month: "M'm' dd'd' hh:mm",
          _duration_minute_year: "y'y' MM'm' dd'd' hh:mm",
          _duration_hour: "hh'h'",
          _duration_hour_day: "d'd' hh'h'",
          _duration_hour_week: "d'd' hh'h'",
          _duration_hour_month: "M'm' dd'd' hh'h'",
          _duration_hour_year: "y'y' MM'm' dd'd' hh'h'",
          _duration_day: "d'd'",
          _duration_day_week: "d'd'",
          _duration_day_month: "M'm' dd'd'",
          _duration_day_year: "y'y' MM'm' dd'd'",
          _duration_week: "w'w'",
          _duration_week_month: "w'w'",
          _duration_week_year: "w'w'",
          _duration_month: "M'm'",
          _duration_month_year: "y'y' MM'm'",
          _duration_year: "y'y'",
          _era_ad: "AD",
          _era_bc: "BC",
          A: "",
          P: "",
          AM: "",
          PM: "",
          "A.M.": "",
          "P.M.": "",
          January: "",
          February: "",
          March: "",
          April: "",
          May: "",
          June: "",
          July: "",
          August: "",
          September: "",
          October: "",
          November: "",
          December: "",
          Jan: "",
          Feb: "",
          Mar: "",
          Apr: "",
          "May(short)": "May",
          Jun: "",
          Jul: "",
          Aug: "",
          Sep: "",
          Oct: "",
          Nov: "",
          Dec: "",
          Sunday: "",
          Monday: "",
          Tuesday: "",
          Wednesday: "",
          Thursday: "",
          Friday: "",
          Saturday: "",
          Sun: "",
          Mon: "",
          Tue: "",
          Wed: "",
          Thu: "",
          Fri: "",
          Sat: "",
          _dateOrd: function _dateOrd(t) {
            var e = "th";
            if (t < 11 || t > 13) switch (t % 10) {
              case 1:
                e = "st";
                break;

              case 2:
                e = "nd";
                break;

              case 3:
                e = "rd";
            }
            return e;
          },
          "Zoom Out": "",
          Play: "",
          Stop: "",
          Legend: "",
          "Click, tap or press ENTER to toggle": "",
          Loading: "",
          Home: "",
          Chart: "",
          "Serial chart": "",
          "X/Y chart": "",
          "Pie chart": "",
          "Gauge chart": "",
          "Radar chart": "",
          "Sankey diagram": "",
          "Flow diagram": "",
          "Chord diagram": "",
          "TreeMap chart": "",
          "Force directed tree": "",
          "Sliced chart": "",
          Series: "",
          "Candlestick Series": "",
          "OHLC Series": "",
          "Column Series": "",
          "Line Series": "",
          "Pie Slice Series": "",
          "Funnel Series": "",
          "Pyramid Series": "",
          "X/Y Series": "",
          Map: "",
          "Press ENTER to zoom in": "",
          "Press ENTER to zoom out": "",
          "Use arrow keys to zoom in and out": "",
          "Use plus and minus keys on your keyboard to zoom in and out": "",
          Export: "",
          Image: "",
          Data: "",
          Print: "",
          "Click, tap or press ENTER to open": "",
          "Click, tap or press ENTER to print.": "",
          "Click, tap or press ENTER to export as %1.": "",
          'To save the image, right-click this link and choose "Save picture as..."': "",
          'To save the image, right-click thumbnail on the left and choose "Save picture as..."': "",
          "(Press ESC to close this message)": "",
          "Image Export Complete": "",
          "Export operation took longer than expected. Something might have gone wrong.": "",
          "Saved from": "",
          PNG: "",
          JPG: "",
          GIF: "",
          SVG: "",
          PDF: "",
          JSON: "",
          CSV: "",
          XLSX: "",
          "Use TAB to select grip buttons or left and right arrows to change selection": "",
          "Use left and right arrows to move selection": "",
          "Use left and right arrows to move left selection": "",
          "Use left and right arrows to move right selection": "",
          "Use TAB select grip buttons or up and down arrows to change selection": "",
          "Use up and down arrows to move selection": "",
          "Use up and down arrows to move lower selection": "",
          "Use up and down arrows to move upper selection": "",
          "From %1 to %2": "",
          "From %1": "",
          "To %1": "",
          "No parser available for file: %1": "",
          "Error parsing file: %1": "",
          "Unable to load file: %1": "",
          "Invalid date": ""
        },
            aa = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.adapter = new Ks(e), e._locale = oa, e._defaultLocale = oa, e.className = "Language", S(Ms.defaultLocale) && (e.locale = Ms.defaultLocale), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.getLocale = function (t) {
            return null == t && (t = this._locale), this.adapter.apply("locale", {
              locale: t
            }).locale;
          }, e.prototype.translate = function (t, e) {
            for (var i = [], n = 2; n < arguments.length; n++) i[n - 2] = arguments[n];

            e = this.getLocale(e);
            var r = t,
                s = this.getTranslations(e),
                o = s[t];
            if (null === o) o = "";else if (S(o)) o && (r = o);else if (e !== this._defaultLocale) return this.translate.apply(this, l([t, this._defaultLocale], i));
            if (i.length) for (var a = i.length, h = 0; h < a; ++h) r = r.split("%" + (h + 1)).join(i[h]);
            return this.adapter.apply("translate", {
              translation: r,
              locale: e
            }).translation;
          }, e.prototype.translateAny = function (t, e) {
            for (var i = [], n = 2; n < arguments.length; n++) i[n - 2] = arguments[n];

            return this.translate(t, e);
          }, e.prototype.translateEmpty = function (t, e) {
            for (var i = [], n = 2; n < arguments.length; n++) i[n - 2] = arguments[n];

            var r = this.translate.apply(this, l([t, e], i));
            return r == t ? "" : r;
          }, e.prototype.translateFunc = function (t, e) {
            e = this.getLocale(e);
            var i = this.getTranslations(e)[t];
            return null != i ? i : e !== this._defaultLocale ? this.translateFunc(t, this._defaultLocale) : function () {
              return "";
            };
          }, e.prototype.translateAll = function (t, e) {
            var i = this;
            return this.isDefault() ? t : yt(t, function (t) {
              return i.translate(t, e);
            });
          }, e.prototype.isDefault = function () {
            return this._defaultLocale === this._locale;
          }, Object.defineProperty(e.prototype, "locale", {
            get: function get() {
              return this._locale;
            },
            set: function set(t) {
              if (this._locale != t && (this._locale = t, this.events.isEnabled("localechanged"))) {
                var e = {
                  type: "localechanged",
                  locale: t,
                  target: this
                };
                this.events.dispatchImmediately("localechanged", e);
              }
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.getTranslations = function (t) {
            return this.adapter.apply("translations", {
              translations: t,
              locale: t
            }).translations;
          }, e;
        }(Js),
            la = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.adapter = new Ks(e), e.className = "TextFormatter", e.applyTheme(), e;
          }

          return n(e, t), e.prototype.debug = function () {}, e.prototype.format = function (t, e) {
            S(e) || (e = "svg");
            var i = "",
                n = (t = this.escape(t)).match(/\[([^\]]*?)\]/gm);
            if (!n) return this.wrap(t, "", e);

            for (var r = t.split(/\[[^\[\]]*\]/), s = 0, o = r.length; s < o; s++) {
              var a = r[s];

              if ("" !== a) {
                a = this.adapter.apply("chunk", a);
                var l = "";
                s > 0 && (l = n[s - 1].replace("[", "").replace("]", "")), i += this.wrap(a, l, e);
              }
            }

            return i = this.unescape(i), this.cleanUp(i);
          }, e.prototype.escape = function (t) {
            return t.replace(/\[\[/g, Fs.getPlaceholder("1")).replace(/([^\/]{1})\]\]/g, "$1" + Fs.getPlaceholder("2")).replace(/\{\{/g, Fs.getPlaceholder("3")).replace(/\}\}/g, Fs.getPlaceholder("4")).replace(/\'\'/g, Fs.getPlaceholder("5"));
          }, e.prototype.unescape = function (t) {
            return t.replace(new RegExp(Fs.getPlaceholder("1"), "g"), "[[").replace(new RegExp(Fs.getPlaceholder("2"), "g"), "]]").replace(new RegExp(Fs.getPlaceholder("3"), "g"), "{{").replace(new RegExp(Fs.getPlaceholder("4"), "g"), "}}").replace(new RegExp(Fs.getPlaceholder("5"), "g"), "'");
          }, e.prototype.cleanUp = function (t) {
            return t.replace(/\[\[/g, "[").replace(/\]\]/g, "]").replace(/\{\{/g, "{").replace(/\}\}/g, "}").replace(/\'\'/g, "'");
          }, e.prototype.wrap = function (t, e, i) {
            switch ("" !== e && "/" !== e || (e = ""), i) {
              case "html":
                return this.wrapHtml(t, this.translateStyleShortcuts(e));

              default:
                return this.wrapSvg(t, this.translateStyleShortcuts(e));
            }
          }, e.prototype.wrapSvg = function (t, e) {
            return "" === e ? "<tspan>" + t + "</tspan>" : "<tspan style='" + e + "'>" + t + "</tspan>";
          }, e.prototype.getSvgElement = function (t, e) {
            var i = new Mo("tspan");
            return i.textContent = t, e && i.node.setAttribute("style", e), i;
          }, e.prototype.wrapHtml = function (t, e) {
            return "" === e ? "<span>" + t + "</span>" : "<span style='" + this.styleSvgToHtml(e) + "'>" + t + "</span>";
          }, e.prototype.getHtmlElement = function (t, e) {
            var i = document.createElement("span");
            return i.innerHTML = t, e && i.setAttribute("style", e), i;
          }, e.prototype.styleSvgToHtml = function (t) {
            return t = t.replace(/fill:/, "color:");
          }, e.prototype.translateStyleShortcuts = function (t) {
            if ("" == t || "[ ]" == t) return "";
            var e = Fs.getCache("translateStyleShortcuts_" + t);
            if (e) return e;
            var i = t.match(/([\w\-]*:[\s]?[^;\s\]]*)|(\#[\w]{1,6})|([\w]+)|(\/)/gi);
            if (!i) return t;

            for (var n = 0; n < i.length; n++) i[n].match(/^bold$/i) ? i[n] = "font-weight:" + i[n] : "/" == i[n] ? i[n] = "" : i[n].match(/:/) || (i[n] = "fill:" + i[n]);

            var r = i.join(";");
            return Fs.setCache("translateStyleShortcuts_" + t, r), r;
          }, e.prototype.chunk = function (t, e, i) {
            void 0 === e && (e = !1), void 0 === i && (i = !1);
            var n = [];
            t = this.escape(t);

            for (var r = e ? t.split("'") : [t], s = 0; s < r.length; s++) {
              var o = r[s];
              if ("" !== o) if (s % 2 == 0) for (var a = (o = (o = o.replace(/\]\[/g, "]" + ro + "[")).replace(/\[\]/g, "[ ]")).split(/[\[\]]+/), l = 0; l < a.length; l++) (h = this.cleanUp(this.unescape(a[l]))) !== ro && "" !== h && (l % 2 == 0 ? n.push({
                type: "value",
                text: this.adapter.apply("chunk", h)
              }) : n.push({
                type: i ? "value" : "format",
                text: "[" + h + "]"
              }));else for (a = o.split(/[\[\]]+/), l = 0; l < a.length; l++) {
                var h;
                "" !== (h = this.cleanUp(this.unescape(a[l]))) && (l % 2 == 0 ? n.push({
                  type: "text",
                  text: h
                }) : this.isImage(h) ? n.push({
                  type: "image",
                  text: "[" + h + "]"
                }) : n.push({
                  type: "format",
                  text: "[" + h + "]"
                }));
              }
            }

            return n;
          }, e.prototype.isImage = function (t) {
            return !!t.match(/img[ ]?:/);
          }, e;
        }($s);

        Fs.registeredClasses.TextFormatter = la;

        var ha = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e._negativeBase = 0, e._numberFormat = "#,###.#####", e._outputFormat = "svg", e._smallNumberThreshold = 1, e.className = "NumberFormatter", e.applyTheme(), e;
          }

          return n(e, t), e.prototype.dispose = function () {
            t.prototype.dispose.call(this), this.language && this.language.dispose();
          }, Object.defineProperty(e.prototype, "language", {
            get: function get() {
              return this._language || (this.sprite ? this._language = this.sprite.language : this._language = new aa()), this._language;
            },
            set: function set(t) {
              this._language = t;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.format = function (t, e) {
            void 0 !== e && "number" !== e.toLowerCase() || (e = this._numberFormat), e = Si(e);
            var i,
                n = this.parseFormat(e, this.language),
                r = Number(t);
            return (i = r > this._negativeBase ? n.positive : r < this._negativeBase ? n.negative : n.zero).template.split(ro).join(this.applyFormat(r, i));
          }, e.prototype.parseFormat = function (t, e) {
            var i = this,
                n = this.getCache(t);
            if (S(n)) return n;
            var r = {
              positive: {
                thousands: {
                  active: -1,
                  passive: -1,
                  interval: -1,
                  separator: e.translateEmpty("_thousandSeparator")
                },
                decimals: {
                  active: -1,
                  passive: -1,
                  separator: e.translateEmpty("_decimalSeparator")
                },
                template: "",
                source: "",
                parsed: !1
              },
              negative: {
                thousands: {
                  active: -1,
                  passive: -1,
                  interval: -1,
                  separator: e.translateEmpty("_thousandSeparator")
                },
                decimals: {
                  active: -1,
                  passive: -1,
                  separator: e.translateEmpty("_decimalSeparator")
                },
                template: "",
                source: "",
                parsed: !1
              },
              zero: {
                thousands: {
                  active: -1,
                  passive: -1,
                  interval: -1,
                  separator: e.translateEmpty("_thousandSeparator")
                },
                decimals: {
                  active: -1,
                  passive: -1,
                  separator: e.translateEmpty("_decimalSeparator")
                },
                template: "",
                source: "",
                parsed: !1
              }
            },
                s = (t = t.replace("||", so)).split("|");
            return r.positive.source = s[0], void 0 === s[2] ? r.zero = r.positive : r.zero.source = s[2], void 0 === s[1] ? r.negative = r.positive : r.negative.source = s[1], Qt(r, function (t, e) {
              if (!e.parsed) if (void 0 === i.getCache(e.source)) {
                var n = e.source;
                "number" === n.toLowerCase() && (n = i._numberFormat);

                for (var s = dr().chunk(n, !0), o = 0; o < s.length; o++) {
                  var a = s[o];

                  if (a.text = a.text.replace(so, "|"), "value" === a.type) {
                    var l = a.text.match(/[#0.,]+[ ]?[abesABES%!]?[abesABES‰!]?/);
                    if (l) if (null === l || "" === l[0]) e.template += a.text;else {
                      var h = l[0].match(/[abesABES%‰!]{2}|[abesABES%‰]{1}$/);
                      h && (e.mod = h[0].toLowerCase(), e.modSpacing = !!l[0].match(/[ ]{1}[abesABES%‰!]{1}$/));
                      var u = l[0].split(".");
                      if ("" === u[0]) ;else {
                        e.thousands.active = (u[0].match(/0/g) || []).length, e.thousands.passive = (u[0].match(/\#/g) || []).length + e.thousands.active;
                        var p = u[0].split(",");
                        1 === p.length || (e.thousands.interval = I(p.pop()).length, 0 === e.thousands.interval && (e.thousands.interval = -1));
                      }
                      void 0 === u[1] || (e.decimals.active = (u[1].match(/0/g) || []).length, e.decimals.passive = (u[1].match(/\#/g) || []).length + e.decimals.active), e.template += a.text.split(l[0]).join(ro);
                    }
                  } else e.template += a.text;
                }

                i.setCache(e.source, e), e.parsed = !0;
              } else r[t] = i.getCache(e.source);
            }), this.setCache(t, r), r;
          }, e.prototype.applyFormat = function (t, e) {
            var i = t < 0;
            t = Math.abs(t);
            var n = "",
                r = "",
                s = e.mod ? e.mod.split("") : [];

            if (-1 !== s.indexOf("b")) {
              var o = this.applyPrefix(t, this.bytePrefixes, -1 !== s.indexOf("!"));
              t = o[0], n = o[1], r = o[2], e.modSpacing && (r = " " + r);
            } else if (-1 !== s.indexOf("a")) {
              var a = this.applyPrefix(t, t < this.smallNumberThreshold ? this.smallNumberPrefixes : this.bigNumberPrefixes, -1 !== s.indexOf("!"));
              t = a[0], n = a[1], r = a[2], e.modSpacing && (r = " " + r);
            } else if (-1 !== s.indexOf("%")) {
              var l = t.toString().length;
              t *= 100, t = parseFloat(t.toPrecision(l + 2)), r = "%";
            } else -1 !== s.indexOf("‰") && (l = t.toString().length, t *= 1e3, t = parseFloat(t.toPrecision(l + 3)), r = "‰");

            if (-1 !== s.indexOf("e")) {
              var h = void 0;
              h = e.decimals.passive >= 0 ? t.toExponential(e.decimals.passive).split("e") : t.toExponential().split("e"), t = Number(h[0]), r = "e" + h[1], e.modSpacing && (r = " " + r);
            } else if (0 === e.decimals.passive) t = Math.round(t);else if (e.decimals.passive > 0) {
              var u = Math.pow(10, e.decimals.passive);
              t = Math.round(t * u) / u;
            }

            var p = "",
                c = ki(t).split("."),
                d = c[0];

            if (d.length < e.thousands.active && (d = Array(e.thousands.active - d.length + 1).join("0") + d), e.thousands.interval > 0) {
              for (var f = [], g = d.split("").reverse().join(""), y = 0, m = d.length; y <= m; y += e.thousands.interval) {
                var v = g.substr(y, e.thousands.interval).split("").reverse().join("");
                "" !== v && f.unshift(v);
              }

              d = f.join(e.thousands.separator);
            }

            p += d, 1 === c.length && c.push("");
            var b = c[1];
            return b.length < e.decimals.active && (b += Array(e.decimals.active - b.length + 1).join("0")), "" !== b && (p += e.decimals.separator + b), "" === p && (p = "0"), 0 !== t && i && -1 === s.indexOf("s") && (p = "-" + p), n && (p = n + p), r && (p += r), p;
          }, e.prototype.applyPrefix = function (t, e, i) {
            void 0 === i && (i = !1);

            for (var n = t, r = "", s = "", o = !1, a = 1, l = 0, h = e.length; l < h; l++) e[l].number <= t && (0 === e[l].number ? n = 0 : (n = t / e[l].number, a = e[l].number), r = e[l].prefix, s = e[l].suffix, o = !0);

            return !o && i && e.length && 0 != t && (n = t / e[0].number, r = e[0].prefix, s = e[0].suffix, o = !0), o && (n = parseFloat(n.toPrecision(a.toString().length + Math.floor(n).toString().replace(/[^0-9]*/g, "").length))), [n, r, s];
          }, e.prototype.invalidateSprite = function () {
            this.sprite && this.sprite.invalidate();
          }, Object.defineProperty(e.prototype, "numberFormat", {
            get: function get() {
              return this._numberFormat;
            },
            set: function set(t) {
              this._numberFormat = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "negativeBase", {
            get: function get() {
              return this._negativeBase;
            },
            set: function set(t) {
              this._negativeBase = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "bigNumberPrefixes", {
            get: function get() {
              return S(this._bigNumberPrefixes) || (this._bigNumberPrefixes = [{
                number: 1e3,
                suffix: this.language.translate("_big_number_suffix_3")
              }, {
                number: 1e6,
                suffix: this.language.translate("_big_number_suffix_6")
              }, {
                number: 1e9,
                suffix: this.language.translate("_big_number_suffix_9")
              }, {
                number: 1e12,
                suffix: this.language.translate("_big_number_suffix_12")
              }, {
                number: 1e15,
                suffix: this.language.translate("_big_number_suffix_15")
              }, {
                number: 1e18,
                suffix: this.language.translate("_big_number_suffix_18")
              }, {
                number: 1e21,
                suffix: this.language.translate("_big_number_suffix_21")
              }, {
                number: 1e24,
                suffix: this.language.translate("_big_number_suffix_24")
              }]), this._bigNumberPrefixes;
            },
            set: function set(t) {
              this._bigNumberPrefixes = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "smallNumberPrefixes", {
            get: function get() {
              return S(this._smallNumberPrefixes) || (this._smallNumberPrefixes = [{
                number: 1e-24,
                suffix: this.language.translate("_small_number_suffix_24")
              }, {
                number: 1e-21,
                suffix: this.language.translate("_small_number_suffix_21")
              }, {
                number: 1e-18,
                suffix: this.language.translate("_small_number_suffix_18")
              }, {
                number: 1e-15,
                suffix: this.language.translate("_small_number_suffix_15")
              }, {
                number: 1e-12,
                suffix: this.language.translate("_small_number_suffix_12")
              }, {
                number: 1e-9,
                suffix: this.language.translate("_small_number_suffix_9")
              }, {
                number: 1e-6,
                suffix: this.language.translate("_small_number_suffix_6")
              }, {
                number: .001,
                suffix: this.language.translate("_small_number_suffix_3")
              }]), this._smallNumberPrefixes;
            },
            set: function set(t) {
              this._smallNumberPrefixes = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "smallNumberThreshold", {
            get: function get() {
              return this._smallNumberThreshold;
            },
            set: function set(t) {
              this._smallNumberThreshold = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "bytePrefixes", {
            get: function get() {
              return S(this._bytePrefixes) || (this._bytePrefixes = [{
                number: 1,
                suffix: this.language.translate("_byte_suffix_B")
              }, {
                number: 1024,
                suffix: this.language.translate("_byte_suffix_KB")
              }, {
                number: 1048576,
                suffix: this.language.translate("_byte_suffix_MB")
              }, {
                number: 1073741824,
                suffix: this.language.translate("_byte_suffix_GB")
              }, {
                number: 1099511627776,
                suffix: this.language.translate("_byte_suffix_TB")
              }, {
                number: 0x4000000000000,
                suffix: this.language.translate("_byte_suffix_PB")
              }]), this._bytePrefixes;
            },
            set: function set(t) {
              this._bytePrefixes = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "outputFormat", {
            get: function get() {
              return this._outputFormat;
            },
            set: function set(t) {
              this._outputFormat = t.toLowerCase(), this.invalidateSprite();
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.escape = function (t) {
            return t.replace("||", so);
          }, e.prototype.unescape = function (t) {
            return t.replace(so, "|");
          }, e;
        }($s);

        Fs.registeredClasses.NumberFormatter = ha;

        var ua = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e._dateFormat = "yyyy-MM-dd", e._inputDateFormat = "yyyy-MM-dd", e._utc = !1, e._firstDayOfWeek = 1, e._months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], e._monthsShort = ["Jan", "Feb", "Mar", "Apr", "May(short)", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], e._weekdays = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], e._weekdaysShort = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], e._outputFormat = "svg", e.capitalize = !0, e.className = "DateFormatter", e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "language", {
            get: function get() {
              return this._language;
            },
            set: function set(t) {
              this._language = t, this.dateFormat = this._language.translate("_date");
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.format = function (t, e) {
            var i, n;
            if (this.language || (this.sprite ? this.language = this.sprite.language : this.language = new aa()), void 0 !== e && "" !== e || (e = this._dateFormat), n = T(t) ? this.parse(t) : Ti(t), e instanceof Object) return this.intlLocales ? new Intl.DateTimeFormat(this.intlLocales, e).format(n) : new Intl.DateTimeFormat(null, e).format(n);
            e = Si(e);
            var r = this.parseFormat(e);
            return S(this.timezoneOffset) && n.setMinutes(n.getMinutes() + n.getTimezoneOffset() - this.timezoneOffset), A(n.getTime()) ? (i = this.applyFormat(n, r, this.language), this.capitalize && (i = i.replace(/^.{1}/, i.substr(0, 1).toUpperCase())), i) : this.language.translate("Invalid date");
          }, e.prototype.parseFormat = function (t) {
            var e = this.getCache(t);
            if (S(e)) return e;

            for (var i = {
              template: "",
              parts: []
            }, n = dr().chunk(t, !0), r = 0; r < n.length; r++) {
              var s = n[r];

              if ("value" === s.type) {
                s.text.match(/^date$/i) && T(this._dateFormat) && (s.text = this._dateFormat);
                var o = s.text.match(/G|yyyy|yyy|yy|y|YYYY|YYY|YY|Y|u|MMMMM|MMMM|MMM|MM|M|ww|w|W|dd|d|DDD|DD|D|F|g|EEEEE|EEEE|EEE|EE|E|eeeee|eeee|eee|ee|e|aaa|aa|a|hh|h|HH|H|KK|K|kk|k|mm|m|ss|s|SSS|SS|S|A|zzzz|zzz|zz|z|ZZ|Z|t|x|nnn|nn|n|i|I/g);
                if (o) for (var a = 0; a < o.length; a++) i.parts.push(o[a]), s.text = s.text.replace(o[a], ro);
              }

              i.template += s.text;
            }

            return this.setCache(t, i), i;
          }, e.prototype.applyFormat = function (t, e, i) {
            var n,
                r,
                s,
                o,
                a,
                l,
                h,
                u,
                p = e.template,
                c = t.getTimezoneOffset(),
                d = t.getTime();
            this.utc ? (n = t.getUTCFullYear(), r = t.getUTCMonth(), s = t.getUTCDay(), o = t.getUTCDate(), a = t.getUTCHours(), l = t.getUTCMinutes(), h = t.getUTCSeconds(), u = t.getUTCMilliseconds()) : (n = t.getFullYear(), r = t.getMonth(), s = t.getDay(), o = t.getDate(), a = t.getHours(), l = t.getMinutes(), h = t.getSeconds(), u = t.getMilliseconds());

            for (var f = 0, g = e.parts.length; f < g; f++) {
              var y = "";

              switch (e.parts[f]) {
                case "G":
                  y = i.translate(n < 0 ? "_era_bc" : "_era_ad");
                  break;

                case "yyyy":
                  y = Math.abs(n).toString(), n < 0 && (y += i.translate("_era_bc"));
                  break;

                case "yyy":
                case "yy":
                case "y":
                  y = Math.abs(n).toString().substr(-e.parts[f].length), n < 0 && (y += i.translate("_era_bc"));
                  break;

                case "YYYY":
                case "YYY":
                case "YY":
                case "Y":
                  var m = n;
                  1 == Fi(t) && s > 1 && m--, y = "YYYY" == e.parts[f] ? Math.abs(m).toString() : Math.abs(m).toString().substr(-e.parts[f].length), m < 0 && (y += i.translate("_era_bc"));
                  break;

                case "u":
                  break;

                case "MMMMM":
                  y = i.translate(this._months[r]).substr(0, 1);
                  break;

                case "MMMM":
                  y = i.translate(this._months[r]);
                  break;

                case "MMM":
                  y = i.translate(this._monthsShort[r]);
                  break;

                case "MM":
                  y = Ci(r + 1, 2, "0");
                  break;

                case "M":
                  y = (r + 1).toString();
                  break;

                case "ww":
                  y = Ci(Fi(t, this.utc), 2, "0");
                  break;

                case "w":
                  y = Fi(t, this.utc).toString();
                  break;

                case "W":
                  y = Mi(t, this.utc).toString();
                  break;

                case "dd":
                  y = Ci(o, 2, "0");
                  break;

                case "d":
                  y = o.toString();
                  break;

                case "DD":
                case "DDD":
                  y = Ci(Vi(t, this.utc).toString(), e.parts[f].length, "0");
                  break;

                case "D":
                  y = Vi(t, this.utc).toString();
                  break;

                case "F":
                case "g":
                  break;

                case "t":
                  y = i.translateFunc("_dateOrd").call(this, o);
                  break;

                case "E":
                  y = (s || 7).toString();
                  break;

                case "EE":
                  y = Ci((s || 7).toString(), 2, "0");
                  break;

                case "EEE":
                case "eee":
                  y = i.translate(this._weekdaysShort[s]);
                  break;

                case "EEEE":
                case "eeee":
                  y = i.translate(this._weekdays[s]);
                  break;

                case "EEEEE":
                case "eeeee":
                  y = i.translate(this._weekdays[s]).substr(0, 1);
                  break;

                case "e":
                case "ee":
                  y = (s - this.firstDayOfWeek + 1).toString(), "ee" == e.parts[f] && (y = Ci(y, 2, "0"));
                  break;

                case "a":
                  y = a >= 12 ? i.translate("PM") : i.translate("AM");
                  break;

                case "aa":
                  y = a >= 12 ? i.translate("P.M.") : i.translate("A.M.");
                  break;

                case "aaa":
                  y = a >= 12 ? i.translate("P") : i.translate("A");
                  break;

                case "h":
                  y = Li(a).toString();
                  break;

                case "hh":
                  y = Ci(Li(a), 2, "0");
                  break;

                case "H":
                  y = a.toString();
                  break;

                case "HH":
                  y = Ci(a, 2, "0");
                  break;

                case "K":
                  y = Li(a, 0).toString();
                  break;

                case "KK":
                  y = Ci(Li(a, 0), 2, "0");
                  break;

                case "k":
                  y = (a + 1).toString();
                  break;

                case "kk":
                  y = Ci(a + 1, 2, "0");
                  break;

                case "m":
                  y = l.toString();
                  break;

                case "mm":
                  y = Ci(l, 2, "0");
                  break;

                case "s":
                  y = h.toString();
                  break;

                case "ss":
                  y = Ci(h, 2, "0");
                  break;

                case "S":
                case "SS":
                case "SSS":
                  y = Math.round(u / 1e3 * Math.pow(10, e.parts[f].length)).toString();
                  break;

                case "x":
                  y = d.toString();
                  break;

                case "n":
                case "nn":
                case "nnn":
                  y = Ci(u, e.parts[f].length, "0");
                  break;

                case "z":
                  y = Ei(t, !1, !1, this.utc);
                  break;

                case "zz":
                  y = Ei(t, !0, !1, this.utc);
                  break;

                case "zzz":
                  y = Ei(t, !1, !0, this.utc);
                  break;

                case "zzzz":
                  y = Ei(t, !0, !0, this.utc);
                  break;

                case "Z":
                case "ZZ":
                  var v = Math.abs(c) / 60,
                      b = Math.floor(v),
                      x = 60 * v - 60 * b;
                  this.utc && (b = 0, x = 0), "Z" == e.parts[f] ? (y = "GMT", y += c > 0 ? "-" : "+", y += Ci(b, 2) + ":" + Ci(x, 2)) : (y = c > 0 ? "-" : "+", y += Ci(b, 2) + Ci(x, 2));
                  break;

                case "i":
                  y = t.toISOString();
                  break;

                case "I":
                  y = t.toUTCString();
              }

              p = p.replace(ro, y);
            }

            return p;
          }, e.prototype.parse = function (t, e) {
            if (S(e) || (e = this.inputDateFormat), t instanceof Date) return t;
            if ("number" == typeof t) return new Date(t);
            var i;
            "string" != typeof t && (t = t.toString()), this.language || (this.sprite ? this.language = this.sprite.language : this.language = new aa());
            var n = "";
            e = (e = Si(e)).substr(0, t.length);

            for (var r = this.parseFormat(e), s = {
              year: -1,
              year3: -1,
              year2: -1,
              year1: -1,
              month: -1,
              monthShort: -1,
              monthLong: -1,
              weekdayShort: -1,
              weekdayLong: -1,
              day: -1,
              yearDay: -1,
              week: -1,
              hourBase0: -1,
              hour12Base0: -1,
              hourBase1: -1,
              hour12Base1: -1,
              minute: -1,
              second: -1,
              millisecond: -1,
              millisecondDigits: -1,
              am: -1,
              zone: -1,
              timestamp: -1,
              iso: -1
            }, o = {
              year: 1970,
              month: 0,
              day: 1,
              hour: 0,
              minute: 0,
              second: 0,
              millisecond: 0,
              timestamp: null,
              offset: 0,
              utc: this.utc
            }, a = 0, l = 0, h = 0; h < r.parts.length; h++) {
              switch (l = h + a + 1, r.parts[h]) {
                case "yyyy":
                case "YYYY":
                  n += "([0-9]{4})", s.year = l;
                  break;

                case "yyy":
                case "YYY":
                  n += "([0-9]{3})", s.year3 = l;
                  break;

                case "yy":
                case "YY":
                  n += "([0-9]{2})", s.year2 = l;
                  break;

                case "y":
                case "Y":
                  n += "([0-9]{1})", s.year1 = l;
                  break;

                case "MMMM":
                  n += "(" + this.getStringList(this._months).join("|") + ")", s.monthLong = l;
                  break;

                case "MMM":
                  n += "(" + this.getStringList(this._monthsShort).join("|") + ")", s.monthShort = l;
                  break;

                case "MM":
                case "M":
                  n += "([0-9]{2}|[0-9]{1})", s.month = l;
                  break;

                case "ww":
                case "w":
                  n += "([0-9]{2}|[0-9]{1})", s.week = l;
                  break;

                case "dd":
                case "d":
                  n += "([0-9]{2}|[0-9]{1})", s.day = l;
                  break;

                case "DDD":
                case "DD":
                case "D":
                  n += "([0-9]{3}|[0-9]{2}|[0-9]{1})", s.yearDay = l;
                  break;

                case "dddd":
                  n += "(" + this.getStringList(this._weekdays).join("|") + ")", s.weekdayLong = l;
                  break;

                case "ddd":
                  n += "(" + this.getStringList(this._weekdaysShort).join("|") + ")", s.weekdayShort = l;
                  break;

                case "aaa":
                case "aa":
                case "a":
                  n += "(" + this.getStringList(["AM", "PM", "A.M.", "P.M.", "A", "P"]).join("|") + ")", s.am = l;
                  break;

                case "hh":
                case "h":
                  n += "([0-9]{2}|[0-9]{1})", s.hour12Base1 = l;
                  break;

                case "HH":
                case "H":
                  n += "([0-9]{2}|[0-9]{1})", s.hourBase0 = l;
                  break;

                case "KK":
                case "K":
                  n += "([0-9]{2}|[0-9]{1})", s.hour12Base0 = l;
                  break;

                case "kk":
                case "k":
                  n += "([0-9]{2}|[0-9]{1})", s.hourBase1 = l;
                  break;

                case "mm":
                case "m":
                  n += "([0-9]{2}|[0-9]{1})", s.minute = l;
                  break;

                case "ss":
                case "s":
                  n += "([0-9]{2}|[0-9]{1})", s.second = l;
                  break;

                case "SSS":
                case "SS":
                case "S":
                  n += "([0-9]{3}|[0-9]{2}|[0-9]{1})", s.millisecond = l, s.millisecondDigits = r.parts[h].length;
                  break;

                case "nnn":
                case "nn":
                case "n":
                  n += "([0-9]{3}|[0-9]{2}|[0-9]{1})", s.millisecond = l;
                  break;

                case "x":
                  n += "([0-9]{1,})", s.timestamp = l;
                  break;

                case "Z":
                  n += "GMT([-+]+[0-9]{2}:[0-9]{2})", s.zone = l;
                  break;

                case "ZZ":
                  n += "([\\-+]+[0-9]{2}[0-9]{2})", s.zone = l;
                  break;

                case "i":
                  n += "([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2}).([0-9]{3})([Zz]?)", s.iso = l, a += 7;
                  break;

                case "G":
                case "YYYY":
                case "YYY":
                case "YY":
                case "Y":
                case "MMMMM":
                case "W":
                case "EEEEE":
                case "EEEE":
                case "EEE":
                case "EE":
                case "E":
                case "eeeee":
                case "eeee":
                case "eee":
                case "ee":
                case "e":
                case "zzzz":
                case "zzz":
                case "zz":
                case "z":
                case "t":
                  a--;
              }

              n += "[^0-9]*";
            }

            var u = new RegExp(n),
                p = t.match(u);

            if (p) {
              if (s.year > -1 && (o.year = parseInt(p[s.year])), s.year3 > -1) {
                var c = parseInt(p[s.year3]);
                c += 1e3, o.year = c;
              }

              if (s.year2 > -1 && (c = parseInt(p[s.year2]), c += c > 50 ? 1e3 : 2e3, o.year = c), s.year1 > -1 && (c = parseInt(p[s.year1]), c = 10 * Math.floor(new Date().getFullYear() / 10) + c, o.year = c), s.monthLong > -1 && (o.month = this.resolveMonth(p[s.monthLong])), s.monthShort > -1 && (o.month = this.resolveShortMonth(p[s.monthShort])), s.month > -1 && (o.month = parseInt(p[s.month]) - 1), s.week > -1 && -1 === s.day && (o.month = 0, o.day = ji(parseInt(p[s.week]), o.year, 1, this.utc)), s.day > -1 && (o.day = parseInt(p[s.day])), s.yearDay > -1 && (o.month = 0, o.day = parseInt(p[s.yearDay])), s.hourBase0 > -1 && (o.hour = parseInt(p[s.hourBase0])), s.hourBase1 > -1 && (o.hour = parseInt(p[s.hourBase1]) - 1), s.hour12Base0 > -1 && (11 == (c = parseInt(p[s.hour12Base0])) && (c = 0), s.am > -1 && !this.isAm(p[s.am]) && (c += 12), o.hour = c), s.hour12Base1 > -1 && (12 == (c = parseInt(p[s.hour12Base1])) && (c = 0), s.am > -1 && !this.isAm(p[s.am]) && (c += 12), o.hour = c), s.minute > -1 && (o.minute = parseInt(p[s.minute])), s.second > -1 && (o.second = parseInt(p[s.second])), s.millisecond > -1 && (c = parseInt(p[s.millisecond]), 2 == s.millisecondDigits ? c *= 10 : 1 == s.millisecondDigits && (c *= 100), o.millisecond = c), s.timestamp > -1 && (o.timestamp = parseInt(p[s.timestamp])), s.zone > -1) {
                var d = I(p[s.zone].replace(/:/, "").match(/([+\-]?)([0-9]{2})([0-9]{2})/)),
                    f = d[1],
                    g = d[2],
                    y = d[3],
                    m = 60 * parseInt(g) + parseInt(y);
                "+" == f && (m *= -1);
                var v = m - new Date().getTimezoneOffset();
                o.offset = v;
              }

              s.iso > -1 && ("Z" != p[s.iso + 7] && "z" != p[s.iso + 7] || (o.utc = !0), o.year = w(p[s.iso + 0]), o.month = w(p[s.iso + 1]) - 1, o.day = w(p[s.iso + 2]), o.hour = w(p[s.iso + 3]), o.minute = w(p[s.iso + 4]), o.second = w(p[s.iso + 5]), o.millisecond = w(p[s.iso + 6])), i = o.utc ? new Date(Date.UTC(o.year, o.month, o.day, o.hour, o.minute, o.second, o.millisecond)) : new Date(o.year, o.month, o.day, o.hour, o.minute, o.second, o.millisecond);
            } else i = new Date(t);

            return i;
          }, e.prototype.resolveMonth = function (t) {
            var e = this._months.indexOf(t);

            return e > -1 ? e : this.language && !this.language.isDefault() && (e = this.language.translateAll(this._months).indexOf(t)) > -1 ? e : 0;
          }, e.prototype.resolveShortMonth = function (t) {
            var e = this._monthsShort.indexOf(t);

            return e > -1 ? e : this.language && !this.language.isDefault() && (e = this.language.translateAll(this._monthsShort).indexOf(t)) > -1 ? e : 0;
          }, e.prototype.isAm = function (t) {
            return this.getStringList(["AM", "A.M.", "A"]).indexOf(t.toUpperCase()) > -1;
          }, e.prototype.invalidateSprite = function () {
            this.sprite && this.sprite.invalidate();
          }, e.prototype.getStringList = function (t) {
            for (var e = [], i = 0; i < t.length; i++) e.push(yi(t[i])), this.language && !this.language.isDefault() && e.push(yi(this.language.translate(t[i])));

            return e;
          }, Object.defineProperty(e.prototype, "dateFormat", {
            get: function get() {
              return this._dateFormat;
            },
            set: function set(t) {
              this._dateFormat = t, this.invalidateSprite();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "inputDateFormat", {
            get: function get() {
              return this._inputDateFormat;
            },
            set: function set(t) {
              this._inputDateFormat = t, this.invalidateSprite();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "intlLocales", {
            get: function get() {
              return this._intlLocales;
            },
            set: function set(t) {
              this._intlLocales = t, this.invalidateSprite();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "utc", {
            get: function get() {
              return this._utc;
            },
            set: function set(t) {
              this._utc = t, this.invalidateSprite();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "timezoneOffset", {
            get: function get() {
              return this._timezoneOffset;
            },
            set: function set(t) {
              this._timezoneOffset != t && (this._timezoneOffset = t, this.invalidateSprite());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "firstDayOfWeek", {
            get: function get() {
              return this._firstDayOfWeek;
            },
            set: function set(t) {
              this._firstDayOfWeek = t, this.invalidateSprite();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "outputFormat", {
            get: function get() {
              return this._outputFormat;
            },
            set: function set(t) {
              this._outputFormat = t.toLowerCase(), this.invalidateSprite();
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }($s);

        Fs.registeredClasses.DateFormatter = ua;

        var pa = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e._negativeBase = 0, e._baseUnit = "second", e._outputFormat = "svg", e._unitValues = {
              millisecond: 1,
              second: 1e3,
              minute: 6e4,
              hour: 36e5,
              day: 864e5,
              week: 6048e5,
              month: 2592e6,
              year: 31536e6
            }, e._unitAliases = {
              Y: "y",
              D: "d",
              H: "h",
              K: "h",
              k: "h",
              n: "S"
            }, e.className = "DurationFormatter", e.applyTheme(), e;
          }

          return n(e, t), e.prototype.format = function (t, e, i) {
            this.language || (this.sprite ? this.language = this.sprite.language : this.language = new aa());
            var n = i || this._baseUnit;
            void 0 !== e && "" !== e || (e = S(this.durationFormat) ? this.durationFormat : this.getFormat(w(t), null, n)), e = Si(e);
            var r,
                s = this.parseFormat(e, n),
                o = Number(t);
            r = o > this._negativeBase ? s.positive : o < this._negativeBase ? s.negative : s.zero;
            var a = this.applyFormat(o, r);
            return "" !== r.color && ("svg" === this._outputFormat ? a = "<tspan fill='" + r.color + "'>" + a + "</tspan>" : "html" === this._outputFormat && (a = "<span style='color: " + r.color + ";'>" + a + "</span>")), a;
          }, e.prototype.parseFormat = function (t, e) {
            var i = this,
                n = this.getCache(t);
            if (S(n)) return n;
            var r = e || this._baseUnit,
                s = {
              positive: {
                color: "",
                template: "",
                parts: [],
                source: "",
                baseUnit: r,
                parsed: !1,
                absolute: !1
              },
              negative: {
                color: "",
                template: "",
                parts: [],
                source: "",
                baseUnit: r,
                parsed: !1,
                absolute: !1
              },
              zero: {
                color: "",
                template: "",
                parts: [],
                source: "",
                baseUnit: r,
                parsed: !1,
                absolute: !1
              }
            },
                o = (t = t.replace("||", so)).split("|");
            return s.positive.source = o[0], void 0 === o[2] ? s.zero = s.positive : s.zero.source = o[2], void 0 === o[1] ? s.negative = s.positive : s.negative.source = o[1], Qt(s, function (t, e) {
              if (!e.parsed) if (void 0 === i.getCache(e.source)) {
                var n,
                    r = e.source;
                (n = e.source.match(/^\[([^\]]*)\]/)) && n.length && "" !== n[0] && (r = e.source.substr(n[0].length), e.color = n[1]);

                for (var o = dr().chunk(r, !0), a = 0; a < o.length; a++) {
                  var l = o[a];

                  if (l.text = l.text.replace(so, "|"), "value" === l.type) {
                    l.text.match(/[yYMdDwhHKkmsSn]+a/) && (e.absolute = !0, l.text = l.text.replace(/([yYMdDwhHKkmsSn]+)a/, "$1"));
                    var h = l.text.match(/y+|Y+|M+|d+|D+|w+|h+|H+|K+|k+|m+|s+|S+|n+/g);
                    if (h) for (var u = 0; u < h.length; u++) S(h[u]) || (h[u] = i._unitAliases[h[u]]), e.parts.push(h[u]), l.text = l.text.replace(h[u], ro);
                  }

                  e.template += l.text;
                }

                i.setCache(e.source, e), e.parsed = !0;
              } else s[t] = i.getCache(e.source);
            }), this.setCache(t, s), s;
          }, e.prototype.applyFormat = function (t, e) {
            var i = !e.absolute && t < this._negativeBase;
            t = Math.abs(t);

            for (var n = this.toTimeStamp(t, e.baseUnit), r = e.template, s = 0, o = e.parts.length; s < o; s++) {
              var a = e.parts[s],
                  l = this.toTimeUnit(a.substr(0, 1)),
                  h = a.length,
                  u = Math.floor(n / this._unitValues[l]);
              r = r.replace(ro, Ci(u, h, "0")), n -= u * this._unitValues[l];
            }

            return i && (r = "-" + r), r;
          }, e.prototype.toTimeStamp = function (t, e) {
            return t * this._unitValues[e];
          }, e.prototype.toTimeUnit = function (t) {
            switch (t) {
              case "S":
                return "millisecond";

              case "s":
                return "second";

              case "m":
                return "minute";

              case "h":
                return "hour";

              case "d":
                return "day";

              case "w":
                return "week";

              case "M":
                return "month";

              case "y":
                return "year";
            }
          }, e.prototype.invalidateSprite = function () {
            this.sprite && this.sprite.invalidate();
          }, Object.defineProperty(e.prototype, "baseUnit", {
            get: function get() {
              return this._baseUnit;
            },
            set: function set(t) {
              this._baseUnit = t, this.invalidateSprite();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "outputFormat", {
            get: function get() {
              return this._outputFormat;
            },
            set: function set(t) {
              this._outputFormat = t.toLowerCase(), this.invalidateSprite();
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.getFormat = function (t, e, i) {
            if (S(this.durationFormat)) return this.durationFormat;

            if (i || (i = this.baseUnit), S(e) && t != e) {
              t = Math.abs(t), e = Math.abs(e);
              var n = this.getValueUnit(W(t, e), i);
              return this.durationFormats[i][n];
            }

            var r = this.getValueUnit(t, i);
            return this.durationFormats[i][r];
          }, e.prototype.getValueUnit = function (t, e) {
            var i;
            e || (e = this.baseUnit);
            var n = this.getMilliseconds(t, e);
            return Jt(this._unitValues, function (t, r) {
              if (t == e || i) {
                if (n / r <= 1) return i || (i = t), !1;
                i = t;
              }

              return !0;
            }), i;
          }, e.prototype.getMilliseconds = function (t, e) {
            return e || (e = this.baseUnit), t * this._unitValues[e];
          }, Object.defineProperty(e.prototype, "durationFormat", {
            get: function get() {
              return this._durationFormat;
            },
            set: function set(t) {
              this._durationFormat != t && (this._durationFormat = t, this.invalidateSprite());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "durationFormats", {
            get: function get() {
              return this._durationFormats || (this._durationFormats = {
                millisecond: {
                  millisecond: this.language.translate("_duration_millisecond"),
                  second: this.language.translate("_duration_millisecond_second"),
                  minute: this.language.translate("_duration_millisecond_minute"),
                  hour: this.language.translate("_duration_millisecond_hour"),
                  day: this.language.translate("_duration_millisecond_day"),
                  week: this.language.translate("_duration_millisecond_week"),
                  month: this.language.translate("_duration_millisecond_month"),
                  year: this.language.translate("_duration_millisecond_year")
                },
                second: {
                  second: this.language.translate("_duration_second"),
                  minute: this.language.translate("_duration_second_minute"),
                  hour: this.language.translate("_duration_second_hour"),
                  day: this.language.translate("_duration_second_day"),
                  week: this.language.translate("_duration_second_week"),
                  month: this.language.translate("_duration_second_month"),
                  year: this.language.translate("_duration_second_year")
                },
                minute: {
                  minute: this.language.translate("_duration_minute"),
                  hour: this.language.translate("_duration_minute_hour"),
                  day: this.language.translate("_duration_minute_day"),
                  week: this.language.translate("_duration_minute_week"),
                  month: this.language.translate("_duration_minute_month"),
                  year: this.language.translate("_duration_minute_year")
                },
                hour: {
                  hour: this.language.translate("_duration_hour"),
                  day: this.language.translate("_duration_hour_day"),
                  week: this.language.translate("_duration_hour_week"),
                  month: this.language.translate("_duration_hour_month"),
                  year: this.language.translate("_duration_hour_year")
                },
                day: {
                  day: this.language.translate("_duration_day"),
                  week: this.language.translate("_duration_day_week"),
                  month: this.language.translate("_duration_day_month"),
                  year: this.language.translate("_duration_day_year")
                },
                week: {
                  week: this.language.translate("_duration_week"),
                  month: this.language.translate("_duration_week_month"),
                  year: this.language.translate("_duration_week_year")
                },
                month: {
                  month: this.language.translate("_duration_month"),
                  year: this.language.translate("_duration_month_year")
                },
                year: {
                  year: this.language.translate("_duration_year")
                }
              }), this._durationFormats;
            },
            set: function set(t) {
              this._durationFormats = t, this.invalidateSprite();
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }($s);

        Fs.registeredClasses.DurationFormatter = pa;

        var ca,
            da = new Ds(),
            fa = function (t) {
          function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e._invalid = !1, e;
          }

          return n(e, t), e.prototype.invalidate = function () {
            !1 === this._invalid && (this._invalid = !0, Fs.events.on("exitframe", this.validate, this));
          }, e.prototype.validate = function () {
            !0 === this._invalid && (this._invalid = !1, Fs.events.off("exitframe", this.validate, this));
          }, e;
        }(Js),
            ga = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.adapter = new Ks(e), e.closeDelay = 1e3, e.closeOnClick = !0, e._language = new ys(), e._menuTag = "ul", e._itemTag = "li", e._labelTag = "a", e._iconTag = "img", e._classPrefix = "amexport", e._defaultStyles = !0, e._align = "right", e._verticalAlign = "top", e._tabindex = 0, e._ignoreNextClose = !1, e._items = [{
              label: "...",
              menu: [{
                label: "Image",
                menu: [{
                  type: "png",
                  label: "PNG"
                }, {
                  type: "jpg",
                  label: "JPG"
                }, {
                  type: "svg",
                  label: "SVG"
                }, {
                  type: "pdf",
                  label: "PDF"
                }]
              }, {
                label: "Data",
                menu: [{
                  type: "json",
                  label: "JSON"
                }, {
                  type: "csv",
                  label: "CSV"
                }, {
                  type: "xlsx",
                  label: "XLSX"
                }, {
                  type: "html",
                  label: "HTML"
                }, {
                  type: "pdfdata",
                  label: "PDF"
                }]
              }, {
                label: "Print",
                type: "print"
              }]
            }], e.className = "ExportMenu", e._disposers.push(e._language), e.invalidate(), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.validate = function () {
            this.draw(), t.prototype.validate.call(this);
          }, e.prototype.draw = function () {
            var t = this;
            this._element ? (this._element.innerHTML = "", this._element.className = this.getMenuItemClass(0)) : this._element = this.createMenuElement(0), this.defaultStyles && (this._element.style.display = "none"), I(this._container).appendChild(this._element);

            for (var e = this.adapter.apply("items", {
              items: this._items
            }).items, i = e.length, n = 0; n < i; n++) this.drawBranch(this._element, e[n], 0);

            this._element = this.adapter.apply("menuElement", {
              menuElement: this._element
            }).menuElement, this._disposers.push(pr().body.events.on("down", function (e) {
              e.pointer.touch || (t._ignoreNextClose = !1), t.close();
            })), this._disposers.push(pr().body.events.on("keyup", function (e) {
              var i = Wo.getEventKey(e.event);

              switch (i) {
                case "esc":
                  t.close();
                  break;

                case "up":
                case "down":
                case "left":
                case "right":
                  t.moveSelection(i);
              }
            })), this.defaultStyles && this.loadDefaultCSS();
          }, e.prototype.drawBranch = function (t, e, i) {
            var n = this;

            if (!0 !== (e = this.adapter.apply("branch", {
              branch: e,
              level: i
            }).branch).unsupported) {
              e.ascendants || (e.ascendants = new Ns());
              var r,
                  s = e.type,
                  o = this.createItemElement(i, s);
              e.icon ? ((r = this.createIconElement(i, s)).src = e.icon, e.label && (r.title = e.label)) : e.svg ? (r = this.createSvgElement(i, s, e.svg), e.label && (r.title = e.label)) : (r = this.createLabelElement(i, s)).innerHTML = e.label ? this.language.translate(e.label) : "";
              var a = this.getReaderLabel(e, r.innerHTML);
              r.setAttribute("aria-label", a), o.appendChild(r), e.interactions = pr().getInteraction(r), e.element = o, this.typeClickable(s) && (e.interactions.events.on("hit", function (t) {
                if (n.events.isEnabled("hit")) {
                  var i = {
                    type: "hit",
                    event: t.event,
                    target: n,
                    branch: e
                  };
                  n.events.dispatchImmediately("hit", i);
                }
              }), e.interactions.events.on("keyup", function (t) {
                if (Wo.isKey(t.event, "enter") && n.events.isEnabled("enter")) {
                  var i = {
                    type: "enter",
                    event: t.event,
                    target: n,
                    branch: e
                  };
                  n.events.dispatchImmediately("enter", i);
                }
              }));
              var l = this.getSubMenu(e);
              null != l && (e.interactions.events.on("keyup", function (t) {
                Wo.isKey(t.event, "enter") && (n.selectBranch(l[0]), n.setFocus(l[0]));
              }), e.interactions.events.on("hit", function (t) {
                n.selectBranch(e);
              })), e.interactions.events.on("over", function (t) {
                if (t.pointer.touch && (n._ignoreNextClose = !0), n.selectBranch(e), n.events.isEnabled("over")) {
                  var i = {
                    type: "over",
                    event: t.event,
                    target: n,
                    branch: e
                  };
                  n.events.dispatchImmediately("over", i);
                }
              }), e.interactions.events.on("out", function (t) {
                if (t.pointer.touch || n.delayUnselectBranch(e), n.events.isEnabled("out")) {
                  var i = {
                    type: "out",
                    event: t.event,
                    target: n,
                    branch: e
                  };
                  n.events.dispatchImmediately("out", i);
                }
              }), e.interactions.events.on("focus", function (t) {
                n.selectBranch(e);
              }), e.interactions.events.on("blur", function (t) {
                n.delayUnselectBranch(e);
              });
              var h = i + 1;

              if (e.menu) {
                for (var u = this.createMenuElement(h), p = e.menu.length, c = 0; c < p; c++) {
                  var d = new Ns();
                  e.menu[c].ascendants = d, e.ascendants.length && d.copyFrom(e.ascendants), d.push(e), this.drawBranch(u, e.menu[c], h);
                }

                if ("" == u.innerHTML) return;
                o.appendChild(u);
              }

              e.hidden && this.hideBranch(e), e.id && o.setAttribute("id", e.id), e.color && (o.style.backgroundColor = e.color.hex), t.appendChild(o);
            }
          }, e.prototype.createMenuElement = function (t) {
            var e = document.createElement(this.menuTag);
            return e.className = this.getMenuItemClass(t), 0 === t && e.setAttribute("role", "menu"), e;
          }, e.prototype.getMenuItemClass = function (t) {
            var e = this.classPrefix + "-menu " + this.classPrefix + "-menu-level-" + t;
            return 0 === t && (e += " " + this.classPrefix + "-menu-root " + this.classPrefix + "-" + this.align + " " + this.classPrefix + "-" + this.verticalAlign), this.adapter.apply("menuClass", {
              className: e,
              level: t
            }).className;
          }, e.prototype.createItemElement = function (t, e) {
            var i = document.createElement(this.itemTag),
                n = this.classPrefix + "-item " + this.classPrefix + "-item-level-" + t + " " + this.classPrefix + "-item-" + (e || "blank");
            return i.className = this.adapter.apply("itemClass", {
              className: n,
              level: t,
              type: e
            }).className, i;
          }, e.prototype.createLabelElement = function (t, e) {
            var i = document.createElement(this.labelTag),
                n = this.classPrefix + "-label " + this.classPrefix + "-label-level-" + t + " " + this.classPrefix + "-item-" + (e || "blank");
            return this.typeClickable(e) && (n += " " + this.classPrefix + "-clickable"), i.className = this.adapter.apply("labelClass", {
              className: n,
              level: t,
              type: e
            }).className, i.setAttribute("tabindex", this.tabindex.toString()), i.setAttribute("role", "menuitem"), i;
          }, e.prototype.createIconElement = function (t, e) {
            var i = document.createElement(this.iconTag),
                n = this.classPrefix + "-icon " + this.classPrefix + "-icon-level-" + t + " " + this.classPrefix + "-item-" + (e || "blank");
            return this.typeClickable(e) && (n += " " + this.classPrefix + "-clickable"), i.className = this.adapter.apply("labelClass", {
              className: n,
              level: t,
              type: e
            }).className, i.setAttribute("tabindex", this.tabindex.toString()), i.setAttribute("role", "menuitem"), i;
          }, e.prototype.createSvgElement = function (t, e, i) {
            var n = new DOMParser().parseFromString(i, "image/svg+xml").documentElement,
                r = this.classPrefix + "-icon " + this.classPrefix + "-icon-level-" + t + " " + this.classPrefix + "-item-" + (e || "blank");
            return this.typeClickable(e) && (r += " " + this.classPrefix + "-clickable"), n.setAttribute("class", this.adapter.apply("labelClass", {
              className: r,
              level: t,
              type: e
            }).className), n.setAttribute("tabindex", this.tabindex.toString()), n.setAttribute("role", "menuitem"), n;
          }, e.prototype.dispose = function () {
            this._disposed || (t.prototype.dispose.call(this), this._element && this._element.parentNode && this._element.parentNode.removeChild(this._element));
          }, e.prototype.typeClickable = function (t) {
            return S(t);
          }, e.prototype.hasSubMenu = function (t) {
            return !(!t.menu || !t.menu.length);
          }, e.prototype.getSubMenu = function (t) {
            if (t.menu && t.menu.length) return t.menu;
          }, e.prototype.getReaderLabel = function (t, e) {
            return e = Ii(e), this.hasSubMenu(t) ? e += " [" + this.language.translate("Click, tap or press ENTER to open") + "]" : "print" == t.type ? e = this.language.translate("Click, tap or press ENTER to print.") : this.typeClickable(t.type) && (e = this.language.translate("Click, tap or press ENTER to export as %1.", void 0, e)), this.adapter.apply("rederLabel", {
              label: e,
              branch: t
            }).label;
          }, Object.defineProperty(e.prototype, "container", {
            get: function get() {
              return this._container;
            },
            set: function set(t) {
              this._container = t, this.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "items", {
            get: function get() {
              return this._items;
            },
            set: function set(t) {
              this._items = t, this.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "tag", {
            set: function set(t) {
              this._menuTag = t, this._itemTag = "ul" == t ? "li" : "div", this.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "menuTag", {
            get: function get() {
              return this.adapter.apply("menuTag", {
                tag: this._menuTag
              }).tag;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "itemTag", {
            get: function get() {
              return this.adapter.apply("itemTag", {
                tag: this._itemTag
              }).tag;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "labelTag", {
            get: function get() {
              return this.adapter.apply("labelTag", {
                tag: this._labelTag
              }).tag;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "iconTag", {
            get: function get() {
              return this.adapter.apply("iconTag", {
                tag: this._iconTag
              }).tag;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "align", {
            get: function get() {
              return this.adapter.apply("align", {
                align: this._align
              }).align;
            },
            set: function set(t) {
              this._align = t, this.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "verticalAlign", {
            get: function get() {
              return this.adapter.apply("verticalAlign", {
                verticalAlign: this._verticalAlign
              }).verticalAlign;
            },
            set: function set(t) {
              this._verticalAlign = t, this.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "classPrefix", {
            get: function get() {
              return this.adapter.apply("classPrefix", {
                classPrefix: this._classPrefix
              }).classPrefix;
            },
            set: function set(t) {
              this._classPrefix = t, this.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "defaultStyles", {
            get: function get() {
              return this.adapter.apply("defaultStyles", {
                defaultStyles: this._defaultStyles
              }).defaultStyles;
            },
            set: function set(t) {
              this._defaultStyles != t && (this._defaultStyles = t, t && this.loadDefaultCSS()), this.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.loadDefaultCSS = function () {
            var t, e, i;
            this._disposers.push((t = this.classPrefix, e = t || "amexport", i = new ta(), da.insertKeyIfEmpty(e, function () {
              var t = new gs([new Ao("." + e + "-menu-level-0", {
                position: "absolute",
                top: "5px",
                right: "5px"
              }), new Ao("." + e + "-menu-level-0." + e + "-left", {
                right: "auto",
                left: "5px"
              }), new Ao("." + e + "-menu-level-0." + e + "-right", {
                right: "5px",
                left: "auto"
              }), new Ao("." + e + "-menu-level-0." + e + "-top", {
                top: "5px",
                bottom: "auto"
              }), new Ao("." + e + "-menu-level-0." + e + "-bottom", {
                top: "auto",
                bottom: "5px"
              }), new Ao("." + e + "-item." + e + "-item-level-0", {
                opacity: "0.3",
                width: "30px",
                "min-height": "30px",
                transition: "all 100ms ease-in-out"
              }), new Ao("div:hover ." + e + "-item." + e + "-item-level-0, ." + e + "-item." + e + "-item-level-0.active", {
                opacity: "0.9"
              }), new Ao("." + e + "-item." + e + "-item-level-0 > a", {
                padding: "0",
                "text-align": "center",
                overflow: "hidden"
              }), new Ao("." + e + "-item." + e + "-item-level-0:before", {
                display: "block"
              }), new Ao("." + e + "-item", {
                position: "relative",
                display: "block",
                opacity: "0",
                "z-index": "1",
                "border-radius": "3px",
                "background-color": i.getFor("secondaryButton").hex,
                padding: "0",
                margin: "1px 1px 0 0",
                color: i.getFor("secondaryButton").alternative.hex,
                transition: "all 100ms ease-in-out, opacity 0.5s ease 0.5s"
              }), new Ao("." + e + "-left ." + e + "-item", {
                margin: "1px 0 0 1px"
              }), new Ao("." + e + "-item:hover, ." + e + "-item.active", {
                background: i.getFor("secondaryButtonHover").hex,
                color: i.getFor("secondaryButtonText").hex
              }), new Ao("." + e + "-item > ." + e + "-menu", {
                position: "absolute",
                top: "-1px",
                right: "0",
                "margin-right": "100%"
              }), new Ao("." + e + "-left ." + e + "-item > ." + e + "-menu", {
                left: "0",
                right: "auto",
                "margin-left": "100%",
                "margin-right": "auto"
              }), new Ao("." + e + "-right ." + e + "-item > ." + e + "-menu", {
                left: "auto",
                right: "0",
                "margin-left": "auto",
                "margin-right": "100%"
              }), new Ao("." + e + "-top ." + e + "-item > ." + e + "-menu", {
                top: "-1px",
                bottom: "auto"
              }), new Ao("." + e + "-bottom ." + e + "-item > ." + e + "-menu", {
                top: "auto",
                bottom: "0"
              }), new Ao("." + e + "-item > ." + e + "-menu", {
                display: "none"
              }), new Ao("." + e + "-item:hover > ." + e + "-menu, ." + e + "-item.active > ." + e + "-menu", {
                display: "block"
              }), new Ao("." + e + "-item:hover > ." + e + "-menu > ." + e + "-item, ." + e + "-item.active > ." + e + "-menu > ." + e + "-item", {
                opacity: "1"
              }), new Ao("." + e + "-menu", {
                display: "block",
                "list-style": "none",
                margin: "0",
                padding: "0"
              }), new Ao("." + e + "-label", {
                display: "block",
                cursor: "default",
                padding: "0.5em 1em"
              }), new Ao("." + e + "-icon", {
                display: "block",
                cursor: "default",
                padding: "0.2em 0.4em",
                width: "1.2em",
                height: "1.2em",
                "min-width": "20px",
                "min-height": "20px",
                margin: "auto auto",
                "border-radius": "3px"
              }), new Ao("." + e + "-item-level-0 > ." + e + "-icon", {
                padding: "0.1em 0.2em"
              }), new Ao("." + e + "-clickable", {
                cursor: "pointer"
              })]);
              return new ms(function () {
                da.removeKey(e), t.dispose();
              });
            }).increment())), this._element && (this._element.style.display = "");
          }, Object.defineProperty(e.prototype, "tabindex", {
            get: function get() {
              return this.adapter.apply("tabindex", {
                tabindex: this._tabindex
              }).tabindex;
            },
            set: function set(t) {
              this._tabindex = t, this.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "language", {
            get: function get() {
              var t = this,
                  e = this._language.get();

              return null == e && (e = new aa(), this._language.set(e, e.events.on("localechanged", function (e) {
                t.invalidate();
              }))), e;
            },
            set: function set(t) {
              var e = this;
              this._language.set(t, t.events.on("localechanged", function (t) {
                e.invalidate();
              })), this.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.close = function () {
            var t = this;
            if (this._ignoreNextClose) this._ignoreNextClose = !1;else {
              if (this.closeOnClick && (this._element.style.pointerEvents = "none", setTimeout(function () {
                t._element.style.pointerEvents = "auto";
              }, 100)), this._currentSelection && (this.setBlur(this._currentSelection), this._currentSelection = void 0), this._element) for (var e = this._element.getElementsByClassName("active"), i = e.length - 1; i >= 0; i--) e[i] && Hn(e[i], "active");
              this.events.dispatchImmediately("closed", {
                type: "closed",
                target: this
              });
            }
          }, e.prototype.selectBranch = function (t) {
            var e = this;

            if (t.closeTimeout && (this.removeDispose(t.closeTimeout), t.closeTimeout = void 0), Nn(t.interactions.element.parentElement, "active"), this._currentSelection && this._currentSelection !== t && this._currentSelection.ascendants && pe(ge(ae([this._currentSelection]), this._currentSelection.ascendants.iterator()), function (i) {
              t.ascendants.contains(i) || t === i || e.unselectBranch(i, !0);
            }), pe(t.ascendants.iterator(), function (t) {
              t.closeTimeout && (e.removeDispose(t.closeTimeout), t.closeTimeout = void 0), Nn(t.interactions.element.parentElement, "active");
            }), this._currentSelection = t, this.events.isEnabled("branchselected")) {
              var i = {
                type: "branchselected",
                target: this,
                branch: t
              };
              this.events.dispatchImmediately("branchselected", i);
            }
          }, e.prototype.unselectBranch = function (t, e) {
            if (Hn(t.interactions.element.parentElement, "active"), this._currentSelection == t && (this._currentSelection = void 0), this.events.isEnabled("branchunselected")) {
              var i = {
                type: "branchunselected",
                target: this,
                branch: t
              };
              this.events.dispatchImmediately("branchunselected", i);
            }
          }, e.prototype.delayUnselectBranch = function (t, e) {
            var i = this;
            t.closeTimeout && (this.removeDispose(t.closeTimeout), t.closeTimeout = void 0), t.closeTimeout = this.setTimeout(function () {
              i.unselectBranch(t, e);
            }, this.closeDelay), !0 !== e && t.ascendants && pe(t.ascendants.iterator(), function (t) {
              i.delayUnselectBranch(t, !0);
            });
          }, e.prototype.moveSelection = function (t) {
            if (this._currentSelection) {
              var e;
              if ("up" == t) e = this.getPrevSibling(this._currentSelection);else if ("down" == t) e = this.getNextSibling(this._currentSelection);else if ("left" == t && "right" == this.align || "right" == t && "left" == this.align) {
                var i = this.getSubMenu(this._currentSelection);
                null != i && (e = i[0]);
              } else ("right" == t && "right" == this.align || "left" == t && "left" == this.align) && (e = this.getParentItem(this._currentSelection));
              e && e !== this._currentSelection && (this.selectBranch(e), this.setFocus(e), this._currentSelection = e);
            }
          }, e.prototype.getSiblings = function (t) {
            var e = this.getParentItem(t);
            return e && e.menu ? e.menu : [];
          }, e.prototype.getParentItem = function (t) {
            return t.ascendants && t.ascendants.length ? t.ascendants.getIndex(t.ascendants.length - 1) : void 0;
          }, e.prototype.getNextSibling = function (t) {
            var e = this.getSiblings(t);

            if (e.length > 1) {
              var i = e.indexOf(t) + 1;
              return e[i = e.length == i ? 0 : i].unsupported ? this.getNextSibling(e[i]) : e[i];
            }

            return t;
          }, e.prototype.getPrevSibling = function (t) {
            var e = this.getSiblings(t);

            if (e.length > 1) {
              var i = e.indexOf(t) - 1;
              return e[i = -1 == i ? e.length - 1 : i].unsupported ? this.getPrevSibling(e[i]) : e[i];
            }

            return t;
          }, e.prototype.setFocus = function (t) {
            if (t.interactions) try {
              t.interactions.element.focus();
            } catch (t) {}
          }, e.prototype.setBlur = function (t) {
            if (t.interactions) try {
              t.interactions.element.blur();
            } catch (t) {}
          }, e.prototype.hideBranch = function (t) {
            t.element.style.display = "none";
          }, e.prototype.showBranch = function (t) {
            t.element.style.display = "";
          }, e;
        }(fa),
            ya = /src: ([^;]+);/,
            ma = function (t) {
          function e(e) {
            var i = t.call(this) || this;
            return i.adapter = new Ks(i), i._formatOptions = new Ds(), i._extraSprites = [], i._validateSprites = [], i._dynamicDataFields = !0, i._removedObjects = new Ns(), i._hiddenObjects = [], i._objectsAlreadyHidden = !1, i._filePrefix = "amCharts", i.useWebFonts = !0, i.useRetina = !0, i.useSimplifiedExport = !0, i.timeoutDelay = 2e3, i._container = e, i.className = "Export", i._formatOptions.setKey("png", {}), i._formatOptions.setKey("jpg", {
              quality: .8
            }), i._formatOptions.setKey("gif", {}), i._formatOptions.setKey("svg", {}), i._formatOptions.setKey("pdf", {
              fontSize: 14,
              imageFormat: "png",
              addURL: !0,
              addColumnNames: !0
            }), i._formatOptions.setKey("json", {
              indent: 2,
              useLocale: !0
            }), i._formatOptions.setKey("csv", {
              addColumnNames: !0,
              emptyAs: ""
            }), i._formatOptions.setKey("xlsx", {
              addColumnNames: !0,
              useLocale: !0,
              emptyAs: ""
            }), i._formatOptions.setKey("html", {
              addColumnNames: !0,
              emptyAs: ""
            }), i._formatOptions.setKey("pdfdata", {
              fontSize: 14,
              imageFormat: "png",
              addURL: !0,
              addColumnNames: !0,
              emptyAs: ""
            }), i._formatOptions.setKey("print", {
              delay: 500,
              printMethod: "iframe"
            }), i.adapter.add("options", function (t) {
              var e = i._formatOptions.getKey(t.type);

              return t.options ? t.options = ie(e, t.options) : t.options = e, t;
            }), i.applyTheme(), i.dispatchImmediately("inited"), i;
          }

          return n(e, t), Object.defineProperty(e.prototype, "menu", {
            get: function get() {
              return this._menu;
            },
            set: function set(t) {
              var e = this;
              this._menu && this.removeDispose(this._menu), this._menu = t, this._menu.container = this.container, this._menu.language = this._language, this._menu.adapter.add("branch", function (t) {
                return t.branch.unsupported = !e.typeSupported(t.branch.type), t;
              }), this._menu.events.on("hit", function (t) {
                e["export"](t.branch.type, t.branch.options), e.menu.close();
              }), this._menu.events.on("enter", function (t) {
                e["export"](t.branch.type, t.branch.options), e.menu.close();
              }), this._menu.events.on("over", function (t) {
                e._disablePointers();
              }), this._menu.events.on("out", function (t) {
                e._releasePointers();
              }), this.dispatchImmediately("menucreated"), this._menu.adapter.add("classPrefix", function (t) {
                return t.classPrefix = Ms.classNamePrefix + t.classPrefix, t;
              }), this._disposers.push(this._menu);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.typeSupported = function (t) {
            var e = !0;
            return "pdf" === t || ("xlsx" === t ? e = !!this._hasData() : ("print" != t || window.print) && (-1 === ["json", "csv"].indexOf(t) || this._hasData()) || (e = !1)), this.adapter.apply("supported", {
              supported: e,
              type: t
            }).supported;
          }, e.prototype._hasData = function () {
            return this.data && this.data.length;
          }, e.prototype._getFunction = function (t) {
            switch (t) {
              case "png":
              case "gif":
              case "jpg":
                return this.getImage;

              case "svg":
                return this.getSVG;

              case "pdf":
              case "pdfdata":
                return this.getPDF;

              case "xlsx":
                return this.getExcel;

              case "csv":
                return this.getCSV;

              case "json":
                return this.getJSON;

              case "html":
                return this.getHTML;

              case "print":
                return this.getPrint;

              default:
                return this.unsupported;
            }
          }, e.prototype["export"] = function (t, e) {
            return r(this, void 0, void 0, function () {
              var i,
                  n,
                  r,
                  o,
                  a,
                  l = this;
              return s(this, function (s) {
                switch (s.label) {
                  case 0:
                    return "custom" == t ? (this.handleCustom(e), [2, !0]) : (this.events.isEnabled("exportstarted") && (i = {
                      type: "exportstarted",
                      target: this,
                      format: t,
                      options: e
                    }, this.events.dispatchImmediately("exportstarted", i)), this.showPreloader(), this.timeoutDelay && (this.hideTimeout(), this._timeoutTimeout = this.setTimeout(function () {
                      if (l.events.isEnabled("exporttimedout")) {
                        var i = {
                          type: "exporttimedout",
                          target: l,
                          format: t,
                          options: e
                        };
                        l.events.dispatchImmediately("exporttimedout", i);
                      }

                      l.showTimeout();
                    }, this.timeoutDelay)), this.hideNonExportableSprites(), n = this._getFunction(t), e = this.adapter.apply("options", {
                      options: e,
                      type: t
                    }).options, [4, (n = this.adapter.apply("exportFunction", {
                      func: n,
                      type: t,
                      options: e
                    }).func).call(this, t, e)]);

                  case 1:
                    return r = s.sent(), this.restoreNonExportableSprites(), r ? (this.events.isEnabled("exportfinished") && (o = {
                      type: "exportfinished",
                      target: this,
                      format: t,
                      options: e
                    }, this.events.dispatchImmediately("exportfinished", o)), this.hidePreloader(), this.hideTimeout(), this.menu && this.menu.close(), "print" === t ? [2, this.print(r, e, this.adapter.apply("title", {
                      title: this.title,
                      options: e
                    }).title)] : "pdfdata" == t ? [2, this.download(r, this.filePrefix + ".pdf")] : [2, this.download(r, this.filePrefix + "." + t)]) : (this.events.isEnabled("error") && (a = {
                      type: "error",
                      target: this,
                      format: t,
                      options: e
                    }, this.events.dispatchImmediately("error", a)), [2, !1]);
                }
              });
            });
          }, e.prototype.unsupported = function (t, e) {
            return r(this, void 0, void 0, function () {
              return s(this, function (t) {
                return [2, ""];
              });
            });
          }, e.prototype.handleCustom = function (t) {
            S(t) && S(t.callback) && t.callback.call(t.callbackTarget || this, t);
          }, e.prototype.getPrint = function (t, e) {
            return r(this, void 0, void 0, function () {
              return s(this, function (t) {
                return [2, this.getImage("png", e)];
              });
            });
          }, e.prototype.getFontFamilies = function () {
            return r(this, void 0, void 0, function () {
              var t,
                  e,
                  i,
                  n,
                  o = this;
              return s(this, function (a) {
                switch (a.label) {
                  case 0:
                    return t = this.getDOMURL(), e = [], i = [], [4, vr(function (n, a) {
                      if (a.type === CSSRule.FONT_FACE_RULE) {
                        var l = a.cssText,
                            h = ya.exec(l);

                        if (null !== h) {
                          var u = h[1].split(/ *, */).map(function (i) {
                            return r(o, void 0, void 0, function () {
                              var r, o, a, l, h, u;
                              return s(this, function (s) {
                                switch (s.label) {
                                  case 0:
                                    return null !== (r = /^url\(["']?([^"'\)]+)["']?\)([^,]*)$/.exec(i)) ? [3, 1] : [2, i];

                                  case 1:
                                    o = r[2], a = nn(n, r[1]), s.label = 2;

                                  case 2:
                                    return s.trys.push([2, 7,, 8]), [4, fr(a, void 0, {
                                      responseType: "blob"
                                    })];

                                  case 3:
                                    return l = s.sent(), null == window.navigator.msSaveOrOpenBlob ? [3, 4] : (h = t.createObjectURL(l.blob), e.push(h), [3, 6]);

                                  case 4:
                                    return [4, (p = l.blob, new Promise(function (t, e) {
                                      var i = new FileReader();
                                      i.onload = function (e) {
                                        t(i.result);
                                      }, i.onerror = function (t) {
                                        e(t);
                                      }, i.readAsDataURL(p);
                                    }))];

                                  case 5:
                                    h = s.sent(), s.label = 6;

                                  case 6:
                                    return [2, 'url("' + h + '")' + o];

                                  case 7:
                                    return u = s.sent(), console.error("Failed to load font", a, u), [2, null];

                                  case 8:
                                    return [2];
                                }

                                var p;
                              });
                            });
                          });
                          i.push(Promise.all(u).then(function (t) {
                            return 0 === (t = t.filter(function (t) {
                              return null != t;
                            })).length ? "" : l.replace(ya, "src: " + t.join(", ") + ";");
                          }));
                        }
                      }
                    })];

                  case 1:
                    return a.sent(), [4, Promise.all(i)];

                  case 2:
                    return n = a.sent(), [2, {
                      blobs: e,
                      cssText: n.filter(function (t) {
                        return !!t;
                      }).join("\n")
                    }];
                }
              });
            });
          }, e.prototype.getImage = function (t, e, i) {
            return r(this, void 0, void 0, function () {
              var n, r, o, a, l;
              return s(this, function (s) {
                switch (s.label) {
                  case 0:
                    return (n = this._objectsAlreadyHidden) || this.hideNonExportableSprites(), S(e) || (e = this.getFormatOptions(t)), [4, this.awaitValidSprites()];

                  case 1:
                    return s.sent(), [4, this.simplifiedImageExport()];

                  case 2:
                    if (!s.sent()) return [3, 10];
                    s.label = 3;

                  case 3:
                    return s.trys.push([3, 7,, 9]), [4, this.getCanvas(e)];

                  case 4:
                    return r = s.sent(), !1 === i ? [3, 6] : [4, this.addExtras(r, e)];

                  case 5:
                    r = s.sent(), s.label = 6;

                  case 6:
                    return o = r.toDataURL(this.getContentType(t), e.quality), this.disposeCanvas(r), n || this.restoreNonExportableSprites(), [2, o];

                  case 7:
                    return a = s.sent(), console.error(a.message + "\n" + a.stack), console.warn("Simple export failed, falling back to advanced export"), [4, this.getImageAdvanced(t, e, i)];

                  case 8:
                    return l = s.sent(), n || this.restoreNonExportableSprites(), [2, l];

                  case 9:
                    return [3, 12];

                  case 10:
                    return [4, this.getImageAdvanced(t, e, i)];

                  case 11:
                    return l = s.sent(), n || this.restoreNonExportableSprites(), [2, l];

                  case 12:
                    return [2];
                }
              });
            });
          }, e.prototype.addExtras = function (t, e, i) {
            return r(this, void 0, void 0, function () {
              var n,
                  o,
                  a,
                  l,
                  h,
                  u,
                  p,
                  c,
                  d,
                  f,
                  g,
                  y,
                  m,
                  v,
                  b = this;
              return s(this, function (x) {
                switch (x.label) {
                  case 0:
                    return this.extraSprites.length ? (n = 0, o = 0, a = t.width, l = t.height, h = 0, u = 0, [4, Promise.all(yt(this.extraSprites, function (t) {
                      return r(b, void 0, void 0, function () {
                        var r, p, c, d;
                        return s(this, function (s) {
                          switch (s.label) {
                            case 0:
                              return (r = t instanceof ba ? {
                                sprite: t,
                                position: "bottom"
                              } : t).position = r.position || "bottom", r.marginTop = r.marginTop || 0, r.marginRight = r.marginRight || 0, r.marginBottom = r.marginBottom || 0, r.marginLeft = r.marginLeft || 0, i ? [4, r.sprite.exporting.getCanvasAdvanced(e)] : [3, 2];

                            case 1:
                              return p = s.sent(), [3, 4];

                            case 2:
                              return [4, r.sprite.exporting.getCanvas(e)];

                            case 3:
                              p = s.sent(), s.label = 4;

                            case 4:
                              return c = p.width + r.marginLeft + r.marginRight, d = p.height + r.marginTop + r.marginBottom, "top" == r.position ? (a = r.crop ? l : W(a, c), o += d) : "right" == r.position ? (l = r.crop ? l : W(l, d), h += c) : "left" == r.position ? (l = r.crop ? l : W(l, d), n += c) : "bottom" === r.position && (a = r.crop ? l : W(a, c), u += d), [2, {
                                canvas: p,
                                position: r.position,
                                left: r.marginLeft,
                                top: r.marginTop,
                                width: c,
                                height: d
                              }];
                          }
                        });
                      });
                    }))]) : [3, 2];

                  case 1:
                    return p = x.sent(), (c = this.getDisposableCanvas()).width = n + a + h, c.height = o + l + u, d = c.getContext("2d"), (f = this.backgroundColor || this.findBackgroundColor(this.sprite.dom)) && (d.fillStyle = f.toString(), d.fillRect(0, 0, c.width, c.height)), m = (g = n) + a, v = (y = o) + l, mt(p, function (t) {
                      "top" == t.position ? (y -= t.height, d.drawImage(t.canvas, n + t.left, y + t.top)) : "right" == t.position ? (d.drawImage(t.canvas, m + t.left, o + t.top), m += t.width) : "left" == t.position ? (g -= t.width, d.drawImage(t.canvas, g + t.left, o + t.top)) : "bottom" === t.position && (d.drawImage(t.canvas, n + t.left, v + t.top), v += t.height), b.disposeCanvas(t.canvas);
                    }), d.drawImage(t, n, o), [2, c];

                  case 2:
                    return [2, t];
                }
              });
            });
          }, e.prototype.getCanvas = function (t) {
            return r(this, void 0, void 0, function () {
              var e, i, n, r, o, a, l, h, u, p, c, d, f, g, y, m;
              return s(this, function (s) {
                switch (s.label) {
                  case 0:
                    S(t) || (t = {}), e = this.backgroundColor || this.findBackgroundColor(this.sprite.dom), i = this.getDOMURL(), n = null, r = null, s.label = 1;

                  case 1:
                    return s.trys.push([1,, 4, 5]), a = this.sprite.pixelWidth, l = this.sprite.pixelHeight, h = tr(this.sprite.dom), u = er(this.sprite.dom), o = this.getDisposableCanvas(), p = this.getPixelRatio(t), o.style.width = a + "px", o.style.height = l + "px", o.width = a * p, o.height = l * p, c = o.getContext("2d"), 1 != p && c.setTransform(p, 0, 0, p, 0, 0), e && (c.fillStyle = e.toString(), c.fillRect(0, 0, a, l)), d = [], this.useWebFonts && d.push(this.getFontFamilies().then(function (t) {
                      return r = t.blobs, t.cssText;
                    })), d.push(this.imagesToDataURI(this.sprite.dom, t)), d.push(this.prepForeignObjects(this.sprite.dom, t)), [4, Promise.all(d)];

                  case 2:
                    return f = s.sent(), g = this.normalizeSVG("<style>" + f[0] + "</style>" + this.serializeElement(this.sprite.paper.defs) + this.serializeElement(this.sprite.dom), t, a, l, h, u), y = new Blob([g], {
                      type: "image/svg+xml"
                    }), n = i.createObjectURL(y), [4, this.loadNewImage(n, a, l, "anonymous")];

                  case 3:
                    return m = s.sent(), c.drawImage(m, 0, 0), [3, 5];

                  case 4:
                    return null !== n && i.revokeObjectURL(n), null !== r && mt(r, function (t) {
                      i.revokeObjectURL(t);
                    }), this.restoreRemovedObjects(), [7];

                  case 5:
                    return [2, o];
                }
              });
            });
          }, e.prototype.getCanvasAdvanced = function (t) {
            return r(this, void 0, void 0, function () {
              var e, i, n, r, o, a, l, h, u, p;
              return s(this, function (s) {
                switch (s.label) {
                  case 0:
                    return S(t) || (t = {}), [4, this.imagesToDataURI(this.sprite.dom, t)];

                  case 1:
                    return s.sent(), e = this.backgroundColor || this.findBackgroundColor(this.sprite.dom), [4, this.canvg];

                  case 2:
                    return i = s.sent(), n = this.sprite.pixelWidth, r = this.sprite.pixelHeight, o = tr(this.sprite.dom), a = er(this.sprite.dom), l = this.normalizeSVG(this.serializeElement(this.sprite.paper.defs) + this.serializeElement(this.sprite.dom), t, n, r, o, a, e), h = this.getDisposableCanvas(), u = this.getPixelRatio(t), h.style.width = n * u + "px", h.style.height = r * u + "px", h.width = n * u, h.height = r * u, p = {
                      useCORS: !0
                    }, 1 != u && (p.ignoreDimensions = !0, p.scaleWidth = n * u, p.scaleHeight = r * u), i(h, l, p), [2, h];
                }
              });
            });
          }, e.prototype.getImageAdvanced = function (t, e, i) {
            return r(this, void 0, void 0, function () {
              var n, r, o;
              return s(this, function (s) {
                switch (s.label) {
                  case 0:
                    return (n = this._objectsAlreadyHidden) || this.hideNonExportableSprites(), S(e) || (e = this.getFormatOptions(t)), [4, this.getCanvasAdvanced(e)];

                  case 1:
                    return r = s.sent(), !1 === i ? [3, 3] : [4, this.addExtras(r, e, !0)];

                  case 2:
                    r = s.sent(), s.label = 3;

                  case 3:
                    return o = r.toDataURL(this.getContentType(t), e.quality), this.disposeCanvas(r), n || this.restoreNonExportableSprites(), [2, o];
                }
              });
            });
          }, e.prototype.getDisposableCanvas = function () {
            var t = document.createElement("canvas");
            return t.style.position = "fixed", t.style.top = "-10000px", document.body.appendChild(t), t;
          }, e.prototype.disposeCanvas = function (t) {
            document.body.removeChild(t);
          }, e.prototype.getPixelRatio = function (t) {
            var e = t && t.scale ? t.scale : 1;
            return (this.useRetina ? ci() : 1) * e;
          }, e.prototype.imagesToDataURI = function (t, i) {
            return r(this, void 0, void 0, function () {
              var n, r, o, a, l, h;
              return s(this, function (s) {
                switch (s.label) {
                  case 0:
                    if (!(n = t.querySelectorAll("image")).length) return [3, 2];

                    for (r = [], o = n.length, a = 0; a < o; a++) l = n[a], (h = l.getAttributeNS(e.XLINK, "href")) && (-1 !== h.indexOf("data:image") || (-1 !== h.indexOf(".svg") ? r.push(this.svgToDataURI(l, i)) : r.push(this.imageToDataURI(l, i))));

                    return [4, Promise.all(r)];

                  case 1:
                    return s.sent(), [2];

                  case 2:
                    return [2];
                }
              });
            });
          }, e.prototype.prepForeignObjects = function (t, e) {
            return r(this, void 0, void 0, function () {
              var e, i, n;
              return s(this, function (r) {
                if ((e = t.querySelectorAll("foreignObject")).length) for (i = e.length, n = 0; n < i; n++) this.temporarilyRemoveObject(e[n]);
                return [2];
              });
            });
          }, e.prototype.imageToDataURI = function (t, i) {
            return r(this, void 0, void 0, function () {
              var n, r, o;
              return s(this, function (s) {
                switch (s.label) {
                  case 0:
                    return s.trys.push([0, 2,, 3]), [4, this.loadNewImage(t.getAttributeNS(e.XLINK, "href"), null, null, "anonymous")];

                  case 1:
                    n = s.sent(), (r = document.createElement("canvas")).width = n.width, r.height = n.height, r.getContext("2d").drawImage(n, 0, 0);

                    try {
                      return o = r.toDataURL(), t.setAttribute("href", o), [2, o];
                    } catch (e) {
                      return !1 !== i.keepTainted && this.temporarilyRemoveObject(t), [2, void 0];
                    }

                    return [3, 3];

                  case 2:
                    return s.sent(), i && !1 === i.keepTainted || this.temporarilyRemoveObject(t), [2, void 0];

                  case 3:
                    return [2];
                }
              });
            });
          }, e.prototype.svgToDataURI = function (t, i) {
            return r(this, void 0, void 0, function () {
              var n, r, o, a;
              return s(this, function (s) {
                switch (s.label) {
                  case 0:
                    n = t.getAttributeNS(e.XLINK, "href"), s.label = 1;

                  case 1:
                    return s.trys.push([1, 3,, 4]), [4, fr(n)];

                  case 2:
                    return r = s.sent(), o = this.adapter.apply("charset", {
                      charset: "base64",
                      type: "svg",
                      options: i
                    }).charset, a = this.adapter.apply("svgToDataURI", {
                      data: "data:" + this.getContentType("svg") + ";" + o + "," + btoa(r.response),
                      options: i
                    }).data, t.setAttributeNS(e.XLINK, "href", a), [2, a];

                  case 3:
                    return s.sent(), i && !1 === i.keepTainted || this.temporarilyRemoveObject(t), [2, void 0];

                  case 4:
                    return [2];
                }
              });
            });
          }, e.prototype.temporarilyRemoveObject = function (t, e) {
            var i = t.parentElement || t.parentNode;
            e || (e = this.sprite.paper.add("g").node), i.insertBefore(e, t), t.textContent, i.removeChild(t), this._removedObjects.push({
              element: t,
              placeholder: e
            });
          }, e.prototype.restoreRemovedObjects = function () {
            for (var t; t = this._removedObjects.pop();) (t.placeholder.parentElement || t.placeholder.parentNode).insertBefore(t.element, t.placeholder);
          }, e.prototype.simplifiedImageExport = function () {
            return r(this, void 0, void 0, function () {
              var t, e, i, n, r, o, a;
              return s(this, function (s) {
                switch (s.label) {
                  case 0:
                    if (!1 === this.useSimplifiedExport) return [2, !1];
                    if (!1 === (t = Fs.getCache("simplifiedImageExport")) || !0 === t) return [2, t];
                    s.label = 1;

                  case 1:
                    s.trys.push([1, 6,, 7]), (e = document.createElement("canvas")).width = 1, e.height = 1, i = e.getContext("2d"), n = this.getDOMURL(), r = new Blob([this.normalizeSVG("<g></g>", {}, 1, 1)], {
                      type: "image/svg+xml"
                    }), o = n.createObjectURL(r), a = void 0, s.label = 2;

                  case 2:
                    return s.trys.push([2, 4,, 5]), [4, this.loadNewImage(o, 1, 1)];

                  case 3:
                    return a = s.sent(), [3, 5];

                  case 4:
                    return s.sent(), [2, !1];

                  case 5:
                    i.drawImage(a, 0, 0), n.revokeObjectURL(o);

                    try {
                      return Fs.setCache("simplifiedImageExport", !0), [2, !0];
                    } catch (t) {
                      return Fs.setCache("simplifiedImageExport", !1), [2, !1];
                    }

                    return [3, 7];

                  case 6:
                    return s.sent(), Fs.setCache("simplifiedImageExport", !1), [2, !1];

                  case 7:
                    return [2];
                }
              });
            });
          }, e.prototype.loadNewImage = function (t, e, i, n) {
            return new Promise(function (r, s) {
              function o() {
                if (n) {
                  var e = a.src;
                  a.onerror = function () {
                    s(new Error('Loading image "' + t + '" failed'));
                  }, a.removeAttribute("crossorigin"), a.src = "", a.src = e;
                } else s(new Error('Loading image "' + t + '" failed'));
              }

              var a;
              a = e && i ? new Image(e, i) : new Image(), n && a.setAttribute("crossOrigin", n), a.onload = function () {
                r(a);
              }, a.onabort = o, a.onerror = o, a.src = t;
            });
          }, e.prototype.getDOMURL = function () {
            return self.URL || self.webkitURL || self;
          }, e.prototype.getSVG = function (t, e) {
            return r(this, void 0, void 0, function () {
              var i, n, r, o, a, l, h, u;
              return s(this, function (s) {
                switch (s.label) {
                  case 0:
                    return (i = this._objectsAlreadyHidden) || this.hideNonExportableSprites(), [4, this.awaitValidSprites()];

                  case 1:
                    return s.sent(), n = this.sprite.pixelWidth, r = this.sprite.pixelHeight, o = tr(this.sprite.dom), a = er(this.sprite.dom), l = this.normalizeSVG(this.serializeElement(this.sprite.paper.defs) + this.serializeElement(this.sprite.dom), e, n, r, o, a), h = this.adapter.apply("charset", {
                      charset: "charset=utf-8",
                      type: "svg",
                      options: e
                    }).charset, u = this.adapter.apply("getSVG", {
                      data: "data:" + this.getContentType(t) + ";" + h + "," + encodeURIComponent(l),
                      options: e
                    }).data, i || this.restoreNonExportableSprites(), [2, u];
                }
              });
            });
          }, e.prototype.normalizeSVG = function (t, e, i, n, r, s, o) {
            var a = "";
            i && (a += 'width="' + i + 'px" '), n && (a += 'height="' + n + 'px" ');
            var l = "";
            r && (l += "font-family: " + r.replace(/"/g, "") + ";"), s && (l += "font-size: " + s + ";"), t.match(/<svg/) ? "" !== a && (t = (t = (t = t.replace(/(<svg[^>]*)width="[^"]*"/, "$1")).replace(/(<svg[^>]*)height="[^"]*"/, "$1")).replace(/(<svg)/, "$1" + a)) : t = '<?xml version="1.0" encoding="utf-8"?><svg ' + a + ' style="' + l + '" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">' + t + "</svg>", o && (t = t.replace(/(<svg[^>]*>)/, '$1<rect width="100%" height="100%" fill="' + o.rgba + '"/>')), /MSIE |Trident\//.test(navigator.userAgent) && (t = t.replace(/<feColorMatrix [^\/>]*\/>/gi, ""));
            var h = new RegExp("url\\(" + yi(si()), "g");
            return t = t.replace(h, "url(#"), t = this.adapter.apply("normalizeSVG", {
              data: t,
              options: e
            }).data;
          }, e.prototype.serializeElement = function (t) {
            return new XMLSerializer().serializeToString(t);
          }, e.prototype.getPDF = function (t, e) {
            return r(this, void 0, void 0, function () {
              var i, n, r, o, a, l, h, u;
              return s(this, function (s) {
                switch (s.label) {
                  case 0:
                    return [4, this.getImage(e.imageFormat || "png", e)];

                  case 1:
                    return i = s.sent(), [4, this.pdfmake];

                  case 2:
                    return n = s.sent(), r = [30, 30, 30, 30], o = {
                      pageSize: e.pageSize || "A4",
                      pageOrientation: e.pageOrientation || "portrait",
                      pageMargins: e.pageMargins || r,
                      content: []
                    }, (a = this.adapter.apply("title", {
                      title: this.title,
                      options: e
                    }).title) && o.content.push({
                      text: a,
                      fontSize: e.fontSize,
                      bold: !0,
                      margin: [0, 0, 0, 15]
                    }), e.addURL && o.content.push({
                      text: this.language.translate("Saved from") + ": " + document.location.href,
                      fontSize: e.fontSize,
                      margin: [0, 0, 0, 15]
                    }), "pdfdata" != t && o.content.push({
                      image: i,
                      fit: this.getPageSizeFit(o.pageSize, o.pageMargins)
                    }), "pdfdata" == t || e.addData ? (h = (l = o.content).push, u = {}, [4, this.getPDFData("pdf", e)]) : [3, 4];

                  case 3:
                    h.apply(l, [(u.table = s.sent(), u)]), s.label = 4;

                  case 4:
                    return o = this.adapter.apply("pdfmakeDocument", {
                      doc: o,
                      options: e
                    }).doc, [4, new Promise(function (t, e) {
                      n.createPdf(o).getDataUrl(function (e) {
                        t(e);
                      });
                    })];

                  case 5:
                    return [2, s.sent()];
                }
              });
            });
          }, e.prototype.getPDFData = function (t, e) {
            return r(this, void 0, void 0, function () {
              var t,
                  i,
                  n,
                  r,
                  o,
                  a = this;
              return s(this, function (s) {
                if (t = {
                  body: []
                }, i = this.adapter.apply("formatDataFields", {
                  dataFields: this.dataFields,
                  format: "pdf"
                }).dataFields, n = this.data, e.pivot) Qt(i, function (i, n) {
                  var r = [];
                  e.addColumnNames && r.push(n);

                  for (var s = a.data.length, o = 0; o < s; o++) {
                    var l = a.data[o][i];
                    r.push(a.convertToSpecialFormat(i, l, e, !0));
                  }

                  t.body.push(a.getPDFDataRow(r, e, void 0, !0));
                });else for (e.addColumnNames && (t.body.push(this.getPDFDataRow(i, e, void 0, !0)), t.headerRows = 1), r = n.length, o = 0; o < r; o++) t.body.push(this.getPDFDataRow(n[o], e, i));
                return [2, this.adapter.apply("pdfmakeTable", {
                  table: t,
                  options: e
                }).table];
              });
            });
          }, e.prototype.getPDFDataRow = function (t, e, i, n) {
            var r = this;
            void 0 === n && (n = !1);
            var s = [];
            return i || (i = t), Qt(i, function (i, o) {
              var a = r.convertEmptyValue(i, t[i], e),
                  l = n ? a : r.convertToSpecialFormat(i, a, e);
              l = "" + l, s.push(l);
            }), s;
          }, e.prototype.getPageSizeFit = function (t, e) {
            var i = [0, 0, 0, 0];
            "number" == typeof e ? i = [e, e, e, e] : 2 == e.length ? i = [e[0], e[1], e[0], e[1]] : 4 == e.length && (i = e);
            var n = {
              "4A0": [4767.87, 6740.79],
              "2A0": [3370.39, 4767.87],
              A0: [2383.94, 3370.39],
              A1: [1683.78, 2383.94],
              A2: [1190.55, 1683.78],
              A3: [841.89, 1190.55],
              A4: [595.28, 841.89],
              A5: [419.53, 595.28],
              A6: [297.64, 419.53],
              A7: [209.76, 297.64],
              A8: [147.4, 209.76],
              A9: [104.88, 147.4],
              A10: [73.7, 104.88],
              B0: [2834.65, 4008.19],
              B1: [2004.09, 2834.65],
              B2: [1417.32, 2004.09],
              B3: [1000.63, 1417.32],
              B4: [708.66, 1000.63],
              B5: [498.9, 708.66],
              B6: [354.33, 498.9],
              B7: [249.45, 354.33],
              B8: [175.75, 249.45],
              B9: [124.72, 175.75],
              B10: [87.87, 124.72],
              C0: [2599.37, 3676.54],
              C1: [1836.85, 2599.37],
              C2: [1298.27, 1836.85],
              C3: [918.43, 1298.27],
              C4: [649.13, 918.43],
              C5: [459.21, 649.13],
              C6: [323.15, 459.21],
              C7: [229.61, 323.15],
              C8: [161.57, 229.61],
              C9: [113.39, 161.57],
              C10: [79.37, 113.39],
              RA0: [2437.8, 3458.27],
              RA1: [1729.13, 2437.8],
              RA2: [1218.9, 1729.13],
              RA3: [864.57, 1218.9],
              RA4: [609.45, 864.57],
              SRA0: [2551.18, 3628.35],
              SRA1: [1814.17, 2551.18],
              SRA2: [1275.59, 1814.17],
              SRA3: [907.09, 1275.59],
              SRA4: [637.8, 907.09],
              EXECUTIVE: [521.86, 756],
              FOLIO: [612, 936],
              LEGAL: [612, 1008],
              LETTER: [612, 792],
              TABLOID: [792, 1224]
            }[t];
            return n[0] -= i[0] + i[2], n[1] -= i[1] + i[3], n;
          }, e.prototype.getExcel = function (t, e) {
            return r(this, void 0, void 0, function () {
              var i,
                  n,
                  r,
                  o,
                  a,
                  l,
                  h,
                  u,
                  p = this;
              return s(this, function (s) {
                switch (s.label) {
                  case 0:
                    return [4, this.xlsx];

                  case 1:
                    if (i = s.sent(), n = this.adapter.apply("xlsxWorkbookOptions", {
                      options: {
                        bookType: "xlsx",
                        bookSST: !1,
                        type: "base64"
                      }
                    }).options, r = this.normalizeExcelSheetName(this.adapter.apply("xlsxSheetName", {
                      name: this.title || this.language.translate("Data")
                    }).name), o = {
                      SheetNames: [r],
                      Sheets: {}
                    }, a = [], l = this.adapter.apply("formatDataFields", {
                      dataFields: this.dataFields,
                      format: "xslx"
                    }).dataFields, e.pivot) Qt(l, function (t, i) {
                      var n = [];
                      e.addColumnNames && n.push(i);

                      for (var r = p.data.length, s = 0; s < r; s++) {
                        var o = p.data[s][t];
                        n.push(p.convertToSpecialFormat(t, o, e, !0));
                      }

                      a.push(p.getExcelRow(n, e, void 0, !0));
                    });else for (e.addColumnNames && a.push(this.getExcelRow(l, e, void 0, !0)), h = this.data.length, u = 0; u < h; u++) a.push(this.getExcelRow(this.data[u], e, l));
                    return o.Sheets[r] = i.utils.aoa_to_sheet(a), [2, this.adapter.apply("getExcel", {
                      data: "data:" + this.getContentType(t) + ";base64," + i.write(o, n),
                      options: e
                    }).data];
                }
              });
            });
          }, e.prototype.normalizeExcelSheetName = function (t) {
            return vi(t = t.replace(/([:\\\/?*\[\]]+)/g, " "), 31, "...", !0);
          }, e.prototype.getExcelRow = function (t, e, i, n) {
            var r = this;
            void 0 === n && (n = !1);
            var s = [];
            return i || (i = t), Qt(i, function (i, o) {
              var a = r.convertEmptyValue(i, t[i], e),
                  l = n ? a : r.convertToSpecialFormat(i, a, e, !0);
              s.push(l);
            }), s;
          }, e.prototype.getCSV = function (t, e) {
            return r(this, void 0, void 0, function () {
              var i,
                  n,
                  r,
                  o,
                  a,
                  l,
                  h,
                  u,
                  p = this;
              return s(this, function (s) {
                if (i = "", n = this.adapter.apply("formatDataFields", {
                  dataFields: this.dataFields,
                  format: "csv"
                }).dataFields, r = "", o = this.data, e.pivot) Qt(n, function (t, n) {
                  var s = [];
                  e.addColumnNames && s.push(n);

                  for (var o = p.data.length, a = 0; a < o; a++) {
                    var l = p.data[a][t];
                    s.push(p.convertToSpecialFormat(t, l, e, !0));
                  }

                  i += r + p.getCSVRow(s, e, void 0, !0), r = "\n";
                });else {
                  for (a = o.length, l = 0; l < a; l++) h = this.getCSVRow(o[l], e, n), e.reverse ? i = h + r + i : i += r + h, r = "\n";

                  e.addColumnNames && (i = this.getCSVRow(n, e, void 0, !0) + r + i);
                }
                return u = this.adapter.apply("charset", {
                  charset: "charset=utf-8",
                  type: t,
                  options: e
                }).charset, [2, this.adapter.apply("getCSV", {
                  data: "data:" + this.getContentType(t) + ";" + u + "," + encodeURIComponent(i),
                  options: e
                }).data];
              });
            });
          }, e.prototype.getCSVRow = function (t, e, i, n) {
            var r = this;
            void 0 === n && (n = !1);
            var s = e.separator || ",",
                o = [];
            return i || (i = t), Qt(i, function (i, a) {
              var l = r.convertEmptyValue(i, t[i], e),
                  h = n ? l : r.convertToSpecialFormat(i, l, e);
              h = (h = "" + h).replace(/"/g, '""'), (e.forceQuotes || h.search(new RegExp('"|\n|' + s, "g")) >= 0) && (h = '"' + h + '"'), o.push(h);
            }), o.join(s);
          }, e.prototype.getHTML = function (t, e) {
            return r(this, void 0, void 0, function () {
              var i,
                  n,
                  r,
                  o,
                  a,
                  l,
                  h = this;
              return s(this, function (s) {
                if (i = "<table>", e.tableClass && (i = '<table class="' + e.tableClass + '">'), n = this.adapter.apply("formatDataFields", {
                  dataFields: this.dataFields,
                  format: "html"
                }).dataFields, r = this.data, e.pivot) Qt(n, function (t, n) {
                  var r = [];
                  e.addColumnNames && r.push(n);

                  for (var s = h.data.length, o = 0; o < s; o++) {
                    var a = h.data[o][t];
                    r.push(h.convertToSpecialFormat(t, a, e, !0));
                  }

                  i += "\n" + h.getHTMLRow(r, e, void 0, !0);
                });else for (e.addColumnNames && (i += "\n" + this.getHTMLRow(n, e, void 0, !0, !0)), o = r.length, a = 0; a < o; a++) i += "\n" + this.getHTMLRow(r[a], e, n);
                return i += "</table>", l = this.adapter.apply("charset", {
                  charset: "charset=utf-8",
                  type: t,
                  options: e
                }).charset, [2, this.adapter.apply("getHTML", {
                  data: "data:" + this.getContentType(t) + ";" + l + "," + encodeURIComponent(i),
                  options: e
                }).data];
              });
            });
          }, e.prototype.getHTMLRow = function (t, e, i, n, r) {
            var s = this;
            void 0 === n && (n = !1), void 0 === r && (r = !1);
            var o = "\t<tr>";
            e.rowClass && (o = '\t<tr class="' + e.rowClass + '">'), i || (i = t);
            var a = r ? "th" : "td",
                l = !0;
            return Qt(i, function (i, r) {
              var h = s.convertEmptyValue(i, t[i], e),
                  u = n ? h : s.convertToSpecialFormat(i, h, e);
              u = (u = "" + u).replace(/[\u00A0-\u9999<>\&]/gim, function (t) {
                return "&#" + t.charCodeAt(0) + ";";
              });
              var p = a;
              e.pivot && l && (p = "th"), e.cellClass ? o += "\n\t\t<" + p + ' class="' + e.cellClass + '">' + u + "</" + p + ">" : o += "\n\t\t<" + p + ">" + u + "</" + p + ">", l = !1;
            }), o += "\n\t</tr>";
          }, e.prototype.getJSON = function (t, e) {
            return r(this, void 0, void 0, function () {
              var i,
                  n,
                  r,
                  o,
                  a,
                  l,
                  h,
                  u,
                  p = this;
              return s(this, function (s) {
                if (n = this.adapter.apply("formatDataFields", {
                  dataFields: this.dataFields,
                  format: "csv"
                }).dataFields, this._dynamicDataFields) i = this.data;else for (i = [], r = this.data, o = function o(t, s) {
                  var o = r[s];

                  if ("object" == typeof o) {
                    var a = {};
                    Qt(o, function (t, i) {
                      S(n[t]) && (a[n[t]] = p.convertToSpecialFormat(t, i, e));
                    }), i.push(a);
                  }
                }, a = r.length, l = 0; l < a; l++) o(0, l);
                return h = JSON.stringify(i, function (t, i) {
                  return "object" == typeof i && Qt(i, function (t, n) {
                    i[t] = p.convertToSpecialFormat(t, n, e);
                  }), i;
                }, e.indent), u = this.adapter.apply("charset", {
                  charset: "charset=utf-8",
                  type: t,
                  options: e
                }).charset, [2, this.adapter.apply("getJSON", {
                  data: "data:" + this.getContentType(t) + ";" + u + "," + encodeURIComponent(h),
                  options: e
                }).data];
              });
            });
          }, e.prototype.convertToSpecialFormat = function (t, e, i, n) {
            if ("number" == typeof e) if (this.isDateField(t)) e = new Date(e);else {
              if (this.isDurationField(t)) return this.durationFormatter.format(e, this.durationFormat);
              if (this.isNumberField(t) && this.numberFormat) return this.numberFormatter.format(e, this.numberFormat);
            }
            return e instanceof Date ? i.useTimestamps ? e = e.getTime() : i.useLocale ? n || (e = e.toLocaleString()) : e = this.dateFormatter.format(e, this.dateFormat) : T(e) && this.isDateField(t) && this.dateFormat && (e = this.dateFormatter.format(this.dateFormatter.parse(e), this.dateFormat)), e;
          }, e.prototype.convertEmptyValue = function (t, e, i) {
            return S(e) ? e : i.emptyAs;
          }, e.prototype.download = function (t, e) {
            return r(this, void 0, void 0, function () {
              var i, n, r, o, a, l, h, u, p, c, d, f, g, y, m;
              return s(this, function (s) {
                if (this.msBlobDownloadSupport()) {
                  if (f = t.split(";"), g = f.shift().replace(/data:/, ""), t = decodeURIComponent(f.join(";").replace(/^[^,]*,/, "")), -1 != ["image/svg+xml", "application/json", "text/csv"].indexOf(g)) return i = new Blob([t], {
                    type: g
                  }), window.navigator.msSaveBlob(i, e), [2, !0];

                  try {
                    r = atob(t), t = r;
                  } catch (t) {
                    return [2, !1];
                  }

                  for (l = new Array(t.length), h = 0; h < t.length; ++h) u = t.charCodeAt(h), l[h] = u;

                  p = new Blob([new Uint8Array(l)], {
                    type: g
                  }), window.navigator.msSaveBlob(p, e);
                } else if (this.blobDownloadSupport()) {
                  if ((n = document.createElement("a")).download = e, document.body.appendChild(n), f = t.split(";"), g = f.shift().replace(/data:/, ""), t = decodeURIComponent(f.join(";").replace(/^[^,]*,/, "")), -1 != ["image/svg+xml", "application/json", "text/csv", "text/html"].indexOf(g)) return o = new Blob([t], {
                    type: g
                  }), a = window.URL.createObjectURL(o), n.href = a, n.download = e, n.click(), setTimeout(function () {
                    document.body.removeChild(n), window.URL.revokeObjectURL(a);
                  }, 100), [2, !0];

                  try {
                    r = atob(t), t = r;
                  } catch (t) {
                    return [2, !1];
                  }

                  for (l = new Array(t.length), h = 0; h < t.length; ++h) u = t.charCodeAt(h), l[h] = u;

                  p = new Blob([new Uint8Array(l)], {
                    type: g
                  }), c = window.URL.createObjectURL(p), n.href = c, n.download = e, document.body.appendChild(n), n.click(), document.body.removeChild(n), setTimeout(function () {
                    window.URL.revokeObjectURL(c);
                  }, 100);
                } else this.linkDownloadSupport() ? ((d = document.createElement("a")).download = e, d.href = t, document.body.appendChild(d), d.click(), document.body.removeChild(d)) : this.legacyIE() ? 4 === (f = t.match(/^data:(.*);[ ]*([^,]*),(.*)$/)).length && ("base64" == f[2] ? f[1].match(/^image\//) && this.showModal('<img src="' + t + '" style="float: left; max-width: 50%; max-height: 80%; margin: 0 1em 0.5em 0; border: 1px solid #eee;" /><p>' + this.language.translate('To save the image, right-click thumbnail on the left and choose "Save picture as..."') + '</p><p style="text-align: center;"><small>' + this.language.translate("(Press ESC to close this message)") + "</small></p>", this.language.translate("Image Export Complete")) : (g = void 0, e.match(/\.svg$/) ? g = "image/svg+xml" : (g = "text/plain", e += ".txt"), (y = document.createElement("iframe")).width = "1px", y.height = "1px", y.style.display = "none", document.body.appendChild(y), (m = y.contentDocument).open(g, "replace"), m.write(decodeURIComponent(f[3])), m.close(), m.execCommand("SaveAs", !0, e), document.body.removeChild(y))) : window.location.href = t;

                return [2, !0];
              });
            });
          }, e.prototype.downloadSupport = function () {
            return this.linkDownloadSupport() || this.msBlobDownloadSupport();
          }, e.prototype.linkDownloadSupport = function () {
            var t = Fs.getCache("linkDownloadSupport");
            if (!1 === t || !0 === t) return t;
            var e = void 0 !== document.createElement("a").download;
            return Fs.setCache("linkDownloadSupport", e), e;
          }, e.prototype.blobDownloadSupport = function () {
            return S(window.Blob);
          }, e.prototype.msBlobDownloadSupport = function () {
            return S(window.navigator.msSaveOrOpenBlob);
          }, e.prototype.legacyIE = function () {
            var t = document.createElement("div");
            return t.innerHTML = "\x3c!--[if lt IE 10]><i></i><![endif]--\x3e", 1 == t.getElementsByTagName("i").length;
          }, e.prototype.print = function (t, e, i) {
            return r(this, void 0, void 0, function () {
              return s(this, function (n) {
                return "css" == e.printMethod ? [2, this.printViaCSS(t, e, i)] : [2, this.printViaIframe(t, e, i)];
              });
            });
          }, e.prototype.printViaCSS = function (t, e, i) {
            return r(this, void 0, void 0, function () {
              var n, r, o, a;
              return s(this, function (s) {
                return n = document.documentElement.scrollTop || document.body.scrollTop, r = new Ao("body > *", {
                  display: "none",
                  position: "fixed",
                  visibility: "hidden",
                  opacity: "0",
                  clipPath: "polygon(0px 0px,0px 0px,0px 0px,0px 0px);"
                }), i && document && document.title && (o = document.title, document.title = i), (a = new Image()).src = t, a.style.maxWidth = "100%", a.style.display = "block", a.style.position = "relative", a.style.visibility = "visible", a.style.opacity = "1", a.style.clipPath = "none", document.body.appendChild(a), this.setTimeout(function () {
                  window.print();
                }, 50), /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream && e.delay < 1e3 ? e.delay = 1e3 : e.delay < 100 && (e.delay = 100), this.setTimeout(function () {
                  document.body.removeChild(a), r.dispose(), o && (document.title = document.title), document.documentElement.scrollTop = document.body.scrollTop = n;
                }, e.delay || 500), [2, !0];
              });
            });
          }, e.prototype.printViaIframe = function (t, e, i) {
            return r(this, void 0, void 0, function () {
              var n, r;
              return s(this, function (s) {
                return (n = document.createElement("iframe")).style.visibility = "hidden", document.body.appendChild(n), n.contentWindow.document.open(), n.contentWindow.document.close(), (r = new Image()).src = t, r.style.maxWidth = "100%", i && (n.contentWindow.document.title = i), n.contentWindow.document.body.appendChild(r), n.load = function () {
                  n.contentWindow.document.body.appendChild(r);
                }, this.setTimeout(function () {
                  try {
                    n.contentWindow.document.execCommand("print", !1, null) || n.contentWindow.print();
                  } catch (t) {
                    n.contentWindow.print();
                  }
                }, e.delay || 50), /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream && e.delay < 1e3 ? e.delay = 1e3 : e.delay < 100 && (e.delay = 100), this.setTimeout(function () {
                  document.body.removeChild(n);
                }, e.delay + 50 || 100), [2, !0];
              });
            });
          }, e.prototype.findBackgroundColor = function (t) {
            var e = 1,
                i = Xn(t, "background-color");

            if ((i.match(/[^,]*,[^,]*,[^,]*,[ ]?0/) || "transparent" == i) && (e = 0), 0 == e) {
              var n = t.parentElement;
              return n ? this.findBackgroundColor(n) : Je("#fff");
            }

            return Je(i, e);
          }, Object.defineProperty(e.prototype, "container", {
            get: function get() {
              return this.adapter.apply("container", {
                container: this._container
              }).container;
            },
            set: function set(t) {
              this._container = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "sprite", {
            get: function get() {
              return this.adapter.apply("sprite", {
                sprite: this._sprite
              }).sprite;
            },
            set: function set(t) {
              this._sprite = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "extraSprites", {
            get: function get() {
              return this.adapter.apply("extraSprites", {
                extraSprites: this._extraSprites
              }).extraSprites;
            },
            set: function set(t) {
              this._extraSprites = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "validateSprites", {
            get: function get() {
              return this.adapter.apply("validateSprites", {
                validateSprites: this._validateSprites
              }).validateSprites;
            },
            set: function set(t) {
              this._validateSprites = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "data", {
            get: function get() {
              return this.adapter.apply("data", {
                data: this._data
              }).data;
            },
            set: function set(t) {
              this._data = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "dataFields", {
            get: function get() {
              return this._dataFields || this.generateDataFields(), this.adapter.apply("dataFields", {
                dataFields: this._dataFields
              }).dataFields;
            },
            set: function set(t) {
              this._dataFields = t, this._dynamicDataFields = !1;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.handleDataUpdated = function () {
            this._dynamicDataFields && (this._dataFields = void 0);
          }, Object.defineProperty(e.prototype, "dateFormatter", {
            get: function get() {
              return this._dateFormatter || (this._dateFormatter = new ua(), this._dateFormatter.language = this.language), this.adapter.apply("dateFormatter", {
                dateFormatter: this._dateFormatter
              }).dateFormatter;
            },
            set: function set(t) {
              this._dateFormatter = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "dateFormat", {
            get: function get() {
              return this.adapter.apply("dateFormat", {
                dateFormat: this._dateFormat
              }).dateFormat;
            },
            set: function set(t) {
              this._dateFormat = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "dateFields", {
            get: function get() {
              return this._dateFields || (this._dateFields = new Ns()), this.adapter.apply("dateFields", {
                dateFields: this._dateFields
              }).dateFields;
            },
            set: function set(t) {
              this._dateFields = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "numberFormatter", {
            get: function get() {
              return this._numberFormatter || (this._numberFormatter = new ha(), this._numberFormatter.language = this.language), this.adapter.apply("numberFormatter", {
                numberFormatter: this._numberFormatter
              }).numberFormatter;
            },
            set: function set(t) {
              this._dateFormatter = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "numberFormat", {
            get: function get() {
              return this.adapter.apply("numberFormat", {
                numberFormat: this._numberFormat
              }).numberFormat;
            },
            set: function set(t) {
              this._numberFormat = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "numberFields", {
            get: function get() {
              return this._numberFields || (this._numberFields = new Ns()), this.adapter.apply("numberFields", {
                numberFields: this._numberFields
              }).numberFields;
            },
            set: function set(t) {
              this._numberFields = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "durationFormatter", {
            get: function get() {
              return this._durationFormatter || (this._durationFormatter = new pa(), this._durationFormatter.language = this.language), this.adapter.apply("durationFormatter", {
                durationFormatter: this._durationFormatter
              }).durationFormatter;
            },
            set: function set(t) {
              this._durationFormatter = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "durationFormat", {
            get: function get() {
              return this.adapter.apply("durationFormat", {
                durationFormat: this._durationFormat
              }).durationFormat;
            },
            set: function set(t) {
              this._durationFormat = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "durationFields", {
            get: function get() {
              return this._durationFields || (this._durationFields = new Ns()), this.adapter.apply("durationFields", {
                durationFields: this._durationFields
              }).durationFields;
            },
            set: function set(t) {
              this._durationFields = t;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.generateDataFields = function () {
            var t = this;
            this._dataFields = {}, this.data.length && mt(this.data, function (e) {
              Qt(e, function (e, i) {
                S(t._dataFields[e]) || (t._dataFields[e] = t.adapter.apply("dataFieldName", {
                  name: e,
                  field: e
                }).name);
              });
            });
          }, e.prototype.isDateField = function (t) {
            return this.adapter.apply("isDateField", {
              isDateField: this.dateFields.contains(t),
              field: t
            }).isDateField;
          }, e.prototype.isNumberField = function (t) {
            return this.adapter.apply("isNumberField", {
              isNumberField: this.numberFields.contains(t),
              field: t
            }).isNumberField;
          }, e.prototype.isDurationField = function (t) {
            return this.adapter.apply("isDurationField", {
              isDurationField: this.durationFields.contains(t),
              field: t
            }).isDurationField;
          }, e.prototype.getContentType = function (t) {
            var e = "";

            switch (t) {
              case "png":
              case "gif":
                e = "image/" + t;
                break;

              case "jpg":
                e = "image/jpeg";
                break;

              case "svg":
                e = "image/svg+xml";
                break;

              case "csv":
                e = "text/csv";
                break;

              case "json":
                e = "application/json";
                break;

              case "html":
                e = "text/html";
                break;

              case "pdf":
              case "pdfdata":
                e = "application/pdf";
                break;

              case "xlsx":
                e = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
            }

            return this.adapter.apply("contentType", {
              contentType: e,
              type: t
            }).contentType;
          }, Object.defineProperty(e.prototype, "filePrefix", {
            get: function get() {
              return this.adapter.apply("filePrefix", {
                filePrefix: this._filePrefix
              }).filePrefix;
            },
            set: function set(t) {
              this._filePrefix = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "backgroundColor", {
            get: function get() {
              return this.adapter.apply("backgroundColor", {
                backgroundColor: this._backgroundColor
              }).backgroundColor;
            },
            set: function set(t) {
              this._backgroundColor = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "title", {
            get: function get() {
              return this.adapter.apply("title", {
                title: this._title
              }).title;
            },
            set: function set(t) {
              this._title = t;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.showPreloader = function () {
            var t = this.preloader;
            t && (t.progress = .5, t.label.text = "...");
          }, e.prototype.hidePreloader = function () {
            var t = this.preloader;
            t && (t.progress = 1);
          }, Object.defineProperty(e.prototype, "preloader", {
            get: function get() {
              return this._sprite && this._sprite.parent && this._sprite.parent.preloader ? this._sprite.parent.preloader : void 0;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.showTimeout = function () {
            this.showModal(this.adapter.apply("timeoutMessage", {
              message: this.language.translate("Export operation took longer than expected. Something might have gone wrong.")
            }).message);
          }, e.prototype.hideTimeout = function () {
            this._timeoutTimeout && (this.removeDispose(this._timeoutTimeout), this._timeoutTimeout = null), this.hideModal();
          }, Object.defineProperty(e.prototype, "language", {
            get: function get() {
              return this._language || (this._language = new aa()), this._language;
            },
            set: function set(t) {
              this._language = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "modal", {
            get: function get() {
              return this._modal || (this._modal = new Go(), this._modal.adapter.add("classPrefix", function (t) {
                return t = Ms.classNamePrefix + t;
              })), this._modal;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.showModal = function (t, e) {
            this.hideModal(), this.hidePreloader();
            var i = this.modal;
            i.container = this.sprite.svgContainer.SVGContainer, i.content = t, i.readerTitle = e, i.open();
          }, e.prototype.hideModal = function () {
            this._modal && this.modal.close();
          }, e.prototype._canvg = function () {
            return r(this, void 0, void 0, function () {
              var t;
              return s(this, function (e) {
                switch (e.label) {
                  case 0:
                    return [4, i.e(1).then(i.t.bind(null, 19, 7))];

                  case 1:
                    return null != (t = e.sent())["default"] ? [2, t["default"]] : [2, t];
                }
              });
            });
          }, Object.defineProperty(e.prototype, "canvg", {
            get: function get() {
              return this._canvg();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "pdfmake", {
            get: function get() {
              return null == ca && (ca = function () {
                return r(this, void 0, void 0, function () {
                  var t, e, n, r;
                  return s(this, function (s) {
                    switch (s.label) {
                      case 0:
                        return [4, Promise.all([i.e(2).then(i.t.bind(null, 17, 7)), i.e(2).then(i.bind(null, 18))])];

                      case 1:
                        return t = s.sent(), e = t[0], n = t[1], (r = window).pdfMake = r.pdfMake || {}, r.pdfMake.vfs = n["default"], e.vfs = n["default"], [2, e];
                    }
                  });
                });
              }()), ca;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype._xlsx = function () {
            return r(this, void 0, void 0, function () {
              return s(this, function (t) {
                switch (t.label) {
                  case 0:
                    return [4, Promise.all([i.e(3), i.e(4)]).then(i.t.bind(null, 20, 7))];

                  case 1:
                    return [2, t.sent()];
                }
              });
            });
          }, Object.defineProperty(e.prototype, "xlsx", {
            get: function get() {
              return this._xlsx();
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setFormatOptions = function (t, e) {
            this._formatOptions.setKey(t, e);
          }, e.prototype.getFormatOptions = function (t) {
            return this._formatOptions.getKey(t);
          }, e.prototype._disablePointers = function () {
            S(this._spriteInteractionsEnabled) || (this._spriteInteractionsEnabled = this.sprite.interactionsEnabled), this.sprite.interactionsEnabled = !1;
          }, e.prototype._releasePointers = function () {
            S(this._spriteInteractionsEnabled) && (this.sprite.interactionsEnabled = this._spriteInteractionsEnabled);
          }, e.prototype.hideNonExportableSprites = function () {
            var t = this;

            if (!this._objectsAlreadyHidden) {
              var e = this.sprite.svgContainer;
              e && mt(e.nonExportableSprites, function (e) {
                e.isHidden || e.isHiding || t._hiddenObjects.push(e), e.hide(0);
              }), this._objectsAlreadyHidden = !0;
            }
          }, e.prototype.restoreNonExportableSprites = function () {
            this._objectsAlreadyHidden && (mt(this._hiddenObjects, function (t) {
              t.show(0);
            }), this._hiddenObjects = [], this._objectsAlreadyHidden = !1);
          }, e.prototype.awaitValidSprites = function () {
            return r(this, void 0, void 0, function () {
              var t;
              return s(this, function (e) {
                switch (e.label) {
                  case 0:
                    return t = [], this.validateSprites.length && mt(this.validateSprites, function (e, i) {
                      e.invalid && t.push(new Promise(function (t, i) {
                        e.events.once("validated", function (e) {
                          t();
                        });
                      }));
                    }), t.length ? [4, Promise.all(t)] : [3, 2];

                  case 1:
                    e.sent(), e.label = 2;

                  case 2:
                    return [2];
                }
              });
            });
          }, e.prototype.processConfig = function (e) {
            Fs.registeredClasses.ExportMenu = ga, e && S(e.menu) && !S(e.menu.type) && (e.menu.type = "ExportMenu"), t.prototype.processConfig.call(this, e);
          }, e.XLINK = "http://www.w3.org/1999/xlink", e;
        }(fa),
            va = ["fill", "fillOpacity", "stroke", "strokeOpacity", "strokeWidth", "strokeDasharray", "strokeDashoffset"],
            ba = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.properties = {}, e._eventDispatcher = new Co(e), e._bindings = {}, e._isTemplate = !1, e._isPath = !1, e._inited = !1, e._ready = !1, e.isHiding = !1, e._isHidden = !1, e.isShowing = !1, e.isStandaloneInstance = !1, e._isActive = !1, e._mask = new ys(), e._positionPrecision = 3, e._language = new ys(), e._exporting = new ys(), e._exportable = !0, e._bbox = {
              x: 0,
              y: 0,
              width: 0,
              height: 0
            }, e.invalid = !1, e.positionInvalid = !1, e.propertyFields = {}, e.applyOnClones = !1, e.maxLeft = 0, e.maxRight = 0, e.maxTop = 0, e.maxBottom = 0, e._isDragged = !1, e._isResized = !1, e._disabled = !1, e._internalDisabled = !1, e._updateDisabled = !1, e._internalDefaultsApplied = !1, e.rollOutDelay = 0, e.isBaseSprite = !1, e.shouldClone = !0, e.appeared = !1, e.ex = 0, e.ey = 0, e.dragWhileResize = !1, e.className = "Sprite", e._disposers.push(e._eventDispatcher), e.uid, e.group = e.paper.addGroup("g"), e.setPropertyValue("scale", 1), e.setPropertyValue("rotation", 0), e.setPropertyValue("align", "none"), e.setPropertyValue("valign", "none"), e.setPropertyValue("pixelPerfect", !1), e.setPropertyValue("visible", !0), e.setPropertyValue("tooltipPosition", "fixed"), e.setPropertyValue("verticalCenter", "none"), e.setPropertyValue("horizontalCenter", "none"), e.setPropertyValue("marginTop", 0), e.setPropertyValue("marginBottom", 0), e.setPropertyValue("marginLeft", 0), e.setPropertyValue("marginRight", 0), e.setPropertyValue("dx", 0), e.setPropertyValue("dy", 0), e.setPropertyValue("paddingTop", 0), e.setPropertyValue("paddingBottom", 0), e.setPropertyValue("paddingRight", 0), e.setPropertyValue("paddingLeft", 0), e.setPropertyValue("togglable", !1), e.setPropertyValue("hidden", !1), e.setPropertyValue("urlTarget", "_self"), e.setPropertyValue("alwaysShowTooltip", !1), e._prevMeasuredWidth = 0, e._prevMeasuredHeight = 0, e._measuredWidth = 0, e._measuredHeight = 0, e._isMeasured = !0, e.invalidate(), e.applyTheme(), e._disposers.push(e.events), e._disposers.push(e.group), e._disposers.push(e._mask), e._disposers.push(e._language), e._disposers.push(e._exporting), e._disposers.push(new fs(function () {
              Qt(e._bindings, function (t, e) {
                e.dispose();
              });
            })), e.setPropertyValue("interactionsEnabled", !0), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "events", {
            get: function get() {
              return this._eventDispatcher;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "adapter", {
            get: function get() {
              return this._adapterO || (this._adapterO = new Ks(this)), this._adapterO;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.applyTheme = function () {
            t.prototype.applyTheme.call(this), Ms.autoSetClassName && this.setClassName();
          }, e.prototype.getCurrentThemes = function () {
            var t = this._themes;
            if (t) return t;
            var e = this.parent;
            return e ? e.getCurrentThemes() : Fs.themes;
          }, e.prototype.applyInternalDefaults = function () {
            this._internalDefaultsApplied = !0;
          }, e.prototype.invalidate = function () {
            this.disabled || this._isTemplate || this.invalid || (this.invalid = !0, Fs.addToInvalidSprites(this), Ls.requestFrame());
          }, e.prototype.validate = function () {
            this.dispatchImmediately("beforevalidated"), this._internalDefaultsApplied || this.applyInternalDefaults(), this.beforeDraw(), this.draw(), this.invalid = !1, Fs.removeFromInvalidSprites(this), this.afterDraw();
          }, e.prototype.invalidatePosition = function () {
            this.disabled || this._isTemplate || this.positionInvalid || (this.positionInvalid = !0, Fs.addToInvalidPositions(this), Ls.requestFrame());
          }, e.prototype.validatePosition = function () {
            var t = this.pixelX,
                e = this.pixelY,
                i = this.dx,
                n = this.dy,
                r = t + i,
                s = e + n;
            this._updateDisabled && (this._internalDisabled ? this.group.attr({
              display: "none"
            }) : this.disabled || this.removeSVGAttribute("display"), this._updateDisabled = !1);
            var o = this.measure(),
                a = this.group.transformString;
            this.group.moveTo({
              x: r,
              y: s
            }), this.group.rotation = this.rotation, this.nonScaling ? this.group.scale = this.scale / this.globalScale : this.group.scale = this.scale, (a != this.group.transformString || o) && (null == a ? this.dispatch("transformed") : this.dispatchImmediately("transformed"), this.dispatch("positionchanged"), this.alwaysShowTooltip && this.updateTooltipPosition()), t + i == r && e + n == s && (Fs.removeFromInvalidPositions(this), this.positionInvalid = !1);
            var l = this._maskRectangle;
            l && this._clipElement.moveTo({
              x: l.x - t,
              y: l.y - e
            });
          }, e.prototype.beforeDraw = function () {}, e.prototype.draw = function () {}, e.prototype.afterDraw = function () {
            if ((this.isMeasured || "none" !== this.horizontalCenter || "none" !== this.verticalCenter) && this.measureElement(), this._inited) this.dispatch("validated");else {
              if (this._adapterO) try {
                for (var t = o(this._adapterO.keys()), e = t.next(); !e.done; e = t.next()) {
                  var i = e.value;

                  switch (i) {
                    case "mask":
                    case "fill":
                    case "opacity":
                    case "fillOpacity":
                    case "stroke":
                    case "strokeOpacity":
                    case "strokeWidth":
                    case "shapeRendering":
                    case "strokeDasharray":
                    case "strokeDashoffset":
                    case "strokeLinecap":
                    case "strokeLinejoin":
                    case "textDecoration":
                    case "fontSize":
                    case "fontFamily":
                    case "fontWeight":
                      this[i] = this[i];
                  }
                }
              } catch (t) {
                n = {
                  error: t
                };
              } finally {
                try {
                  e && !e.done && (r = t["return"]) && r.call(t);
                } finally {
                  if (n) throw n.error;
                }
              }
              this.applyFilters(), this.visible = this.visible, this.interactionsEnabled = this.getPropertyValue("interactionsEnabled"), this._inited = !0, this.showOnInit || (this.appeared = !0), this.hidden && this.hide(0), this.applyMask(), this.dispatch("validated"), this.dispatch("inited"), this.dispatchReady();
            }
            var n, r;
            this.alwaysShowTooltip && (!this.visible || this.disabled || this.__disabled ? this.hideTooltip(0) : this.showTooltip());
          }, e.prototype.dispatchReady = function () {
            this.isReady() || (this._ready = !0, this.dispatch("ready"));
          }, e.prototype.reinit = function () {
            this._inited = !1, this.setState(this.defaultState), this.invalidate();
          }, e.prototype.handleGlobalScale = function () {
            this.dispatch("globalscalechanged"), this.nonScalingStroke && (this.strokeWidth = this.strokeWidth), this.nonScaling && this.validatePosition(), this.updateFilterScale();
          }, e.prototype.updateFilterScale = function () {
            var t = this;
            pe(this.filters.iterator(), function (e) {
              e.scale = t.globalScale;
            });
          }, e.prototype.removeFromInvalids = function () {
            Fs.removeFromInvalidSprites(this), Fs.removeFromInvalidPositions(this);
          }, e.prototype.copyFrom = function (e) {
            var i = this;
            t.prototype.copyFrom.call(this, e), this.isMeasured = e.isMeasured, this.states.copyFrom(e.states), e.filters.length > 0 && e.filters.each(function (t) {
              i.filters.push(t.clone());
            }), e._adapterO && this.adapter.copyFrom(e._adapterO), e._interaction && this.interactions.copyFrom(e.interactions), e._plugins && this.plugins.copyFrom(e.plugins), this.configField = e.configField, this.applyOnClones = e.applyOnClones, this.disabled = e.disabled, this.virtualParent = e.virtualParent, this.exportable = e.exportable, e._tooltip && (this._tooltip ? this._tooltip.copyFrom(e.tooltip) : this.tooltip = e.tooltip.clone()), this._showSystemTooltip = e.showSystemTooltip, ni(e.propertyFields, this.propertyFields), ni(e.properties, this), e.fillModifier && (this.fillModifier = e.fillModifier.clone()), e.strokeModifier && (this.strokeModifier = e.strokeModifier.clone());
          }, e.prototype.dispose = function () {
            if (!this.isDisposed()) {
              if (this.dispatchImmediately("beforedisposed"), this.isBaseSprite) {
                if (this.htmlContainer) for (; this.htmlContainer.childNodes.length > 0;) this.htmlContainer.removeChild(this.htmlContainer.firstChild);
                this.isBaseSprite = !1;
              }

              if (t.prototype.dispose.call(this), this._adapterO && this._adapterO.clear(), this.applyOnClones && this._clones) for (var e = this._clones.length - 1; e >= 0; e--) this._clones.getIndex(e).dispose();
              this._svgContainer && this._svgContainer.dispose(), this._interactionDisposer && (this._interactionDisposer.dispose(), this._interactionDisposer = void 0), this._urlDisposer && this._urlDisposer.dispose(), this.removeFromInvalids(), this.element && this.element.dispose(), this.group && this.group.dispose(), this._numberFormatter && this._numberFormatter.dispose(), this._focusFilter && this._focusFilter.dispose();
              var i = this.stroke;
              !i || i instanceof qs || !i.dispose || this.clonedFrom && this.clonedFrom.stroke == i || i.dispose();
              var n = this.fill;
              if (!n || n instanceof qs || !n.dispose || this.clonedFrom && this.clonedFrom.fill == n || n.dispose(), S(this.id) && this.map.removeKey(this.id), this.parent = void 0, this._filters) for (; this._filters.length > 0;) {
                var r = this._filters.getIndex(0);

                r.dispose(), this._filters.removeValue(r);
              }
              this._alwaysShowDisposers = void 0;
            }
          }, Object.defineProperty(e.prototype, "isTemplate", {
            get: function get() {
              return this._isTemplate;
            },
            set: function set(t) {
              t = P(t), this._isTemplate != t && (this._isTemplate = t, this instanceof _a && pe(this.children.iterator(), function (e) {
                e.isTemplate = t;
              }), t ? (this.parent = this.parent, this.removeFromInvalids()) : this.invalidate());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "showSystemTooltip", {
            get: function get() {
              return S(this._showSystemTooltip) ? this._showSystemTooltip : this.virtualParent ? this.virtualParent.showSystemTooltip : !!this.parent && this.parent.showSystemTooltip;
            },
            set: function set(t) {
              t = P(t), this._showSystemTooltip != t && (this._showSystemTooltip = t, this.applyAccessibility());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "topParent", {
            get: function get() {
              return this._topParent ? this._topParent : this.parent ? this.parent.topParent : void 0;
            },
            set: function set(t) {
              this._topParent = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "parent", {
            get: function get() {
              return this._parent;
            },
            set: function set(t) {
              if (!this._isTemplate) {
                this.paper;
                var e = this._parent;
                e != t && (e && e.children.removeValue(this), this._parent = t, t ? (this.topParent = t.topParent, t.isTemplate && (this.isTemplate = !0), this.baseId = t.baseId, t.children.push(this), this._tooltip && !this._tooltipContainer && (this._tooltip.parent = t.tooltipContainer), this._dataItem || (this.dataItem = t.dataItem), this.handleAlwaysShowTooltip(), this.dispatchImmediately("parentset")) : this.topParent = void 0);
              }
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.handleAlwaysShow = function () {
            this.showTooltip();
          }, e.prototype.handleAlwaysShowTooltip = function () {
            var t = this,
                e = this._alwaysShowDisposers;
            if (e && mt(e, function (t) {
              t.dispose();
            }), this._alwaysShowDisposers = [], this.alwaysShowTooltip) for (; null != t;) {
              var i = t.events.on("visibilitychanged", this.handleAlwaysShow, this, !1);
              this.addDisposer(i), this._alwaysShowDisposers.push(i), t = t.parent;
            }
          }, Object.defineProperty(e.prototype, "virtualParent", {
            get: function get() {
              return this._virtualParent;
            },
            set: function set(t) {
              this._virtualParent = t;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.appendDefs = function () {
            this.filterElement && this.paper.appendDef(this.filterElement);
            var t = this.fill;
            t && t.element && this.paper.appendDef(t.element);
            var e = this.stroke;

            if (e && e.element && this.paper.appendDef(e.element), this.fillModifier && this.fill instanceof qs) {
              var i = this.fillModifier.modify(this.fill);
              i && i.element && this.paper.appendDef(i.element);
            }

            if (this.strokeModifier && this.stroke instanceof qs) {
              var n = this.strokeModifier.modify(this.stroke);
              n && n.element && this.paper.appendDef(n.element);
            }

            this._clipPath && this.paper.appendDef(this._clipPath), !1 === this._exportable && (this.exportable = !1);
          }, Object.defineProperty(e.prototype, "map", {
            get: function get() {
              var t = this.topParent;
              return t ? t.map : (this._map || (this._map = new Ds()), this._map);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "id", {
            get: function get() {
              return this._id;
            },
            set: function set(t) {
              if (this._id != t) {
                if (this._id = t, this.map.hasKey(t)) throw Error("Duplicate id (" + t + ") used on multiple objects.");
                this.map.setKey(t, this), Ms.autoSetClassName && this.setClassName();
              }
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "dom", {
            get: function get() {
              return this.group.node;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "paper", {
            get: function get() {
              return this._paper ? this._paper : this.parent ? this.parent.paper : cr();
            },
            set: function set(t) {
              this.setPaper(t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setPaper = function (t) {
            return this._paper != t && (this._paper = t, this.appendDefs(), !0);
          }, Object.defineProperty(e.prototype, "htmlContainer", {
            get: function get() {
              return this._htmlContainer ? this._htmlContainer : this.parent ? this.parent.htmlContainer : void 0;
            },
            set: function set(t) {
              this._htmlContainer = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "titleElement", {
            get: function get() {
              return this._titleElement || (this._titleElement = this.paper.add("title"), this.group.add(this._titleElement)), this._titleElement;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "descriptionElement", {
            get: function get() {
              return this._descriptionElement || (this._descriptionElement = this.paper.add("desc"), this.group.add(this._descriptionElement)), this._descriptionElement;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "filters", {
            get: function get() {
              return this._filters || (this._filters = new Ns(), this._disposers.push(this._filters.events.onAll(this.applyFilters, this)), this._disposers.push(new Bs(this._filters))), this._filters;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setSVGAttributes = function () {
            this.fill = this.fill, this.opacity = this.opacity, this.fillOpacity = this.fillOpacity, this.stroke = this.stroke, this.strokeOpacity = this.strokeOpacity, this.shapeRendering = this.shapeRendering, this.strokeDasharray = this.strokeDasharray, this.strokeDashoffset = this.strokeDashoffset, this.strokeLinecap = this.strokeLinecap, this.strokeLinejoin = this.strokeLinejoin, this.focusable = this.focusable, this.tabindex = this.tabindex, this.role = this.role;
          }, e.prototype.setSVGAttribute = function (t) {
            this.group.attr(t);
          }, e.prototype.removeSVGAttribute = function (t) {
            this.group.removeAttr(t);
          }, e.prototype.setClassName = function () {
            var t = this.className,
                e = Ms.classNamePrefix;
            this.element && this.element.addClass(e + t), this.group.addClass(e + t + "-group"), S(this.id) && this.group.addClass(e + this.id);
          }, e.prototype.uidAttr = function () {
            return this.setSVGAttribute({
              id: this.uid
            }), this.uid;
          }, e.prototype.updateClipPath = function () {
            var t = this._clipElement;
            t && t.moveTo({
              x: this.mask.pixelX,
              y: this.mask.pixelY
            });
          }, e.prototype.createClipPath = function () {
            if (!this._clipPath) {
              this._clipPath = this.paper.addGroup("clipPath"), this.paper.appendDef(this._clipPath), this._disposers.push(this._clipPath);
              var t = Fs.getUniqueId();
              this._clipPath.attr({
                id: t
              }), this.group.attr({
                "clip-path": 'url("' + si() + t + '")'
              });
            }
          }, e.prototype.applyMask = function () {
            var t = this.mask;
            if (this._clipPath && t) if (t instanceof _a) {
              this._clipElement.attr({
                width: W(0, t.pixelWidth),
                height: W(0, t.pixelHeight)
              });

              var e = Xi({
                x: t.pixelX,
                y: t.pixelY
              }, t.parent, this);
              this._clipPath.x = e.x, this._clipPath.y = e.y;
            } else t.element && t.element != this._clipElement && (this._clipElement = t.element, this._clipPath.add(this._clipElement)), this._clipPath.scale = t.scale, this._clipPath.x = t.pixelX, this._clipPath.y = t.pixelY, this._clipPath.rotation = t.rotation;
          }, e.prototype.applyFilters = function () {
            var t = this;

            if (this._filters && this._filters.length > 0) {
              var e = 100,
                  i = 100;
              this.filterElement ? this.filterElement.removeChildNodes() : (this.filterElement = this.paper.addGroup("filter"), this._disposers.push(this.filterElement)), this.paper.appendDef(this.filterElement);
              var n = "filter-" + this.uid;
              this.filterElement.attr({
                id: n
              }), pe(this.filters.iterator(), function (n) {
                n.sprite = t, n.paper = t.paper, n.appendPrimitives(t.filterElement), n.width > e && (e = n.width), n.height > i && (i = n.height), n.scale = t.globalScale;
              });
              var r = e + "%",
                  s = i + "%";
              this.filterElement.attr({
                width: r,
                height: s,
                x: -(e - 100) / 2 + "%",
                y: -(i - 100) / 2 + "%"
              }), this.group.attr({
                filter: 'url("' + si() + n + '")'
              });
            } else this.filterElement && (this.group.removeAttr("filter"), this.filterElement.removeChildNodes());
          }, e.prototype.removeClipPath = function () {
            this._clipPath && (this.removeDispose(this._clipPath), this._clipPath = void 0);
          }, e.prototype.setElement = function (t) {
            this.element = t, this.setSVGAttributes(), this.applyAccessibility();
          }, Object.defineProperty(e.prototype, "element", {
            get: function get() {
              return this._element;
            },
            set: function set(t) {
              this.removeElement(), this._element = t, this.group.add(t), t.node instanceof SVGPathElement && (this._isPath = !0), this.invalid || this.validate(), Ms.autoSetClassName && this.setClassName();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "svgContainer", {
            get: function get() {
              return this._svgContainer ? this._svgContainer : this.parent ? this.parent.svgContainer : void 0;
            },
            set: function set(t) {
              this._svgContainer = t;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.measureElement = function () {
            if (this.element) if (this.definedBBox) this._bbox = this.definedBBox;else {
              var t = this.element.getBBox();
              this._bbox = {
                x: t.x,
                y: t.y,
                width: t.width,
                height: t.height
              };
            }
          }, e.prototype.updateCenter = function () {
            if (this.element) {
              var t = this.element.transformString,
                  e = this.bbox,
                  i = 0,
                  n = 0,
                  r = e.x,
                  s = e.y,
                  o = e.width,
                  a = e.height,
                  l = this.pixelPaddingLeft,
                  h = this.pixelPaddingRight,
                  u = this.pixelPaddingTop,
                  p = this.pixelPaddingBottom,
                  c = W(o + l + h, this.pixelWidth),
                  d = W(a + u + p, this.pixelHeight),
                  f = e.x,
                  g = e.x + c,
                  y = e.y,
                  m = e.y + d,
                  v = this.horizontalCenter,
                  b = this.verticalCenter;

              switch (v) {
                case "none":
                  i = r + l;
                  break;

                case "left":
                  i = l;
                  break;

                case "middle":
                  i = l - (o + h + l) / 2;
                  break;

                case "right":
                  i = -h - o;
              }

              switch (b) {
                case "none":
                  n = s + u;
                  break;

                case "top":
                  n = u;
                  break;

                case "middle":
                  n = u - (a + p + u) / 2;
                  break;

                case "bottom":
                  n = -p - a;
              }

              this._measuredHeight = d, this._measuredWidth = c;

              var x = j(i - r, this._positionPrecision, !0),
                  _ = j(n - s, this._positionPrecision, !0);

              this.ex = x - l, this.ey = _ - u, this.maxLeft = f + x - l, this.maxRight = g + x - l, this.maxTop = y + _ - u, this.maxBottom = m + _ - u, this.pixelPerfect && (x -= .5, _ -= .5), this.element.moveTo({
                x: x,
                y: _
              }), t != this.element.transformString && this.dispatchImmediately("transformed");
            }
          }, e.prototype.measure = function () {
            this.updateCenter();
            var t = this._measuredWidth,
                e = this._measuredHeight,
                i = this.maxLeft,
                n = this.maxRight,
                r = this.maxTop,
                s = this.maxBottom;
            this._measuredWidthSelf = t, this._measuredHeightSelf = e;
            var o = this._positionPrecision;

            if (0 !== this.rotation || 1 !== this.scale) {
              this.nonScalingStroke && (this.strokeWidth = this.strokeWidth);
              var a = this.paper.svg,
                  l = a.createSVGMatrix(),
                  h = this.rotation;
              l.a = H(h) * this.scale, l.c = -B(h) * this.scale, l.e = 0, l.b = B(h) * this.scale, l.d = H(h) * this.scale, l.f = 0;
              var u = a.createSVGPoint();
              u.x = i, u.y = r;
              var p = a.createSVGPoint();
              p.x = n, p.y = r;
              var c = a.createSVGPoint();
              c.x = n, c.y = s;
              var d = a.createSVGPoint();
              d.x = i, d.y = s;
              var f = u.matrixTransform(l),
                  g = p.matrixTransform(l),
                  y = c.matrixTransform(l),
                  m = d.matrixTransform(l);
              i = Math.min(f.x, g.x, y.x, m.x), n = Math.max(f.x, g.x, y.x, m.x), r = Math.min(f.y, g.y, y.y, m.y), t = n - i, e = (s = Math.max(f.y, g.y, y.y, m.y)) - r, this.maxLeft = j(i, o, !0), this.maxRight = j(n, o, !0), this.maxTop = j(r, o, !0), this.maxBottom = j(s, o, !0);
            }

            return this._measuredWidth = j(t, o, !0), this._measuredHeight = j(e, o, !0), (this._measuredWidth != this._prevMeasuredWidth || this._measuredHeight != this._prevMeasuredHeight) && (this._prevMeasuredHeight = this._measuredHeight, this._prevMeasuredWidth = this._measuredWidth, this.dispatch("sizechanged"), (this.isHover || this.alwaysShowTooltip) && this.tooltip && this.tooltip.visible && (S(this.tooltipText) || S(this.tooltipHTML)) && this.updateTooltipPosition(), !0);
          }, e.prototype.insertBefore = function (t) {
            var e = this.parent;

            if (e) {
              var i = e.children.indexOf(t);
              -1 !== i && (e.children.moveValue(this, i), e.sortChildren());
            }

            return this;
          }, e.prototype.insertAfter = function (t) {
            var e = this.parent;

            if (e) {
              var i = e.children.indexOf(t);
              -1 !== i && (e.children.moveValue(this, i + 1), e.sortChildren());
            }

            return this;
          }, e.prototype.removeElement = function () {
            this._element && (this.removeDispose(this._element), this._element = void 0);
          }, e.prototype.getRelativeX = function (t) {
            return t instanceof hs ? t.value : this.parent ? t / this.parent.innerWidth : 0;
          }, e.prototype.getRelativeY = function (t) {
            return t instanceof hs ? t.value : this.parent ? t / this.parent.innerHeight : 0;
          }, e.prototype.getPixelX = function (t) {
            var e = 0;
            if (A(t)) e = t;else if (t instanceof hs) {
              var i = t.value;
              this.parent && (e = j(this.parent.innerWidth * i, this._positionPrecision, !0));
            }
            return e;
          }, e.prototype.getPixelY = function (t) {
            var e = 0;
            if (A(t)) e = t;else if (t instanceof hs) {
              var i = t.value;
              this.parent && (e = j(this.parent.innerHeight * i, this._positionPrecision, !0));
            }
            return e;
          }, e.prototype.moveTo = function (t, e, i, n) {
            this.isDragged && !n || (t && (A(t.x) && this.setPropertyValue("x", t.x), A(t.y) && this.setPropertyValue("y", t.y)), A(e) && (this.rotation = e), A(i) && (this.scale = i), this.invalidatePosition());
          }, Object.defineProperty(e.prototype, "mask", {
            get: function get() {
              return this._adapterO ? this._adapterO.apply("mask", this._mask.get()) : this._mask.get();
            },
            set: function set(t) {
              var e = this;
              this._mask.get() !== t && (t ? (this.createClipPath(), t instanceof _a ? this._clipElement = this.paper.add("rect") : (t.isMeasured = !1, t.element && (this._clipElement = t.element)), this._clipElement && this._clipPath.add(this._clipElement), this._mask.set(t, new gs([t.events.on("maxsizechanged", function () {
                e.inited && e.applyMask();
              }, void 0, !1), t.events.on("validated", this.applyMask, this, !1), t.events.on("positionchanged", this.applyMask, this, !1)])), this.applyMask()) : (this._mask.reset(), this.group.removeAttr("clip-path"), this.removeClipPath()));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "maskRectangle", {
            get: function get() {
              return this._maskRectangle;
            },
            set: function set(t) {
              t ? (this.createClipPath(), this._clipElement || (this._clipElement = this.paper.add("rect"), this._clipPath.add(this._clipElement)), this._clipElement.attr({
                width: t.width,
                height: t.height
              })) : (this.removeClipPath(), this._clipElement = void 0), this._maskRectangle = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "isMeasured", {
            get: function get() {
              return this._isMeasured;
            },
            set: function set(t) {
              (t = P(t)) || (this._measuredWidth = 0, this._measuredHeight = 0), this._isMeasured != t && (this._isMeasured = t, this.invalidatePosition());
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.hitTest = function (t) {
            this.invalid && this.validate(), t.invalid && t.validate();
            var e = this.pixelX,
                i = this.pixelY,
                n = e + this.measuredWidth,
                r = i + this.measuredHeight,
                s = t.pixelX,
                o = t.pixelY,
                a = s + t.measuredWidth,
                l = o + t.measuredHeight;
            return !(s > n || a < e || o > r || l < i);
          }, Object.defineProperty(e.prototype, "inited", {
            get: function get() {
              return this._inited;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.isReady = function () {
            return this._ready;
          }, Object.defineProperty(e.prototype, "states", {
            get: function get() {
              if (!this._states) {
                var t = new Po();
                this._states = new ks(t), this._disposers.push(this._states.events.on("insertKey", this.processState, this, !1)), this._disposers.push(this._states.events.on("setKey", this.processState, this, !1)), this._disposers.push(new Is(this._states)), this._disposers.push(t);
              }

              return this._states;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "hiddenState", {
            get: function get() {
              if (!this.states.getKey("hidden")) {
                var t = this.states.create("hidden");
                t.properties.opacity = 0, t.properties.visible = !1;
              }

              return this.states.getKey("hidden");
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "defaultState", {
            get: function get() {
              return this.states.getKey("default") || (this.states.create("default").properties.opacity = 1), this.states.getKey("default");
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.processState = function (t) {
            var e = t.newValue;
            if (e.sprite = this, e.name = t.key, (this.states.hasKey("hover") || S(this.tooltipHTML) || S(this.tooltipText)) && (this.hoverable = !0), this.states.hasKey("down") && (this.clickable = !0), this.states.hasKey("focus") && (this.focusable = !0), this.applyOnClones) for (var i = this.clones.values, n = i.length, r = 0; r < n; ++r) {
              var s = i[r];
              s.isDisposed() || s.states.setKey(e.name, e);
            }
          }, Object.defineProperty(e.prototype, "animations", {
            get: function get() {
              return this._animations || (this._animations = [], this._disposers.push(new So(this._animations))), this._animations;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.getSvgPoint = function (t) {
            try {
              var e = this.htmlContainer.getBoundingClientRect();
              return {
                x: t.x - e.left,
                y: t.y - e.top
              };
            } catch (e) {
              return t;
            }
          }, e.prototype.animate = function (t, e, i) {
            return new Io(this, t, e, i).start();
          }, e.prototype.setState = function (t, e, i) {
            var n;
            if (t instanceof Po) this.states.setKey(t.name, t), n = t;else if (!(n = this.states.getKey(t))) return;

            if ("hover" == n.name) {
              if (this.isHidden) return;
              this.isHover = !0;
            }

            return "hidden" == n.name ? this.isHiding = !0 : this.visible || this.setVisibility(n.properties.visible || this.defaultState.properties.visible), "active" == n.name && (this.isActive = !0), A(e) || (e = n.transitionDuration), S(i) || (i = n.transitionEasing), this.transitTo(n, e, i);
          }, e.prototype.applyCurrentState = function (t) {
            var e = this.setState(this.defaultState, t);
            return this.isHover && (e = this.setState("hover", t)), this.isDown && this.interactions.downPointers.length && (e = this.setState("down", t)), this.isFocused = this.isFocused, this.isActive && (e = this.setState("active", t), this.isHover && this.states.hasKey("hoverActive") && (e = this.setState("hoverActive", t))), e;
          }, e.prototype.transitTo = function (t, e, i) {
            var n,
                r = this,
                s = [];

            if (Qt(t.allValues, function (t, e) {
              var i = r[t];

              if (e != i && null == r.defaultState.properties[t] && (r.defaultState.properties[t] = i), S(e)) {
                var n = {
                  from: i,
                  to: e,
                  property: t
                };
                s.push(n);
              }
            }), s.length > 0 && ((n = this.animate(s, e, i)) && !n.isFinished() ? this._disposers.push(n.events.on("animationended", function () {
              r.dispatchImmediately("transitionended");
            })) : this.dispatchImmediately("transitionended")), t.filters.length > 0) {
              var o = [];
              pe(t.filters.iterator(), function (t) {
                var n = t.clone();
                o.push(n);
                var s = [];
                pe(r.filters.iterator(), function (t) {
                  t.className == n.className && (_e(r.defaultState.filters.iterator(), function (t) {
                    return t.className === n.className;
                  }) || r.defaultState.filters.push(t), Qt(n.properties, function (e, i) {
                    var n = t.properties[e];
                    n != i && s.push({
                      property: e,
                      from: n,
                      to: i
                    });
                  }));
                }), n.animate(s, e, i);
              }), this.filters.clear(), this.filters.pushAll(o);
            }

            return n;
          }, e.prototype.isInTransition = function () {
            return this.animations.length > 0;
          }, Object.defineProperty(e.prototype, "isHover", {
            get: function get() {
              return !!this.isInteractive() && this.interactions.isHover;
            },
            set: function set(t) {
              (t = P(t)) !== this.isHover && this.isInteractive() && (this.interactions.isHover = t, t ? this.handleOver() : this.handleOut());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "isDragged", {
            get: function get() {
              return this._isDragged;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "isResized", {
            get: function get() {
              return this._isResized;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "isDown", {
            get: function get() {
              return !!this.isInteractive() && this.interactions.isDown;
            },
            set: function set(t) {
              t = P(t), this.isInteractive() && this.isDown != t && (this.interactions.isDown = t, t ? this.handleDown() : this.handleUp());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "isFocused", {
            get: function get() {
              return !!this.isInteractive() && this.interactions.isFocused;
            },
            set: function set(t) {
              t = P(t), this.focusable && this.isFocused != t && this.isInteractive() && (this.interactions.isFocused = t, !0 === t ? this.handleFocus() : this.handleBlur());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "isActive", {
            get: function get() {
              return this._isActive;
            },
            set: function set(t) {
              this.setActive(t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setActive = function (t) {
            t = P(t), this._isActive !== t && (this._isActive = t, t && this.states.hasKey("active") ? (this.setState("active"), this.isHover && this.states.hasKey("hoverActive") && this.setState("hoverActive")) : this.applyCurrentState(), this.dispatchImmediately("toggled"));
          }, Object.defineProperty(e.prototype, "disabled", {
            get: function get() {
              var t = this.getPropertyValue("disabled");
              return S(t) ? t : this.virtualParent ? this.virtualParent.disabled : !!this.parent && this.parent.disabled;
            },
            set: function set(t) {
              this.setDisabled(t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setDisabled = function (t) {
            if (t = P(t), this.getPropertyValue("disabled") != t) {
              if (this.setPropertyValue("disabled", t, !0), t) this.parent = this.parent, this.removeFromInvalids(), this.group.attr({
                display: "none"
              }), this.dispatch("disabled");else {
                if (this.parent) {
                  var e = this.parent.element;
                  e.hasChild(this.group) || e.add(this.group);
                }

                this instanceof _a ? this.deepInvalidate() : this.invalidate(), this.__disabled || this.removeSVGAttribute("display"), this.dispatch("enabled");
              }
              return this.dispatch("transformed"), Ls.requestFrame(), !0;
            }

            return !1;
          }, Object.defineProperty(e.prototype, "__disabled", {
            get: function get() {
              return this._internalDisabled;
            },
            set: function set(t) {
              this._internalDisabled != t && (this._internalDisabled = t, this._updateDisabled = !0, this.invalidatePosition());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "numberFormatter", {
            get: function get() {
              return this._numberFormatter ? this._numberFormatter : this.virtualParent ? this.virtualParent.numberFormatter : this.parent ? this.parent.numberFormatter : (this._numberFormatter = new ha(), this._numberFormatter.language = this.language, this.numberFormatter);
            },
            set: function set(t) {
              this._numberFormatter = t, this._numberFormatter.language = this.language;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "dateFormatter", {
            get: function get() {
              return this._dateFormatter ? this._dateFormatter : this.virtualParent ? this.virtualParent.dateFormatter : this.parent ? this.parent.dateFormatter : (this._dateFormatter = new ua(), this._dateFormatter.language = this.language, this.dateFormatter);
            },
            set: function set(t) {
              this._dateFormatter = t, this._dateFormatter.language = this.language;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "durationFormatter", {
            get: function get() {
              return this._durationFormatter ? this._durationFormatter : this.virtualParent ? this.virtualParent.durationFormatter : this.parent ? this.parent.durationFormatter : (this._durationFormatter = new pa(), this._durationFormatter.language = this.language, this.durationFormatter);
            },
            set: function set(t) {
              this._durationFormatter = t, this._durationFormatter.language = this.language;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "language", {
            get: function get() {
              var t = this._language.get();

              return t || (this.virtualParent ? this.virtualParent.language : this.parent ? this.parent.language : (t = new aa(), this.language = t, t));
            },
            set: function set(t) {
              var e = this;
              this._language.get() !== t && this._language.set(t, t.events.on("localechanged", function (t) {
                if (e._numberFormatter && (e._numberFormatter.language = e.language), e._dateFormatter && (e._dateFormatter.language = e.language), e._durationFormatter && (e._durationFormatter.language = e.language), e._exporting.get()) {
                  var i = e._exporting.get();

                  i.numberFormatter.language = e.language, i.dateFormatter.language = e.language, i.durationFormatter.language = e.language, i.language = e.language;
                }

                e instanceof _a && e.deepInvalidate();
              }));
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.populateString = function (t, e) {
            if (S(t)) {
              t = x(t);
              var i = (t = dr().escape(t)).match(/\{([^}]+)\}/g),
                  n = void 0;
              if (i) for (n = 0; n < i.length; n++) {
                var r = i[n].replace(/\{([^}]+)\}/, "$1"),
                    s = this.getTagValue(r, "", e);
                S(s) || (s = ""), t = t.split(i[n]).join(s);
              }
              t = dr().unescape(t);
            } else t = "";

            return this._adapterO ? this._adapterO.apply("populateString", t) : t;
          }, e.prototype.getTagValue = function (t, e, i) {
            var n;
            S(i) || (i = this.dataItem);

            for (var r, s = [], o = /([^.]+)\(([^)]*)\)|([^.]+)/g; null !== (r = o.exec(t));) if (r[3]) s.push({
              prop: r[3]
            });else {
              var a = [];
              if ("" != bi(r[2])) for (var l = /'([^']*)'|"([^"]*)"|([0-9\-]+)/g, h = void 0; null !== (h = l.exec(r[2]));) a.push(h[1] || h[2] || h[3]);
              s.push({
                method: r[1],
                params: a
              });
            }

            if (i) {
              S(n = this.getTagValueFromObject(s, i.values)) && !V(n) || (n = this.getTagValueFromObject(s, i));
              var u = i.dataContext;
              !S(n) && u && !S(n = this.getTagValueFromObject(s, i.dataContext)) && u.dataContext && (n = this.getTagValueFromObject(s, u.dataContext)), !S(n) && i.component && i.component.dataItem !== i && (n = i.component.getTagValue(t, e));
            }

            return S(n) || (n = this.getTagValueFromObject(s, this.populateStringFrom || this)), !S(n) && this.parent && (n = this.parent.getTagValue(t, e)), n;
          }, e.prototype.getTagValueFromObject = function (t, e, i) {
            for (var n = e, r = !1, s = 0, o = t.length; s < o; s++) {
              var a = t[s];

              if (a.prop) {
                if (!S(n = n[a.prop])) return;
              } else switch (a.method) {
                case "formatNumber":
                  var l = Ai(n);
                  S(l) && (n = this.numberFormatter.format(l, i || a.params[0] || void 0), r = !0);
                  break;

                case "formatDate":
                  var h = void 0;
                  if (!k(h = T(n) ? this.dateFormatter.parse(n) : Ti(n)) || p(h.getTime())) return;
                  S(h) && (n = this.dateFormatter.format(h, i || a.params[0] || void 0), r = !0);
                  break;

                case "formatDuration":
                  var u = Ai(n);
                  S(u) && (n = this.durationFormatter.format(u, i || a.params[0] || void 0, a.params[1] || void 0), r = !0);
                  break;

                case "urlEncode":
                case "encodeURIComponent":
                  n = encodeURIComponent(n);
                  break;

                default:
                  n[a.method] && n[a.method].apply(this, a.params);
              }
            }

            if (!r) {
              var c = [{
                method: "",
                params: i
              }];

              if (S(i)) {
                var d = Oi(i);
                d === eo ? c[0].method = "formatNumber" : d === io ? c[0].method = "formatDate" : d === no && (c[0].method = "formatDuration");
              } else A(n) ? (c[0].method = "formatNumber", c[0].params = "") : k(n) && (c[0].method = "formatDate", c[0].params = "");

              c[0].method && (n = this.getTagValueFromObject(c, n));
            }

            return n;
          }, Object.defineProperty(e.prototype, "dataItem", {
            get: function get() {
              if (!this._dataItem) {
                if (this.virtualParent) return this.virtualParent.dataItem;
                if (this.parent) return this.parent.dataItem;
              }

              return this._dataItem;
            },
            set: function set(t) {
              this.setDataItem(t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setDataItem = function (t) {
            var e = this;

            if (this._dataItem != t) {
              if (this._dataItem = t, t) {
                if (this.configField) {
                  var i = t.dataContext;
                  i && (this.config = i[this.configField], !this.config && i.dataContext && (this.config = i.dataContext[this.configField]));
                }

                var n = t.dataContext;

                if (n) {
                  var r = n.dataContext;
                  Qt(this.propertyFields, function (t, i) {
                    if (S(n[i])) e[t] = n[i];else if (r) {
                      var s = r[i];
                      S(s) && (e[t] = s);
                    }
                  });
                }
              }

              this.invalidate();
            }
          }, e.prototype.getPropertyValue = function (t) {
            var e = this.properties[t];
            return this._isTemplate || this._adapterO && (e = this._adapterO.apply(t, e)), e;
          }, e.prototype.setColorProperty = function (t, e, i) {
            var n = this.properties[t];
            return !(e instanceof qs && n instanceof qs && e.toString() == n.toString()) && this.setPropertyValue(t, e, i);
          }, e.prototype.setPercentProperty = function (t, e, i, n, r, s) {
            if (A(e = O(e))) return e = j(e, r, s), this.setPropertyValue(t, e, i, n);
            var o = this.properties[t];
            return !(e instanceof hs && o instanceof hs && e.value == o.value) && this.setPropertyValue(t, e, i, n);
          }, e.prototype.setPropertyValue = function (t, e, i, n) {
            if (this.properties[t] !== e && !this.isDisposed()) {
              if (this.properties[t] = e, this.events.isEnabled("propertychanged")) {
                var r = {
                  type: "propertychanged",
                  target: this,
                  property: t
                };
                this.events.dispatchImmediately("propertychanged", r);
              }

              if (i && this.invalidate(), n && this.invalidatePosition(), this.applyOnClones) for (var s = this.clones.values, o = s.length, a = 0; a < o; ++a) {
                var l = s[a];
                l.isDisposed() || (l[t] = e);
              }
              return !0;
            }

            return !1;
          }, e.prototype.bind = function (t, e, i, n) {
            var r = this;
            void 0 === i && (i = t), S(this._bindings[t]) && this._bindings[t].dispose(), this[t] = e[i], this._bindings[t] = e.events.on("propertychanged", function (s) {
              if (s.property === i) {
                var o = e[i];
                n && (o = n(o)), r[t] = o;
              }
            });
          }, e.prototype.observe = function (t, e, i, n) {
            var r = this;
            return new gs(yt(Tt(t), function (t) {
              return r.events.on("propertychanged", function (n) {
                n.property === t && e.call(i, n);
              }, i, n);
            }));
          }, e.prototype.applyAccessibility = function () {
            var t = this.readerTitle,
                e = this.readerDescription,
                i = this.role,
                n = this.readerHidden,
                r = this.readerChecked,
                s = this.readerControls,
                o = this.readerLive,
                a = [],
                l = [],
                h = this.readerLabelledBy;
            h && a.push(h);
            var u = this.readerDescribedBy;

            if (u && l.push(u), !this.showSystemTooltip && t && (e = e ? t + " -- " + e : t, t = void 0), !t || e || this.showSystemTooltip) {
              if (t) {
                var p = this.titleElement,
                    c = this.uid + "-title";
                p.node.textContent != t && (p.node.textContent = t, p.attr({
                  id: c
                })), a.push(c);
              } else this._titleElement && (this.group.removeElement(this._titleElement), this._titleElement = void 0);

              var d = this.uid + "-description";

              if (e) {
                var f = this.descriptionElement;
                f.node.textContent != e && (f.node.textContent = e, f.attr({
                  id: d
                })), l.push(d);
              } else this._descriptionElement && (this.group.removeElement(this._descriptionElement), this._descriptionElement = void 0, St(l, d));
            } else this.setSVGAttribute({
              "aria-label": t
            }), this.removeSVGAttribute("aria-description"), this._titleElement && (this.group.removeElement(this._titleElement), this._titleElement = void 0), this._descriptionElement && (this.group.removeElement(this._descriptionElement), this._descriptionElement = void 0);

            a.length ? this.setSVGAttribute({
              "aria-labelledby": a.join(" ")
            }) : this.removeSVGAttribute("aria-labelledby"), l.length ? this.setSVGAttribute({
              "aria-describedby": l.join(" ")
            }) : this.removeSVGAttribute("aria-describedby"), i ? this.setSVGAttribute({
              role: i
            }) : this.removeSVGAttribute("role"), n ? this.setSVGAttribute({
              "aria-hidden": "true"
            }) : this.removeSVGAttribute("aria-hidden"), r ? this.setSVGAttribute({
              "aria-checked": "true"
            }) : !1 === r ? this.setSVGAttribute({
              "aria-checked": "false"
            }) : this.removeSVGAttribute("aria-checked"), s ? this.setSVGAttribute({
              "aria-controls": s
            }) : this.removeSVGAttribute("aria-controls"), o ? this.setSVGAttribute({
              "aria-live": o
            }) : this.removeSVGAttribute("aria-live");
          }, Object.defineProperty(e.prototype, "readerTitle", {
            get: function get() {
              var t = this.getPropertyValue("readerTitle");
              return S(t) && this.dataItem ? this.populateString(t) : t;
            },
            set: function set(t) {
              t = C(t), this.setPropertyValue("readerTitle", t) && this.applyAccessibility();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "readerDescription", {
            get: function get() {
              return this.getPropertyValue("readerDescription");
            },
            set: function set(t) {
              t = C(t), this.setPropertyValue("readerDescription", t) && this.applyAccessibility();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "role", {
            get: function get() {
              return this.getPropertyValue("role");
            },
            set: function set(t) {
              t = C(t), this.setPropertyValue("role", t) && this.applyAccessibility();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "readerHidden", {
            get: function get() {
              return this.getPropertyValue("readerHidden");
            },
            set: function set(t) {
              t = P(t), this.setPropertyValue("readerHidden", t) && this.applyAccessibility();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "readerChecked", {
            get: function get() {
              return this.getPropertyValue("readerChecked");
            },
            set: function set(t) {
              t = P(t), this.setPropertyValue("readerChecked", t) && this.applyAccessibility();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "readerControls", {
            get: function get() {
              return this.getPropertyValue("readerControls");
            },
            set: function set(t) {
              t = C(t), this.setPropertyValue("readerControls", t) && this.applyAccessibility();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "readerLive", {
            get: function get() {
              return this.getPropertyValue("readerLive");
            },
            set: function set(t) {
              t = C(t), this.setPropertyValue("readerLive", t) && this.applyAccessibility();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "readerLabelledBy", {
            get: function get() {
              return this.getPropertyValue("readerLabelledBy");
            },
            set: function set(t) {
              t = C(t), this.setPropertyValue("readerLabelledBy", t) && this.applyAccessibility();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "readerDescribedBy", {
            get: function get() {
              return this.getPropertyValue("readerDescribedBy");
            },
            set: function set(t) {
              t = C(t), this.setPropertyValue("readerDescribedBy", t) && this.applyAccessibility();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "keyboardOptions", {
            get: function get() {
              if (!this.interactions.keyboardOptions) {
                if (this.virtualParent) return this.virtualParent.keyboardOptions;
                if (this.parent) return this.parent.keyboardOptions;
              }

              return this.interactions.keyboardOptions;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "mouseOptions", {
            get: function get() {
              if (!this.interactions.mouseOptions) {
                if (this.virtualParent) return this.virtualParent.mouseOptions;
                if (this.parent) return this.parent.mouseOptions;
              }

              return this.interactions.mouseOptions;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "interactions", {
            get: function get() {
              if (!this._interaction) {
                var t = pr().getInteraction(this.dom);
                this._interaction = t, this._interaction.clickable = this.clickable, this._interaction.hoverable = this.hoverable, this._interaction.trackable = this.trackable, this._interaction.draggable = this.draggable, this._interaction.swipeable = this.swipeable, this._interaction.resizable = this.resizable, this._interaction.wheelable = this.wheelable, this._interaction.contextMenuDisabled = this.contextMenuDisabled, this._interaction.inert = this.inert, this._interaction.sprite = this, this._disposers.push(this._interaction);
              }

              return this._interaction;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.isInteractive = function () {
            return !!this._interaction;
          }, Object.defineProperty(e.prototype, "focusable", {
            get: function get() {
              return this.getPropertyValue("focusable");
            },
            set: function set(t) {
              var e = this;
              t = P(t), this.setPropertyValue("focusable", t) && (t || this.isInteractive()) && (this.interactions.focusable = t, t ? this.setSVGAttribute({
                focusable: t
              }) : this.removeSVGAttribute("focusable"), this.interactions.setEventDisposer("sprite-focusable", t, function () {
                return new gs([e.events.on("blur", e.handleBlur, e, !1), e.events.on("focus", e.handleFocus, e, !1)]);
              }));
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.handleFocus = function (t) {
            this.focusable && (this.topParent && (this.topParent.hasFocused = !0), this.focusFilter && this.filters.push(this.focusFilter), this.hoverOnFocus && (this.isHover = !0, this.handleOver()));
          }, e.prototype.handleBlur = function (t) {
            this.focusable && (this.topParent && (this.topParent.hasFocused = !1), this.focusFilter && this.filters.removeValue(this.focusFilter), this.hoverOnFocus && (this.isHover = !1, this.handleOut()));
          }, Object.defineProperty(e.prototype, "focusFilter", {
            get: function get() {
              return this._focusFilter || (this.virtualParent ? this.virtualParent.focusFilter : this.parent ? this.parent.focusFilter : void 0);
            },
            set: function set(t) {
              this._focusFilter = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "hoverOnFocus", {
            get: function get() {
              return this.getPropertyValue("hoverOnFocus");
            },
            set: function set(t) {
              t !== this.hoverOnFocus && this.setPropertyValue("hoverOnFocus", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "tabindex", {
            get: function get() {
              var t = this._tabindex;
              return null != t ? t : this.virtualParent ? this.virtualParent.tabindex : this.parent ? this.parent.tabindex : void 0;
            },
            set: function set(t) {
              t = w(t), this.setPropertyValue("tabindex", t) && A(t) && (this.interactions.tabindex = t, this.setSVGAttribute({
                tabindex: t
              }), this.focusable = t > -1 || void 0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "inertiaOptions", {
            get: function get() {
              return !this.interactions.inertiaOptions && this.parent ? this.parent.inertiaOptions : this.interactions.inertiaOptions;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "draggable", {
            get: function get() {
              return this.getPropertyValue("draggable");
            },
            set: function set(t) {
              var e = this;
              t = P(t), this.setPropertyValue("draggable", t) && (t || this.isInteractive()) && (this.applyCursorStyle(), this.interactions.draggable = t, this.interactions.setEventDisposer("sprite-draggable", t, function () {
                return new gs([e.events.on("down", e.handleDown, e, !1), e.events.on("dragstart", e.handleDragStart, e, !1), e.events.on("drag", e.handleDragMove, e, !1), e.events.on("dragstop", e.handleDragStop, e, !1)]);
              }));
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.handleDragStart = function (t) {
            this.interactions.isTouchProtected && t.touch || (this.interactions.originalPosition = {
              x: this.pixelX,
              y: this.pixelY
            }, this._isDragged = !0, this.hideTooltip(0));
          }, e.prototype.dragStart = function (t) {
            this._isDragged = !0, pr().dragStart(this.interactions, t);
          }, e.prototype.handleDragStop = function (t) {
            this.interactions.isTouchProtected && t.touch || (this._isDragged = !1, this.showTooltip(), this.interactions.originalPosition = void 0);
          }, e.prototype.dragStop = function (t) {
            this._isDragged = !1, pr().dragStop(this.interactions, t);
          }, e.prototype.handleDragMove = function (t) {
            if (!this.interactions.isTouchProtected || !t.touch) {
              var e = this.interactions.originalPosition;

              if (e && this._isDragged) {
                var i = this.parent.globalScale * this.svgContainer.cssScale;
                this.moveTo({
                  x: e.x + t.shift.x / i,
                  y: e.y + t.shift.y / i
                }, void 0, void 0, !0);
              }

              this.dispatchImmediately("dragged", t);
            }
          }, Object.defineProperty(e.prototype, "inert", {
            get: function get() {
              return this.getPropertyValue("inert");
            },
            set: function set(t) {
              t = P(t), this.setPropertyValue("inert", t) && (t || this.isInteractive()) && (this.interactions.inert = t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "hoverOptions", {
            get: function get() {
              if (!this.interactions.hoverOptions) {
                if (this.virtualParent) return this.virtualParent.hoverOptions;
                if (this.parent) return this.parent.hoverOptions;
              }

              return this.interactions.hoverOptions;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "hoverable", {
            get: function get() {
              return this.getPropertyValue("hoverable");
            },
            set: function set(t) {
              var e = this;
              t = P(t), this.setPropertyValue("hoverable", t) && (t || this.isInteractive()) && (this.applyCursorStyle(), this.interactions.hoverable = t, this.interactions.setEventDisposer("sprite-hoverable", t, function () {
                return new gs([e.events.on("over", e.handleOver, e, !1), e.events.on("out", e.handleOut, e, !1)]);
              }));
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.handleOver = function (t) {
            if (this._outTimeout && this._outTimeout.dispose(), this.isHover) {
              this.states.hasKey("hover") && (this.isHidden || this.applyCurrentState());
              var e = void 0;
              t && t.pointer && (e = Ui(t.pointer.point, this.svgContainer.SVGContainer, this.svgContainer.cssScale)), this.showTooltip(e);
            } else this.hideTooltip(), !this.isHidden && this.states.hasKey("hover") && this.applyCurrentState();
          }, e.prototype.handleOut = function (t) {
            var e = this;
            this.tooltip && this.tooltip.targetSprite == this && this.tooltip.keepTargetHover ? this._outTimeout = this.setTimeout(function () {
              e.tooltip.isHover || (e.tooltip.targetSprite == e && e.hideTooltip(), e._outTimeout = e.setTimeout(e.handleOutReal.bind(e), e.rollOutDelay));
            }, 10) : (this.hideTooltip(), this._outTimeout = this.setTimeout(this.handleOutReal.bind(this), this.rollOutDelay));
          }, e.prototype.handleOutReal = function () {
            this.isHidden || this.isHiding || !this.states.hasKey("hover") || this.applyCurrentState();
          }, Object.defineProperty(e.prototype, "hitOptions", {
            get: function get() {
              if (!this.interactions.hitOptions) {
                if (this.virtualParent) return this.virtualParent.hitOptions;
                if (this.parent) return this.parent.hitOptions;
              }

              return this.interactions.hitOptions;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.handleDown = function (t) {
            1 === this.interactions.downPointers.length && (this.interactions.originalPosition = {
              x: this.pixelX,
              y: this.pixelY
            }, this.interactions.originalAngle = this.rotation, this.interactions.originalScale = this.scale, this.states.hasKey("down") && this.setState("down"));
          }, e.prototype.handleUp = function (t) {
            this._isResized = !1, this.states.hasKey("down") && this.applyCurrentState();
          }, Object.defineProperty(e.prototype, "clickable", {
            get: function get() {
              return this.getPropertyValue("clickable");
            },
            set: function set(t) {
              var e = this;
              t = P(t), this.setPropertyValue("clickable", t) && (t || this.isInteractive()) && (this.applyCursorStyle(), this.interactions.clickable = t, this.interactions.setEventDisposer("sprite-clickable", t, function () {
                return new gs([e.events.on("down", e.handleDown, e, !1), e.events.on("up", e.handleUp, e, !1)]);
              }));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "togglable", {
            get: function get() {
              return this.getPropertyValue("togglable");
            },
            set: function set(t) {
              var e = this;
              t = P(t), this.setPropertyValue("togglable", t) && (t || this.isInteractive()) && this.interactions.setEventDisposer("sprite-togglable", t, function () {
                return e.events.on("hit", e.handleToggle, e, !1);
              });
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.handleToggle = function (t) {
            this.isActive = !this.isActive;
          }, Object.defineProperty(e.prototype, "contextMenuDisabled", {
            get: function get() {
              return this.getPropertyValue("contextMenuDisabled");
            },
            set: function set(t) {
              t = P(t), this.setPropertyValue("contextMenuDisabled", t) && (this.interactions.contextMenuDisabled = t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "url", {
            get: function get() {
              return this.getPropertyValue("url");
            },
            set: function set(t) {
              this.setPropertyValue("url", t) && (this._urlDisposer && this._urlDisposer.dispose(), li(t) && (this._urlDisposer = this.events.on("hit", this.urlHandler, this, !1), this.clickable = !0, this.cursorOverStyle = sa.pointer));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "baseId", {
            get: function get() {
              return !this._baseId && this.parent && (this.baseId = this.parent.baseId), this._baseId;
            },
            set: function set(t) {
              this.setBaseId(t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setBaseId = function (t) {
            t != this._baseId && (this.invalid && (this.invalid = !1, Fs.removeFromInvalidSprites(this), this.invalidate()), this._baseId = t);
          }, Object.defineProperty(e.prototype, "baseSprite", {
            get: function get() {
              return this.isBaseSprite ? this : this.parent ? this.parent.baseSprite : void 0;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "urlTarget", {
            get: function get() {
              return this.getPropertyValue("urlTarget");
            },
            set: function set(t) {
              this.setPropertyValue("urlTarget", t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.urlHandler = function (t) {
            if (li(this.url)) {
              var e = this.populateString(this.url);
              "_self" === this.urlTarget ? window.location.href = e : window.open(e, this.urlTarget);
            }
          }, Object.defineProperty(e.prototype, "swipeOptions", {
            get: function get() {
              if (!this.interactions.swipeOptions) {
                if (this.virtualParent) return this.virtualParent.swipeOptions;
                if (this.parent) return this.parent.swipeOptions;
              }

              return this.interactions.swipeOptions;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "swipeable", {
            get: function get() {
              return this.getPropertyValue("swipeable");
            },
            set: function set(t) {
              t = P(t), this.setPropertyValue("swipeable", t) && (this.applyCursorStyle(), (t || this.isInteractive()) && (this.interactions.swipeable = t));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "trackable", {
            get: function get() {
              return this.getPropertyValue("trackable");
            },
            set: function set(t) {
              t = P(t), this.setPropertyValue("trackable", t) && (t || this.isInteractive()) && (this.applyCursorStyle(), this.interactions.trackable = t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "wheelable", {
            get: function get() {
              return this.getPropertyValue("wheelable");
            },
            set: function set(t) {
              this.setPropertyValue("wheelable", t) && (t || this.isInteractive()) && (this.applyCursorStyle(), this.interactions.wheelable = t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "resizable", {
            get: function get() {
              return this.getPropertyValue("resizable");
            },
            set: function set(t) {
              var e = this;
              t = P(t), this.setPropertyValue("resizable", t) && (t || this.isInteractive()) && (this.applyCursorStyle(), this.interactions.resizable = t, this.interactions.setEventDisposer("sprite-resizable", t, function () {
                return new gs([e.events.on("down", e.handleDown, e, !1), e.events.on("resize", e.handleResize, e, !1)]);
              }));
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.handleResize = function (t) {
            if ((!this.interactions.isTouchProtected || !t.touch) && (this._isResized = !0, this.scale = this.interactions.originalScale * t.scale, this.validatePosition(), this.draggable || this.dragWhileResize)) {
              this._isDragged = !1;
              var e = $(Ui(t.point1, this.htmlContainer, this.svgContainer.cssScale), Ui(t.point2, this.htmlContainer, this.svgContainer.cssScale)),
                  i = Ki(t.startPoint1, this.parent),
                  n = Ki(t.startPoint2, this.parent),
                  r = this.interactions.originalPosition,
                  s = this.interactions.originalScale;

              if (r) {
                var o = $({
                  x: (i.x - r.x) / s,
                  y: (i.y - r.y) / s
                }, {
                  x: (n.x - r.x) / s,
                  y: (n.y - r.y) / s
                }),
                    a = Hi(e, this.parent);
                this.moveTo({
                  x: a.x - o.x * this.scale,
                  y: a.y - o.y * this.scale
                }, void 0, void 0, !0);
              }
            }
          }, Object.defineProperty(e.prototype, "cursorOptions", {
            get: function get() {
              if (!this.interactions.cursorOptions) {
                if (this.virtualParent) return this.virtualParent.cursorOptions;
                if (this.parent) return this.parent.cursorOptions;
              }

              return this.interactions.cursorOptions;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "cursorOverStyle", {
            set: function set(t) {
              this.cursorOptions.overStyle || (this.interactions.cursorOptions = {
                defaultStyle: this.cursorOptions.defaultStyle
              }), this.cursorOptions.overStyle = t, pr().applyCursorOverStyle(this.interactions);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "cursorDownStyle", {
            set: function set(t) {
              this.cursorOptions.downStyle = t;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.applyCursorStyle = function () {}, Object.defineProperty(e.prototype, "interactionsEnabled", {
            get: function get() {
              return !1 !== this.getPropertyValue("interactionsEnabled") && (this.virtualParent ? this.virtualParent.interactionsEnabled : !this.parent || this.parent.interactionsEnabled);
            },
            set: function set(t) {
              if (t = P(t), this.setPropertyValue("interactionsEnabled", t)) {
                var e = null;
                t ? this.group.node.style.pointerEvents = "" : e = "none", this.group.node.style.pointerEvents = e;
              }
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "exporting", {
            get: function get() {
              return this.getExporting();
            },
            set: function set(t) {
              this._exporting.set(t, t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.getExporting = function () {
            var t = this._exporting.get();

            return t || (!this.isStandaloneInstance && this.parent ? this.parent.exporting : ((t = new ma(this.svgContainer.SVGContainer)).sprite = this, t.language = this.language, t.numberFormatter = this.numberFormatter, t.dateFormatter = this.dateFormatter, t.durationFormatter = this.durationFormatter, this._exporting.set(t, t), t));
          }, Object.defineProperty(e.prototype, "exportable", {
            get: function get() {
              return this._exportable;
            },
            set: function set(t) {
              var e = this.svgContainer;
              this._exportable = t, e && (t ? St(e.nonExportableSprites, this) : -1 == ft(e.nonExportableSprites, this) && e.nonExportableSprites.push(this));
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.modalPrefix = function (t) {
            return t = Ms.classNamePrefix + t;
          }, Object.defineProperty(e.prototype, "modal", {
            get: function get() {
              var t = this.svgContainer;

              if (t) {
                var e = t.modal;
                return e.adapter.has("classPrefix", this.modalPrefix) || e.adapter.add("classPrefix", this.modalPrefix), e;
              }
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.openModal = function (t, e) {
            var i = this.svgContainer;
            if (i) return i.openModal(t, e);
          }, e.prototype.closeModal = function () {
            var t = this.svgContainer;
            t && t.closeModal();
          }, Object.defineProperty(e.prototype, "popups", {
            get: function get() {
              var t = this.svgContainer;

              if (t) {
                var e = t.popups;
                return e.template.sprite = this, e.template.adapter.has("classPrefix", this.modalPrefix) || e.template.adapter.add("classPrefix", this.modalPrefix), e;
              }
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.openPopup = function (t, e) {
            var i = this.svgContainer;
            if (i) return i.openPopup(t, e);
          }, e.prototype.closeAllPopups = function () {
            var t = this.svgContainer;
            t && t.closeAllPopups();
          }, Object.defineProperty(e.prototype, "x", {
            get: function get() {
              return this.getPropertyValue("x");
            },
            set: function set(t) {
              this.isDragged || this.setPercentProperty("x", t, !1, !0, this._positionPrecision, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "pixelX", {
            get: function get() {
              var t = R(this.getPixelX(this.x), this.minX, this.maxX);
              return this._adapterO ? this._adapterO.apply("pixelX", t) : t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "relativeX", {
            get: function get() {
              return this._adapterO ? this._adapterO.apply("relativeX", this.getRelativeX(this.x)) : this.getRelativeX(this.x);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "minX", {
            get: function get() {
              return this.getPropertyValue("minX");
            },
            set: function set(t) {
              A(t) && (t = j(t, this._positionPrecision, !0), this.setPropertyValue("minX", t, !1, !0));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "maxX", {
            get: function get() {
              return this.getPropertyValue("maxX");
            },
            set: function set(t) {
              A(t) && (t = j(t, this._positionPrecision, !0), this.setPropertyValue("maxX", t, !1, !0));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "y", {
            get: function get() {
              return this.getPropertyValue("y");
            },
            set: function set(t) {
              this.isDragged || this.setPercentProperty("y", t, !1, !0, this._positionPrecision, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "pixelY", {
            get: function get() {
              var t = R(this.getPixelY(this.y), this.minY, this.maxY);
              return this._adapterO ? this._adapterO.apply("pixelY", t) : t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "relativeY", {
            get: function get() {
              return this._adapterO ? this._adapterO.apply("relativeY", this.getRelativeX(this.y)) : this.getRelativeX(this.y);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "minY", {
            get: function get() {
              return this.getPropertyValue("minY");
            },
            set: function set(t) {
              A(t) && (t = j(t, this._positionPrecision, !0), this.setPropertyValue("minY", t, !1, !0));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "maxY", {
            get: function get() {
              return this.getPropertyValue("maxY");
            },
            set: function set(t) {
              A(t) && (t = j(t, this._positionPrecision, !0), this.setPropertyValue("maxY", t, !1, !0));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "dx", {
            get: function get() {
              return this.getPropertyValue("dx");
            },
            set: function set(t) {
              A(t) && (t = j(t, this._positionPrecision, !0), this.setPropertyValue("dx", t, !1, !0));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "dy", {
            get: function get() {
              return this.getPropertyValue("dy");
            },
            set: function set(t) {
              A(t) && (t = j(t, this._positionPrecision, !0), this.setPropertyValue("dy", t, !1, !0));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "rotation", {
            get: function get() {
              return this.getPropertyValue("rotation");
            },
            set: function set(t) {
              A(t = w(t)) || (t = 0), this.setPropertyValue("rotation", t, !1, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "align", {
            get: function get() {
              return this.getPropertyValue("align");
            },
            set: function set(t) {
              t = C(t), this.setPropertyValue("align", t) && this.parent && this.parent.invalidateLayout();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "valign", {
            get: function get() {
              return this.getPropertyValue("valign");
            },
            set: function set(t) {
              t = C(t), this.setPropertyValue("valign", t) && this.parent && this.parent.invalidateLayout();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "horizontalCenter", {
            get: function get() {
              return this.getPropertyValue("horizontalCenter");
            },
            set: function set(t) {
              t = C(t), this.setPropertyValue("horizontalCenter", t) && this.updateCenter();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "verticalCenter", {
            get: function get() {
              return this.getPropertyValue("verticalCenter");
            },
            set: function set(t) {
              t = C(t), this.setPropertyValue("verticalCenter", t) && this.updateCenter();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "maxWidth", {
            get: function get() {
              var t = this.getPropertyValue("maxWidth");
              return !A(t) && this.parent ? this.parent.maxWidth : t;
            },
            set: function set(t) {
              this.setMaxWidth(t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setMaxWidth = function (t) {
            var e = this.maxWidth,
                i = this.maxHeight;

            if (this.setPropertyValue("maxWidth", t)) {
              A(this.relativeWidth) && this.invalidate();
              var n = {
                type: "maxsizechanged",
                target: this,
                previousWidth: e,
                previousHeight: i
              };
              this.dispatchImmediately("maxsizechanged", n);
            }
          }, Object.defineProperty(e.prototype, "maxHeight", {
            get: function get() {
              var t = this.getPropertyValue("maxHeight");
              return !A(t) && this.parent ? this.parent.maxHeight : t;
            },
            set: function set(t) {
              this.setMaxHeight(t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setMaxHeight = function (t) {
            var e = this.maxWidth,
                i = this.maxHeight;

            if (this.setPropertyValue("maxHeight", t)) {
              A(this.relativeHeight) && this.invalidate();
              var n = {
                type: "maxsizechanged",
                target: this,
                previousWidth: e,
                previousHeight: i
              };
              this.dispatchImmediately("maxsizechanged", n);
            }
          }, Object.defineProperty(e.prototype, "minWidth", {
            get: function get() {
              return this.getPropertyValue("minWidth");
            },
            set: function set(t) {
              this.setPropertyValue("minWidth", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "minHeight", {
            get: function get() {
              return this.getPropertyValue("minHeight");
            },
            set: function set(t) {
              this.setPropertyValue("minHeight", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "width", {
            get: function get() {
              return this.getPropertyValue("width");
            },
            set: function set(t) {
              this.setPercentProperty("width", t, !0, !1, this._positionPrecision, !0) && (this.percentWidth = void 0, this.relativeWidth = void 0, t instanceof hs ? (this.percentWidth = t.percent, A(this._pixelWidth) && (this.maxWidth = void 0), this._pixelWidth = void 0) : (this._pixelWidth = Number(t), this.maxWidth = this._pixelWidth), this.invalidatePosition());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "height", {
            get: function get() {
              return this.getPropertyValue("height");
            },
            set: function set(t) {
              this.setPercentProperty("height", t, !0, !1, this._positionPrecision, !0) && (this.percentHeight = void 0, this._relativeHeight = void 0, t instanceof hs ? (this.percentHeight = t.percent, A(this._pixelHeight) && (this.maxHeight = void 0), this._pixelHeight = void 0) : (this._pixelHeight = Number(t), this.maxHeight = this._pixelHeight), this.invalidatePosition());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "pixelWidth", {
            get: function get() {
              var t;
              t = A(this.percentWidth) ? this.maxWidth : A(this._pixelWidth) ? this._pixelWidth : 0;
              var e = this.minWidth;
              null != e && t < e && (t = e);
              var i = j(t, this._positionPrecision, !0);
              return this._adapterO ? this._adapterO.apply("pixelWidth", i) : i;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "pixelHeight", {
            get: function get() {
              var t;
              t = A(this.percentHeight) ? this.maxHeight : A(this._pixelHeight) ? this._pixelHeight : 0;
              var e = this.minHeight;
              null != e && t < e && (t = e);
              var i = j(t, this._positionPrecision, !0);
              return this._adapterO ? this._adapterO.apply("pixelHeight", i) : i;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "relativeWidth", {
            get: function get() {
              var t = this._relativeWidth;
              if (A(t)) return this._adapterO ? this._adapterO.apply("relativeWidth", t) : t;
            },
            set: function set(t) {
              this._relativeWidth != t && (this._relativeWidth = t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "relativeHeight", {
            get: function get() {
              var t = this._relativeHeight;
              if (A(t)) return this._adapterO ? this._adapterO.apply("relativeHeight", t) : t;
            },
            set: function set(t) {
              this._relativeHeight != t && (this._relativeHeight = t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "measuredWidth", {
            get: function get() {
              return this.disabled || this.__disabled ? 0 : this._adapterO ? this._adapterO.apply("measuredWidth", this._measuredWidth) : this._measuredWidth;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "measuredHeight", {
            get: function get() {
              return this.disabled || this.__disabled ? 0 : this._adapterO ? this._adapterO.apply("measuredHeight", this._measuredHeight) : this._measuredHeight;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "outerWidth", {
            get: function get() {
              var t = this.pixelWidth + this.pixelMarginRight + this.pixelMarginLeft;
              return this._adapterO ? this._adapterO.apply("outerWidth", t) : t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "outerHeight", {
            get: function get() {
              var t = this.pixelHeight + this.pixelMarginTop + this.pixelMarginBottom;
              return this._adapterO ? this._adapterO.apply("outerHeight", t) : t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "innerWidth", {
            get: function get() {
              var t = Math.max(0, this.pixelWidth - this.pixelPaddingRight - this.pixelPaddingLeft);
              return this._adapterO ? this._adapterO.apply("innerWidth", t) : t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "innerHeight", {
            get: function get() {
              var t = Math.max(0, this.pixelHeight - this.pixelPaddingTop - this.pixelPaddingBottom);
              return this._adapterO ? this._adapterO.apply("innerHeight", t) : t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "globalScale", {
            get: function get() {
              var t = this.scale;
              return this.parent && (t *= this.parent.globalScale), this._adapterO ? this._adapterO.apply("globalScale", t) : t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "scale", {
            get: function get() {
              return this.getPropertyValue("scale");
            },
            set: function set(t) {
              (t = w(t)) < 0 && (t = 0), t != this.getPropertyValue("scale") && (this.setPropertyValue("scale", t, !1, !0), this.handleGlobalScale());
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.margin = function (t, e, i, n) {
            return this.marginTop = t, this.marginRight = e, this.marginBottom = i, this.marginLeft = n, this;
          }, Object.defineProperty(e.prototype, "marginLeft", {
            get: function get() {
              return this.getPropertyValue("marginLeft");
            },
            set: function set(t) {
              this.setPercentProperty("marginLeft", t, !0, !0, this._positionPrecision, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "marginRight", {
            get: function get() {
              return this.getPropertyValue("marginRight");
            },
            set: function set(t) {
              this.setPercentProperty("marginRight", t, !0, !0, this._positionPrecision, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "marginTop", {
            get: function get() {
              return this.getPropertyValue("marginTop");
            },
            set: function set(t) {
              this.setPercentProperty("marginTop", t, !0, !0, this._positionPrecision, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "marginBottom", {
            get: function get() {
              return this.getPropertyValue("marginBottom");
            },
            set: function set(t) {
              this.setPercentProperty("marginBottom", t, !0, !0, this._positionPrecision, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "pixelMarginRight", {
            get: function get() {
              var t = this.getPixelX(this.marginRight);
              return this._adapterO ? this._adapterO.apply("pixelMarginRight", t) : t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "relativeMarginRight", {
            get: function get() {
              var t = this.getRelativeX(this.marginRight);
              return this._adapterO ? this._adapterO.apply("relativeMarginRight", t) : t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "pixelMarginLeft", {
            get: function get() {
              var t = this.getPixelX(this.marginLeft);
              return this._adapterO ? this._adapterO.apply("pixelMarginLeft", t) : t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "relativeMarginLeft", {
            get: function get() {
              var t = this.getRelativeX(this.marginLeft);
              return this._adapterO ? this._adapterO.apply("relativeMarginLeft", t) : t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "pixelMarginTop", {
            get: function get() {
              var t = this.getPixelY(this.marginTop);
              return this._adapterO ? this._adapterO.apply("pixelMarginTop", t) : t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "relativeMarginTop", {
            get: function get() {
              var t = this.getRelativeY(this.marginTop);
              return this._adapterO ? this._adapterO.apply("relativeMarginTop", t) : t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "pixelMarginBottom", {
            get: function get() {
              var t = this.getPixelY(this.marginBottom);
              return this._adapterO ? this._adapterO.apply("pixelMarginBottom", t) : t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "relativeMarginBottom", {
            get: function get() {
              var t = this.getRelativeY(this.marginBottom);
              return this._adapterO ? this._adapterO.apply("relativeMarginBottom", t) : t;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.padding = function (t, e, i, n) {
            return this.paddingTop = t, this.paddingRight = e, this.paddingBottom = i, this.paddingLeft = n, this;
          }, Object.defineProperty(e.prototype, "paddingLeft", {
            get: function get() {
              return this.getPropertyValue("paddingLeft");
            },
            set: function set(t) {
              this.setPercentProperty("paddingLeft", t, !0, !0, this._positionPrecision, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "paddingRight", {
            get: function get() {
              return this.getPropertyValue("paddingRight");
            },
            set: function set(t) {
              this.setPercentProperty("paddingRight", t, !0, !0, this._positionPrecision, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "paddingTop", {
            get: function get() {
              return this.getPropertyValue("paddingTop");
            },
            set: function set(t) {
              this.setPercentProperty("paddingTop", t, !0, !0, this._positionPrecision, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "paddingBottom", {
            get: function get() {
              return this.getPropertyValue("paddingBottom");
            },
            set: function set(t) {
              this.setPercentProperty("paddingBottom", t, !0, !0, this._positionPrecision, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "pixelPaddingRight", {
            get: function get() {
              return this.getPixelX(this.paddingRight);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "relativePaddingRight", {
            get: function get() {
              return this.getRelativeX(this.paddingRight);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "pixelPaddingLeft", {
            get: function get() {
              return this.getPixelX(this.paddingLeft);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "relativePaddingLeft", {
            get: function get() {
              return this.getRelativeX(this.paddingLeft);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "pixelPaddingTop", {
            get: function get() {
              return this.getPixelY(this.paddingTop);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "relativePaddingTop", {
            get: function get() {
              return this.getRelativeY(this.paddingTop);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "pixelPaddingBottom", {
            get: function get() {
              return this.getPixelY(this.paddingBottom);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "relativePaddingBottom", {
            get: function get() {
              return this.getRelativeY(this.paddingBottom);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "path", {
            get: function get() {
              return this.getPropertyValue("path");
            },
            set: function set(t) {
              this.setPath(t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setPath = function (t) {
            return !!this.setPropertyValue("path", t) && (this._isPath || (this.element && (!this.element.node || this.element.node instanceof SVGPathElement) || (this.element = this.paper.add("path")), this._isPath = !0), this.element.attr({
              d: t
            }), this.invalidatePosition(), this.inited || this.events.once("inited", this.validatePosition, this, !1), !0);
          }, Object.defineProperty(e.prototype, "fillModifier", {
            get: function get() {
              return this.getPropertyValue("fillModifier");
            },
            set: function set(t) {
              this.setPropertyValue("fillModifier", t) && this.setFill(this.fill);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "strokeModifier", {
            get: function get() {
              return this.getPropertyValue("strokeModifier");
            },
            set: function set(t) {
              this.setPropertyValue("strokeModifier", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "fillOpacity", {
            get: function get() {
              return this.getPropertyValue("fillOpacity");
            },
            set: function set(t) {
              t = M(t, 0, 1), this.setPropertyValue("fillOpacity", t) && this.setSVGAttribute({
                "fill-opacity": t
              });
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "fill", {
            get: function get() {
              return this.getPropertyValue("fill");
            },
            set: function set(t) {
              this.setFill(t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setFill = function (t) {
            if (V(t) || (t = ei(t)), this.setColorProperty("fill", t) || this.fillModifier) if (t instanceof qs && this.fillModifier && (t = this.fillModifier.modify(t)), this.realFill = t, t instanceof qs) this.setSVGAttribute({
              fill: t.toString()
            });else if (S(t)) {
              if (t instanceof ea || t instanceof ia || t instanceof na) {
                var e = t;
                e.paper = this.paper, this.setSVGAttribute({
                  fill: 'url("' + si() + e.id + '")'
                });
              }
            } else this.removeSVGAttribute("fill");
          }, Object.defineProperty(e.prototype, "opacity", {
            get: function get() {
              return this.getPropertyValue("opacity");
            },
            set: function set(t) {
              t = M(t, 0, 1), this.setPropertyValue("opacity", t) && this.setSVGAttribute({
                opacity: t
              });
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "stroke", {
            get: function get() {
              return this.getPropertyValue("stroke");
            },
            set: function set(t) {
              this.setStroke(t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setStroke = function (t) {
            if (V(t) || (t = ei(t)), this.setColorProperty("stroke", t) || this.strokeModifier) if (t instanceof qs && this.strokeModifier && (t = this.strokeModifier.modify(t)), this.realStroke = t, t instanceof qs) "none" == t.hex ? this.removeSVGAttribute("stroke") : this.setSVGAttribute({
              stroke: t.toString()
            });else if (S(t)) {
              if (t instanceof ea || t instanceof ia || t instanceof na) {
                var e = t;
                e.paper = this.paper, this.setSVGAttribute({
                  stroke: 'url("' + si() + e.id + '")'
                });
              }
            } else this.removeSVGAttribute("stroke");
          }, Object.defineProperty(e.prototype, "strokeOpacity", {
            get: function get() {
              return this.getPropertyValue("strokeOpacity");
            },
            set: function set(t) {
              t = M(t, 0, 1), this.setPropertyValue("strokeOpacity", t) && this.setSVGAttribute({
                "stroke-opacity": t
              });
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "nonScalingStroke", {
            get: function get() {
              return this.getPropertyValue("nonScalingStroke");
            },
            set: function set(t) {
              t = P(t), this.setPropertyValue("nonScalingStroke", t) && (this.strokeWidth = this.strokeWidth);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "nonScaling", {
            get: function get() {
              return this.getPropertyValue("nonScaling");
            },
            set: function set(t) {
              t = P(t), this.setPropertyValue("nonScaling", t, !1, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "strokeWidth", {
            get: function get() {
              return this.getPropertyValue("strokeWidth");
            },
            set: function set(t) {
              t = w(t), this.setPropertyValue("strokeWidth", t, !0), this.nonScalingStroke && (A(t) || (t = 1), t /= this.globalScale), this.setSVGAttribute({
                "stroke-width": t
              });
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "strokeDasharray", {
            get: function get() {
              return this.getPropertyValue("strokeDasharray");
            },
            set: function set(t) {
              t = C(t), this.setPropertyValue("strokeDasharray", t) && this.setSVGAttribute({
                "stroke-dasharray": t
              });
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "strokeDashoffset", {
            get: function get() {
              return this.getPropertyValue("strokeDashoffset");
            },
            set: function set(t) {
              t = w(t), this.setPropertyValue("strokeDashoffset", t) && this.setSVGAttribute({
                "stroke-dashoffset": t
              });
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "strokeLinecap", {
            get: function get() {
              return this.getPropertyValue("strokeLinecap");
            },
            set: function set(t) {
              this.setPropertyValue("strokeLinecap", t) && this.setSVGAttribute({
                "stroke-linecap": t
              });
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "strokeLinejoin", {
            get: function get() {
              return this.getPropertyValue("strokeLinejoin");
            },
            set: function set(t) {
              this.setPropertyValue("strokeLinejoin", t) && this.setSVGAttribute({
                "stroke-linejoin": t
              });
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "shapeRendering", {
            get: function get() {
              return this.getPropertyValue("shapeRendering");
            },
            set: function set(t) {
              t = C(t), this.setPropertyValue("shapeRendering", t) && this.setSVGAttribute({
                "shape-rendering": t
              });
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "pixelPerfect", {
            get: function get() {
              return this.getPropertyValue("pixelPerfect");
            },
            set: function set(t) {
              t = P(t), this._positionPrecision = t ? 0 : 3, this.setPropertyValue("pixelPerfect", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "rtl", {
            get: function get() {
              return S(this._rtl) ? this._rtl : this.virtualParent ? this.virtualParent.rtl : !!this.parent && this.parent.rtl;
            },
            set: function set(t) {
              t = P(t), this._rtl = t;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.show = function (t) {
            return this.showReal(t);
          }, e.prototype.showReal = function (t) {
            var e,
                i = this,
                n = this.defaultState.properties;

            if (!this.disabled && (this.isHidden || !this.visible || this.isHiding || null != n.opacity && this.opacity < n.opacity && !this.isShowing) && !this.isDisposed()) {
              this.invalid && this.validate(), this.positionInvalid && this.validatePosition(), A(t) || (t = this.defaultState.transitionDuration), this._hideAnimation && (this._hideAnimation.kill(), this._hideAnimation = void 0), this._showHideDisposer && this.removeDispose(this._showHideDisposer), this._isHidden = !1, this.isHiding = !1, this.isShowing = !0, (e = this.applyCurrentState(t)) && !e.isFinished() ? (this._showHideDisposer = e.events.on("animationended", function () {
                i.isShowing = !1;
              }), this._disposers.push(this._showHideDisposer)) : this.isShowing = !1;
              var r = this.defaultState.properties.visible;
              S(r) || (r = !0), this.visible = r, this.readerHidden = !1, this.dispatchImmediately("shown");
            }

            return e;
          }, e.prototype.hide = function (t) {
            return this.hideReal(t);
          }, e.prototype.hideReal = function (t) {
            var e,
                i = this;

            if (!this.isHiding && this.visible && !this.isDisposed()) {
              this.hideTooltip(0), this._hideAnimation && (this._hideAnimation.kill(), this._hideAnimation = void 0), this.isShowing = !1, this._showHideDisposer && this.removeDispose(this._showHideDisposer);
              var n = this.hiddenState;
              n ? (e = this.setState(n, t, void 0)) && !e.isFinished() ? (this._hideAnimation = e, this._showHideDisposer = e.events.on("animationended", function () {
                i.isHiding = !1, i._isHidden = !0;
              }, this), this._disposers.push(this._showHideDisposer), this._disposers.push(e)) : (this.isHiding = !1, this._isHidden = !0) : (this.visible = !1, this.isHiding = !1, this._isHidden = !0), this.readerHidden = !0, this.dispatchImmediately("hidden"), this.invalidate();
            }

            return A(t) || (t = this.hiddenState.transitionDuration), e;
          }, Object.defineProperty(e.prototype, "visible", {
            get: function get() {
              return this.getVisibility();
            },
            set: function set(t) {
              t = P(t), this.setVisibility(t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.getVisibility = function () {
            var t = this.getPropertyValue("visible");
            return S(t) || (t = !0), t;
          }, e.prototype.setVisibility = function (t) {
            if (this.setPropertyValue("visible", t) && (t ? this.group.removeAttr("visibility") : this.group.attr({
              visibility: "hidden"
            }), this.events.isEnabled("visibilitychanged"))) {
              var e = {
                type: "visibilitychanged",
                target: this,
                visible: t
              };
              this.events.dispatchImmediately("visibilitychanged", e);
            }
          }, Object.defineProperty(e.prototype, "zIndex", {
            get: function get() {
              return this.getPropertyValue("zIndex");
            },
            set: function set(t) {
              t = w(t), this.setPropertyValue("zIndex", t) && this.dispatch("zIndexChanged");
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.toFront = function () {
            var t = this.parent;
            t && t.children.indexOf(this) != t.children.length - 1 && (t.children.moveValue(this, t.children.length - 1), this.dispatch("zIndexChanged"));
          }, e.prototype.toBack = function () {
            var t = this.parent;
            t && 0 != t.children.indexOf(this) && (t.children.moveValue(this, 0), this.dispatch("zIndexChanged"));
          }, Object.defineProperty(e.prototype, "tooltip", {
            get: function get() {
              return this._tooltip ? this._tooltip : this.virtualParent ? this.virtualParent.tooltip : this.parent ? this.parent.tooltip : void 0;
            },
            set: function set(t) {
              this._tooltip && this.removeDispose(this._tooltip), this._tooltip = t, t && (t.parent = this.tooltipContainer);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "tooltipDataItem", {
            get: function get() {
              return this._tooltipDataItem || this.dataItem;
            },
            set: function set(t) {
              this._tooltipDataItem = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "tooltipColorSource", {
            get: function get() {
              return this._tooltipColorSource;
            },
            set: function set(t) {
              this._tooltipColorSource = t;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.showTooltip = function (t) {
            this.alwaysShowTooltip && !this._tooltip && this.tooltip && (this._tooltip = this.tooltip.clone());

            for (var e = this; null != e;) {
              if (!e.visible || e.disabled || e.__disabled) return void (this._tooltip && this._tooltip.visible && this._tooltip.hide(0));
              e = e.parent;
            }

            if (S(this.tooltipText) || S(this.tooltipHTML)) {
              var i = this.tooltip,
                  n = this.tooltipDataItem;

              if (i) {
                i.targetSprite = this;
                var r = this,
                    s = this.tooltipColorSource;

                if ((i.getStrokeFromObject || i.getFillFromObject) && s && (s.isTemplate ? n && bt(n.sprites, function (t) {
                  return t.clonedFrom != s || (r = t, !1);
                }) : r = s), i.getStrokeFromObject) {
                  for (var o = this.stroke, a = r; null != a.parent && (null == (o = a.stroke) && (a = a.parent), null == o););

                  o instanceof qs ? i.background.animate({
                    property: "stroke",
                    to: o
                  }, i.animationDuration) : i.background.stroke = o;
                }

                if (i.dataItem = n, i.label.populateStringFrom = this, i.getFillFromObject) {
                  var l = this.fill;

                  for (a = r; null != a.parent;) if (null == (l = a.fill) || l instanceof qs && null == l.rgb) a = a.parent;else if (null != l) break;

                  null == l && (l = Je("#000000")), l instanceof qs && i.visible ? i.background.animate({
                    property: "fill",
                    to: l
                  }, i.animationDuration) : i.background.fill = l, i.autoTextColor && l instanceof qs && (i.label.fill = l.alternative);
                }

                var h = "";

                if (this.tooltipHTML && (i.html = this.tooltipHTML, h = this.tooltipHTML), this.tooltipText && (i.text = this.tooltipText, h = this.tooltipText), this.updateTooltipPosition(t)) {
                  if (i.readerDescribedBy = this.uidAttr(), i.label.invalid && i.label.validate(), null != h && "" != h && "" != i.label.currentText) {
                    i && !i.parent && (i.parent = this.tooltipContainer);
                    var u = i.defaultState.transitionDuration;
                    return u <= 0 && (u = 1), i.show(u), !0;
                  }

                  this.hideTooltip(0);
                } else this.hideTooltip(0);
              }
            }

            return !1;
          }, e.prototype.updateTooltipPosition = function (t) {
            var e = this;

            if ("pointer" != this.tooltipPosition) {
              var i = Wi({
                x: this.tooltipX,
                y: this.tooltipY
              }, this);
              return this.pointTooltipTo(i);
            }

            if (this._interactionDisposer && this._interactionDisposer.dispose(), this._interactionDisposer = pr().body.events.on("track", function (t) {
              return e.pointTooltipTo(Ui(t.point, e.svgContainer.SVGContainer, e.svgContainer.cssScale), !0);
            }), t) return this.pointTooltipTo(t, !0);
          }, e.prototype.pointTooltipTo = function (t, e) {
            var i = this.tooltip;

            if (i && this.topParent) {
              if (i.showInViewport) return i.pointTo(t, e), !0;
              if (ct(t, {
                x: 0,
                y: 0,
                width: this.topParent.maxWidth,
                height: this.topParent.maxHeight
              })) return i.pointTo(t, e), !0;
            }

            return !1;
          }, e.prototype.hideTooltip = function (t) {
            if (!this.alwaysShowTooltip) {
              var e = this.tooltip;
              e && (e.targetSprite == this && (e.targetSprite = void 0), e.hide(t), this._interactionDisposer && (this._interactionDisposer.dispose(), this._interactionDisposer = void 0));
            }
          }, Object.defineProperty(e.prototype, "tooltipHTML", {
            get: function get() {
              return this.getPropertyValue("tooltipHTML");
            },
            set: function set(t) {
              t = C(t), this.hoverable = !0, this.setPropertyValue("tooltipHTML", t) && this.tooltip && this.tooltip.visible && this.showTooltip();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "tooltipText", {
            get: function get() {
              return this.getPropertyValue("tooltipText");
            },
            set: function set(t) {
              (t = C(t)) && (this.hoverable = !0), this.setPropertyValue("tooltipText", t) && this.tooltip && this.tooltip.visible && this.showTooltip();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "tooltipContainer", {
            get: function get() {
              return this._tooltipContainer ? this._tooltipContainer : this.parent ? this.parent.tooltipContainer : void 0;
            },
            set: function set(t) {
              this._tooltipContainer = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "tooltipX", {
            get: function get() {
              return this.getTooltipX();
            },
            set: function set(t) {
              t = w(t), this.setPropertyValue("tooltipX", t) && this.tooltip && this.tooltip.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "alwaysShowTooltip", {
            get: function get() {
              return this.getPropertyValue("alwaysShowTooltip");
            },
            set: function set(t) {
              t = P(t), this.setPropertyValue("alwaysShowTooltip", t) && this.tooltip && (t && this.showTooltip(), this.handleAlwaysShowTooltip());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "tooltipPosition", {
            get: function get() {
              return this.getPropertyValue("tooltipPosition");
            },
            set: function set(t) {
              this.setPropertyValue("tooltipPosition", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "tooltipY", {
            get: function get() {
              return this.getTooltipY();
            },
            set: function set(t) {
              t = w(t), this.setPropertyValue("tooltipY", t) && this.tooltip && this.tooltip.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.getTooltipX = function () {
            var t = this.getPropertyValue("tooltipX");
            return A(t) || (t = this.maxLeft + this.measuredWidth / 2 - this.pixelPaddingLeft - this.ex), t;
          }, e.prototype.getTooltipY = function () {
            var t = this.getPropertyValue("tooltipY");
            return A(t) || (t = this.maxTop + this.measuredHeight / 2 - this.pixelPaddingTop - this.ey), t;
          }, e.prototype.raiseCriticalError = function (t) {
            this.svgContainer && (this._adapterO ? this.modal.content = this._adapterO.apply("criticalError", t).message : this.modal.content = t.message, this.modal.closable = !1, this.modal.open(), this.disabled = !0), Ms.verbose && console.log(t);
          }, e.prototype.processConfig = function (e) {
            e && (S(e.tooltipColorSource) && T(e.tooltipColorSource) && this.map.hasKey(e.tooltipColorSource) && (e.tooltipColorSource = this.map.getKey(e.tooltipColorSource)), S(e.cursorOverStyle) && T(e.cursorOverStyle) && (e.cursorOverStyle = this.getCursorStyle(e.cursorOverStyle)), S(e.cursorDowntyle) && T(e.cursorDowntyle) && (e.cursorDowntyle = this.getCursorStyle(e.cursorDowntyle)), S(e.cursorOptions) && (S(e.cursorOptions.overStyle) && T(e.cursorOptions.overStyle) && (e.cursorOptions.overStyle = this.getCursorStyle(e.cursorOptions.overStyle)), S(e.cursorOptions.downStyle) && T(e.cursorOptions.downStyle) && (e.cursorOptions.downStyle = this.getCursorStyle(e.cursorOptions.downStyle)))), t.prototype.processConfig.call(this, e);
          }, e.prototype.getCursorStyle = function (t) {
            switch (t) {
              case "grab":
                return sa.grab;

              case "grabbing":
                return sa.grabbing;

              case "pointer":
                return sa.pointer;

              case "horizontalResize":
                return sa.horizontalResize;

              case "verticalResize":
                return sa.verticalResize;

              default:
                return sa["default"];
            }
          }, e.prototype.configOrder = function (e, i) {
            return e == i ? 0 : "tooltipColorSource" == e ? 1 : "tooltipColorSource" == i ? -1 : t.prototype.configOrder.call(this, e, i);
          }, Object.defineProperty(e.prototype, "isHidden", {
            get: function get() {
              return this._isHidden ? this._isHidden : !!this._parent && this._parent.isHidden;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "showOnInit", {
            get: function get() {
              return this.getPropertyValue("showOnInit");
            },
            set: function set(t) {
              t = P(t), this.setShowOnInit(t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setShowOnInit = function (t) {
            this.setPropertyValue("showOnInit", t) && (this.isTemplate || (!t || this.inited || this.hidden ? this._showOnInitDisposer && this._showOnInitDisposer.dispose() : (this._showOnInitDisposer = new gs([Fs.events.once("enterframe", this.hideInitially, this), this.events.once("beforevalidated", this.hideInitially, this, !1), this.events.on("inited", this.appear, this, !1)]), this._disposers.push(this._showOnInitDisposer))));
          }, e.prototype.hideInitially = function () {
            this.isDisposed() || (this.appeared = !1, this.inited || this.hide(0));
          }, e.prototype.appear = function () {
            var t = this;
            if (this.appeared = !1, this.hidden || this.isHidden || this.hide(0), this.hidden) this.appeared = !0, this.dispatch("appeared");else {
              var e = this.show();
              e && !e.isFinished() ? e.events.on("animationended", function () {
                t.appeared = !0, t.dispatch("appeared");
              }) : (this.appeared = !0, this.dispatch("appeared"));
            }
          }, Object.defineProperty(e.prototype, "hidden", {
            get: function get() {
              return this.getPropertyValue("hidden");
            },
            set: function set(t) {
              t = P(t), this.setPropertyValue("hidden", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "bbox", {
            get: function get() {
              return this.definedBBox ? this.definedBBox : this._bbox;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "plugins", {
            get: function get() {
              var t = this;
              return this._plugins || (this._plugins = new Ns(), this._disposers.push(this._plugins.events.on("inserted", function (e) {
                e.newValue.target = t, e.newValue.init();
              })), this._disposers.push(new Bs(this._plugins))), this._plugins;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype._systemUpdate = function (t) {
            this.validate();
          }, e.prototype._systemCheckIfValidate = function () {
            return !0;
          }, e.prototype._systemValidatePositions = function () {
            this.validatePosition();
          }, e.prototype._systemValidateLayouts = function () {}, e;
        }(Js);

        Fs.registeredClasses.Sprite = ba;

        var xa = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "Rectangle", e.element = e.paper.add("rect"), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.draw = function () {
            t.prototype.draw.call(this);
            var e = this._positionPrecision;
            this.pixelPerfect && (e = 0);
            var i = j(this.innerWidth, e),
                n = j(this.innerHeight, e);
            this.element.attr({
              width: i,
              height: n
            });
          }, e.prototype.measureElement = function () {}, Object.defineProperty(e.prototype, "bbox", {
            get: function get() {
              return this.definedBBox ? this.definedBBox : this.isMeasured ? {
                x: 0,
                y: 0,
                width: this.innerWidth,
                height: this.innerHeight
              } : {
                x: 0,
                y: 0,
                width: 0,
                height: 0
              };
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(ba);

        Fs.registeredClasses.Rectangle = xa;

        var _a = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e._childrenByLayout = [], e._childrenDisposers = new Ds(), e.hasFocused = !1, e.setStateOnSprites = [], e.layoutInvalid = !1, e._absoluteWidth = 0, e._absoluteHeight = 0, e._shouldBeReady = [], e._tapToActivate = !1, e.tapTimeout = 3e3, e.className = "Container", e._element = e.paper.addGroup("g"), e.group.add(e.element), e.setPropertyValue("pixelPerfect", !1), e.setPropertyValue("layout", "absolute"), e.setPropertyValue("fixedWidthGrid", !1), e.setPropertyValue("verticalCenter", "none"), e.setPropertyValue("horizontalCenter", "none"), e._positionPrecision = 4, e._disposers.push(new Is(e._childrenDisposers)), e.children.events.on("inserted", e.handleChildAdded, e), e.children.events.on("removed", e.handleChildRemoved, e), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.handleChildAdded = function (t) {
            this.processChild(t.newValue);
          }, e.prototype.processChild = function (t) {
            try {
              this._childrenDisposers.insertKey(t.uid, new gs([t.events.on("transformed", this.handleChildTransform, this), t.events.on("zIndexChanged", this.sortAndAdd, this)]));
            } catch (t) {}

            this.element && !t.disabled && this.element.add(t.group), t.parent = this, t.paper = this.paper, this.dispatchImmediately("childadded", {
              type: "childadded",
              newValue: t
            }), this.invalidate();
          }, e.prototype.sortAndAdd = function () {
            this.sortChildren(), this.addChildren();
          }, e.prototype.handleChildRemoved = function (t) {
            var e = t.oldValue;
            this._childrenDisposers.removeKey(e.uid), this.element && this.element.removeElement(e.group), e.isMeasured && this.invalidateLayout(), this.dispatchImmediately("childremoved", {
              type: "childremoved",
              oldValue: e
            });
          }, e.prototype.handleChildTransform = function (t) {
            t.target.isMeasured && this.invalidateLayout();
          }, e.prototype.invalidateLayout = function () {
            this.layoutInvalid || this.disabled || this.isTemplate || "none" == this.layout || this.__disabled || (this.layoutInvalid = !0, Fs.addToInvalidLayouts(this), Ls.requestFrame());
          }, e.prototype.invalidate = function () {
            t.prototype.invalidate.call(this), this.invalidateLayout();
          }, e.prototype.deepInvalidate = function () {
            t.prototype.invalidate.call(this), mt(this._childrenByLayout, function (t) {
              t instanceof e ? t.deepInvalidate() : t.invalidate();
            }), this.invalidateLayout();
          }, Object.defineProperty(e.prototype, "children", {
            get: function get() {
              return this._children || (this._children = new Ns()), this._children;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "minWidth", {
            get: function get() {
              return this.getPropertyValue("minWidth");
            },
            set: function set(t) {
              this.setPropertyValue("minWidth", t) && this.invalidateLayout();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "minHeight", {
            get: function get() {
              return this.getPropertyValue("minHeight");
            },
            set: function set(t) {
              this.setPropertyValue("minHeight", t) && this.invalidateLayout();
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.removeElement = function () {}, e.prototype.sortChildren = function () {
            var t = this;

            if (this._childrenByLayout = [], "none" != this.layout && "absolute" != this.layout && this.layout) {
              var e = [],
                  i = [];
              pe(this.children.iterator(), function (n) {
                "horizontal" == t.layout || "grid" == t.layout ? A(n.percentWidth) ? i.push(n) : e.push(n) : "vertical" == t.layout && A(n.percentHeight) ? i.push(n) : e.push(n);
              }), this._childrenByLayout = e.concat(i);
            } else this._childrenByLayout = this.children.values;

            this.calculateRelativeSize();
          }, e.prototype.calculateRelativeSize = function () {
            var t = this,
                e = 0,
                i = 0;
            mt(this._childrenByLayout, function (t) {
              t.isMeasured && (A(t.percentWidth) && (e += t.percentWidth), A(t.percentHeight) && (i += t.percentHeight));
            }), mt(this._childrenByLayout, function (n) {
              n.isMeasured && ("horizontal" == t.layout && (A(n.percentWidth) && (n.relativeWidth = n.percentWidth / e), A(n.percentHeight) && (n.relativeHeight = n.percentHeight / 100)), "vertical" == t.layout && (A(n.percentHeight) && (n.relativeHeight = n.percentHeight / i), A(n.percentWidth) && (n.relativeWidth = n.percentWidth / 100)), "grid" == t.layout && (A(n.percentHeight) && (n.relativeHeight = n.percentHeight / 100), A(n.percentWidth) && (n.relativeWidth = n.percentWidth / 100))), "absolute" != t.layout && n.isMeasured || (A(n.percentWidth) && (n.relativeWidth = n.percentWidth / 100), A(n.percentHeight) && (n.relativeHeight = n.percentHeight / 100));
            });
          }, e.prototype.addChildren = function () {
            if (this.element) {
              var t = Vt(this.children.values),
                  e = t.map(function (t, e) {
                return {
                  idx: e,
                  data: t
                };
              });
              e.sort(function (t, e) {
                var i = t.data.zIndex || 0,
                    n = e.data.zIndex || 0;
                return i < n ? -1 : i > n ? 1 : t.idx - e.idx;
              }), t = e.map(function (t) {
                return t.data;
              });
              var i = this.element,
                  n = !0;
              if (i.node && i.node.childNodes) for (var r = 0, s = i.node.childNodes.length; r < s; r++) if (i.node.childNodes[r] != t[r].group.node) {
                n = !1;
                break;
              }
              n || (mt(t, function (t) {
                t.group && i.add(t.group);
              }), this._background && this.group.addToBack(this._background.group), this.invalidateLayout());
            }
          }, e.prototype.createChild = function (t) {
            var e = new t();
            return e.parent = this, e;
          }, e.prototype.removeChildren = function () {
            for (; this.children.length > 0;) {
              var t = this.children.getIndex(0);
              t.parent = void 0, this.children.removeValue(t);
            }
          }, e.prototype.disposeChildren = function () {
            for (; this.children.length > 0;) {
              var t = this.children.getIndex(0);
              t.dispose(), this.children.removeValue(t);
            }
          }, Object.defineProperty(e.prototype, "background", {
            get: function get() {
              return this._background || (this._background = this.createBackground(), this.processBackground()), this._background;
            },
            set: function set(t) {
              this._background && this.background != t && this.removeDispose(this._background), t && (this._background = t, this._disposers.push(t), this.processBackground());
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.handleGlobalScale = function () {
            t.prototype.handleGlobalScale.call(this), this.children.each(function (t) {
              t.handleGlobalScale();
            });
          }, e.prototype.createBackground = function () {
            return new xa();
          }, e.prototype.processBackground = function () {
            var t = this._background;
            t && (t.isMeasured = !1, this._background.fill = new ta().getFor("background"), t.parent = this, t.isMeasured = !1, this.children.removeValue(t), this._disposers.push(t), this.group.addToBack(this._background.group));
          }, e.prototype.validateLayout = function () {
            var t = this;
            Fs.removeFromInvalidLayouts(this), this.layoutInvalid = !1, this._availableWidth = this.innerWidth, this._availableHeight = this.innerHeight;
            var e = 0,
                i = 0,
                n = !0;
            this.children && (this.sortChildren(), mt(this._childrenByLayout, function (r) {
              var s, o;

              if (A(r.relativeWidth) ? (s = j(t._availableWidth * r.relativeWidth, 2), "horizontal" == t.layout && (s -= r.pixelMarginRight + r.pixelMarginLeft)) : "horizontal" == t.layout && r.invalid && r.validate(), A(r.relativeHeight) ? (o = j(t._availableHeight * r.relativeHeight, 2), "vertical" == t.layout && (o -= r.pixelMarginTop + r.pixelMarginBottom)) : "vertical" == t.layout && r.invalid && r.validate(), 0 == r.invalid) {
                if (A(r.relativeWidth) && (r.maxWidth = s), A(r.relativeHeight) && (r.maxHeight = o), r.isMeasured) {
                  "horizontal" == t.layout && (A(r.percentWidth) || r.measuredWidth > 0 && (t._availableWidth -= r.measuredWidth + r.pixelMarginLeft + r.pixelMarginRight)), "vertical" == t.layout && (A(r.percentHeight) || r.measuredHeight > 0 && (t._availableHeight -= r.measuredHeight + r.pixelMarginTop + r.pixelMarginBottom));
                  var a = r.measuredWidth,
                      l = r.measuredHeight;
                  "none" != r.align && (a += r.pixelMarginLeft + r.pixelMarginRight), "none" != r.valign && (l += r.pixelMarginTop + r.pixelMarginBottom), e = Math.max(e, a), i = Math.max(i, l);
                }
              } else r.isMeasured && (A(r.relativeWidth) && r.maxWidth != s && (r.maxWidth = s, n = !1), A(r.relativeHeight) && r.maxHeight != o && (r.maxHeight = o, n = !1));
            })), this._absoluteWidth = e, this._absoluteHeight = i, n && this.arrange();
          }, e.prototype.arrange = function () {
            var t,
                e,
                i,
                n,
                r,
                s,
                o,
                a,
                l,
                h,
                u,
                p = this,
                c = this.children,
                d = 0,
                f = 0,
                g = W(this.innerWidth, this._absoluteWidth),
                y = W(this.innerHeight, this._absoluteHeight),
                m = this.pixelPaddingLeft,
                v = this.pixelPaddingRight,
                b = this.pixelPaddingTop,
                x = this.pixelPaddingBottom,
                _ = 0,
                P = 0,
                w = 0,
                C = 0,
                O = [],
                S = [],
                I = this.maxWidth,
                D = this.maxHeight,
                k = this.minWidth,
                T = this.minHeight,
                V = Vt(c.values);

            if (this.reverseOrder && V.reverse(), "grid" == this.layout) {
              s = I, r = 1;

              for (var F = 0, M = V.length; F < M; F++) if ((L = V[F]).isMeasured && !L.disabled && !L.__disabled) {
                var j = L.measuredWidth;
                j < s && (s = j), j > r && (r = j);
              }

              s = R(s, 1, I), r = R(r, 1, I), o = this.fixedWidthGrid ? I / r : I / s, o = W(1, Math.floor(o)), o = X(this.maxColumns, o), O = this.getColumnWidth(V, o, r);
            }

            for (F = 0, M = V.length; F < M; F++) {
              var L;
              if (!(L = V[F]).isMeasured || L.disabled || L.__disabled) L.validatePosition();else {
                var E = void 0,
                    B = void 0,
                    N = L.pixelMarginLeft,
                    H = L.pixelMarginRight,
                    Y = L.pixelMarginTop,
                    z = L.pixelMarginBottom,
                    U = L.measuredWidth,
                    G = L.measuredHeight,
                    K = void 0,
                    Z = void 0,
                    q = void 0,
                    $ = void 0;

                switch (this.layout) {
                  case "none":
                    break;

                  case "absolute":
                    switch (L.align) {
                      case "left":
                        E = N - L.maxLeft;
                        break;

                      case "center":
                        E = (g - U) / 2 - L.maxLeft;
                        break;

                      case "right":
                        E = g - H - L.maxRight;
                        break;

                      default:
                        L.x instanceof hs || (E = L.pixelX);
                    }

                    switch (L.valign) {
                      case "top":
                        B = Y - L.maxTop;
                        break;

                      case "middle":
                        B = (y - G) / 2 - L.maxTop;
                        break;

                      case "bottom":
                        B = y - z - L.maxBottom;
                        break;

                      default:
                        L.y instanceof hs || (B = L.pixelY);
                    }

                    break;

                  case "vertical":
                    switch (L.align) {
                      case "left":
                        E = N - L.maxLeft;
                        break;

                      case "center":
                        E = (g - U) / 2 - L.maxLeft;
                        break;

                      case "right":
                        E = g - H - L.maxRight;
                        break;

                      default:
                        E = L.pixelX;
                    }

                    P = (B = P + Y - L.maxTop) + L.maxBottom + z;
                    break;

                  case "horizontal":
                    switch (L.valign) {
                      case "top":
                        B = Y - L.maxTop;
                        break;

                      case "middle":
                        B = (y - G) / 2 - L.maxTop;
                        break;

                      case "bottom":
                        B = y - z - L.maxBottom;
                        break;

                      default:
                        B = L.pixelY;
                    }

                    _ = (E = _ + N - L.maxLeft) + L.maxRight + H;
                    break;

                  case "grid":
                    switch (E = _ + N - L.maxLeft, L.valign) {
                      case "top":
                        B = P + Y - L.maxTop;
                        break;

                      case "middle":
                        B = P + (y - G) / 2 - L.maxTop;
                        break;

                      case "bottom":
                        B = P + y - z - L.maxBottom;
                        break;

                      default:
                        B = P - L.maxTop;
                    }

                    _ += O[C], S[w] = W(S[w], G);
                    var J = O[++C];

                    if (A(J) || (J = r), _ > X(this.innerWidth, I) - J + 1 && C < o) {
                      o = C, _ = 0, P = 0, w = 0, C = 0, O = this.getColumnWidth(V, o, r), S = [], F = -1;
                      continue;
                    }

                    C >= o && (C = 0, P += S[w], w++, _ = 0);
                }

                "none" !== this.layout && (L.moveTo({
                  x: E,
                  y: B
                }), K = E + L.maxLeft - N, Z = E + L.maxRight + H, q = B + L.maxTop - Y, $ = B + L.maxBottom + z, (Z > e || !A(e)) && (e = Z), (K < t || !A(t)) && (t = K), (q < i || !A(i)) && (i = q), ($ > n || !A(n)) && (n = $), (Z > l || !A(l)) && (l = Z), (K < a || !A(a)) && (a = K), (q < h || !A(h)) && (h = q), ($ > u || !A(u)) && (u = u));
              }
            }

            if ("none" == this.layout) {
              var Q = this.bbox;
              t = Q.x, e = Q.x + Q.width, i = Q.y, n = Q.y + Q.height;
            }

            A(t) || (t = 0, a = 0), A(e) || (l = e = this._availableWidth), A(i) || (i = 0, h = 0), A(n) || (u = n = this._availableHeight), A(h) || (h = 0), A(u) || (u = h), A(a) || (a = 0), A(l) || (l = a), d = e - t, f = n - i, A(this.relativeWidth) && (t = 0, e = d = I - m - v), A(this.relativeHeight) && (i = 0, n = f = D - b - x), A(this._pixelWidth) && (t = 0, d = this._pixelWidth - m - v), A(k) && d < k && (t = 0, d = this.minWidth - m - v), A(this._pixelHeight) && (i = 0, f = this._pixelHeight - b - x), A(T) && f < T && (i = 0, f = T - b - x);
            var tt = l - a,
                et = u - h;

            if ("none" != this.layout && (this.contentAlign || this.contentValign) && c.length > 0) {
              var it,
                  nt,
                  rt = d,
                  st = f;
              rt < tt && (rt = tt), st < et && (st = et), "center" == this.contentAlign && (it = (rt - tt) / 2), "right" == this.contentAlign && (it = rt - tt), "middle" == this.contentValign && (nt = (st - et) / 2), "bottom" == this.contentValign && (nt = st - et), A(it) && pe(c.iterator(), function (t) {
                var e = t.maxLeft,
                    i = it;
                "horizontal" == p.layout && (t.x = t.pixelX + i), "grid" == p.layout && (t.x = t.pixelX + i), "vertical" == p.layout && (i += t.pixelMarginLeft, "none" == t.align && (t.x = i - e)), "absolute" == p.layout && (i += t.pixelMarginLeft, "none" == t.align && (t.x = i - e));
              }), A(nt) && pe(c.iterator(), function (t) {
                var e = t.maxTop,
                    i = nt;
                "horizontal" == p.layout && (i += t.pixelMarginTop, "none" == t.valign && (t.y = i - e)), "grid" == p.layout && (i += t.pixelMarginTop, t.y = i - e), "vertical" == p.layout && (t.y = t.pixelY + i), "absolute" == p.layout && (i += t.pixelMarginTop, "none" == t.valign && (t.y = i - e));
              });
            }

            var ot = this.bbox;
            d = W(d, k), f = W(f, T), this.contentWidth = d, this.contentHeight = f, d = X(d, I), f = X(f, D), this._bbox = {
              x: t,
              y: i,
              width: d,
              height: f
            };
            var at = this.maxLeft,
                lt = this.maxTop,
                ht = this.maxBottom,
                ut = this.maxRight;

            if (this.measure(), (at != this.maxLeft || ut != this.maxRight || lt != this.maxTop || ht != this.maxBottom) && this.events.isEnabled("transformed")) {
              var pt = {
                type: "transformed",
                target: this
              };
              ot && (pt.dummyData = ot.width + " " + d + "  " + ot.height + " " + f), this.events.dispatchImmediately("transformed", pt);
            }
          }, e.prototype.updateCenter = function () {
            t.prototype.updateCenter.call(this), this.updateBackground();
          }, e.prototype.updateBackground = function () {
            var t = this._background;
            t && (t.x = this.maxLeft, t.y = this.maxTop, t.width = this.maxRight - this.maxLeft, t.height = this.maxBottom - this.maxTop);
          }, e.prototype.getColumnWidth = function (t, e, i) {
            var n = this,
                r = [],
                s = 0;
            return mt(t, function (t) {
              t.isMeasured && (n.fixedWidthGrid ? r[s] = i : r[s] = W(r[s], t.measuredWidth + t.pixelMarginRight + t.pixelMarginLeft), ++s == e && (s = 0));
            }), r;
          }, Object.defineProperty(e.prototype, "layout", {
            get: function get() {
              return this.getPropertyValue("layout");
            },
            set: function set(t) {
              this.setPropertyValue("layout", t) && this.invalidateLayout();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "contentValign", {
            get: function get() {
              return this.getPropertyValue("contentValign");
            },
            set: function set(t) {
              this.setPropertyValue("contentValign", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "contentAlign", {
            get: function get() {
              return this.getPropertyValue("contentAlign");
            },
            set: function set(t) {
              this.setPropertyValue("contentAlign", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "fixedWidthGrid", {
            get: function get() {
              return this.getPropertyValue("fixedWidthGrid");
            },
            set: function set(t) {
              this.setPropertyValue("fixedWidthGrid", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "maxColumns", {
            get: function get() {
              return this.getPropertyValue("maxColumns");
            },
            set: function set(t) {
              this.setPropertyValue("maxColumns", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "reverseOrder", {
            get: function get() {
              return this.getPropertyValue("reverseOrder");
            },
            set: function set(t) {
              this.setPropertyValue("reverseOrder", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "setStateOnChildren", {
            get: function get() {
              return this.getPropertyValue("setStateOnChildren");
            },
            set: function set(t) {
              this.setPropertyValue("setStateOnChildren", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.fitsToBounds = function (t) {
            var e = t.x,
                i = t.y;
            return e >= -.5 && e <= this.pixelWidth + .5 && i >= -.5 && i <= this.pixelHeight + .5;
          }, e.prototype.copyFrom = function (e) {
            var i = this;
            t.prototype.copyFrom.call(this, e), this.layout = e.layout, this.setStateOnChildren = e.setStateOnChildren, e._background && (this.background = e._background.clone(), this.background.copyFrom(e._background)), pe(e.children.iterator(), function (t) {
              t.shouldClone && (t.clone().parent = i);
            });
          }, Object.defineProperty(e.prototype, "preloader", {
            get: function get() {
              return this._preloader || (this.parent ? this.parent.preloader : void 0);
            },
            set: function set(t) {
              this._preloader && this.removeDispose(this._preloader), this._preloader = t, t && (t.parent = this.tooltipContainer, this._disposers.push(t));
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setPaper = function (e) {
            var i = this,
                n = t.prototype.setPaper.call(this, e);
            return n && (this._background && (this._background.paper = e, this._background.topParent = this.topParent), this.children.each(function (t) {
              t.setPaper(e), t.topParent = i.topParent;
            })), n;
          }, e.prototype.removeFromInvalids = function () {
            t.prototype.removeFromInvalids.call(this), Fs.removeFromInvalidLayouts(this);
          }, e.prototype.setDataItem = function (e) {
            this._dataItem != e && (pe(this.children.iterator(), function (t) {
              t.dataItem = e;
            }), this._background && (this._background.dataItem = e)), t.prototype.setDataItem.call(this, e);
          }, e.prototype.measureElement = function () {
            this.disabled || this.isTemplate || "none" == this.layout || this.__disabled || this.validateLayout();
          }, e.prototype.getTooltipX = function () {
            return t.prototype.getTooltipX.call(this);
          }, e.prototype.getTooltipY = function () {
            return t.prototype.getTooltipY.call(this);
          }, Object.defineProperty(e.prototype, "fontFamily", {
            get: function get() {
              return this.getPropertyValue("fontFamily");
            },
            set: function set(t) {
              this.setPropertyValue("fontFamily", t, !0) && (this.setSVGAttribute({
                "font-family": t
              }), this.invalidateLabels());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "fontSize", {
            get: function get() {
              return this.getPropertyValue("fontSize");
            },
            set: function set(t) {
              this.setPropertyValue("fontSize", t, !0) && (this.setSVGAttribute({
                "font-size": t
              }), this.invalidateLabels());
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.invalidateLabels = function () {
            this.children.each(function (t) {
              t.hardInvalidate ? t.hardInvalidate() : t instanceof e && t.invalidateLabels();
            });
          }, Object.defineProperty(e.prototype, "fontWeight", {
            get: function get() {
              return this.getPropertyValue("fontWeight");
            },
            set: function set(t) {
              this.setPropertyValue("fontWeight", t), this.setSVGAttribute({
                "font-weight": t
              });
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "textDecoration", {
            get: function get() {
              return this.getPropertyValue("textDecoration");
            },
            set: function set(t) {
              this.setPropertyValue("textDecoration", t), this.setSVGAttribute({
                "text-decoration": t
              });
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.dispose = function () {
            this._background && this._background.dispose(), this._shouldBeReady = [], this.disposeChildren(), t.prototype.dispose.call(this);
          }, e.prototype.setState = function (e, i, n) {
            var r = e;
            return e instanceof Po && (r = e.name), this.setStateOnChildren && pe(this.children.iterator(), function (t) {
              t.setState(r, i, n), "active" != r && (t.isActive = !1);
            }), this._background && this._background.setState(r), this.setStateOnSprites.length && mt(this.setStateOnSprites, function (t) {
              t.setState(r, i, n);
            }), t.prototype.setState.call(this, e, i, n);
          }, e.prototype.setActive = function (e) {
            t.prototype.setActive.call(this, e), this._background && (this._background.isActive = e);
          }, e.prototype.dispatchReady = function () {
            var e = this;

            if (!this.isReady() && !this.isDisposed()) {
              var i = !0;
              ue(this.children.iterator(), function (t) {
                return !!(t.__disabled || t.disabled || t.isReady()) || (i = !1, !1);
              }), bt(this._shouldBeReady, function (t) {
                return !!(t.__disabled || t.disabled || t.isReady()) || (i = !1, !1);
              }), i ? t.prototype.dispatchReady.call(this) : Fs.events.once("exitframe", function () {
                e.dispatchReady(), Ls.requestFrame();
              }, void 0, !1);
            }
          }, e.prototype._systemUpdate = function (e) {
            this.children.each(function (t) {
              t.invalid && (t._systemCheckIfValidate() ? t.dataItem && t.dataItem.component && t.dataItem.component.dataInvalid ? e.push(t) : t.validate() : e.push(t));
            }), t.prototype._systemUpdate.call(this, e);
          }, e.prototype._systemValidatePositions = function () {
            this.children.each(function (t) {
              t.positionInvalid && t.validatePosition();
            }), t.prototype._systemValidatePositions.call(this);
          }, e.prototype._systemValidateLayouts = function () {
            this.layoutInvalid && !this.isDisposed() && this.validateLayout();
          }, Object.defineProperty(e.prototype, "tapToActivate", {
            get: function get() {
              return this._tapToActivate;
            },
            set: function set(t) {
              this._tapToActivate != t && this.setTapToActivate(t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setTapToActivate = function (t) {
            var e = this;
            this._tapToActivate = t, this.interactions.isTouchProtected = t, t && this.interactions.setEventDisposer("container-tapToActivate", t, function () {
              return new gs([e.events.on("hit", e.handleTapToActivate, e, !1), e.events.on("down", e.initTapTimeout, e, !1), e.events.on("track", e.initTapTimeout, e, !1), pr().body.events.on("down", function (t) {
                pr().isLocalElement(t.pointer, e.paper.svg, e.uid) || e.handleTapToActivateDeactivation();
              }, e, !1)]);
            }), pr();
          }, e.prototype.handleTapToActivate = function () {
            this.interactions.isTouchProtected = !1, this.initTapTimeout();
          }, e.prototype.handleTapToActivateDeactivation = function () {
            this.interactions.isTouchProtected = !0;
          }, e.prototype.initTapTimeout = function () {
            var t = this;
            this._tapToActivateTimeout && this._tapToActivateTimeout.dispose(), this.tapToActivate && !this.interactions.isTouchProtected && this.tapTimeout && (this._tapToActivateTimeout = this.setTimeout(function () {
              t.handleTapToActivateDeactivation();
            }, this.tapTimeout));
          }, e.prototype.hasLicense = function () {
            if (Ms.commercialLicense) return !0;

            for (var t = 0; t < Ms.licenses.length; t++) if (Ms.licenses[t].match(/^CH.{5,}/i)) return !0;

            return !1;
          }, e;
        }(ba);

        Fs.registeredClasses.Container = _a;

        var Pa = function () {
          function t() {}

          return t.prototype.parse = function (t) {
            return [];
          }, Object.defineProperty(t.prototype, "parsableNumbers", {
            get: function get() {
              return this.options.numberFields && this.options.numberFields.length > 0;
            },
            enumerable: !0,
            configurable: !0
          }), t.prototype.maybeToNumber = function (t, e) {
            return -1 !== this.options.numberFields.indexOf(t) ? Ai(e) : e;
          }, Object.defineProperty(t.prototype, "parsableDates", {
            get: function get() {
              return this.options.dateFields && this.options.dateFields.length > 0;
            },
            enumerable: !0,
            configurable: !0
          }), t.prototype.maybeToDate = function (t, e) {
            return -1 !== this.options.dateFields.indexOf(t) ? this.options.dateFormatter.parse(e, this.dateFormat) : e;
          }, t.prototype.maybeToEmpty = function (t) {
            return S(t) && "" != t || !S(this.options.emptyAs) ? t : this.options.emptyAs;
          }, Object.defineProperty(t.prototype, "dateFormatter", {
            get: function get() {
              return this.options.dateFormatter || (this.options.dateFormatter = new ua(), this.options.dateFormat && (this.options.dateFormat = this.options.dateFormat)), this.options.dateFormatter;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(t.prototype, "dateFormat", {
            get: function get() {
              return this.options.dateFormat || this.dateFormatter.inputDateFormat;
            },
            enumerable: !0,
            configurable: !0
          }), t;
        }(),
            wa = [",", ";", "\t"],
            Ca = function (t) {
          function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.contentType = "text/csv", e.options = {
              delimiter: "",
              reverse: !1,
              skipRows: 0,
              skipEmpty: !0,
              useColumnNames: !1
            }, e;
          }

          return n(e, t), e.isCSV = function (t) {
            return !!e.getDelimiterFromData(t);
          }, e.getDelimiterFromData = function (t) {
            var e,
                i = t.split("\n"),
                n = i.length;
            return mt(wa, function (t) {
              for (var r = 0, s = 0, o = 0; o < n; ++o) {
                if (!((r = i[o].split(t).length) > 1)) {
                  s = 0;
                  break;
                }

                if (0 === s) s = r;else if (r != s) {
                  s = 0;
                  break;
                }
              }

              s && (e = t);
            }), e;
          }, e.prototype.parse = function (t) {
            this.options.delimiter || (this.options.delimiter = e.getDelimiterFromData(t));
            var i,
                n,
                r,
                s = this.CSVToArray(t, this.options.delimiter),
                o = S(this.options.emptyAs),
                a = this.parsableNumbers,
                l = this.parsableDates,
                h = [],
                u = [];

            for (n = 0; n < this.options.skipRows; n++) s.shift();

            if (this.options.useColumnNames) {
              u = s.shift();

              for (var p = 0; p < u.length; p++) "" === (i = S(u[p]) ? u[p].replace(/^\s+|\s+$/gm, "") : "") && (i = "col" + p), u[p] = i;
            }

            for (; r = this.options.reverse ? s.pop() : s.shift();) if (!this.options.skipEmpty || 1 !== r.length || "" !== r[0]) {
              var c = {};

              for (n = 0; n < r.length; n++) c[i = void 0 === u[n] ? "col" + n : u[n]] = "" === r[n] ? this.options.emptyAs : r[n], o && (c[i] = this.maybeToEmpty(c[i])), a && (c[i] = this.maybeToNumber(i, c[i])), l && (c[i] = this.maybeToDate(i, c[i]));

              h.push(c);
            }

            return h;
          }, e.prototype.CSVToArray = function (t, e) {
            e = e || ",";

            for (var i = new RegExp("(\\" + e + '|\\r?\\n|\\r|^)(?:"([^"]*(?:""[^"]*)*)"|([^"\\' + e + "\\r\\n]*))", "gi"), n = [[]], r = null; r = i.exec(t);) {
              var s = r[1];
              s.length && s !== e && n.push([]);
              var o = void 0;
              o = r[2] ? r[2].replace(new RegExp('""', "g"), '"') : r[3], n[n.length - 1].push(o);
            }

            return n;
          }, e;
        }(Pa),
            Oa = function (t) {
          function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.contentType = "application/json", e.options = {}, e;
          }

          return n(e, t), e.isJSON = function (t) {
            try {
              return JSON.parse(t), !0;
            } catch (t) {
              return !1;
            }
          }, e.prototype.parse = function (t) {
            var e,
                i = this;

            try {
              S(JSON) && (e = JSON.parse(t));
            } catch (t) {
              return;
            }

            var n = S(this.options.emptyAs),
                r = this.parsableNumbers,
                s = this.parsableDates;
            if (Array.isArray(e) && (r || s || n)) for (var o = 0, a = e.length; o < a; o++) !function (t, o) {
              var a = e[t];
              Qt(a, function (t, e) {
                n && (a[t] = i.maybeToEmpty(a[t])), r && (a[t] = i.maybeToNumber(t, a[t])), s && (a[t] = i.maybeToDate(t, a[t]));
              });
            }(o);
            return e;
          }, e;
        }(Pa),
            Sa = function () {
          function t() {
            this.adapter = new Ks(this);
          }

          return t.prototype.load = function (t) {
            var e = yt(Array.isArray(t) ? t : [t], function (t) {
              return t.dispatchImmediately("started"), t.dispatchImmediately("loadstarted"), fr(t.url, t, t.requestOptions);
            });
            Promise.all(e).then(function (t) {
              mt(t, function (t) {
                var e = t.target;
                e.dispatchImmediately("loadended"), t.error ? e.events.isEnabled("error") && e.events.dispatchImmediately("error", {
                  type: "error",
                  code: t.xhr.status,
                  message: e.language.translate("Unable to load file: %1", null, e.url),
                  target: e
                }) : e.processData(t.response, t.type), e.dispatchImmediately("ended");
              });
            })["catch"](function (t) {
              t.target && (t.target.dispatchImmediately("loadended"), t.target.events.isEnabled("error") && t.target.events.dispatchImmediately("error", {
                type: "error",
                code: t.xhr.status,
                message: t.target.language.translate("Unable to load file: %1", null, t.target.url),
                target: t.target
              }), t.target.dispatchImmediately("ended"));
            });
          }, t.prototype.getParserByType = function (t) {
            return this.adapter.apply("getParserByType", {
              parser: null,
              type: t
            }).parser || ("csv" == t || "text/csv" == t || "application/vnd.ms-excel" == t ? new Ca() : "json" == t || "application/json" == t ? new Oa() : void 0);
          }, t.prototype.getParserByData = function (t, e) {
            var i = this.adapter.apply("getParserByData", {
              parser: null,
              data: t,
              type: e
            }).parser;

            if (!i) {
              if (i = this.getParserByType(e)) return i;
              if (Oa.isJSON(t)) return this.getParserByType("json");
              if (Ca.isCSV(t)) return this.getParserByType("csv");
            }

            return i;
          }, t;
        }(),
            Ia = new Sa(),
            Da = function (t) {
          function e(e, i) {
            var n = t.call(this) || this;
            return n.adapter = new Ks(n), n._requestOptions = {}, n._incremental = !1, n._incrementalParams = {}, n._keepCount = !1, n._updateCurrentData = !1, n.showPreloader = !0, n.className = "DataSource", e && (n.url = e), i && (n.parser = "string" == typeof i ? Ia.getParserByType(i) : i), n;
          }

          return n(e, t), e.prototype.processData = function (t, e) {
            if (this.dispatchImmediately("parsestarted"), this.parser || (this.parser = Ia.getParserByData(t, e), this.parser)) {
              if (this.parser.options = this.adapter.apply("parserOptions", this.parser.options), this.parser.options.dateFields = this.adapter.apply("dateFields", this.parser.options.dateFields || []), this.parser.options.numberFields = this.adapter.apply("numberFields", this.parser.options.numberFields || []), this.parser.options.dateFields && !this.parser.options.dateFormatter && (this.parser.options.dateFormatter = this.dateFormatter), this.data = this.adapter.apply("parsedData", this.parser.parse(this.adapter.apply("unparsedData", t))), !S(this.data) && this.events.isEnabled("parseerror")) {
                var i = {
                  type: "parseerror",
                  message: this.language.translate("Error parsing file: %1", null, this.url),
                  target: this
                };
                this.events.dispatchImmediately("parseerror", i);
              }

              this.dispatchImmediately("parseended"), S(this.data) && this.dispatchImmediately("done", {
                data: this.data
              }), this.lastLoad = new Date();
            } else {
              if (this.events.isEnabled("parseerror")) {
                var n = {
                  type: "parseerror",
                  message: this.language.translate("No parser available for file: %1", null, this.url),
                  target: this
                };
                this.events.dispatchImmediately("parseerror", n);
              }

              this.dispatchImmediately("parseended");
            }
          }, Object.defineProperty(e.prototype, "url", {
            get: function get() {
              var t = this.disableCache ? this.timestampUrl(this._url) : this._url;
              return this.incremental && this.component.data.length && (t = this.addUrlParams(t, this.incrementalParams)), this.adapter.apply("url", t);
            },
            set: function set(t) {
              this._url = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "requestOptions", {
            get: function get() {
              return this.adapter.apply("requestOptions", this._requestOptions);
            },
            set: function set(t) {
              this._requestOptions = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "parser", {
            get: function get() {
              return this._parser || (this._parser = new Oa()), this.adapter.apply("parser", this._parser);
            },
            set: function set(t) {
              this._parser = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "reloadFrequency", {
            get: function get() {
              return this.adapter.apply("reloadTimeout", this._reloadFrequency);
            },
            set: function set(t) {
              var e = this;
              this._reloadFrequency != t && (this._reloadFrequency = t, t ? S(this._reloadDisposer) || (this._reloadDisposer = this.events.on("ended", function (t) {
                e._reloadTimeout = setTimeout(function () {
                  e.load();
                }, e.reloadFrequency);
              })) : S(this._reloadDisposer) && (this._reloadDisposer.dispose(), this._reloadDisposer = void 0));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "incremental", {
            get: function get() {
              return this.adapter.apply("incremental", this._incremental);
            },
            set: function set(t) {
              this._incremental = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "incrementalParams", {
            get: function get() {
              return this.adapter.apply("incrementalParams", this._incrementalParams);
            },
            set: function set(t) {
              this._incrementalParams = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "keepCount", {
            get: function get() {
              return this.adapter.apply("keepCount", this._keepCount);
            },
            set: function set(t) {
              this._keepCount = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "updateCurrentData", {
            get: function get() {
              return this.adapter.apply("updateCurrentData", this._updateCurrentData);
            },
            set: function set(t) {
              this._updateCurrentData = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "language", {
            get: function get() {
              return this._language ? this._language : this.component ? (this._language = this.component.language, this._language) : (this.language = new aa(), this.language);
            },
            set: function set(t) {
              this._language = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "dateFormatter", {
            get: function get() {
              return this._dateFormatter ? this._dateFormatter : this.component ? (this._dateFormatter = this.component.dateFormatter, this._dateFormatter) : (this.dateFormatter = new ua(), this.dateFormatter);
            },
            set: function set(t) {
              this._dateFormatter = t;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.timestampUrl = function (t) {
            var e = {};
            return e[new Date().getTime().toString()] = "", this.addUrlParams(t, e);
          }, e.prototype.dispose = function () {
            t.prototype.dispose.call(this), this._reloadTimeout && clearTimeout(this._reloadTimeout), S(this._reloadDisposer) && (this._reloadDisposer.dispose(), this._reloadDisposer = void 0);
          }, e.prototype.load = function () {
            this.url && (this._reloadTimeout && clearTimeout(this._reloadTimeout), Ia.load(this));
          }, e.prototype.addUrlParams = function (t, e) {
            var i = t.match(/\?/) ? "&" : "?",
                n = [];
            return Qt(e, function (t, e) {
              "" != e ? n.push(t + "=" + encodeURIComponent(e)) : n.push(t);
            }), n.length ? t + i + n.join("&") : t;
          }, e.prototype.processConfig = function (e) {
            Fs.registeredClasses.json = Oa, Fs.registeredClasses.JSONParser = Oa, Fs.registeredClasses.csv = Ca, Fs.registeredClasses.CSVParser = Ca, t.prototype.processConfig.call(this, e);
          }, e;
        }(Js),
            ka = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e._rules = new Ns(), e._appliedRules = {}, e._useDefault = !0, e.adapter = new Ks(e), e._enabled = !1, e._noStates = [], e.className = "Responsive", e.rules.events.on("inserted", e.checkRules, !0), e.rules.events.on("removed", e.checkRules, !0), e._disposers.push(e.rules.events), e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "component", {
            get: function get() {
              return this._component;
            },
            set: function set(t) {
              t != this._component && (this._sizeEventDisposer && this.removeDispose(this._sizeEventDisposer), this._component = t, this._sizeEventDisposer = I(this.component).events.on("sizechanged", this.checkRules, this), this._disposers.push(this._sizeEventDisposer), this.enabled = !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "enabled", {
            get: function get() {
              return this.adapter.apply("enabled", this._enabled);
            },
            set: function set(t) {
              this._enabled != t && (this._enabled = t, this.applyRules());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "useDefault", {
            get: function get() {
              return this.adapter.apply("useDefault", this._useDefault);
            },
            set: function set(t) {
              this._useDefault != t && (this._useDefault = t, this.applyRules());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "rules", {
            get: function get() {
              return this.adapter.apply("rules", this._rules);
            },
            set: function set(t) {
              this._rules = t, this._enabled = !0, this.applyRules();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "defaultRules", {
            get: function get() {
              return this.adapter.apply("defaultRules", Ta);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "allRules", {
            get: function get() {
              var t = new Ns();
              return this.useDefault && t.copyFrom(this.defaultRules), t.copyFrom(this.rules), this.adapter.apply("allRules", t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.isApplied = function (t) {
            var e = this._appliedRules[t];
            return !!S(e) && e;
          }, e.prototype.checkRules = function () {
            var t = this,
                e = this.allRules;

            if (e && 0 != e.length) {
              var i = !1,
                  n = I(this.component);

              if (pe(e.iterator(), function (e) {
                e.id || (e.id = Fs.getUniqueId());
                var r = e.relevant(n);
                (r && !t.isApplied(e.id) || !r && t.isApplied(e.id)) && (i = !0), t._appliedRules[e.id] = r;
              }), i) {
                if (!this.component.isReady()) return n.hidden = !0, void n.events.once("ready", function (e) {
                  t.applyRules(), e.target.show(0);
                });
                this.dispatchImmediately("ruleschanged"), this.applyRules();
              }
            }
          }, e.prototype.applyRules = function (t) {
            var e = this,
                i = S(t) ? t : I(this.component),
                n = !1;
            this.enabled && pe(this.allRules.iterator(), function (t) {
              var r = e.getState(t, i);
              r && (n || (i.applyCurrentState(0), n = !0), e.isApplied(I(t.id)) && (r.transitionDuration = 0, i.setState(r), e.dispatchImmediately("ruleapplied", {
                rule: t
              })));
            }), i.children && pe(i.children.iterator(), function (t) {
              e.applyRules(t);
            });
          }, e.prototype.getState = function (t, e) {
            var i = "responsive-" + t.id,
                n = e.uid + "_" + i;

            if (-1 === ft(this._noStates, n)) {
              if (e.states.hasKey(i)) return e.states.getKey(i);
              var r = t.state(e, i);
              return r || this._noStates.push(n), r;
            }
          }, e.prototype.getValue = function (t, e) {
            var i = t.getPropertyValue(e);
            return !S(i) && S(t[e]) && (i = t[e]), i;
          }, e;
        }(Js),
            Ta = new Ns();

        Ta.events.on("inserted", function (t) {
          t.newValue.id = Fs.getUniqueId();
        });

        var Aa = function () {
          function t() {}

          return t.widthXXS = function (e) {
            return e.pixelWidth <= t.XXS;
          }, t.widthXS = function (e) {
            return e.pixelWidth <= t.XS;
          }, t.widthS = function (e) {
            return e.pixelWidth <= t.S;
          }, t.widthM = function (e) {
            return e.pixelWidth <= t.M;
          }, t.widthL = function (e) {
            return e.pixelWidth <= t.L;
          }, t.widthXL = function (e) {
            return e.pixelWidth <= t.XL;
          }, t.widthXXL = function (e) {
            return e.pixelWidth <= t.XXL;
          }, t.heightXXS = function (e) {
            return e.pixelHeight <= t.XXS;
          }, t.heightXS = function (e) {
            return e.pixelHeight <= t.XS;
          }, t.heightS = function (e) {
            return e.pixelHeight <= t.S;
          }, t.heightM = function (e) {
            return e.pixelHeight <= t.M;
          }, t.heightL = function (e) {
            return e.pixelHeight <= t.L;
          }, t.heightXL = function (e) {
            return e.pixelHeight <= t.XL;
          }, t.heightXXL = function (e) {
            return e.pixelHeight <= t.XXL;
          }, t.isXXS = function (e) {
            return e.pixelWidth <= t.XXS && e.pixelHeight <= t.XXS;
          }, t.isXS = function (e) {
            return e.pixelWidth <= t.XS && e.pixelHeight <= t.XS;
          }, t.isS = function (e) {
            return e.pixelWidth <= t.S && e.pixelHeight <= t.S;
          }, t.isM = function (e) {
            return e.pixelWidth <= t.M && e.pixelHeight <= t.M;
          }, t.isL = function (e) {
            return e.pixelWidth <= t.L && e.pixelHeight <= t.L;
          }, t.isXL = function (e) {
            return e.pixelWidth <= t.XL && e.pixelHeight <= t.XL;
          }, t.isXXL = function (e) {
            return e.pixelWidth <= t.XXL && e.pixelHeight <= t.XXL;
          }, t.maybeXXS = function (e) {
            return e.pixelWidth <= t.XXS || e.pixelHeight <= t.XXS;
          }, t.maybeXS = function (e) {
            return e.pixelWidth <= t.XS || e.pixelHeight <= t.XS;
          }, t.maybeS = function (e) {
            return e.pixelWidth <= t.S || e.pixelHeight <= t.S;
          }, t.maybeM = function (e) {
            return e.pixelWidth <= t.M || e.pixelHeight <= t.M;
          }, t.maybeL = function (e) {
            return e.pixelWidth <= t.L || e.pixelHeight <= t.L;
          }, t.maybeXL = function (e) {
            return e.pixelWidth <= t.XL || e.pixelHeight <= t.XL;
          }, t.maybeXXL = function (e) {
            return e.pixelWidth <= t.XXL || e.pixelHeight <= t.XXL;
          }, t.XXS = 100, t.XS = 200, t.S = 300, t.M = 400, t.L = 600, t.XL = 800, t.XXL = 1e3, t;
        }(),
            Va = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e._disabled = !1, e.hasProperties = !1, e.values = {}, e.categories = {}, e.dates = {}, e.locations = {}, e.workingLocations = {}, e.properties = {}, e.sprites = [], e.isTemplate = !1, e._index = null, e._visible = !0, e._hidden = !1, e._ignoreMinMax = !1, e.hasChildren = {}, e.isHiding = !1, e._valueAnimations = {}, e._locationAnimations = {}, e.className = "DataItem", e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "adapter", {
            get: function get() {
              return this._adapterO || (this._adapterO = new Ks(this)), this._adapterO;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "index", {
            get: function get() {
              return this.component && null != this._index ? this._index : -1;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "animations", {
            get: function get() {
              return this._animations || (this._animations = [], this._disposers.push(new So(this._animations))), this._animations;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "visible", {
            get: function get() {
              return !this._hidden && this._visible;
            },
            set: function set(t) {
              t && (this.hidden = !1), this._visible != t && this.setVisibility(t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "hidden", {
            get: function get() {
              return this._hidden;
            },
            set: function set(t) {
              this._hidden != t && (this._hidden = t, t ? this.setVisibility(!1) : this.setVisibility(!0, !0));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "__disabled", {
            get: function get() {
              return this._disabled;
            },
            set: function set(t) {
              this._disabled = t, mt(this.sprites, function (e) {
                e.__disabled = t;
              });
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setVisibility = function (t, e) {
            if (mt(this.sprites, function (e) {
              t ? e.visible = e.defaultState.properties.visible : e.hiddenState ? e.visible = e.hiddenState.properties.visible : e.visible = !1;
            }), this._visible = t, this._eventDispatcher && this.events.isEnabled("visibilitychanged")) {
              var i = {
                type: "visibilitychanged",
                target: this,
                visible: t
              };
              this.events.dispatchImmediately("visibilitychanged", i);
            }
          }, e.prototype.show = function (t, e, i) {
            var n,
                r = this;
            if (!this.hidden) return this.setVisibility(!0, !0), this.isHiding = !1, this._hideDisposer && this.removeDispose(this._hideDisposer), i && mt(i, function (i) {
              n = r.setWorkingValue(i, r.values[i].value, t, e);
            }), mt(this.sprites, function (i) {
              var n = i.show(t);
              null == n || n.isFinished() || (r._disposers.push(n), null != e && e > 0 && n.delay(e));
            }), n;
          }, e.prototype.dispose = function () {
            t.prototype.dispose.call(this), mt(this.sprites, function (t) {
              t.dispose();
            }), this.sprites = [];
          }, e.prototype.hide = function (t, e, i, n) {
            var r = this;

            if (this.isHiding = !0, mt(this.sprites, function (i) {
              var n = i.hide(t);
              null == n || n.isFinished() || (r._disposers.push(n), null != e && e > 0 && n.delay(e));
            }), A(i) && n) {
              var s;
              if (mt(n, function (n) {
                var o = r.setWorkingValue(n, i, t, e);
                o && (s = o);
              }), s && !s.isFinished()) return this._hideDisposer = s.events.on("animationended", function () {
                r.setVisibility(!1, !0), r.isHiding = !1;
              }), this._disposers.push(this._hideDisposer), s;
              this.isHiding = !1, this.setVisibility(!1, !0);
            } else this.isHiding = !1, this.setVisibility(!1);
          }, e.prototype.getDuration = function (t) {
            if (!A(t)) {
              var e = this.component;
              e && (t = e.interpolationDuration);
            }

            if (null != t) return this._adapterO ? this._adapterO.apply("duration", t) : t;
          }, e.prototype.getValue = function (t, e) {
            if (t && this.component) {
              e || (e = this.component.dataFields[t + "Show"]) || (e = "value");
              var i = this.values[t][e];
              return this._adapterO && this._adapterO.isEnabled("value") ? this._adapterO.apply("value", {
                value: i,
                field: t
              }).value : i;
            }
          }, e.prototype.getWorkingValue = function (t) {
            if (t && this.component) {
              var e = this.component.dataFields[t + "Show"];
              return e || (e = "workingValue"), this._adapterO ? this._adapterO.apply("workingValue", {
                workingValue: this.values[t][e],
                field: t
              }).workingValue : this.values[t][e];
            }
          }, e.prototype.getActualWorkingValue = function (t) {
            return this.values[t].workingValue;
          }, e.prototype.setValue = function (t, e, i, n) {
            var r = this.values[t].value,
                s = this.getDuration(i);

            if (r !== (e = w(e))) {
              if (this.values[t].value = e, this._eventDispatcher && this.events.isEnabled("valuechanged")) {
                var o = {
                  type: "valuechanged",
                  target: this,
                  property: t
                };
                this.events.dispatchImmediately("valuechanged", o);
              }

              this.component && this.component.handleDataItemValueChange(this, t);
            }

            this.setWorkingValue(t, e, s, n);
          }, e.prototype.setCalculatedValue = function (t, e, i) {
            if (this.values[t][i] !== e && A(e)) {
              if (this.values[t][i] = e, this._eventDispatcher && this.events.isEnabled("calculatedvaluechanged")) {
                var n = {
                  type: "calculatedvaluechanged",
                  target: this,
                  property: t
                };
                this.events.dispatchImmediately("calculatedvaluechanged", n);
              }

              this.component && this.component.handleDataItemCalculatedValueChange(this, t);
            }
          }, e.prototype.setWorkingValue = function (t, e, i, n) {
            if (A(this.values[t].value)) {
              var r = this.getDuration(i),
                  s = this.values[t].workingValue;

              if (null != r && r > 0 && A(s) && this.component) {
                if (s != e) {
                  var o = this.animate({
                    childObject: this.values[t],
                    property: "workingValue",
                    from: s,
                    to: e,
                    dummyData: t
                  }, r, this.component.interpolationEasing);
                  return null != n && o.delay(n), o.events.on("animationstarted", this.handleInterpolationProgress, this), o.events.on("animationprogress", this.handleInterpolationProgress, this), o.events.on("animationended", this.handleInterpolationProgress, this), this._valueAnimations[t] = o, o;
                }

                (a = this._valueAnimations[t]) && a.stop(), this.values[t].workingValue = e;
              } else {
                var a;

                if ((a = this._valueAnimations[t]) && a.stop(), this.values[t].workingValue = e, this._eventDispatcher && this.events.isEnabled("workingvaluechanged")) {
                  var l = {
                    type: "workingvaluechanged",
                    target: this,
                    property: t
                  };
                  this.events.dispatchImmediately("workingvaluechanged", l);
                }

                this.component && this.component.handleDataItemWorkingValueChange(this, t);
              }
            }
          }, e.prototype.setLocation = function (t, e, i, n) {
            if (this.locations[t] !== e) {
              if (this.locations[t] = e, this._eventDispatcher && this.events.isEnabled("locationchanged")) {
                var r = {
                  type: "locationchanged",
                  target: this,
                  property: t
                };
                this.events.dispatchImmediately("locationchanged", r);
              }

              this.component && this.component.handleDataItemValueChange(this, t), this.setWorkingLocation(t, e, i, n);
            }
          }, e.prototype.setWorkingLocation = function (t, e, i, n) {
            var r = this.getDuration(i),
                s = this.workingLocations[t];

            if (null != r && r > 0 && A(s) && this.component) {
              if (s != e) {
                var o = this.animate({
                  childObject: this.workingLocations,
                  property: t,
                  from: s,
                  to: e,
                  dummyData: t
                }, r, this.component.interpolationEasing);
                return null != n && o.delay(n), o.events.on("animationstarted", this.handleInterpolationProgress, this), o.events.on("animationprogress", this.handleInterpolationProgress, this), o.events.on("animationended", this.handleInterpolationProgress, this), this._locationAnimations[t] = o, o;
              }

              (a = this._locationAnimations[t]) && a.stop(), this.workingLocations[t] = e;
            } else {
              var a;

              if ((a = this._locationAnimations[t]) && a.stop(), this.workingLocations[t] = e, this._eventDispatcher && this.events.isEnabled("workinglocationchanged")) {
                var l = {
                  type: "workinglocationchanged",
                  target: this,
                  property: t
                };
                this.events.dispatchImmediately("workinglocationchanged", l);
              }

              this.component && this.component.handleDataItemWorkingLocationChange(this, t);
            }
          }, e.prototype.setDate = function (t, e, i) {
            !k(e) && this.component && (e = this.component.dateFormatter.parse(e)), this.dates[t] !== e && (this.dates[t] = e, this.setValue(t, e.getTime(), i));
          }, e.prototype.getDate = function (t) {
            return this._adapterO ? this._adapterO.apply("date", {
              date: this.dates[t],
              field: t
            }).date : this.dates[t];
          }, e.prototype.setProperty = function (t, e) {
            if (this.properties[t] !== e) {
              if (this.hasProperties = !0, this.properties[t] = e, this._eventDispatcher && this.events.isEnabled("propertychanged")) {
                var i = {
                  type: "propertychanged",
                  target: this,
                  property: t,
                  value: e
                };
                this.events.dispatchImmediately("propertychanged", i);
              }

              this.component && this.component.handleDataItemPropertyChange(this, t);
            }
          }, e.prototype.setCategory = function (t, e) {
            T(e) || (e = x(e)), this.categories[t] !== e && (this.categories[t] = e);
          }, e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), e.dataContext && (this.dataContext = ai(e.dataContext, {})), ni(e.locations, this.locations), e._adapterO && this.adapter.copyFrom(e._adapterO), this.component = e.component;
          }, Object.defineProperty(e.prototype, "opacity", {
            set: function set(t) {
              mt(this.sprites, function (e) {
                e.opacity = t;
              });
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "ignoreMinMax", {
            get: function get() {
              return this._ignoreMinMax;
            },
            set: function set(t) {
              if (this._ignoreMinMax = t, this._eventDispatcher && this.events.isEnabled("propertychanged")) {
                var e = {
                  type: "propertychanged",
                  target: this,
                  property: "ignoreMinMax",
                  value: t
                };
                this.events.dispatchImmediately("propertychanged", e);
              }

              this.component && this.component.handleDataItemPropertyChange(this, "ignoreMinMax");
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.animate = function (t, e, i) {
            return new Io(this, t, e, i).start();
          }, e.prototype.handleInterpolationProgress = function (t) {
            var e = t.target.animationOptions[0];

            if (e) {
              if (this._eventDispatcher && this.events.isEnabled("workingvaluechanged")) {
                var i = {
                  type: "workingvaluechanged",
                  target: this,
                  property: e.dummyData
                };
                this.events.dispatchImmediately("workingvaluechanged", i);
              }

              this.component && this.component.handleDataItemWorkingValueChange(this, e.dummyData);
            }
          }, e.prototype.hasValue = function (t) {
            for (var e = 0, i = t.length; e < i; e++) {
              var n = this.values[t[e]];
              if (!n || !S(n.value)) return !1;
            }

            return !0;
          }, Object.defineProperty(e.prototype, "depth", {
            get: function get() {
              return this.parent ? this.parent.depth + 1 : 0;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "dataContext", {
            get: function get() {
              return this._dataContext;
            },
            set: function set(t) {
              this._dataContext = t;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.addSprite = function (t) {
            t.dataItem && t.dataItem != this && St(t.dataItem.sprites, t), this.visible || t.hide(0), this.isHiding && t.hide(), this.sprites.push(t), t.dataItem = this;
          }, e;
        }(Js),
            Fa = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.dataFields = {}, e._dataSources = {}, e._parseDataFrom = 0, e._dataDisposers = [], e._currentDataSetId = "", e._start = 0, e._end = 1, e.skipRangeEvent = !1, e.rangeChangeDuration = 0, e.rangeChangeEasing = Pn, e.parsingStepDuration = 50, e.dataInvalid = !1, e.rawDataInvalid = !1, e.dataRangeInvalid = !1, e.dataItemsInvalid = !1, e.interpolationDuration = 0, e.interpolationEasing = Pn, e.sequencedInterpolation = !0, e.sequencedInterpolationDelay = 0, e.dataValidationProgress = 0, e._addAllDataItems = !0, e._usesData = !0, e.className = "Component", e.minZoomCount = 1, e.maxZoomCount = 0, e._dataItems = new Ys(e.createDataItem()), e._dataItems.events.on("inserted", e.handleDataItemAdded, e, !1), e._dataItems.events.on("removed", e.handleDataItemRemoved, e, !1), e._disposers.push(new Bs(e._dataItems)), e._disposers.push(e._dataItems.template), e.invalidateData(), e.dataUsers.events.on("inserted", e.handleDataUserAdded, e, !1), e._disposers.push(new gs(e._dataDisposers)), e._start = 0, e._end = 1, e.maxZoomDeclination = 1, e.applyTheme(), e;
          }

          return n(e, t), e.prototype.createDataItem = function () {
            return new Va();
          }, e.prototype.handleDataUserAdded = function (t) {
            t.newValue.dataProvider = this;
          }, e.prototype.handleDataItemValueChange = function (t, e) {
            this.dataItemsInvalid || this.invalidateDataItems();
          }, e.prototype.handleDataItemWorkingValueChange = function (t, e) {}, e.prototype.handleDataItemWorkingLocationChange = function (t, e) {}, e.prototype.handleDataItemCalculatedValueChange = function (t, e) {}, e.prototype.handleDataItemPropertyChange = function (t, e) {}, e.prototype.processDataItem = function (t, e) {
            var i = this;

            if (t) {
              e || (e = {}), t.dataContext = e;
              var n = !1;
              Qt(this.dataFields, function (r, s) {
                var o = r,
                    a = e[s];

                if (i._adapterO && i._adapterO.isEnabled("dataContextValue") && (a = i._adapterO.apply("dataContextValue", {
                  field: o,
                  value: a,
                  dataItem: t
                }).value), t.hasChildren[o]) {
                  if (S(a)) {
                    n = !0;
                    var l = i.createDataItem();
                    l.copyFrom(i.mainDataSet.template);
                    var h = new Ys(l);
                    h.events.on("inserted", i.handleDataItemAdded, i, !1), h.events.on("removed", i.handleDataItemRemoved, i, !1), i._dataDisposers.push(new Bs(h));

                    for (var u = a.length, p = 0; p < u; p++) {
                      var c = a[p],
                          d = h.create();
                      d.parent = t, i.processDataItem(d, c);
                    }

                    t[o] = h;
                  }
                } else S(a) && (n = !0, t[o] = a);
              }), Qt(this.propertyFields, function (i, r) {
                var s = i,
                    o = e[r];
                S(o) && (n = !0, t.setProperty(s, o));
              }), this._addAllDataItems || n || this.mainDataSet.remove(t);
            }
          }, e.prototype.updateDataItem = function (t) {
            var e = this;

            if (t) {
              var i = t.dataContext;
              Qt(this.dataFields, function (n, r) {
                var s = n,
                    o = i[r];
                e._adapterO && (o = e._adapterO.apply("dataContextValue", {
                  field: s,
                  value: o,
                  dataItem: t
                }).value), t.hasChildren[s] ? o && pe(t[s].iterator(), function (t) {
                  e.updateDataItem(t);
                }) : S(o) && (t[s] = o);
              }), Qt(this.propertyFields, function (e, n) {
                var r = e,
                    s = i[n];
                S(s) && t.setProperty(r, s);
              });
            }
          }, e.prototype.validateDataElements = function () {
            for (var t = this.endIndex, e = this.startIndex; e < t; e++) {
              var i = this.dataItems.getIndex(e);
              i && this.validateDataElement(i);
            }
          }, e.prototype.validate = function () {
            this.validateDataElements(), t.prototype.validate.call(this);
          }, e.prototype.validateDataElement = function (t) {}, e.prototype.addData = function (t, e) {
            var i = this;
            if (!this.dataInvalid && this.inited && (this._parseDataFrom = this.data.length), t instanceof Array ? mt(t, function (t) {
              i.data.push(t);
            }) : this.data.push(t), this.inited) this.removeData(e);else if (A(e)) for (; e > 0;) this.data.shift(), e--;
            this.invalidateData();
          }, e.prototype.removeData = function (t) {
            if (A(t)) for (; t > 0;) {
              var e = this.mainDataSet.getIndex(0);
              e && this.mainDataSet.remove(e), this.dataUsers.each(function (t) {
                var e = t.dataItems.getIndex(0);
                e && t.dataItems.remove(e);
              }), this.data.shift(), this._parseDataFrom--, t--;
            }
          }, e.prototype.invalidateData = function () {
            this.disabled || this.isTemplate || (Fs.addToInvalidComponents(this), Ls.requestFrame(), this.dataInvalid = !0, pe(this.dataUsers.iterator(), function (t) {
              t.invalidateDataItems();
            }));
          }, e.prototype.invalidateDataUsers = function () {
            pe(this.dataUsers.iterator(), function (t) {
              t.invalidate();
            });
          }, e.prototype.invalidateDataItems = function () {
            this.disabled || this.isTemplate || (It(Fs.invalidDataItems, this), Ls.requestFrame(), this.dataItemsInvalid = !0, pe(this.dataUsers.iterator(), function (t) {
              t.invalidateDataItems();
            }));
          }, e.prototype.invalidateDataRange = function () {
            this.disabled || this.isTemplate || (this.dataRangeInvalid = !0, It(Fs.invalidDataRange, this), Ls.requestFrame());
          }, e.prototype.validateDataRange = function () {
            St(Fs.invalidDataRange, this), this.dataRangeInvalid = !1, this.startIndex == this._prevStartIndex && this.endIndex == this._prevEndIndex || (this.rangeChangeUpdate(), this.appendDataItems(), this.invalidate(), this.dispatchImmediately("datarangechanged"));
          }, e.prototype.sliceData = function () {
            this._workingStartIndex = this.startIndex, this._workingEndIndex = this.endIndex;
          }, e.prototype.rangeChangeUpdate = function () {
            this.sliceData(), this._prevStartIndex = this.startIndex, this._prevEndIndex = this.endIndex;
          }, e.prototype.appendDataItems = function () {
            for (var t = this.endIndex, e = this.startIndex; e < t; e++) (i = this.dataItems.getIndex(e)) && (i.__disabled = !1);

            for (e = 0; e < this.startIndex; e++) (i = this.dataItems.getIndex(e)).__disabled = !0;

            for (e = this.endIndex; e < this.dataItems.length; e++) {
              var i;
              (i = this.dataItems.getIndex(e)).__disabled = !0;
            }
          }, e.prototype.invalidateRawData = function () {
            this.disabled || this.isTemplate || (It(Fs.invalidRawDatas, this), Ls.requestFrame(), this.rawDataInvalid = !0, pe(this.dataUsers.iterator(), function (t) {
              t.invalidateRawData();
            }));
          }, e.prototype.validateRawData = function () {
            var t = this;
            St(Fs.invalidRawDatas, this), pe(this.mainDataSet.iterator(), function (e) {
              e && t.updateDataItem(e);
            });
          }, e.prototype.dispose = function () {
            var e = this;
            this.mainDataSet.template.clones.clear(), Qt(this._dataSources, function (t, i) {
              e.removeDispose(i);
            }), t.prototype.dispose.call(this);
          }, e.prototype.disposeData = function () {
            this.mainDataSet.template.clones.clear(), mt(this._dataDisposers, function (t) {
              t.dispose();
            }), pe(this.dataUsers.iterator(), function (t) {
              t.disposeData();
            }), this._dataDisposers.length = 0, this._startIndex = void 0, this._endIndex = void 0, this.mainDataSet.clear(), this.mainDataSet.template.clones.clear(), this._dataSets && this._dataSets.clear();
          }, e.prototype.getDataItem = function (t) {
            return this.mainDataSet.create();
          }, e.prototype.validateData = function () {
            if (this.dispatchImmediately("beforedatavalidated"), this.dataInvalid = !1, Fs.removeFromInvalidComponents(this), !this.__disabled) {
              if (this.dataValidationProgress = 0, this._prevStartIndex = void 0, this._prevEndIndex = void 0, this._startIndex = void 0, this._endIndex = void 0, this.dataFields.data && this.dataItem) {
                var t = this.dataItem.dataContext;
                this._data = t[this.dataFields.data];
              }

              if (0 === this._parseDataFrom && this.data.length > 0 && this.disposeData(), this.data.length > 0) {
                var e = this.preloader;
                pe(this.dataUsers.iterator(), function (t) {
                  t._startIndex = void 0, t._endIndex = void 0;
                });

                for (var i = 0, n = Date.now(), r = this._parseDataFrom, s = this.data.length, o = this; r < s; r++) {
                  var a = function () {
                    var t = o.data[r];

                    if (o._usesData) {
                      var s = o.getDataItem(t);
                      o.processDataItem(s, t);
                    }

                    if (o.dataUsers.each(function (e) {
                      if (0 == e.data.length) {
                        var i = e.getDataItem(t);
                        e.processDataItem(i, t);
                      }
                    }), 100 == ++i && (i = 0, Date.now() - n > o.parsingStepDuration && r < o.data.length - 10)) return o._parseDataFrom = r + 1, e && (r / o.data.length > .5 && !e.visible || (e.progress = r / o.data.length)), o.dataValidationProgress = r / o.data.length, r = o.data.length, o.invalidateData(), {
                      value: void 0
                    };
                  }();

                  if ("object" == typeof a) return a.value;
                }

                e && (e.progress = 1), this.dataUsers.each(function (t) {
                  t.hidden && t.hide(0);
                });
              }

              this.dataValidationProgress = 1, this._parseDataFrom = 0, this.invalidateDataItems(), this._internalDefaultsApplied || this.applyInternalDefaults(), this.dispatch("datavalidated");
            }
          }, e.prototype.validateDataItems = function () {
            St(Fs.invalidDataItems, this), this.dataItemsInvalid = !1, this.invalidateDataRange(), this.invalidate(), this.dispatch("dataitemsvalidated");
          }, Object.defineProperty(e.prototype, "data", {
            get: function get() {
              return this._data || (this._data = []), this._adapterO ? this._adapterO.apply("data", this._data) : this._data;
            },
            set: function set(t) {
              this.setData(t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setData = function (t) {
            this._parseDataFrom = 0, this.disposeData(), this._data = t, t && t.length > 0 && this.invalidateData();
          }, e.prototype.getDataSource = function (t) {
            var e = this;
            return S(this._dataSources[t]) || (this._dataSources[t] = new Da(), this._dataSources[t].component = this, this.setDataSourceEvents(this._dataSources[t], t), this._dataSources[t].adapter.add("dateFields", function (t) {
              return e.dataSourceDateFields(t);
            }), this._dataSources[t].adapter.add("numberFields", function (t) {
              return e.dataSourceNumberFields(t);
            }), this.events.on("inited", function () {
              e.loadData(t);
            }, this, !1)), this._dataSources[t];
          }, Object.defineProperty(e.prototype, "dataSource", {
            get: function get() {
              return this._dataSources.data || this.getDataSource("data"), this._dataSources.data;
            },
            set: function set(t) {
              var e = this;
              this._dataSources.data && this.removeDispose(this._dataSources.data), this._dataSources.data = t, this._dataSources.data.component = this, this.events.on("inited", function () {
                e.loadData("data");
              }, this, !1), this.setDataSourceEvents(t, "data");
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.loadData = function (t) {
            this._dataSources[t].load();
          }, e.prototype.dataSourceDateFields = function (t) {
            return t;
          }, e.prototype.dataSourceNumberFields = function (t) {
            return t;
          }, e.prototype.populateDataSourceFields = function (t, e, i) {
            return mt(i, function (i) {
              e[i] && -1 === ft(t, e[i]) && t.push(e[i]);
            }), t;
          }, e.prototype.setDataSourceEvents = function (t, e) {
            var i = this;
            t.events.on("started", function (t) {
              var e = i.preloader;
              e && (e.progress = 0);
            }, void 0, !1), t.events.on("loadstarted", function (t) {
              var e = i.preloader;
              e && (e.progress = .25);
            }, void 0, !1), t.events.on("loadended", function (t) {
              var e = i.preloader;
              e && (e.progress = .5);
            }, void 0, !1), t.events.on("parseended", function (t) {
              var e = i.preloader;
              e && (e.progress = .75);
            }, void 0, !1), t.events.on("ended", function (t) {
              var e = i.preloader;
              e && (e.progress = 1);
            }, void 0, !1), t.events.on("error", function (t) {
              var e = i.preloader;
              e && (e.progress = 1), i.openModal(t.message);
            }, void 0, !1), e && t.events.on("done", function (n) {
              var r = i.preloader;
              r && (r.progress = 1), "data" != e || F(n.data) || (n.data = [n.data]), t.incremental && "data" == e && i.data.length ? i.addData(n.data, t.keepCount ? n.data.length : 0) : t.updateCurrentData && "data" == e && i.data.length ? (mt(i.data, function (t, e) {
                S(n.data[e]) && Qt(t, function (i, r) {
                  S(n.data[e][i]) && (t[i] = n.data[e][i]);
                });
              }), i.invalidateRawData()) : i[e] = n.data;
            });
          }, Object.defineProperty(e.prototype, "responsive", {
            get: function get() {
              return this._responsive || (this._responsive = new ka(), this._responsive.component = this), this._responsive;
            },
            set: function set(t) {
              this._responsive = t, this._responsive.component = this;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.zoom = function (t, e, i, n) {
            var r = this;
            void 0 === e && (e = !1), void 0 === i && (i = !1);
            var s = t.start,
                o = t.end,
                a = t.priority;
            if ("end" == a && 1 == o && 0 != s && s < this.start && (a = "start"), "start" == a && 0 == s && o > this.end && (a = "end"), A(n) || (n = this.maxZoomDeclination), !A(s) || !A(o)) return {
              start: this.start,
              end: this.end
            };

            if (this._finalStart != s || this._finalEnd != o) {
              var l = this.maxZoomFactor / this.minZoomCount,
                  h = this.maxZoomFactor / this.maxZoomCount;

              if ("start" == a ? (this.maxZoomCount > 0 && 1 / (o - s) < h && (o = s + 1 / h), 1 / (o - s) > l && (o = s + 1 / l), o > 1 && o - s < 1 / l && (s = o - 1 / l)) : (this.maxZoomCount > 0 && 1 / (o - s) < h && (s = o - 1 / h), 1 / (o - s) > l && (s = o - 1 / l), s < 0 && o - s < 1 / l && (o = s + 1 / l)), s < -n && (s = -n), 1 / (o - s) > l && (o = s + 1 / l), o > 1 + n && (o = 1 + n), 1 / (o - s) > l && (s = o - 1 / l), this._finalEnd = o, this._finalStart = s, this.skipRangeEvent = e, this.rangeChangeDuration > 0 && !i) {
                var u = this.rangeChangeAnimation;

                if (u && u.progress < 1) {
                  var p = u.animationOptions;

                  if (p.length > 1) {
                    if (p[0].to == s && p[1].to == o) return {
                      start: s,
                      end: o
                    };
                    this.rangeChangeAnimation.stop();
                  }
                }

                this.dispatchImmediately("rangechangestarted"), this.rangeChangeAnimation && this.rangeChangeAnimation.kill(), u = this.animate([{
                  property: "start",
                  to: s
                }, {
                  property: "end",
                  to: o
                }], this.rangeChangeDuration, this.rangeChangeEasing), this.rangeChangeAnimation = u, u && !u.isFinished() ? u.events.on("animationended", function () {
                  r.dispatchImmediately("rangechangeended");
                }) : this.dispatchImmediately("rangechangeended");
              } else this.start = s, this.end = o;
            }

            return {
              start: s,
              end: o
            };
          }, e.prototype.zoomToIndexes = function (t, e, i, n) {
            if (A(t) && A(e)) {
              var r = t / this.dataItems.length,
                  s = e / this.dataItems.length;
              this.zoom({
                start: r,
                end: s
              }, i, n);
            }
          }, Object.defineProperty(e.prototype, "zoomFactor", {
            get: function get() {
              return R(1 / (this.end - this.start), 1, this.maxZoomFactor);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "maxZoomFactor", {
            get: function get() {
              return this.getPropertyValue("maxZoomFactor");
            },
            set: function set(t) {
              this.setPropertyValue("maxZoomFactor", t) && (1 == t && (this.maxZoomDeclination = 0), this.invalidateDataRange());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "maxZoomDeclination", {
            get: function get() {
              return this.getPropertyValue("maxZoomDeclination");
            },
            set: function set(t) {
              this.setPropertyValue("maxZoomDeclination", t) && this.invalidateDataRange();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "startIndex", {
            get: function get() {
              return A(this._startIndex) || (this._startIndex = 0), this._startIndex;
            },
            set: function set(t) {
              this._startIndex = R(Math.round(t), 0, this.dataItems.length), this.start = this.indexToPosition(this._startIndex);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.indexToPosition = function (t) {
            return t / this.dataItems.length;
          }, Object.defineProperty(e.prototype, "endIndex", {
            get: function get() {
              return A(this._endIndex) || (this._endIndex = this.dataItems.length), this._endIndex;
            },
            set: function set(t) {
              this._endIndex = R(Math.round(t), 0, this.dataItems.length), this.end = this.indexToPosition(this._endIndex);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "start", {
            get: function get() {
              return this._adapterO ? this._adapterO.apply("start", this._start) : this._start;
            },
            set: function set(t) {
              if (this._start != t) {
                this._start = t;
                var e = Math.max(0, Math.floor(this.dataItems.length * t) || 0);
                this._startIndex = Math.min(e, this.dataItems.length), this.invalidateDataRange(), this.invalidate(), this.dispatchImmediately("startchanged"), this.dispatch("startendchanged");
              }
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "end", {
            get: function get() {
              return this._adapterO ? this._adapterO.apply("end", this._end) : this._end;
            },
            set: function set(t) {
              this._end != t && (this._end = t, this._endIndex = Math.min(this.dataItems.length, Math.ceil(this.dataItems.length * t) || 0), this.invalidateDataRange(), this.invalidate(), this.dispatchImmediately("endchanged"), this.dispatch("startendchanged"));
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.removeFromInvalids = function () {
            t.prototype.removeFromInvalids.call(this), Fs.removeFromInvalidComponents(this), St(Fs.invalidDataItems, this), St(Fs.invalidDataRange, this), St(Fs.invalidRawDatas, this);
          }, Object.defineProperty(e.prototype, "dataItems", {
            get: function get() {
              if ("" != this._currentDataSetId) {
                var t = this.dataSets.getKey(this._currentDataSetId);
                if (t) return t;
              }

              return this._dataItems;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "dataSets", {
            get: function get() {
              return this._dataSets || (this._dataSets = new Ds()), this._dataSets;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setDataSet = function (t) {
            if (this._currentDataSetId != t) {
              if (this.dataSets.getKey(t)) return this.dataItems.each(function (t) {
                t.__disabled = !0;
              }), this._currentDataSetId = t, this.invalidateDataRange(), this._prevStartIndex = void 0, this.dataItems.each(function (t) {
                t.__disabled = !1;
              }), !0;
              if ("" != this._currentDataSetId) return this.dataItems.each(function (t) {
                t.__disabled = !0;
              }), this._currentDataSetId = "", this.invalidateDataRange(), this._prevStartIndex = void 0, this.dataItems.each(function (t) {
                t.__disabled = !1;
              }), !0;
            }

            return !1;
          }, Object.defineProperty(e.prototype, "currentDataSetId", {
            get: function get() {
              return this._currentDataSetId;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "mainDataSet", {
            get: function get() {
              return this._dataItems;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype._updateDataItemIndexes = function (t) {
            for (var e = this.mainDataSet.values, i = e.length, n = t; n < i; ++n) e[n]._index = n;
          }, e.prototype.handleDataItemAdded = function (t) {
            t.newValue.component = this, this._updateDataItemIndexes(t.index), this.dataItemsInvalid || this.invalidateDataItems();
          }, e.prototype.handleDataItemRemoved = function (t) {
            this._updateDataItemIndexes(t.index), this.dataItemsInvalid || this.invalidateDataItems();
          }, e.prototype.bindDataField = function (t, e) {
            this.dataFields[t] = e, this.invalidateDataRange();
          }, e.prototype.invalidateProcessedData = function () {
            this.resetProcessedRange(), this.invalidateDataRange();
          }, e.prototype.resetProcessedRange = function () {
            this._prevEndIndex = null, this._prevStartIndex = null;
          }, Object.defineProperty(e.prototype, "dataUsers", {
            get: function get() {
              var t = this;
              return this._dataUsers || (this._dataUsers = new Ns(), this._disposers.push(new fs(function () {
                pe(t._dataUsers.iterator(), function (t) {
                  t.dispose();
                });
              }))), this._dataUsers;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.clone = function () {
            var e = t.prototype.clone.call(this);
            return e.dataFields = ni(this.dataFields, {}), e;
          }, e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), this.data = e.data, this.sequencedInterpolation = e.sequencedInterpolation, this.sequencedInterpolationDelay = e.sequencedInterpolationDelay, this.interpolationDuration = e.interpolationDuration, this.interpolationEasing = e.interpolationEasing;
          }, e.prototype.reinit = function () {
            this._inited = !1, this.deepInvalidate();
          }, e.prototype.getExporting = function () {
            var e = t.prototype.getExporting.call(this);
            return e.adapter.has("data", this._exportData, null, this) || (e.adapter.add("data", this._exportData, null, this), this.events.on("datavalidated", function (t) {
              e.menu && e.menu.invalidate(), e.handleDataUpdated();
            })), e;
          }, e.prototype._exportData = function (t) {
            return t.data = this.data, t;
          }, e.prototype.setDisabled = function (e) {
            var i = t.prototype.setDisabled.call(this, e);
            return i && this.invalidateData(), i;
          }, e.prototype.setShowOnInit = function (e) {
            e != this.getPropertyValue("showOnInit") && (!e || this.inited || this.hidden ? this._showOnInitDisposer2 && this._showOnInitDisposer2.dispose() : (this._showOnInitDisposer2 = this.events.once("dataitemsvalidated", this.hideInitially, this, !1), this._disposers.push(this._showOnInitDisposer2))), t.prototype.setShowOnInit.call(this, e);
          }, e.prototype.setBaseId = function (e) {
            e != this._baseId && this.dataInvalid && (this.dataInvalid = !1, Fs.removeFromInvalidComponents(this), this._baseId = e, this.invalidateData()), t.prototype.setBaseId.call(this, e);
          }, Object.defineProperty(e.prototype, "minZoomCount", {
            get: function get() {
              return this.getPropertyValue("minZoomCount");
            },
            set: function set(t) {
              this.setPropertyValue("minZoomCount", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "maxZoomCount", {
            get: function get() {
              return this.getPropertyValue("maxZoomCount");
            },
            set: function set(t) {
              this.setPropertyValue("maxZoomCount", t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype._systemCheckIfValidate = function () {
            return !(this.dataInvalid || this.dataProvider && this.dataProvider.dataInvalid);
          }, e.prototype.asFunction = function (e) {
            return "interpolationEasing" == e || "rangeChangeEasing" == e || t.prototype.asIs.call(this, e);
          }, e;
        }(_a);

        Fs.registeredClasses.Component = Fa;

        var Ma = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.isOversized = !1, e.className = "Label", e.fill = new ta().getFor("text"), e.wrap = !1, e.truncate = !1, e.fullWords = !0, e.ellipsis = "...", e.textAlign = "start", e.textValign = "top", e.layout = "absolute", e.baseLineRatio = -.27, e.events.on("maxsizechanged", function () {
              e.inited && e.handleMaxSize();
            }, e, !1), e.events.once("validated", e.handleValidate, e, !1), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.afterDraw = function () {
            t.prototype.afterDraw.call(this), this.validatePosition();
          }, e.prototype.setPaper = function (e) {
            var i = t.prototype.setPaper.call(this, e);
            return i && this.hardInvalidate(), i;
          }, e.prototype.handleValidate = function () {
            !this.currentText && !this.text || 0 != this.bbox.width && 0 != this.bbox.height || Fs.events.once("exitframe", this.hardInvalidate, this);
          }, e.prototype.handleMaxSize = function () {
            this.bbox.width > this.availableWidth || this.bbox.width < this.availableWidth && (this.isOversized || this.truncate) || this.bbox.height > this.availableHeight || this.bbox.height < this.availableHeight && this.isOversized ? this.invalidate() : this.alignSVGText();
          }, e.prototype.arrange = function () {}, e.prototype.updateCurrentText = function () {
            var t, e;
            li(this.html) && this.paper.supportsForeignObject() ? (t = "html", e = this.html) : (t = "svg", e = this.text), S(e) && "" !== e && (e = this.populateString(e, this.dataItem)), "html" == t ? this._adapterO && (e = this._adapterO.apply("htmlOutput", e)) : this._adapterO && (e = this._adapterO.apply("textOutput", e));
            var i = e != this.currentText || t != this._currentFormat;
            return this.currentText = e, this._currentFormat = t, i;
          }, e.prototype.hardInvalidate = function () {
            this._prevStatus = "", this.invalidate();
          }, e.prototype.getLineBBox = function (t) {
            var e = t && t.element,
                i = e && e.node;
            i && i.parentNode && (t.bbox = e.getBBox());
          }, e.prototype.draw = function () {
            t.prototype.draw.call(this);
            var e = this.bbox.width,
                i = this.bbox.height,
                n = this.topParent;

            if (!n || n.maxWidth && n.maxHeight) {
              var r = W(this.availableWidth - this.pixelPaddingLeft - this.pixelPaddingRight, 0),
                  s = W(this.availableHeight - this.pixelPaddingTop - this.pixelPaddingBottom, 0),
                  o = s + "," + r + this.wrap + this.truncate + this.fullWords + this.rtl + this.ellipsis;

              if (this.updateCurrentText() || !this.inited || this._prevStatus != o) {
                this._measuredWidth = 0, this._measuredHeight = 0, this.isOversized = !1;
                var a = this._currentFormat,
                    l = this.currentText;

                if (S(l) && "" != l) {
                  var h = l.split("\n");
                  this._prevStatus = o, this.textAlign = this.textAlign;
                  var u = this.group.getAttr("display");

                  if ("none" == u && this.group.removeAttr("display"), this.textPathElement && this.textPathElement.removeChildren(), "svg" === a) {
                    this.element.removeAttr("display");
                    var p = this.element;
                    this.resetBBox();

                    for (var c = 0, d = "", f = 0; f < h.length; f++) {
                      var g = h[f];

                      if ("" != g) {
                        var y = dr().chunk(g, null, this.ignoreFormatting),
                            m = 0,
                            v = !0,
                            b = !1,
                            x = this.getLineInfo(f);
                        x ? x.element.textContent = "" : (x = {
                          element: this.getSVGLineElement("", 0),
                          complex: !1
                        }, p.add(x.element)), x.element.removeAttr("display"), x.element.removeChildren(), this.textPathElement && x.element.add(this.textPathElement);

                        for (var _ = 0; _ < y.length; _++) {
                          _ && (x.complex = !0);
                          var P = y[_];
                          if ("format" === P.type) d = P.text;else {
                            if (b) continue;
                            x.text = P.text, x.style = dr().translateStyleShortcuts(d);
                            var w = this.getSvgElement(x.text, x.style);

                            if (this.textPathElement ? this.textPathElement.add(w) : x.element.add(w), this.getLineBBox(x), x.bbox.width = Math.ceil(x.bbox.width), m < x.bbox.height && (m = x.bbox.height), (this.wrap || this.truncate) && x.bbox.width > r) {
                              this.isOversized = !0;
                              var C = x.element.textContent,
                                  O = x.bbox.width / C.length,
                                  I = X(Math.ceil((x.bbox.width - r) / O), C.length);

                              if (this.truncate) {
                                var D = !1,
                                    k = x.element.node;
                                if (k && k.childNodes) for (var T = x.element.node.childNodes.length - 1; T >= 0; T--) {
                                  var A = x.element.node.childNodes[T];
                                  if (D && x.bbox.width <= r && (A.textContent += " " + this.ellipsis, x.bbox = x.element.getBBox(), x.bbox.width = Math.floor(x.bbox.width), x.bbox.width <= r)) break;
                                  D = !1;
                                  var V = A.textContent;

                                  for (C = x.element.textContent, I = X(Math.ceil((x.bbox.width - r) / O), C.length); x.bbox.width > r && I <= C.length && I > 0;) (L = W(V.length - I - this.ellipsis.length, 1)) <= 1 && (I = 0, T > 0 && (D = !0, x.element.node.removeChild(A))), (V = vi(V, L, this.ellipsis, this.fullWords, this.rtl)).length > L && this.fullWords && (V = vi(V, L, this.ellipsis, !1, this.rtl)), A.textContent = V, x.bbox = x.element.getBBox(), x.bbox.width = Math.floor(x.bbox.width), I = Math.ceil(1.1 * I);

                                  b = !0;
                                }
                              } else if (x.element.node) {
                                for (var F = x.element.node.lastChild, M = void 0; x.bbox.width > r && I <= C.length && I > 0;) {
                                  var L = W(P.text.length - I, 1);
                                  v ? M = mi(P.text, L, !0, this.rtl) : ((M = mi(P.text, L, !0, this.rtl))[0].length > L || 1 === L) && (x.element.node.removeChild(F), I = 0), I > 0 && (F.textContent = dr().cleanUp(bi(M.shift()))), x.bbox = x.element.getBBox(), x.bbox.width = Math.floor(x.bbox.width), I = Math.ceil(1.1 * I);
                                }

                                if (M.length > 0) {
                                  var E = "";
                                  S(M) && (this.rtl ? E += M.join("") + d : E += d + M.join("").replace(/([\[\]]{1})/g, "$1$1"));

                                  for (var R = _ + 1; R < y.length; R++) "value" == y[R].type ? E += y[R].text.replace(/([\[\]]{1})/g, "$1$1") : E += y[R].text;

                                  h.splice(f + 1, 0, E);
                                }

                                b = !0;
                              }
                            }

                            this.bbox.width < x.bbox.width && (this.bbox.width = x.bbox.width), this.bbox.height = c + m, this.textPathElement ? x.element.attr({
                              dy: -this.paddingBottom.toString()
                            }) : x.element.attr({
                              x: "0",
                              y: c + m,
                              dy: j(this.baseLineRatio * m, 3).toString()
                            }), v = !1;
                          }
                        }

                        var B = x.element.node;
                        B && (F = B.lastChild) && (F.textContent = this.rtl ? _i(F.textContent) : xi(F.textContent)), c += m, this.addLineInfo(x, f);
                      } else {
                        var N = this.getSVGLineElement("", 0);
                        N.add(this.getSvgElement(".", dr().translateStyleShortcuts(d))), p.add(N);
                        var H = Math.ceil(N.getBBox().height);
                        H > 0 && (c += H), p.removeElement(N);
                      }
                    }

                    this.maybeHideOversized(), this._measuredWidth = W(this.bbox.width, this.pixelWidth - this.pixelPaddingLeft - this.pixelPaddingRight), this._measuredHeight = W(this.bbox.height, this.pixelHeight - this.pixelPaddingTop - this.pixelPaddingBottom), this.alignSVGText(), this.bbox.width = this._measuredWidth, this.bbox.height = this._measuredHeight, i == this._measuredHeight && e == this._measuredWidth || this.dispatch("transformed"), this.hideUnused(h.length);
                  } else {
                    this.element.removeAttr("display"), this.resetBBox(), (p = this.element).removeChildren();
                    var Y = this.paper.foreignObject();
                    p.add(Y);
                    var z = this.getHTMLLineElement(l);
                    Y.node.appendChild(z), z.style.display = "inline-block";
                    var U = z.clientWidth,
                        G = z.clientHeight;
                    z.style.display = "block", this._bbox = {
                      x: 0,
                      y: 0,
                      width: U,
                      height: G
                    }, Y.attr({
                      width: U,
                      height: G
                    }), this.maybeHideOversized(), this._measuredWidth = W(this.bbox.width, this.pixelWidth - this.pixelPaddingLeft - this.pixelPaddingRight), this._measuredHeight = W(this.bbox.height, this.pixelHeight - this.pixelPaddingTop - this.pixelPaddingBottom), this.bbox.width = this._measuredWidth, this.bbox.height = this._measuredHeight, this.truncate && (z.style.overflow = "hidden"), (U > r || G > s) && (this.isOversized = !0);
                  }

                  this.setStyles(), this.updateCenter(), this.updateBackground(), "none" == u && this.group.attr({
                    display: "none"
                  }), this.pathElement && this.paper.appendDef(this.pathElement);
                } else this.element.attr({
                  display: "none"
                });
              }
            } else n.events.once("maxsizechanged", this.hardInvalidate, this, !1);
          }, e.prototype.maybeHideOversized = function () {
            this.hideOversized && (this.availableWidth < this.bbox.width || this.availableHeight < this.bbox.height ? (this.element.attr({
              display: "none"
            }), this.isOversized = !0) : (this.element.removeAttr("display"), this.isOversized = !1));
          }, e.prototype.alignSVGText = function () {
            var t = this.element,
                e = t.node.children || t.node.childNodes;

            if (e && (!e || 0 != e.length)) {
              var i = this._measuredWidth,
                  n = this._measuredHeight;
              this.pixelPaddingLeft, this.pixelPaddingRight, this.pixelPaddingTop, this.pixelPaddingBottom;

              for (var r = e.length - 1; r >= 0; r--) {
                var s = e[r];
                if (s.setAttribute("text-anchor", this.textAlign), this.textPathElement) s.removeAttribute("x"), s.removeAttribute("y");else {
                  switch (this.textAlign) {
                    case "middle":
                      s.setAttribute("x", (i / 2).toString() + "px");
                      break;

                    case "end":
                      this.rtl || s.setAttribute("x", i.toString());
                      break;

                    default:
                      this.rtl ? s.setAttribute("x", i.toString()) : s.removeAttribute("text-anchor");
                  }

                  var o = w(s.getAttribute("y"));

                  switch (this.textValign) {
                    case "middle":
                      s.setAttribute("y", (o + (n - this.bbox.height) / 2).toString());
                      break;

                    case "bottom":
                      s.setAttribute("y", (o + n - this.bbox.height).toString());
                      break;

                    default:
                      s.setAttribute("y", o.toString());
                  }
                }
              }
            }
          }, e.prototype.getSVGLineElement = function (t, e) {
            var i = this.paper.addGroup("text");
            return i.textContent = t, i.attr({
              x: "0"
            }), S(e) && i.attr({
              y: e.toString()
            }), (this.truncate || this.wrap) && i.attr({
              overflow: "hidden"
            }), this.rtl && i.attr({
              direction: "rtl"
            }), i;
          }, e.prototype.resetBBox = function () {
            this._bbox = {
              x: 0,
              y: 0,
              width: 0,
              height: 0
            };
          }, e.prototype.getHTMLLineElement = function (t) {
            var e = document.createElement("div");

            switch (e.innerHTML = t, this.textAlign) {
              case "middle":
                e.style.textAlign = "center";
                break;

              case "end":
                e.style.textAlign = "right";
            }

            return this.wrap ? e.style.wordWrap = "break-word" : e.style.whiteSpace = "nowrap", this.rtl && (e.style.direction = "rtl"), S(this.fill) && (e.style.color = this.fill.toString()), e;
          }, e.prototype.setStyles = function () {
            var t = this.element;
            !this.selectable || this.draggable || this.resizable || this.swipeable ? t.addStyle({
              webkitUserSelect: "none",
              msUserSelect: "none"
            }) : this.selectable && (t.removeStyle("webkitUserSelect"), t.removeStyle("msUserSelect"));
          }, e.prototype.hideUnused = function (t) {
            this.initLineCache();
            var e = this.getCache("lineInfo");
            if (e.length >= t) for (var i = t; i < e.length; i++) {
              var n = e[i];
              n && n.element && n.element.attr({
                display: "none"
              });
            }
          }, Object.defineProperty(e.prototype, "text", {
            get: function get() {
              return this.getPropertyValue("text");
            },
            set: function set(t) {
              this.setPropertyValue("text", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "path", {
            get: function get() {
              return this.getPropertyValue("path");
            },
            set: function set(t) {
              this.setPropertyValue("path", t, !0) && (this.pathElement && this.pathElement.dispose(), this.textPathElement && this.textPathElement.dispose(), this.pathElement = this.paper.add("path"), this.pathElement.attr({
                d: t
              }), this.pathElement.attr({
                id: "text-path-" + this.uid
              }), this._disposers.push(this.pathElement), this.textPathElement = this.paper.addGroup("textPath"), this.textPathElement.attrNS(To, "xlink:href", "#text-path-" + this.uid), this.textPathElement.attr({
                path: t
              }), this._disposers.push(this.textPathElement), this.hardInvalidate());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "locationOnPath", {
            get: function get() {
              return this.getPropertyValue("locationOnPath");
            },
            set: function set(t) {
              this.setPropertyValue("locationOnPath", t), this.textPathElement && this.textPathElement.attr({
                startOffset: 100 * t + "%"
              });
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "baseLineRatio", {
            get: function get() {
              return this.getPropertyValue("baseLineRatio");
            },
            set: function set(t) {
              this.setPropertyValue("baseLineRatio", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "wrap", {
            get: function get() {
              return this.getPropertyValue("wrap");
            },
            set: function set(t) {
              this.resetBBox(), this.setPropertyValue("wrap", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "truncate", {
            get: function get() {
              return this.getPropertyValue("truncate");
            },
            set: function set(t) {
              this.resetBBox(), this.setPropertyValue("truncate", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "fullWords", {
            get: function get() {
              return this.getPropertyValue("fullWords");
            },
            set: function set(t) {
              this.setPropertyValue("fullWords", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "ellipsis", {
            get: function get() {
              return this.getPropertyValue("ellipsis");
            },
            set: function set(t) {
              this.setPropertyValue("ellipsis", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "selectable", {
            get: function get() {
              return this.getPropertyValue("selectable");
            },
            set: function set(t) {
              this.setPropertyValue("selectable", t, !0), this.setStyles();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "textAlign", {
            get: function get() {
              return this.getPropertyValue("textAlign");
            },
            set: function set(t) {
              this.setPropertyValue("textAlign", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "textValign", {
            get: function get() {
              return this.getPropertyValue("textValign");
            },
            set: function set(t) {
              this.setPropertyValue("textValign", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "html", {
            get: function get() {
              return this.getPropertyValue("html");
            },
            set: function set(t) {
              this.setPropertyValue("html", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "hideOversized", {
            get: function get() {
              return this.getPropertyValue("hideOversized");
            },
            set: function set(t) {
              this.setPropertyValue("hideOversized", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "ignoreFormatting", {
            get: function get() {
              return this.getPropertyValue("ignoreFormatting");
            },
            set: function set(t) {
              this.setPropertyValue("ignoreFormatting", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.measureElement = function () {}, e.prototype.getLineInfo = function (t) {
            this.initLineCache();
            var e = this.getCache("lineInfo");
            return e.length > t ? e[t] : void 0;
          }, e.prototype.addLineInfo = function (t, e) {
            this.initLineCache(), this.getCache("lineInfo")[e] = t;
          }, e.prototype.initLineCache = function () {
            S(this.getCache("lineInfo")) || this.setCache("lineInfo", [], 0);
          }, e.prototype.setDataItem = function (e) {
            this._sourceDataItemEvents && this._sourceDataItemEvents.dispose(), e && (this._sourceDataItemEvents = new gs([e.events.on("valuechanged", this.invalidate, this, !1), e.events.on("workingvaluechanged", this.invalidate, this, !1), e.events.on("calculatedvaluechanged", this.invalidate, this, !1), e.events.on("propertychanged", this.invalidate, this, !1)])), t.prototype.setDataItem.call(this, e);
          }, Object.defineProperty(e.prototype, "availableWidth", {
            get: function get() {
              return S(this.maxWidth) ? this.maxWidth : this.pixelWidth;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "availableHeight", {
            get: function get() {
              return S(this.maxHeight) ? this.maxHeight : this.pixelHeight;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.getSvgElement = function (t, e) {
            var i = this.paper.add("tspan");
            return i.textContent = t, e && i.node.setAttribute("style", e), i;
          }, e.prototype.deepInvalidate = function () {
            t.prototype.deepInvalidate.call(this), this.hardInvalidate();
          }, Object.defineProperty(e.prototype, "readerTitle", {
            get: function get() {
              var t = this.getPropertyValue("readerTitle");
              return t || (t = this.populateString(Di(li(this.html) ? this.html : this.text))), t;
            },
            set: function set(t) {
              t = C(t), this.setPropertyValue("readerTitle", t) && this.applyAccessibility();
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(_a);

        Fs.registeredClasses.Label = Ma, Ta.push({
          relevant: Aa.heightXS,
          state: function state(t, e) {
            if (t instanceof Ma && t.parent && t.parent.isBaseSprite) {
              var i = t.states.create(e);
              return i.properties.disabled = !0, i;
            }

            return null;
          }
        });

        var ja = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "RoundedRectangle", e.element = e.paper.add("path"), e.cornerRadius(3, 3, 3, 3), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.draw = function () {
            t.prototype.draw.call(this);
            var e = this.innerWidth,
                i = this.innerHeight;

            if (A(e) && A(i)) {
              var n = X(e, i) / 2,
                  r = hi(this.cornerRadiusTopLeft, n),
                  s = hi(this.cornerRadiusTopRight, n),
                  o = hi(this.cornerRadiusBottomRight, n),
                  a = hi(this.cornerRadiusBottomLeft, n),
                  l = X(Math.abs(e / 2), Math.abs(i / 2)),
                  h = R(r, 0, l),
                  u = R(s, 0, l),
                  p = R(o, 0, l),
                  c = R(a, 0, l),
                  d = "M" + h + ",0 L" + (e - u) + ",0 a" + u + "," + u + " 0 0 1 " + u + "," + u + " L" + e + "," + (i - p) + " a" + p + "," + p + " 0 0 1 -" + p + "," + p + " L" + c + "," + i + " a" + c + "," + c + " 0 0 1 -" + c + ",-" + c + " L0," + h + " a" + h + "," + h + " 0 0 1 " + h + ",-" + h + " Z";
              this.path = d;
            }
          }, e.prototype.cornerRadius = function (t, e, i, n) {
            this.cornerRadiusTopLeft = t, this.cornerRadiusTopRight = e, this.cornerRadiusBottomLeft = i, this.cornerRadiusBottomRight = n;
          }, Object.defineProperty(e.prototype, "cornerRadiusTopLeft", {
            get: function get() {
              return this.getPropertyValue("cornerRadiusTopLeft");
            },
            set: function set(t) {
              this.setPercentProperty("cornerRadiusTopLeft", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "cornerRadiusTopRight", {
            get: function get() {
              return this.getPropertyValue("cornerRadiusTopRight");
            },
            set: function set(t) {
              this.setPercentProperty("cornerRadiusTopRight", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "cornerRadiusBottomRight", {
            get: function get() {
              return this.getPropertyValue("cornerRadiusBottomRight");
            },
            set: function set(t) {
              this.setPercentProperty("cornerRadiusBottomRight", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "cornerRadiusBottomLeft", {
            get: function get() {
              return this.getPropertyValue("cornerRadiusBottomLeft");
            },
            set: function set(t) {
              this.setPercentProperty("cornerRadiusBottomLeft", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.measureElement = function () {}, Object.defineProperty(e.prototype, "bbox", {
            get: function get() {
              return this.definedBBox ? this.definedBBox : this.isMeasured ? {
                x: 0,
                y: 0,
                width: this.innerWidth,
                height: this.innerHeight
              } : {
                x: 0,
                y: 0,
                width: 0,
                height: 0
              };
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(ba);

        Fs.registeredClasses.RoundedRectangle = ja;

        var La = function (t) {
          function e() {
            var e = t.call(this) || this;
            e.className = "Button", e.tooltipY = 0, e.iconPosition = "left", e.layout = "horizontal", e.contentAlign = "center", e.contentValign = "middle", e.padding(8, 16, 8, 16);
            var i = new ta(),
                n = e.background;
            n.fill = i.getFor("secondaryButton"), n.stroke = i.getFor("secondaryButtonStroke"), n.fillOpacity = 1, n.strokeOpacity = 1, n.cornerRadius(3, 3, 3, 3), e.label = new Ma(), e.label.fill = i.getFor("secondaryButtonText");
            var r = n.states.create("hover");
            r.properties.fillOpacity = 1, r.properties.fill = i.getFor("secondaryButtonHover");
            var s = n.states.create("down");
            return s.transitionDuration = 100, s.properties.fill = i.getFor("secondaryButtonDown"), s.properties.fillOpacity = 1, e.role = "button", e.focusable = !0, e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "icon", {
            get: function get() {
              return this.getPropertyValue("icon");
            },
            set: function set(t) {
              var e = this.getPropertyValue("icon");
              e && (e.parent = void 0), t && (this.setPropertyValue("icon", t), t.parent = this, t.interactionsEnabled = !1, this.iconPosition = this.iconPosition, this._disposers.push(t));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "iconPosition", {
            get: function get() {
              return this.getPropertyValue("iconPosition");
            },
            set: function set(t) {
              this.setPropertyValue("iconPosition", t), this.icon && ("left" == t ? this.icon.toBack() : this.icon.toFront());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "label", {
            get: function get() {
              return this._label;
            },
            set: function set(t) {
              this._label && this.removeDispose(this._label), this._label = t, t && (t.parent = this, t.interactionsEnabled = !1, this._disposers.push(this._label));
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.createBackground = function () {
            return new ja();
          }, e;
        }(_a);

        Fs.registeredClasses.Button = La;

        var Ea = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "Circle", e.element = e.paper.add("circle"), e.setPercentProperty("radius", h(100)), e.setPropertyValue("horizontalCenter", "middle"), e.setPropertyValue("verticalCenter", "middle"), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.draw = function () {
            t.prototype.draw.call(this), this.element.attr({
              r: this.pixelRadius
            });
          }, Object.defineProperty(e.prototype, "radius", {
            get: function get() {
              return this.getPropertyValue("radius");
            },
            set: function set(t) {
              this.setPercentProperty("radius", t, !0, !1, 10, !1);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "pixelRadius", {
            get: function get() {
              return hi(this.radius, X(this.innerWidth / 2, this.innerHeight / 2));
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.measureElement = function () {
            var t = this.pixelRadius;
            this._bbox = {
              x: -t,
              y: -t,
              width: 2 * t,
              height: 2 * t
            };
          }, e;
        }(ba);

        Fs.registeredClasses.Circle = Ea;

        var Ra = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "Ellipse", e.element = e.paper.add("ellipse"), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.draw = function () {
            t.prototype.draw.call(this), this.element.attr({
              rx: this.radius
            }), this.element.attr({
              ry: this.radiusY
            });
          }, Object.defineProperty(e.prototype, "radiusY", {
            get: function get() {
              return this.innerHeight / 2;
            },
            set: function set(t) {
              this.height = 2 * t, this.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "radius", {
            get: function get() {
              return this.innerWidth / 2;
            },
            set: function set(t) {
              this.width = 2 * t, this.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(Ea);

        Fs.registeredClasses.Ellipse = Ra;

        var Ba = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "Image", e.element = e.paper.add("image"), e.applyTheme(), e.width = 50, e.height = 50, e;
          }

          return n(e, t), e.prototype.draw = function () {
            if (t.prototype.draw.call(this), this.href) {
              var e = this.innerWidth,
                  i = this.innerHeight;
              A(this.widthRatio) && (e = i * this.widthRatio, this.width = e), A(this.heightRatio) && (i = e * this.heightRatio, this.height = i), this.element.attr({
                width: e,
                height: i
              }), this.element.attrNS(To, "xlink:href", this.href);
            }
          }, Object.defineProperty(e.prototype, "href", {
            get: function get() {
              return this.getPropertyValue("href");
            },
            set: function set(t) {
              this.setPropertyValue("href", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "widthRatio", {
            get: function get() {
              return this.getPropertyValue("widthRatio");
            },
            set: function set(t) {
              this.setPropertyValue("widthRatio", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "heightRatio", {
            get: function get() {
              return this.getPropertyValue("heightRatio");
            },
            set: function set(t) {
              this.setPropertyValue("heightRatio", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "bbox", {
            get: function get() {
              return {
                x: 0,
                y: 0,
                width: this.pixelWidth,
                height: this.pixelHeight
              };
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(ba);

        Fs.registeredClasses.Image = Ba;

        var Na = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "Line", e.element = e.paper.add("line"), e.fill = Je(), e.x1 = 0, e.y1 = 0, e.applyTheme(), e;
          }

          return n(e, t), e.prototype.draw = function () {
            t.prototype.draw.call(this), this.x1 == this.x2 || this.y1 == this.y2 ? this.pixelPerfect = !0 : this.pixelPerfect = !1, this.x1 = this.x1, this.x2 = this.x2, this.y1 = this.y1, this.y2 = this.y2;
          }, Object.defineProperty(e.prototype, "x1", {
            get: function get() {
              return this.getPropertyValue("x1");
            },
            set: function set(t) {
              A(t) || (t = 0);
              var e = 0;
              this.pixelPerfect && this.stroke instanceof ia && (e = 1e-5), this.setPropertyValue("x1", t, !0), this.element.attr({
                x1: t + e
              });
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "x2", {
            get: function get() {
              var t = this.getPropertyValue("x2");
              return A(t) || (t = this.pixelWidth), t;
            },
            set: function set(t) {
              A(t) || (t = 0), this.setPropertyValue("x2", t, !0), this.element.attr({
                x2: t
              });
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "y1", {
            get: function get() {
              return this.getPropertyValue("y1");
            },
            set: function set(t) {
              A(t) || (t = 0);
              var e = 0;
              this.pixelPerfect && this.stroke instanceof ia && (e = 1e-5), this.setPropertyValue("y1", t, !0), this.element.attr({
                y1: t + e
              });
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "y2", {
            get: function get() {
              var t = this.getPropertyValue("y2");
              return A(t) || (t = this.pixelHeight), t;
            },
            set: function set(t) {
              A(t) || (t = 0), this.setPropertyValue("y2", t, !0), this.element.attr({
                y2: t
              });
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.positionToPoint = function (t) {
            var e = {
              x: this.x1,
              y: this.y1
            },
                i = {
              x: this.x2,
              y: this.y2
            },
                n = $(e, i, t),
                r = Q(e, i);
            return {
              x: n.x,
              y: n.y,
              angle: r
            };
          }, e;
        }(ba);

        Fs.registeredClasses.Line = Na;

        var Ha = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "PointedShape", e.pointerBaseWidth = 15, e.pointerLength = 10, e.pointerY = 0, e.pointerX = 0, e.applyTheme(), e;
          }

          return n(e, t), e.prototype.draw = function () {
            t.prototype.draw.call(this), A(this.pointerX) || (this.pointerX = this.pixelWidth / 2), A(this.pointerY) || (this.pointerY = this.pixelHeight + 10);
          }, Object.defineProperty(e.prototype, "pointerBaseWidth", {
            get: function get() {
              return this.getPropertyValue("pointerBaseWidth");
            },
            set: function set(t) {
              this.setPropertyValue("pointerBaseWidth", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "pointerLength", {
            get: function get() {
              return this.getPropertyValue("pointerLength");
            },
            set: function set(t) {
              this.setPropertyValue("pointerLength", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "pointerX", {
            get: function get() {
              return this.getPropertyValue("pointerX");
            },
            set: function set(t) {
              this.setPropertyValue("pointerX", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "pointerY", {
            get: function get() {
              return this.getPropertyValue("pointerY");
            },
            set: function set(t) {
              this.setPropertyValue("pointerY", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(ba),
            Wa = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "PointedRectangle", e.element = e.paper.add("path"), e.cornerRadius = 6, e.applyTheme(), e;
          }

          return n(e, t), e.prototype.draw = function () {
            t.prototype.draw.call(this);
            var e = this.cornerRadius,
                i = this.innerWidth,
                n = this.innerHeight;

            if (i > 0 && n > 0) {
              var r,
                  s,
                  o = this.pointerX,
                  a = this.pointerY,
                  l = this.pointerBaseWidth / 2,
                  h = X(i / 2, n / 2),
                  u = R(e, 0, h),
                  p = R(e, 0, h),
                  c = R(e, 0, h),
                  d = R(e, 0, h),
                  f = void 0,
                  g = void 0,
                  y = void 0,
                  m = void 0,
                  v = (o - 0) * (n - 0) - (a - 0) * (i - 0),
                  b = (o - 0) * (0 - n) - (a - n) * (i - 0);
              f = v > 0 && b > 0 ? "M" + u + ",0 L" + ((r = R(o, u + l, i - l - p)) - l) + ",0 L" + o + "," + (a = R(a, -1 / 0, 0)) + " L" + (r + l) + ",0 L" + (i - p) + ",0" : "M" + u + ",0 L" + (i - p) + ",0", y = v < 0 && b < 0 ? " L" + (i - c) + "," + n + " L" + ((r = R(o, d + l, i - l - c)) + l) + "," + n + " L" + o + "," + (a = R(a, n, 1 / 0)) + " L" + (r - l) + "," + n + " L" + d + "," + n : " L" + d + "," + n, m = v < 0 && b > 0 ? " L0," + (n - d) + " L0," + ((s = R(a, u + l, n - d - l)) + l) + " L" + (o = R(o, -1 / 0, 0)) + "," + a + " L0," + (s - l) + " L0," + u : " L0," + u, g = v > 0 && b < 0 ? " L" + i + "," + p + " L" + i + "," + ((s = R(a, p + l, n - l - c)) - l) + " L" + (o = R(o, i, 1 / 0)) + "," + a + " L" + i + "," + (s + l) + " L" + i + "," + (n - c) : " L" + i + "," + (n - c);

              var x = " a" + p + "," + p + " 0 0 1 " + p + "," + p,
                  _ = " a" + c + "," + c + " 0 0 1 -" + c + "," + c,
                  P = " a" + d + "," + d + " 0 0 1 -" + d + ",-" + d,
                  w = " a" + u + "," + u + " 0 0 1 " + u + ",-" + u;

              this.path = f + x + g + _ + y + P + m + w;
            }
          }, Object.defineProperty(e.prototype, "cornerRadius", {
            get: function get() {
              return this.getPropertyValue("cornerRadius");
            },
            set: function set(t) {
              this.setPropertyValue("cornerRadius", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(Ha),
            Xa = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e._distance = 0, e.className = "Polyline", e.element = e.paper.add("path"), e.shapeRendering = "auto", e.fill = Je(), e.strokeOpacity = 1, e.applyTheme(), e;
          }

          return n(e, t), e.prototype.makePath = function () {
            this._distance = 0;
            var t = this.segments;

            if (t && t.length > 0) {
              for (var e = "", i = 0, n = t.length; i < n; i++) {
                var r = t[i];

                if (r.length > 0) {
                  e += xr(r[0]);

                  for (var s = 1; s < r.length; s++) {
                    var o = r[s];
                    e += _r(o), this._distance += K(r[s - 1], o);
                  }
                }
              }

              this.path = e;
            }

            this._realSegments = t;
          }, Object.defineProperty(e.prototype, "segments", {
            get: function get() {
              return this.getPropertyValue("segments");
            },
            set: function set(t) {
              this.setPropertyValue("segments", t), this.makePath();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "distance", {
            get: function get() {
              return this._distance;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.positionToPoint = function (t) {
            var e = 0;
            t < 0 && (t = Math.abs(t), e = 180);
            var i = this._realSegments;

            if (i) {
              for (var n = this.distance, r = 0, s = 0, o = 0, a = void 0, l = void 0, h = 0; h < i.length; h++) {
                var u = i[h];

                if (u.length > 1) {
                  for (var p = 1; p < u.length; p++) if (s = r / n, o = (r += K(a = u[p - 1], l = u[p])) / n, s <= t && o > t) {
                    h = i.length;
                    break;
                  }
                } else 1 == u.length && (a = u[0], l = u[0], s = 0, o = 1);
              }

              if (a && l) {
                var c = $(a, l, (t - s) / (o - s));
                return {
                  x: c.x,
                  y: c.y,
                  angle: e + Q(a, l)
                };
              }
            }

            return {
              x: 0,
              y: 0,
              angle: 0
            };
          }, Object.defineProperty(e.prototype, "realSegments", {
            get: function get() {
              return this._realSegments;
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(ba);

        Fs.registeredClasses.Polyline = Xa;

        var Ya = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "Polyarc", e.controlPointDistance = .5, e.controlPointPosition = .5, e.applyTheme(), e;
          }

          return n(e, t), e.prototype.makePath = function () {
            this._distance = 0;
            var t = this.segments;

            if (t && t.length > 0) {
              var e = "";
              this._realSegments = [];

              for (var i = 0, n = t.length; i < n; i++) {
                var r = t[i],
                    s = [];

                if (this._realSegments.push(s), r.length > 0) {
                  e += xr(r[0]);

                  for (var o = 1; o < r.length; o++) {
                    var a = r[o - 1],
                        l = r[o],
                        h = K(l, a),
                        u = h * this.controlPointDistance,
                        p = this.controlPointPosition,
                        c = -Q(a, l),
                        d = {
                      x: a.x + (l.x - a.x) * p * .5 - u * B(c),
                      y: a.y + (l.y - a.y) * p * .5 - u * H(c)
                    },
                        f = {
                      x: a.x + (l.x - a.x) * p * 1.5 - u * B(c),
                      y: a.y + (l.y - a.y) * p * 1.5 - u * H(c)
                    };
                    e += wr(l, d, f);
                    var g = Math.ceil(h),
                        y = a;
                    if (g > 0) for (var m = 0; m <= g; m++) {
                      var v = rt(a, l, d, f, m / g);
                      s.push(v), this._distance += K(y, v), y = v;
                    } else s.push(a);
                  }
                }
              }

              this.path = e;
            }
          }, Object.defineProperty(e.prototype, "controlPointPosition", {
            get: function get() {
              return this.getPropertyValue("controlPointPosition");
            },
            set: function set(t) {
              this.setPropertyValue("controlPointPosition", t), this.makePath();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "controlPointDistance", {
            get: function get() {
              return this.getPropertyValue("controlPointDistance");
            },
            set: function set(t) {
              this.setPropertyValue("controlPointDistance", t), this.makePath();
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(Xa);

        Fs.registeredClasses.Polyarc = Ya;

        var za = function (t) {
          function e(e) {
            var i = t.call(this) || this;
            return i._bboxes = [], i.morphDuration = 800, i.morphEasing = Pn, i.morphToSingle = !0, i.scaleRatio = 1, i.className = "Morpher", i.morphable = e, i.applyTheme(), i;
          }

          return n(e, t), e.prototype.morphToPolygon = function (t, e, i) {
            var n = this.morphable.currentPoints;

            if (n && t) {
              this.sortPoints(n), this.sortPoints(t), this._morphFromPointsReal = [], this._morphToPointsReal = [], S(e) || (e = this.morphDuration), S(i) || (i = this.morphEasing), this._morphFromPointsReal = this.normalizePoints(t, n), this._morphToPointsReal = this.normalizePoints(n, t), this.morphable.currentPoints = this._morphFromPointsReal;
              var r = new Io(this, {
                property: "morphProgress",
                from: 0,
                to: 1
              }, e, i);
              return this._disposers.push(r), r.start(), r;
            }
          }, e.prototype.normalizePoints = function (t, e) {
            for (var i = 0, n = t.length; i < n; i++) {
              var r = t[i][0],
                  s = t[i][1],
                  o = I(et(r)),
                  a = o.x + o.width,
                  l = o.y + o.height;

              if (e[i] || (e[i] = []), r && !e[i][0] && (e[i][0] = [{
                x: a,
                y: l
              }, {
                x: a,
                y: l
              }]), e[i][0]) {
                e[i][0] = this.addPoints(e[i][0], r.length);

                for (var h = 1 / 0, u = 0, p = 0; p < e[i][0].length; p++) {
                  var c = K(e[i][0][p], r[0]);
                  c < h && (u = p, h = c);
                }

                var d = e[i][0].slice(0, u),
                    f = e[i][0].slice(u);
                e[i][0] = f.concat(d);
              }

              s && (e[i][1] || (e[i][1] = [{
                x: a,
                y: l
              }, {
                x: a,
                y: l
              }]), e[i][1] = this.addPoints(e[i][1], s.length));
            }

            return e;
          }, e.prototype.sortPoints = function (t) {
            t.sort(function (t, e) {
              var i = I(et(t[0])),
                  n = I(et(e[0]));
              return i.width * i.height > n.width * n.height ? -1 : 1;
            });

            for (var e = [], i = 0, n = t.length; i < n; i++) {
              var r = t[i][0];
              r && e.push(I(et(r)));
            }

            return it(e);
          }, e.prototype.morphToCircle = function (t, e, i) {
            var n = this.morphable.points,
                r = this.sortPoints(n);
            this._morphFromPointsReal = [], this._morphToPointsReal = [], S(e) || (e = this.morphDuration), S(i) || (i = this.morphEasing);

            for (var s = 0, o = n.length; s < o; s++) {
              var a = n[s][0],
                  l = n[s][1];

              if (this._morphFromPointsReal[s] = [], this._morphToPointsReal[s] = [], a) {
                var h = a,
                    u = a,
                    p = I(et(u));
                this.morphToSingle && (p = I(r));
                var c = p.x + p.width / 2,
                    d = p.y + p.height / 2,
                    f = t;
                A(f) || (f = Math.min(p.width / 2, p.height / 2)), h = [];
                var g = Q({
                  x: c,
                  y: d
                }, a[0]),
                    y = 100;
                a.length > y && (y = a.length);

                for (var m = 360 / ((y = (u = this.addPoints(a, y)).length) - 1), v = 0; v < y; v++) {
                  var b = m * v + g,
                      x = {
                    x: c + f * H(b),
                    y: d + f * B(b)
                  };
                  h[v] = x;
                }

                if (l && l.length > 0) for (var _ = 0, P = l.length; _ < P; _++) h.push({
                  x: c,
                  y: d
                });
                this._morphFromPointsReal[s][0] = u, this._morphToPointsReal[s][0] = h;
              }
            }

            this.morphable.currentPoints = this._morphFromPointsReal;
            var w = new Io(this, {
              property: "morphProgress",
              from: 0,
              to: 1
            }, e, i);
            return this._disposers.push(w), w.start(), w;
          }, e.prototype.addPoints = function (t, e) {
            for (var i = Math.round(e / t.length), n = [], r = 0, s = t.length; r < s; r++) {
              var o = t[r],
                  a = void 0;
              a = r == t.length - 1 ? t[0] : t[r + 1], n.push(o);

              for (var l = 1; l < i; l++) {
                var h = l / i,
                    u = {
                  x: o.x + (a.x - o.x) * h,
                  y: o.y + (a.y - o.y) * h
                };
                n.push(u);
              }

              n.length + t.length - r == e && (i = 0);
            }

            if (n.length < e && t.length > 0) {
              var p = t[t.length - 1];

              for (l = n.length; l < e; l++) n.push({
                x: p.x,
                y: p.y
              });
            }

            return n;
          }, e.prototype.morphToRectangle = function (t, e, i, n) {
            var r = this.morphable.points;
            this.sortPoints(r), this._morphFromPointsReal = [], this._morphToPointsReal = [], S(i) || (i = this.morphDuration), S(n) || (n = this.morphEasing);

            for (var s = 0, o = r.length; s < o; s++) {
              var a = r[s][0],
                  l = r[s][1];

              if (this._morphFromPointsReal[s] = [], this._morphToPointsReal[s] = [], a) {
                var h = a,
                    u = a,
                    p = this._bboxes[s];
                this.morphToSingle;
                var c = p.x,
                    d = p.y,
                    f = t,
                    g = e;
                if (A(f) || (f = p.width), A(g) || (g = p.height), h = [{
                  x: c,
                  y: d
                }, {
                  x: c + f,
                  y: d
                }, {
                  x: c + f,
                  y: d + g
                }, {
                  x: c,
                  y: d + g
                }], h = this.addPoints(h, a.length), a.length < 4) for (var y = a.length; y < 4; y++) h.push({
                  x: a[y].x,
                  y: a[y].y
                });
                if (l && l.length > 0) for (var m = p.x + p.width / 2, v = p.y + p.height / 2, b = 0, x = l.length; b < x; b++) h.push({
                  x: m,
                  y: v
                });
                this._morphFromPointsReal[s][0] = u, this._morphToPointsReal[s][0] = h;
              }
            }

            this.morphable.currentPoints = this._morphFromPointsReal;

            var _ = new Io(this, {
              property: "morphProgress",
              from: 0,
              to: 1
            }, i, n);

            return this._disposers.push(_), _.start(), _;
          }, Object.defineProperty(e.prototype, "morphProgress", {
            get: function get() {
              return this._morphProgress;
            },
            set: function set(t) {
              this._morphProgress = t;
              var e = [];

              if (null != t) {
                var i = this._morphFromPointsReal,
                    n = this._morphToPointsReal;
                if (null != i && null != n) for (var r = 0, s = i.length; r < s; r++) {
                  var o = [];
                  e.push(o);
                  var a = i[r][0],
                      l = i[r][1],
                      h = n[r][0],
                      u = n[r][1];

                  if (a && a.length > 0 && h && h.length > 0) {
                    for (var p = [], c = 0, d = a.length; c < d; c++) {
                      var f = a[c],
                          g = h[c],
                          y = {
                        x: f.x + (g.x * this.scaleRatio - f.x) * t,
                        y: f.y + (g.y * this.scaleRatio - f.y) * t
                      };
                      p.push(y);
                    }

                    o[0] = p;
                  }

                  if (l && l.length > 0 && u && u.length > 0) {
                    for (var m = [], v = 0, b = l.length; v < b; v++) f = l[v], g = u[v], y = {
                      x: f.x + (g.x * this.scaleRatio - f.x) * t,
                      y: f.y + (g.y * this.scaleRatio - f.y) * t
                    }, m.push(y);

                    o[1] = m;
                  }
                }
              }

              this.morphable.currentPoints = e;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.morphBack = function (t, e) {
            this._morphToPointsReal = this._morphFromPointsReal, this._morphFromPointsReal = this.morphable.currentPoints, S(t) || (t = this.morphDuration), S(e) || (e = this.morphEasing);
            var i = new Io(this, {
              property: "morphProgress",
              from: 0,
              to: 1
            }, t, e);
            return this._disposers.push(i), i.start(), i;
          }, Object.defineProperty(e.prototype, "animations", {
            get: function get() {
              return this._animations || (this._animations = [], this._disposers.push(new So(this._animations))), this._animations;
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }($s),
            Ua = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "Polygon", e.element = e.paper.add("path"), e.shapeRendering = "auto", e._currentPoints = [], e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "points", {
            get: function get() {
              var t = this.getPropertyValue("points"),
                  e = this.path;

              if (e && (!t || 0 == t.length)) {
                for (var i = e.slice(1, e.length - 1).split("ZM"), n = 0; n < i.length; n++) {
                  var r = i[n];

                  if (r.length > 0) {
                    var s = r.split("M"),
                        o = s[0],
                        a = s[1];

                    if (o && o.length > 0) {
                      var l = o.split("L");

                      if (l.length > 0) {
                        var h = [],
                            u = [h];
                        t.push(u);

                        for (var p = 0; p < l.length; p++) {
                          var c = l[p].split(",");
                          h.push({
                            x: +c[0],
                            y: +c[1]
                          });
                        }

                        if (a && a.length > 0) {
                          var d = a.split("L");

                          if (d.length > 0) {
                            var f = [];

                            for (u.push(f), p = d.length - 1; p >= 0; p--) c = d[p].split(","), f.push({
                              x: +c[0],
                              y: +c[1]
                            });
                          }
                        }
                      }
                    }
                  }
                }

                this.setPropertyValue("points", t), this._currentPoints = t;
              }

              return t;
            },
            set: function set(t) {
              this.setPropertyValue("points", t, !0), this._currentPoints = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "currentPoints", {
            get: function get() {
              return this._currentPoints && 0 != this._currentPoints.length || !this.path || (this._currentPoints = this.points), this._currentPoints;
            },
            set: function set(t) {
              this._currentPoints != t && (this._currentPoints = t, this.draw());
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.draw = function () {
            var e,
                i,
                n,
                r,
                s = "",
                o = this._currentPoints;

            if (o.length > 0) {
              for (var a = 0, l = o.length; a < l; a++) {
                var h = o[a][0],
                    u = o[a][1];

                if (h && h.length > 0) {
                  s += xr(c = h[0]);

                  for (var p = 0; p < h.length; p++) s += _r(c = h[p]), (!A(i) || i < c.x) && (i = c.x), (!A(e) || e > c.x) && (e = c.x), (!A(n) || n > c.y) && (n = c.y), (!A(r) || r < c.y) && (r = c.y);
                }

                if (u && u.length > 0) {
                  var c;
                  s += xr(c = u[0]);

                  for (var d = 0, f = u.length; d < f; d++) s += _r(c = u[d]);
                }
              }

              s && (s += " Z"), this.bbox.x = e, this.bbox.y = n, this.bbox.width = i - e, this.bbox.height = r - n, t.prototype.setPath.call(this, s);
            }
          }, e.prototype.setPath = function (e) {
            return !!t.prototype.setPath.call(this, e) && (this.points = [], this._bbox = this.group.getBBox(), !0);
          }, e.prototype.measureElement = function () {}, Object.defineProperty(e.prototype, "centerPoint", {
            get: function get() {
              return {
                x: this.bbox.x + this.bbox.width / 2,
                y: this.bbox.y + this.bbox.height / 2
              };
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "morpher", {
            get: function get() {
              return this._morpher || (this._morpher = new za(this), this._disposers.push(this._morpher)), this._morpher;
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(ba);

        Fs.registeredClasses.Polygon = Ua;

        var Ga = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "Polyspline", e.tensionX = .5, e.tensionY = .5, e.applyTheme(), e;
          }

          return n(e, t), e.prototype.makePath = function () {
            this._distance = 0;
            var t = this.segments,
                e = this.tensionX,
                i = this.tensionY;

            if (this.allPoints = [], t && t.length > 0) {
              var n = "";
              this._realSegments = [];

              for (var r = 0, s = t.length; r < s; r++) {
                var o = t[r],
                    a = [];

                if (this._realSegments.push(a), o.length > 0) {
                  var l = o[0],
                      h = o[o.length - 1],
                      u = !1;
                  j(l.x, 3) == j(h.x) && j(l.y) == j(h.y) && (u = !0), n += xr(o[0]);

                  for (var p = 0; p < o.length - 1; p++) {
                    var c = o[p - 1],
                        d = o[p],
                        f = o[p + 1],
                        g = o[p + 2];
                    0 === p ? c = o[p] : p == o.length - 2 && (g = o[p + 1]), g || (g = f), 0 === p ? c = u ? o[o.length - 2] : o[r] : p == o.length - 2 && (g = u ? o[1] : o[p + 1]);
                    var y = st(c, d, f, 0, e, i),
                        m = ot(0, d, f, g, e, i);
                    n += wr(f, y, m);
                    var v = 1.2 * Math.ceil(Z(d, f, y, m, 20)),
                        b = d;
                    if (v > 0) for (var x = 0; x <= v; x++) {
                      var _ = rt(d, f, y, m, x / v);

                      if (_.x != b.x || _.y != b.y) {
                        a.push(_);
                        var P = j(Q(b, _), 5);
                        this._distance += K(b, _), this.allPoints[Math.floor(this._distance)] = {
                          x: _.x,
                          y: _.y,
                          angle: P
                        }, b = _;
                      }
                    } else a.push(c);
                  }
                }

                var w = this.allPoints;
                if (w.length > 1) for (var C = 0; C < w.length; C++) if (!w[C]) if (C > 1) w[C] = w[C - 1];else for (var O = 1; O < w.length; O++) if (w[O]) {
                  w[C] = w[O];
                  break;
                }
              }

              this.path = n;
            }
          }, e.prototype.getClosestPointIndex = function (t) {
            var e,
                i = this.allPoints,
                n = 1 / 0;
            if (i.length > 1) for (var r = 1; r < i.length; r++) {
              var s = K(t, i[r]);
              s < n && (e = r, n = s);
            }
            return e;
          }, Object.defineProperty(e.prototype, "tensionX", {
            get: function get() {
              return this.getPropertyValue("tensionX");
            },
            set: function set(t) {
              this.setPropertyValue("tensionX", t), this.makePath();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "tensionY", {
            get: function get() {
              return this.getPropertyValue("tensionY");
            },
            set: function set(t) {
              this.setPropertyValue("tensionY", t, !0), this.makePath();
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.positionToPoint = function (t, e) {
            var i = 0,
                n = this.allPoints,
                r = n.length;

            if (A(t) || (t = 0), r > 1) {
              if (e && r > 3) {
                if (t < 0) {
                  t < -.01 && (t = -.01);
                  var s = n[0],
                      o = n[1];
                  return {
                    x: a = s.x - (s.x - o.x) * r * t,
                    y: l = s.y - (s.y - o.y) * r * t,
                    angle: Q(s, o)
                  };
                }

                if (t > 1) {
                  t > 1.01 && (t = 1.01);
                  var a, l;
                  return s = n[n.length - 2], o = n[n.length - 3], {
                    x: a = s.x + (s.x - o.x) * r * (t - 1),
                    y: l = s.y + (s.y - o.y) * r * (t - 1),
                    angle: Q(s, {
                      x: a,
                      y: l
                    })
                  };
                }

                if (1 == t) {
                  var h = n[n.length - 1];
                  return {
                    x: h.x,
                    y: h.y,
                    angle: h.angle
                  };
                }
              } else t < 0 && (t = Math.abs(t), i = 180), t >= 1 && (t = .9999999999999);

              var u;
              return {
                x: (u = n[Math.floor(t * r)]).x,
                y: u.y,
                angle: u.angle + i
              };
            }

            return 1 == r ? {
              x: (u = n[0]).x,
              y: u.y,
              angle: u.angle
            } : {
              x: 0,
              y: 0,
              angle: 0
            };
          }, e;
        }(Xa);

        Fs.registeredClasses.Polyspline = Ga;

        var Ka = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "Slice", e.setPropertyValue("cornerRadius", 0), e.setPropertyValue("startAngle", 0), e.setPercentProperty("innerRadius", 0), e.setPercentProperty("radius", 0), e.setPropertyValue("arc", 0), e.setPropertyValue("shiftRadius", 0), e.strokeOpacity = 1, e.setPropertyValue("layout", "none"), e.slice = e.createChild(ba), e.slice.isMeasured = !1, e._disposers.push(e.slice), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.draw = function () {
            t.prototype.draw.call(this);
            var e = this.radiusY;
            this.radius > 0 && 0 == e && (e = .01), this.slice.path = Sr(this.startAngle, this.arc, this.radius, this.pixelInnerRadius, e, this.cornerRadius, this.innerCornerRadius), this.slice.invalidate(), this.shiftRadius = this.shiftRadius, this.realFill instanceof na && this.updateGradient(this.realFill), this.realStroke instanceof na && this.updateGradient(this.realStroke);
          }, e.prototype.updateGradient = function (t) {
            t.element.attr({
              gradientUnits: "userSpaceOnUse"
            }), t.element.attr({
              r: this.radius
            }), t.cx = 0, t.cy = 0, t.element.attr({
              radius: this.radius
            });
          }, Object.defineProperty(e.prototype, "bbox", {
            get: function get() {
              return this.definedBBox ? this.definedBBox : this.isMeasured ? it([ut(this.startAngle, this.startAngle + this.arc, this.pixelInnerRadius), ut(this.startAngle, this.startAngle + this.arc, this.radius)]) : {
                x: 0,
                y: 0,
                width: 0,
                height: 0
              };
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "startAngle", {
            get: function get() {
              return this.getPropertyValue("startAngle");
            },
            set: function set(t) {
              this.setPropertyValue("startAngle", lt(t), !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "arc", {
            get: function get() {
              return this.getPropertyValue("arc");
            },
            set: function set(t) {
              A(t) || (t = 0), this.setPropertyValue("arc", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "radius", {
            get: function get() {
              var t = this.getPropertyValue("radius");
              return A(t) || (t = 0), t;
            },
            set: function set(t) {
              this.setPropertyValue("radius", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "radiusY", {
            get: function get() {
              var t = this.getPropertyValue("radiusY");
              return A(t) || (t = this.radius), t;
            },
            set: function set(t) {
              this.setPropertyValue("radiusY", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "innerRadius", {
            get: function get() {
              return this.getPropertyValue("innerRadius");
            },
            set: function set(t) {
              this.setPercentProperty("innerRadius", t, !0, !1, 10, !1);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "pixelInnerRadius", {
            get: function get() {
              return hi(this.innerRadius, this.radius);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "cornerRadius", {
            get: function get() {
              return this.getPropertyValue("cornerRadius");
            },
            set: function set(t) {
              this.setPropertyValue("cornerRadius", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "innerCornerRadius", {
            get: function get() {
              return this.getPropertyValue("innerCornerRadius");
            },
            set: function set(t) {
              this.setPropertyValue("innerCornerRadius", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "shiftRadius", {
            get: function get() {
              return this.getPropertyValue("shiftRadius");
            },
            set: function set(t) {
              this.setPropertyValue("shiftRadius", t), this.dx = t * this.radius * this.ix, this.dy = t * this.radiusY * this.iy;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "ix", {
            get: function get() {
              return H(this.middleAngle);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "iy", {
            get: function get() {
              return this.radius, B(this.middleAngle);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "middleAngle", {
            get: function get() {
              return this.startAngle + this.arc / 2;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.getTooltipX = function () {
            var t = this.getPropertyValue("tooltipX");

            if (!A(t)) {
              var e = hi(this.innerRadius, this.radius);
              t = this.ix * (e + (this.radius - e) / 2);
            }

            return t;
          }, e.prototype.getTooltipY = function () {
            var t = this.getPropertyValue("tooltipY");

            if (!A(t)) {
              var e = hi(this.innerRadius, this.radius);
              t = this.iy * (e + (this.radiusY - e) / 2) + this.slice.dy;
            }

            return t;
          }, e;
        }(_a);

        Fs.registeredClasses.Slice = Ka;

        var Za = function (t) {
          function e() {
            var e = t.call(this) || this;
            e.className = "Preloader", e.width = h(100), e.height = h(100);
            var i = new ta(),
                n = e.createChild(_a);
            n.shouldClone = !1;
            var r = n.createChild(Ka);
            r.shouldClone = !1, r.radius = 53, r.arc = 360, r.fill = i.getFor("fill"), r.fillOpacity = .8, r.innerRadius = 42, r.isMeasured = !1, e.backgroundSlice = r;
            var s = n.createChild(Ka);
            s.shouldClone = !1, s.radius = 50, s.innerRadius = 45, s.fill = i.getFor("alternativeBackground"), s.fillOpacity = .2, s.isMeasured = !1, e.progressSlice = s;
            var o = n.createChild(Ma);
            return o.shouldClone = !1, o.horizontalCenter = "middle", o.verticalCenter = "middle", o.isMeasured = !1, o.fill = i.getFor("text"), o.align = "center", o.valign = "middle", o.fillOpacity = .4, e.label = o, e.background.opacity = 1, e.background.fill = i.getFor("background"), e.contentAlign = "center", e.contentValign = "middle", e.delay = 300, e.states.create("hidden").properties.opacity = 0, e.visible = !1, e.hide(0), e.__disabled = !0, e._disposers.push(e.backgroundSlice), e._disposers.push(e.progressSlice), e._disposers.push(e.label), e._disposers.push(n), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "progress", {
            get: function get() {
              return this.getPropertyValue("progress");
            },
            set: function set(t) {
              var e = this;
              this.__disabled = !1, this.validateLayout(), this.setPropertyValue("progress", t), this.progressSlice.arc = 360 * t, this.label && (this.label.text = Math.round(100 * t) + "%"), t >= 1 ? (this._started && (this._started = void 0), Fs.events.once("enterframe", function () {
                var t = e.hide();
                t && !t.isFinished() ? t.events.once("animationended", function () {
                  e.__disabled = !0;
                }) : e.__disabled = !0;
              }), this.interactionsEnabled = !1, this.setPropertyValue("progress", 0)) : t > 0 && (this.delay ? this._started ? this._started + this.delay <= new Date().getTime() && (this.__disabled = !1, this.show(), this.interactionsEnabled = !0) : this._started = new Date().getTime() : (this.__disabled = !1, this.show(), this.interactionsEnabled = !0));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "delay", {
            get: function get() {
              return this.getPropertyValue("delay");
            },
            set: function set(t) {
              this.setPropertyValue("delay", t);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(_a);

        Fs.registeredClasses.Preloader = Za;

        var qa = function (t) {
          function e() {
            var e = t.call(this) || this;
            e.className = "ResizeButton", e.orientation = "horizontal", e.layout = "absolute", e.horizontalCenter = "middle", e.verticalCenter = "middle", e.draggable = !0, e.padding(8, 8, 8, 8), e.background.cornerRadius(20, 20, 20, 20);
            var i = new ba();
            i.element = e.paper.add("path");
            var n = xr({
              x: -2,
              y: -6
            });
            return n += _r({
              x: -2,
              y: 6
            }), n += xr({
              x: 2,
              y: -6
            }), n += _r({
              x: 2,
              y: 6
            }), i.path = n, i.pixelPerfect = !0, i.padding(0, 4, 0, 4), i.stroke = new ta().getFor("alternativeText"), i.strokeOpacity = .7, e.icon = i, e.label.dispose(), e.label = void 0, e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "orientation", {
            set: function set(t) {
              var e = this.icon;
              e && (e.rotation = "horizontal" == t ? 0 : -90);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(La);

        Fs.registeredClasses.ResizeButton = qa;

        var $a = function (t) {
          function e() {
            var e = t.call(this) || this;
            e._previousStart = 0, e._previousEnd = 1, e._prevStart = 0, e._prevEnd = 1, e._isBusy = !1, e._skipRangeEvents = !1, e.updateWhileMoving = !0, e.className = "Scrollbar", e.minHeight = 12, e.minWidth = 12, e.animationDuration = 0, e.animationEasing = Pn, e.margin(10, 10, 10, 10);
            var i = new ta(),
                n = e.background;
            return n.cornerRadius(10, 10, 10, 10), n.fill = i.getFor("fill"), n.fillOpacity = .5, e.showSystemTooltip = !0, e.startGrip = new qa(), e.endGrip = new qa(), e.events.on("transformed", e.updateThumb, e, !1), e.start = 0, e.end = 1, e.role = "scrollbar", e.thumb.role = "slider", e.thumb.readerLive = "polite", e.startGrip.role = "slider", e.endGrip.role = "slider", e.events.once("inited", function () {
              e._previousStart = void 0, e.dispatchRangeChange();
            }, void 0, !1), e.hideGrips = !1, e.orientation = "horizontal", e.applyTheme(), e;
          }

          return n(e, t), e.prototype.applyInternalDefaults = function () {
            t.prototype.applyInternalDefaults.call(this), "horizontal" === this.orientation ? (S(this.readerTitle) || (this.readerTitle = this.language.translate("Use TAB to select grip buttons or left and right arrows to change selection")), S(this.thumb.readerDescription) || (this.thumb.readerDescription = this.language.translate("Use left and right arrows to move selection")), S(this.startGrip.readerDescription) || (this.startGrip.readerDescription = this.language.translate("Use left and right arrows to move left selection")), S(this.endGrip.readerDescription) || (this.endGrip.readerDescription = this.language.translate("Use left and right arrows to move right selection"))) : (S(this.readerTitle) || (this.readerTitle = this.language.translate("Use TAB select grip buttons or up and down arrows to change selection")), S(this.thumb.readerDescription) || (this.thumb.readerDescription = this.language.translate("Use up and down arrows to move selection")), S(this.startGrip.readerDescription) || (this.startGrip.readerDescription = this.language.translate("Use up and down arrows to move upper selection")), S(this.endGrip.readerDescription) || (this.endGrip.readerDescription = this.language.translate("Use up and down arrows to move lower selection")));
          }, e.prototype.validateLayout = function () {
            this.updateSize(), t.prototype.validateLayout.call(this), this.updateExtremes();
          }, e.prototype.processBackground = function () {
            t.prototype.processBackground.call(this);
            var e = this.background;
            e.clickable = !0, e.events.on("hit", this.handleBgHit, this, void 0);
          }, e.prototype.handleBgHit = function (t) {
            this.makeBusy();
            var e = t.spritePoint;
            e = Xi(e, this.background, this);
            var i = this.thumb;

            if ("horizontal" == this.orientation) {
              var n = e.x - i.pixelWidth / 2;
              n = R(n, 0, this.innerWidth - i.pixelWidth), this._thumbAnimation = i.animate({
                property: "x",
                to: n
              }, this.animationDuration, this.animationEasing);
            } else {
              var r = e.y - i.pixelHeight / 2;
              r = R(r, 0, this.innerHeight - i.pixelHeight), this._thumbAnimation = i.animate({
                property: "y",
                to: r
              }, this.animationDuration, this.animationEasing);
            }

            this.animationDuration > 0 ? this._thumbAnimation.events.on("animationended", this.makeUnbusy, this, !1) : (this._thumb.validate(), this.makeUnbusy());
          }, e.prototype.makeBusy = function () {
            this._isBusy = !0, this._skipRangeEvents = !1, this._unbusyTimeout && this.removeDispose(this._unbusyTimeout), this._unbusyTimeout = void 0, this.stopAnimations();
          }, e.prototype.stopAnimations = function () {
            this._thumbAnimation && this._thumbAnimation.stop(!0), this._zoomAnimation && this._zoomAnimation.stop(!0);
          }, e.prototype.makeUnbusy = function () {
            this._unbusyTimeout = this.setTimeout(this.makeUnbusyReal.bind(this), 1.1 * this.animationDuration);
          }, e.prototype.makeUnbusyReal = function () {
            this._usingGrip = void 0, this._isBusy = !1, this.updateWhileMoving || this.dispatchRangeChange();
          }, e.prototype.dispatchRangeChange = function () {
            this._previousEnd == this.end && this._previousStart == this.start || (this._previousStart = this.start, this._previousEnd = this.end, this.dispatch("rangechanged"));
          }, e.prototype.updateThumb = function () {
            if (this.parent) {
              var t = this.thumb,
                  e = this.start,
                  i = this.end,
                  n = this.startGrip,
                  r = this.endGrip;

              if ("horizontal" == this.orientation) {
                var s = this.innerWidth;
                t.width = s * (i - e), t.maxX = s - t.pixelWidth, t.x = e * s, n.moveTo({
                  x: t.pixelX,
                  y: 0
                }, void 0, void 0, !0), r.moveTo({
                  x: t.pixelX + t.pixelWidth,
                  y: 0
                }, void 0, void 0, !0), n.readerTitle = this.language.translate("From %1", void 0, this.adapter.apply("positionValue", {
                  value: Math.round(100 * e) + "%",
                  position: e
                }).value), r.readerTitle = this.language.translate("To %1", void 0, this.adapter.apply("positionValue", {
                  value: Math.round(100 * i) + "%",
                  position: i
                }).value);
              } else {
                var o = this.innerHeight;
                t.height = o * (i - e), t.maxY = o - t.pixelHeight, t.y = (1 - i) * o, n.moveTo({
                  x: 0,
                  y: t.pixelY + t.pixelHeight
                }, void 0, void 0, !0), r.moveTo({
                  x: 0,
                  y: t.pixelY
                }, void 0, void 0, !0), n.readerTitle = this.language.translate("To %1", void 0, this.adapter.apply("positionValue", {
                  value: Math.round(100 * (1 - e)) + "%",
                  position: 1 - e
                }).value), r.readerTitle = this.language.translate("From %1", void 0, this.adapter.apply("positionValue", {
                  value: Math.round(100 * (1 - i)) + "%",
                  position: 1 - i
                }).value);
              }

              t.readerTitle = this.language.translate("From %1 to %2", void 0, this.adapter.apply("positionValue", {
                value: Math.round(100 * e) + "%",
                position: e
              }).value, this.adapter.apply("positionValue", {
                value: Math.round(100 * i) + "%",
                position: i
              }).value), !this._skipRangeEvents && this.updateWhileMoving && this.dispatchRangeChange();
            }
          }, e.prototype.updateExtremes = function () {
            var t = 0,
                e = 0,
                i = 0,
                n = 0;
            "horizontal" == this.orientation ? (i = this.innerWidth, e = n = this.innerHeight / 2) : (n = this.innerHeight, t = i = this.innerWidth / 2);
            var r = this.startGrip;
            r.minX = t, r.maxX = i, r.minY = e, r.maxY = n;
            var s = this.endGrip;
            s.minX = t, s.maxX = i, s.minY = e, s.maxY = n;
            var o = this.thumb;
            o.minX = t, o.maxX = i, o.minY = e, o.maxY = n;
          }, e.prototype.updateSize = function () {
            var t = this.orientation,
                e = this.startGrip;
            e && (e.orientation = t), this.endGrip && (this.endGrip.orientation = t);
            var i = this.thumb;
            i && ("horizontal" == t ? (A(this._pixelWidth) || this.width instanceof hs || (this.width = h(100)), S(this.percentHeight) && (this.height = this.minHeight), i.height = this.innerHeight, i.verticalCenter = "middle", i.horizontalCenter = "left") : (A(this._pixelHeight) || this.height instanceof hs || (this.height = h(100)), S(this.percentWidth) && (this.width = this.minWidth), i.width = this.innerWidth, i.verticalCenter = "top", i.horizontalCenter = "middle"));
          }, Object.defineProperty(e.prototype, "start", {
            get: function get() {
              return Math.min(this.getPosition(this._start), this.getPosition(this._end));
            },
            set: function set(t) {
              this._isBusy || (this.__start = t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "__start", {
            get: function get() {
              return this._start;
            },
            set: function set(t) {
              this._start = this.getPosition(t), this.updateThumb();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "end", {
            get: function get() {
              return Math.max(this.getPosition(this._start), this.getPosition(this._end));
            },
            set: function set(t) {
              this._isBusy || (this.__end = t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "__end", {
            get: function get() {
              return this._end;
            },
            set: function set(t) {
              this._end = this.getPosition(t), this.updateThumb();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "range", {
            get: function get() {
              return {
                start: this.start,
                end: this.end,
                priority: this._usingGrip
              };
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.skipRangeEvents = function () {
            this._isBusy || (this._skipRangeEvents = !0);
          }, e.prototype.fixRange = function (t) {
            t.start == j(this._start, 2) && t.end == j(this._end, 2) || (this._start = t.start, this._end = t.end, this._skipRangeEvents = !0, this.updateThumb(), this._skipRangeEvents = !1, this.thumb.validate(), this.thumb.background.validate());
          }, e.prototype.getPosition = function (t) {
            return R(j(t, 4), 0, 1);
          }, Object.defineProperty(e.prototype, "orientation", {
            get: function get() {
              return this.getPropertyValue("orientation");
            },
            set: function set(t) {
              this.setPropertyValue("orientation", t) && ("horizontal" === t ? (this.startGrip.cursorOverStyle = sa.horizontalResize, this.endGrip.cursorOverStyle = sa.horizontalResize) : (this.startGrip.cursorOverStyle = sa.verticalResize, this.endGrip.cursorOverStyle = sa.verticalResize), this.updateByOrientation(), this.invalidate());
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.updateByOrientation = function () {}, Object.defineProperty(e.prototype, "startGrip", {
            get: function get() {
              return this._startGrip;
            },
            set: function set(t) {
              this._startGrip && this.removeDispose(this._startGrip), this._startGrip = t, this.processGrip(t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "endGrip", {
            get: function get() {
              return this._endGrip;
            },
            set: function set(t) {
              this._endGrip && this.removeDispose(this._endGrip), this._endGrip = t, this.processGrip(t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.processGrip = function (t) {
            t.parent = this, t.isMeasured = !1, t.focusable = !0, t.shouldClone = !1, t.zIndex = 100, t.events.on("drag", this.handleGripDrag, this, !1), t.events.on("dragstop", this.makeUnbusy, this, !1), t.events.on("down", this.makeBusy, this, !1), this._disposers.push(t);
          }, e.prototype.handleGripDrag = function (t) {
            this.makeBusy(), t.target === this._startGrip ? this._usingGrip = "start" : this._usingGrip = "end", "horizontal" == this.orientation ? (this._start = this.startGrip.pixelX / this.innerWidth, this._end = this.endGrip.pixelX / this.innerWidth) : (this._start = 1 - this.startGrip.pixelY / this.innerHeight, this._end = 1 - this.endGrip.pixelY / this.innerHeight), this.updateThumb();
          }, Object.defineProperty(e.prototype, "thumb", {
            get: function get() {
              if (!this._thumb) {
                var t = new La();
                t.background.cornerRadius(10, 10, 10, 10), t.padding(0, 0, 0, 0), this.thumb = t;
              }

              return this._thumb;
            },
            set: function set(t) {
              var e = this;
              t && (this._thumb && this.removeDispose(this._thumb), this._thumb = t, t.parent = this, t.isMeasured = !1, t.inert = !0, t.draggable = !0, t.clickable = !0, t.hoverable = !0, t.focusable = !0, t.shouldClone = !1, t.zIndex = 0, t.cursorOverStyle = sa.grab, t.cursorDownStyle = sa.grabbing, t.events.on("dragstart", this.makeBusy, this, !1), t.events.on("dragstop", this.makeUnbusy, this, !1), t.events.on("positionchanged", this.handleThumbPosition, this, !1), t.events.on("sizechanged", this.handleThumbPosition, this, !1), t.events.on("doublehit", this.handleDoubleClick, this, !1), this._disposers.push(pr().body.events.on("keyup", function (t) {
                Wo.isKey(t.event, ["space", "enter"]) && e.thumb.isFocused && (t.event.preventDefault(), e.handleDoubleClick());
              })), this._disposers.push(this._thumb));
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.handleDoubleClick = function () {
            this.makeBusy();
            var t = 0,
                e = 1;
            0 != this.start || 1 != this.end ? (this._prevStart = this.start, this._prevEnd = this.end) : (t = this._prevStart, e = this._prevEnd);
            var i = this.animate([{
              property: "__start",
              to: t
            }, {
              property: "__end",
              to: e
            }], this.animationDuration, this.animationEasing);
            i && !i.isFinished() ? (i.events.on("animationended", this.makeUnbusy, this, !1), this._zoomAnimation = i) : this.makeUnbusy();
          }, e.prototype.handleThumbPosition = function () {
            var t = this.thumb;

            if ("horizontal" == this.orientation) {
              var e = this.innerWidth,
                  i = t.innerWidth,
                  n = t.pixelX;
              this._start = n / e, this._end = (n + i) / e, this.updateThumb();
            } else {
              var r = this.innerHeight,
                  s = t.innerHeight,
                  o = t.pixelY;
              this._start = 1 - (o + s) / r, this._end = 1 - o / r, this.updateThumb();
            }
          }, e.prototype.createBackground = function () {
            return new ja();
          }, Object.defineProperty(e.prototype, "hideGrips", {
            get: function get() {
              return this._hideGrips;
            },
            set: function set(t) {
              var e = this;
              this._hideGrips = t, this._overDisposer && this.removeDispose(this._overDisposer), this._outDisposer && this.removeDispose(this._outDisposer), t ? (this._overDisposer = this.events.on("over", function () {
                e.startGrip.show(), e.endGrip.show();
              }, void 0, !1), this._outDisposer = this.events.on("out", function () {
                e.startGrip.hide(), e.endGrip.hide();
              }, void 0, !1), this.startGrip.hide(), this.endGrip.hide()) : (this.startGrip.show(), this.endGrip.show());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "animationDuration", {
            get: function get() {
              return this.getPropertyValue("animationDuration");
            },
            set: function set(t) {
              this.setPropertyValue("animationDuration", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "animationEasing", {
            get: function get() {
              return this.getPropertyValue("animationEasing");
            },
            set: function set(t) {
              this.setPropertyValue("animationEasing", t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.asFunction = function (e) {
            return "animationEasing" == e || t.prototype.asIs.call(this, e);
          }, e;
        }(_a);

        Fs.registeredClasses.Scrollbar = $a;

        var Ja = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "Slider", e.thumb.opacity = 0, e.thumb.interactionsEnabled = !1, e.endGrip.opacity = 0, e.endGrip.interactionsEnabled = !1, e.startGrip.events.on("drag", function () {
              e.endGrip.x = e.startGrip.x, e.endGrip.y = e.startGrip.y;
            }), e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "__end", {
            get: function get() {
              return this._start;
            },
            set: function set(t) {},
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "end", {
            get: function get() {
              return this._start;
            },
            set: function set(t) {},
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "start", {
            get: function get() {
              return this._start;
            },
            set: function set(t) {
              this._isBusy || (this.__start = t);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }($a);

        Fs.registeredClasses.Slider = Ja;

        var Qa = function (t) {
          function e() {
            var e = t.call(this) || this;
            e.className = "TextLink", e.selectable = !0;
            var i = new ta();
            return e.fill = i.getFor("primaryButton").brighten(.3), e.states.create("hover").properties.fill = i.getFor("primaryButtonHover").brighten(.3), e.states.create("down").properties.fill = i.getFor("primaryButtonDown").brighten(.3), e.cursorOverStyle = sa.pointer, e.applyTheme(), e;
          }

          return n(e, t), e;
        }(Ma);

        Fs.registeredClasses.TextLink = Qa;

        var tl = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.properties = {}, e.isTemplate = !1, e._scale = 1, e._nonScaling = !0, e.className = "Filter", e.filterPrimitives = new Ns(), e.filterPrimitives.events.on("inserted", function (t) {
              e._disposers.push(t.newValue);
            }), e.width = 120, e.height = 120, e.applyTheme(), e;
          }

          return n(e, t), e.prototype.appendPrimitives = function (t) {
            pe(this.filterPrimitives.iterator(), function (e) {
              t.add(e);
            });
          }, e.prototype.animate = function (t, e, i) {
            return new Io(this, t, e, i).start();
          }, Object.defineProperty(e.prototype, "width", {
            get: function get() {
              return this.properties.width;
            },
            set: function set(t) {
              this.properties.width = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "height", {
            get: function get() {
              return this.properties.height;
            },
            set: function set(t) {
              this.properties.height = t;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.copyFrom = function (e) {
            var i = this;
            t.prototype.copyFrom.call(this, e), Qt(e.properties, function (t, e) {
              i[t] = e;
            });
          }, Object.defineProperty(e.prototype, "paper", {
            get: function get() {
              return this._paper ? this._paper : cr();
            },
            set: function set(t) {
              this._paper != t && (this._paper = t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "animations", {
            get: function get() {
              return this._animations || (this._animations = [], this._disposers.push(new So(this._animations))), this._animations;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "scale", {
            get: function get() {
              return this._scale;
            },
            set: function set(t) {
              this._scale = t, this.updateScale();
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.updateScale = function () {}, Object.defineProperty(e.prototype, "nonScaling", {
            get: function get() {
              return this._nonScaling;
            },
            set: function set(t) {
              this._nonScaling = t, t || (this._scale = 1), this.updateScale();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "sprite", {
            set: function set(t) {
              this.setSprite(t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setSprite = function (t) {
            this._sprite && this._sprite != t && this._sprite.filters.removeValue(this), this._sprite = t;
          }, e;
        }($s),
            el = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "DropShadowFilter", e.color = Je("#000"), e.feGaussianBlur = e.paper.add("feGaussianBlur"), e.feGaussianBlur.attr({
              result: "blurOut",
              "in": "SourceGraphic"
            }), e.filterPrimitives.push(e.feGaussianBlur), e.feOffset = e.paper.add("feOffset"), e.feOffset.attr({
              result: "offsetBlur"
            }), e.filterPrimitives.push(e.feOffset), e.feFlood = e.paper.add("feFlood"), e.feFlood.attr({
              "flood-color": e.color
            }), e.filterPrimitives.push(e.feFlood), e.feComposite = e.paper.add("feComposite"), e.feComposite.attr({
              in2: "offsetBlur",
              operator: "in"
            }), e.filterPrimitives.push(e.feComposite), e.feMerge = e.paper.addGroup("feMerge"), e.feMerge.add(e.paper.add("feMergeNode")), e.feMerge.add(e.paper.add("feMergeNode").attr({
              "in": "SourceGraphic"
            })), e.filterPrimitives.push(e.feMerge), e.width = 200, e.height = 200, e.blur = 1.5, e.dx = 3, e.dy = 3, e.opacity = .5, e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "color", {
            get: function get() {
              return this.properties.color;
            },
            set: function set(t) {
              this.properties.color = t, this.feFlood && this.feFlood.attr({
                "flood-color": t
              });
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "opacity", {
            get: function get() {
              return this.properties.opacity;
            },
            set: function set(t) {
              this.properties.opacity = t, this.feFlood.attr({
                "flood-opacity": t
              });
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "dx", {
            get: function get() {
              return this.properties.dx;
            },
            set: function set(t) {
              this.properties.dx = t, this.feOffset.attr({
                dx: t / this.scale
              });
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "dy", {
            get: function get() {
              return this.properties.dy;
            },
            set: function set(t) {
              this.properties.dy = t, this.feOffset.attr({
                dy: t / this.scale
              });
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "blur", {
            get: function get() {
              return this.properties.blur;
            },
            set: function set(t) {
              this.properties.blur = t, this.feGaussianBlur.attr({
                stdDeviation: t / this.scale
              });
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.updateScale = function () {
            this.dx = this.dx, this.dy = this.dy, this.blur = this.blur;
          }, e;
        }(tl);

        Fs.registeredClasses.DropShadowFilter = el;

        var il = function (t) {
          function e() {
            var e = t.call(this) || this;
            e._boundingRect = {
              x: -4e4,
              y: -4e4,
              width: 8e4,
              height: 8e4
            }, e._pointTo = {
              x: 0,
              y: 0
            }, e.fitPointerToBounds = !1, e._verticalOrientation = "up", e.className = "Tooltip", e.isMeasured = !1, e.getFillFromObject = !0, e.margin(5, 5, 5, 5), e.defaultState.transitionDuration = 1, e.hiddenState.transitionDuration = 1;
            var i = e.background;
            i.interactionsEnabled = !1, i.fillOpacity = .9, i.strokeWidth = 1, i.strokeOpacity = 1, i.stroke = Je("#ffffff"), i.cornerRadius = 3, i.pointerLength = 6, i.pointerBaseWidth = 10;
            var n = new el();
            n.dy = 1, n.dx = 1, n.opacity = .5, i.filters.push(n), e.autoTextColor = !0;
            var r = e.createChild(Ma);
            return r.shouldClone = !1, e.label = r, r.padding(7, 12, 4, 12), r.interactionsEnabled = !1, r.horizontalCenter = "middle", r.fill = Je("#ffffff"), e._disposers.push(r), e.label.events.on("sizechanged", e.drawBackground, e), e.label.zIndex = 1, e.pointerOrientation = "vertical", e.animationDuration = 0, e.animationEasing = Pn, e.setPropertyValue("showInViewport", !1), e.role = "tooltip", e.visible = !1, e.opacity = 0, e.x = 0, e.y = 0, e.events.on("visibilitychanged", e.handleVisibility, e), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.handleVisibility = function () {
            this.visible && this.label.invalidate();
          }, Object.defineProperty(e.prototype, "getStrokeFromObject", {
            get: function get() {
              return this.getPropertyValue("getStrokeFromObject");
            },
            set: function set(t) {
              this.setPropertyValue("getStrokeFromObject", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "autoTextColor", {
            get: function get() {
              return this.getPropertyValue("autoTextColor");
            },
            set: function set(t) {
              this.setPropertyValue("autoTextColor", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "keepTargetHover", {
            get: function get() {
              return this.getPropertyValue("keepTargetHover");
            },
            set: function set(t) {
              var e = this;
              this.setPropertyValue("keepTargetHover", t, !0) && t && (this.hoverable = !0, this.background.interactionsEnabled = !0, this._disposers.push(this.events.on("over", function (t) {
                e.targetSprite && e.targetSprite.hoverable && (e.targetSprite.isHover = !0);
              })), this._disposers.push(this.events.on("out", function (t) {
                e.targetSprite && e.targetSprite.hoverable && (e.targetSprite.isHover = !1);
              })));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "showInViewport", {
            get: function get() {
              return this.getPropertyValue("showInViewport");
            },
            set: function set(t) {
              this.setPropertyValue("showInViewport", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "getFillFromObject", {
            get: function get() {
              return this.getPropertyValue("getFillFromObject");
            },
            set: function set(t) {
              this.setPropertyValue("getFillFromObject", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.createBackground = function () {
            return new Wa();
          }, Object.defineProperty(e.prototype, "pointerOrientation", {
            get: function get() {
              return this.getPropertyValue("pointerOrientation");
            },
            set: function set(t) {
              this.setPropertyValue("pointerOrientation", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "animationDuration", {
            get: function get() {
              return this.getPropertyValue("animationDuration");
            },
            set: function set(t) {
              this.setPropertyValue("animationDuration", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "animationEasing", {
            get: function get() {
              return this.getPropertyValue("animationEasing");
            },
            set: function set(t) {
              this.setPropertyValue("animationEasing", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "html", {
            get: function get() {
              return this.label.html;
            },
            set: function set(t) {
              this.label.html != t && (this.label.html = t, this.invalidate());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "text", {
            get: function get() {
              return this.label.text;
            },
            set: function set(t) {
              this.label.text != t && (this.label.text = t, this.invalidate());
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.draw = function () {
            t.prototype.draw.call(this);
            var e = this.label;
            e.invalid && e.validate();
            var i,
                n,
                r = this._pointTo.x,
                s = this._pointTo.y,
                o = this._boundingRect,
                a = e.measuredWidth,
                l = e.measuredHeight,
                h = this.background.pointerLength;

            if (a > o.width) {
              Zi({
                x: o.x,
                y: o.y
              }, this.parent);
              var u = Zi({
                x: o.x + o.width,
                y: o.y + o.height
              }, this.parent),
                  p = document.body.offsetWidth;
              document.body.offsetHeight, u.x > p / 2 ? o.x = o.width - a : o.width = o.x + a;
            }

            var c = this.pointerOrientation;
            "horizontal" == c || "left" == c || "right" == c ? (n = -l / 2, i = "horizontal" == c ? r > o.x + o.width / 2 ? -a / 2 - h : a / 2 + h : "left" == c ? a / 2 + h : -a / 2 - h) : (i = R(0, o.x - r + a / 2, o.x - r + o.width - a / 2), "vertical" == c ? s > o.y + l + h ? (n = -l - h, this._verticalOrientation = "up") : (n = h, this._verticalOrientation = "down") : "down" == c ? (n = -l - h, this._verticalOrientation = "up") : (n = h, this._verticalOrientation = "down")), n = R(n, o.y - s, o.y + o.height - l - s), e.x = i, e.y = n, this.drawBackground();
          }, e.prototype.updateBackground = function () {
            this.group.addToBack(this.background.group);
          }, e.prototype.drawBackground = function () {
            var t = this.label,
                e = this.background,
                i = t.measuredWidth,
                n = t.measuredHeight,
                r = this._boundingRect,
                s = i,
                o = t.pixelX - i / 2,
                a = n,
                l = t.pixelY,
                h = this._pointTo.x,
                u = this._pointTo.y,
                p = r.x - h,
                c = p + r.width,
                d = r.y - u,
                f = d + r.height;
            e.x = o, e.y = l, e.width = s, e.height = a, this.fitPointerToBounds ? (e.pointerX = R(-e.x, p - e.x, c - e.x), e.pointerY = R(-e.y, d - e.y, f - e.y)) : (e.pointerX = -e.x, e.pointerY = -e.y), e.validate();
          }, e.prototype.pointTo = function (t, e) {
            this._pointTo.x == t.x && this._pointTo.y == t.y || (this._pointTo = t, this.invalidate(), !this.visible || e ? (this.moveTo(this._pointTo), this._animation && this._animation.kill()) : 0 == this.pixelX && 0 == this.pixelY ? this.moveTo(this._pointTo) : (this._animation && this._animation.kill(), this._animation = new Io(this, [{
              property: "x",
              to: t.x,
              from: this.pixelX
            }, {
              property: "y",
              to: t.y,
              from: this.pixelY
            }], this.animationDuration, this.animationEasing).start()));
          }, e.prototype.setBounds = function (t) {
            var e = this._boundingRect;
            e.x == t.x && e.y == t.y && e.width == t.width && e.height == t.height || (this._boundingRect = t, this.invalidate());
          }, Object.defineProperty(e.prototype, "boundingContainer", {
            set: function set(t) {
              this._boundingContainer = t, t.events.on("sizechanged", this.updateBounds, this), t.events.on("positionchanged", this.updateBounds, this);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.updateBounds = function () {
            var t = this._boundingContainer,
                e = zi({
              x: t.pixelX,
              y: t.pixelY,
              width: t.maxWidth,
              height: t.maxHeight
            }, t);
            this.setBounds(e);
          }, Object.defineProperty(e.prototype, "verticalOrientation", {
            get: function get() {
              return this._verticalOrientation;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "tooltip", {
            get: function get() {},
            enumerable: !0,
            configurable: !0
          }), e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), this.label.copyFrom(e.label), e._boundingRect && (this._boundingRect = e._boundingRect);
          }, e.prototype.asFunction = function (e) {
            return "animationEasing" == e || t.prototype.asIs.call(this, e);
          }, e;
        }(_a);

        Fs.registeredClasses.Tooltip = il;

        var nl = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "Trapezoid", e.element = e.paper.add("path"), e.topSide = h(100), e.bottomSide = h(100), e.leftSide = h(100), e.rightSide = h(100), e.isMeasured = !1, e.applyTheme(), e;
          }

          return n(e, t), e.prototype.draw = function () {
            t.prototype.draw.call(this);
            var e = this.pixelWidth,
                i = this.pixelHeight,
                n = hi(this.topSide, e),
                r = hi(this.bottomSide, e),
                s = hi(this.leftSide, i),
                o = hi(this.rightSide, i),
                a = (e - n) / 2,
                l = (i - s) / 2,
                h = e - (e - n) / 2,
                u = (i - o) / 2,
                p = e - (e - r) / 2,
                c = i - (i - o) / 2,
                d = (e - r) / 2,
                f = i - (i - s) / 2,
                g = "",
                y = "",
                m = "",
                v = "";

            if (S(this.horizontalNeck)) {
              var b = this.horizontalNeck.value;
              g = _r({
                x: e * b,
                y: Math.max(l, u)
              }), m = _r({
                x: e * b,
                y: Math.min(c, f)
              });
            }

            if (S(this.verticalNeck)) {
              var x = this.verticalNeck.value;
              y = _r({
                x: Math.min(h, p),
                y: i * x
              }), v = _r({
                x: Math.max(a, d),
                y: i * x
              });
            }

            var _ = xr({
              x: a,
              y: l
            }) + g + _r({
              x: h,
              y: u
            }) + y + _r({
              x: p,
              y: c
            }) + m + _r({
              x: d,
              y: f
            }) + v;

            this.path = _;
          }, Object.defineProperty(e.prototype, "topSide", {
            get: function get() {
              return this.getPropertyValue("topSide");
            },
            set: function set(t) {
              this.setPercentProperty("topSide", t, !0, !1, 10, !1);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "bottomSide", {
            get: function get() {
              return this.getPropertyValue("bottomSide");
            },
            set: function set(t) {
              this.setPercentProperty("bottomSide", t, !0, !1, 10, !1);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "leftSide", {
            get: function get() {
              return this.getPropertyValue("leftSide");
            },
            set: function set(t) {
              this.setPercentProperty("leftSide", t, !0, !1, 10, !1);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "rightSide", {
            get: function get() {
              return this.getPropertyValue("rightSide");
            },
            set: function set(t) {
              this.setPercentProperty("rightSide", t, !0, !1, 10, !1);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "horizontalNeck", {
            get: function get() {
              return this.getPropertyValue("horizontalNeck");
            },
            set: function set(t) {
              this.setPropertyValue("horizontalNeck", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "verticalNeck", {
            get: function get() {
              return this.getPropertyValue("verticalNeck");
            },
            set: function set(t) {
              this.setPropertyValue("verticalNeck", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(ba);

        Fs.registeredClasses.Trapezoid = nl;

        var rl = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "Triangle", e.element = e.paper.add("path"), e.direction = "top", e.applyTheme(), e;
          }

          return n(e, t), e.prototype.draw = function () {
            t.prototype.draw.call(this);
            var e,
                i = this.pixelWidth,
                n = this.pixelHeight;

            switch (this.direction) {
              case "right":
                e = xr({
                  x: 0,
                  y: 0
                }) + _r({
                  x: i,
                  y: n / 2
                }) + _r({
                  x: 0,
                  y: n
                }) + " Z";
                break;

              case "left":
                e = xr({
                  x: i,
                  y: 0
                }) + _r({
                  x: 0,
                  y: n / 2
                }) + _r({
                  x: i,
                  y: n
                }) + " Z";
                break;

              case "bottom":
                e = xr({
                  x: 0,
                  y: 0
                }) + _r({
                  x: i,
                  y: 0
                }) + _r({
                  x: i / 2,
                  y: n
                }) + " Z";
                break;

              case "top":
                e = xr({
                  x: i / 2,
                  y: 0
                }) + _r({
                  x: i,
                  y: n
                }) + _r({
                  x: 0,
                  y: n
                }) + " Z";
            }

            this.path = e;
          }, Object.defineProperty(e.prototype, "direction", {
            get: function get() {
              return this.getPropertyValue("direction");
            },
            set: function set(t) {
              this.setPropertyValue("direction", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(ba);

        Fs.registeredClasses.Triangle = rl;

        var sl = function () {
          function t(t, e) {
            this._tensionX = t, this._tensionY = e;
          }

          return t.prototype.smooth = function (t) {
            var e = this._tensionX,
                i = this._tensionY;
            if (t.length < 3 || e >= 1 && i >= 1) return br(t);
            var n = t[0],
                r = t[t.length - 1],
                s = !1;
            j(n.x, 3) == j(r.x) && j(n.y) == j(r.y) && (s = !0);

            for (var o = "", a = 0, l = t.length - 1; a < l; a++) {
              var h = t[a - 1],
                  u = t[a],
                  p = t[a + 1],
                  c = t[a + 2];
              0 === a ? h = s ? t[t.length - 2] : t[a] : a == t.length - 2 && (c = s ? t[1] : t[a + 1]), o += wr(p, st(h, u, p, 0, e, i), ot(0, u, p, c, e, i));
            }

            return o;
          }, t;
        }(),
            ol = function () {
          function t(t) {
            this._closed = t.closed;
          }

          return t.prototype.smooth = function (t) {
            var e = this,
                i = NaN,
                n = NaN,
                r = NaN,
                s = NaN,
                o = NaN,
                a = NaN,
                l = NaN,
                h = NaN,
                u = NaN,
                p = NaN,
                c = 0,
                d = "",
                f = function f(t, e) {
              d += wr({
                x: (i + 4 * n + t) / 6,
                y: (a + 4 * l + e) / 6
              }, {
                x: (2 * i + n) / 3,
                y: (2 * a + l) / 3
              }, {
                x: (i + 2 * n) / 3,
                y: (a + 2 * l) / 3
              });
            },
                g = function g(t) {
              var g = t.x,
                  y = t.y;

              switch (c) {
                case 0:
                  c = 1, e._closed ? (r = g, h = y) : d += _r({
                    x: g,
                    y: y
                  });
                  break;

                case 1:
                  c = 2, e._closed && (s = g, u = y);
                  break;

                case 2:
                  if (c = 3, e._closed) {
                    o = g, p = y, d += xr({
                      x: (i + 4 * n + g) / 6,
                      y: (a + 4 * l + y) / 6
                    });
                    break;
                  }

                  d += _r({
                    x: (5 * i + n) / 6,
                    y: (5 * a + l) / 6
                  });

                default:
                  f(g, y);
              }

              i = n, n = g, a = l, l = y;
            };

            if (mt(t, g), this._closed) switch (c) {
              case 1:
                d += xr({
                  x: r,
                  y: h
                }), d += " Z";
                break;

              case 2:
                d += xr({
                  x: (r + 2 * s) / 3,
                  y: (h + 2 * u) / 3
                }), d += _r({
                  x: (s + 2 * r) / 3,
                  y: (u + 2 * h) / 3
                }), d += " Z";
                break;

              case 3:
                g({
                  x: r,
                  y: h
                }), g({
                  x: s,
                  y: u
                }), g({
                  x: o,
                  y: p
                });
            } else {
              switch (c) {
                case 3:
                  f(n, l);

                case 2:
                  d += _r({
                    x: n,
                    y: l
                  });
              }

              d += " Z";
            }
            return d;
          }, t;
        }(),
            al = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "WavedCircle", e.element = e.paper.add("path"), e.waveLength = 16, e.waveHeight = 4, e.fill = void 0, e.fillOpacity = 0, e.tension = .8, e.applyTheme(), e;
          }

          return n(e, t), e.prototype.draw = function () {
            var t = "",
                e = this.pixelRadius;
            e > 0 && (t = xr((i = this.getPoints(e))[0]) + new sl(this.tension, this.tension).smooth(i));
            var i,
                n = this.pixelInnerRadius;
            n > 0 && ((i = this.getPoints(n)).reverse(), t += xr(i[0]) + new sl(this.tension, this.tension).smooth(i)), this.path = t;
          }, e.prototype.getPoints = function (t) {
            for (var e = t * Math.PI * 2, i = this.waveHeight / 2, n = e / Math.round(e / this.waveLength), r = n / 2, s = [], o = e / n, a = 0; a <= o; a++) {
              var l = a * n / e * 360,
                  h = (a * n + r) / e * 360;
              s.push({
                x: (t - i) * H(l),
                y: (t - i) * B(l)
              }), s.push({
                x: (t + i) * H(h),
                y: (t + i) * B(h)
              });
            }

            return s.pop(), s;
          }, Object.defineProperty(e.prototype, "innerRadius", {
            get: function get() {
              return this.getPropertyValue("innerRadius");
            },
            set: function set(t) {
              this.setPercentProperty("innerRadius", t, !0, !1, 10, !1), this.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "pixelInnerRadius", {
            get: function get() {
              return hi(this.innerRadius, X(this.innerWidth / 2, this.innerHeight / 2));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "waveLength", {
            get: function get() {
              return this.getPropertyValue("waveLength");
            },
            set: function set(t) {
              this.setPropertyValue("waveLength", t), this.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "waveHeight", {
            get: function get() {
              return this.getPropertyValue("waveHeight");
            },
            set: function set(t) {
              this.setPropertyValue("waveHeight", t), this.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "tension", {
            get: function get() {
              return this.getPropertyValue("tension");
            },
            set: function set(t) {
              this.setPropertyValue("tension", t), this.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(Ea);

        Fs.registeredClasses.WavedCircle = al;

        var ll = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "WavedLine", e.element = e.paper.add("path"), e.waveLength = 16, e.waveHeight = 4, e.tension = .8, e.pixelPerfect = !1, e.fill = Je(), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.draw = function () {
            var t = {
              x: this.x1,
              y: this.y1
            },
                e = {
              x: this.x2,
              y: this.y2
            };
            this.path = xr(t) + Fr(t, e, this.waveLength, this.waveHeight, this.tension, !0);
          }, Object.defineProperty(e.prototype, "waveLength", {
            get: function get() {
              return this.getPropertyValue("waveLength");
            },
            set: function set(t) {
              this.setPropertyValue("waveLength", t), this.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "waveHeight", {
            get: function get() {
              return this.getPropertyValue("waveHeight");
            },
            set: function set(t) {
              this.setPropertyValue("waveHeight", t), this.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "tension", {
            get: function get() {
              return this.getPropertyValue("tension");
            },
            set: function set(t) {
              this.setPropertyValue("tension", t), this.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(Na),
            hl = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "WavedRectangle", e.element = e.paper.add("path"), e.waveLength = 16, e.waveHeight = 4, e.tension = .8, e.setPropertyValue("wavedLeft", !0), e.setPropertyValue("wavedRight", !0), e.setPropertyValue("wavedTop", !0), e.setPropertyValue("wavedBottom", !0), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.draw = function () {
            t.prototype.draw.call(this);
            var e = this.pixelWidth,
                i = this.pixelHeight;

            if (e > 0 && i > 0) {
              var n = {
                x: 0,
                y: 0
              },
                  r = {
                x: e,
                y: 0
              },
                  s = {
                x: e,
                y: i
              },
                  o = {
                x: 0,
                y: i
              },
                  a = Math.min(e, this.waveLength),
                  l = Math.min(i, this.waveHeight),
                  h = Math.min(i, this.waveLength),
                  u = Math.min(e, this.waveHeight),
                  p = "",
                  c = "",
                  d = "",
                  f = "";
              this.wavedTop && (p = Fr(n, r, a, l, this.tension, !0)), this.wavedRight && (c = Fr(r, s, h, u, this.tension, !0)), this.wavedBottom && (d = Fr(s, o, a, l, this.tension, !0)), this.wavedLeft && (f = Fr(o, n, h, u, this.tension, !0)), this.path = xr(n) + p + _r(r) + c + _r(s) + d + _r(o) + f + "z";
            }
          }, Object.defineProperty(e.prototype, "waveLength", {
            get: function get() {
              return this.getPropertyValue("waveLength");
            },
            set: function set(t) {
              this.setPropertyValue("waveLength", t), this.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "waveHeight", {
            get: function get() {
              return this.getPropertyValue("waveHeight");
            },
            set: function set(t) {
              this.setPropertyValue("waveHeight", t), this.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setWavedSides = function (t, e, i, n) {
            this.wavedTop = t, this.wavedRight = e, this.wavedBottom = i, this.wavedLeft = n;
          }, Object.defineProperty(e.prototype, "tension", {
            get: function get() {
              return this.getPropertyValue("tension");
            },
            set: function set(t) {
              this.setPropertyValue("tension", t), this.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "wavedRight", {
            get: function get() {
              return this.getPropertyValue("wavedRight");
            },
            set: function set(t) {
              this.setPropertyValue("wavedRight", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "wavedLeft", {
            get: function get() {
              return this.getPropertyValue("wavedLeft");
            },
            set: function set(t) {
              this.setPropertyValue("wavedLeft", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "wavedTop", {
            get: function get() {
              return this.getPropertyValue("wavedTop");
            },
            set: function set(t) {
              this.setPropertyValue("wavedTop", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "wavedBottom", {
            get: function get() {
              return this.getPropertyValue("wavedBottom");
            },
            set: function set(t) {
              this.setPropertyValue("wavedBottom", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(xa),
            ul = function (t) {
          function e() {
            var e = t.call(this) || this;
            e.className = "ZoomOutButton", e.padding(9, 9, 9, 9), e.showSystemTooltip = !0;
            var i = new ta(),
                n = e.background;
            n.cornerRadius(20, 20, 20, 20), n.fill = i.getFor("primaryButton"), n.stroke = i.getFor("primaryButtonStroke"), n.strokeOpacity = 0, n.states.getKey("hover").properties.fill = i.getFor("primaryButtonHover"), n.states.getKey("down").properties.fill = i.getFor("primaryButtonActive");
            var r = new ba();
            r.element = e.paper.add("path");
            var s = xr({
              x: 0,
              y: 0
            });
            return s += _r({
              x: 11,
              y: 0
            }), r.path = s, r.pixelPerfect = !0, r.padding(8, 3, 8, 3), r.stroke = i.getFor("primaryButtonText"), e.icon = r, e.applyTheme(), e;
          }

          return n(e, t), e.prototype.applyInternalDefaults = function () {
            t.prototype.applyInternalDefaults.call(this), S(this.readerTitle) || (this.readerTitle = this.language.translate("Zoom Out"));
          }, e;
        }(La);

        Fs.registeredClasses.ZoomOutButton = ul;

        var pl = function (t) {
          function e() {
            var e = t.call(this) || this;
            e.className = "PlayButton", e.padding(12, 12, 12, 12), e.showSystemTooltip = !0;
            var i = new ta(),
                n = e.background;
            n.cornerRadius(25, 25, 25, 25), n.fill = i.getFor("primaryButton"), n.stroke = i.getFor("primaryButtonStroke"), n.strokeOpacity = 0, n.states.getKey("hover").properties.fill = i.getFor("primaryButtonHover"), n.states.getKey("down").properties.fill = i.getFor("primaryButtonActive");
            var r = new rl();
            r.direction = "right", r.width = 9, r.height = 11, r.marginLeft = 1, r.marginRight = 1, r.horizontalCenter = "middle", r.verticalCenter = "middle", r.stroke = i.getFor("primaryButtonText"), r.fill = r.stroke, e.icon = r;
            var s = new ja();
            s.width = 11, s.height = 11, s.horizontalCenter = "middle", s.verticalCenter = "middle", s.cornerRadius(0, 0, 0, 0), s.stroke = i.getFor("primaryButtonText"), s.fill = r.stroke, e.togglable = !0;
            var o = e.states.create("active");
            return o.transitionDuration = 0, o.properties.icon = s, e.defaultState.transitionDuration = 0, e.applyTheme(), e;
          }

          return n(e, t), e.prototype.applyInternalDefaults = function () {
            t.prototype.applyInternalDefaults.call(this), S(this.readerTitle) || (this.readerTitle = this.language.translate("Play"));
          }, e;
        }(La);

        Fs.registeredClasses.PlayButton = pl;

        var cl = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "ColorModifier", e.applyTheme(), e;
          }

          return n(e, t), e.prototype.modify = function (t) {
            return t;
          }, e;
        }($s);

        Fs.registeredClasses.ColorModifier = cl;

        var dl = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.lightnesses = [], e.brightnesses = [], e.opacities = [], e.offsets = [], e.className = "GradientModifier", e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "lightnesses", {
            get: function get() {
              return this._lightnesses;
            },
            set: function set(t) {
              this._lightnesses = t, this._brightnesses = [];
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "brightnesses", {
            get: function get() {
              return this._brightnesses;
            },
            set: function set(t) {
              this._brightnesses = t, this._lightnesses = [];
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "opacities", {
            get: function get() {
              return this._opacities;
            },
            set: function set(t) {
              this._opacities = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "offsets", {
            get: function get() {
              return this._offsets;
            },
            set: function set(t) {
              this._offsets = t;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.modify = function (t) {
            this.gradient.clear();
            var e = 0;
            this.opacities && (e = W(e, this.opacities.length)), this.lightnesses && (e = W(e, this.lightnesses.length)), this.brightnesses && (e = W(e, this.brightnesses.length));

            for (var i, n, r = 1, s = 0; s < e; s++) {
              var o = t;
              this.opacities && A(this.opacities[s]) && (r = this.opacities[s]), this.lightnesses && A(this.lightnesses[s]) && (i = this.lightnesses[s], n = void 0), this.brightnesses && A(this.brightnesses[s]) && (n = this.brightnesses[s], i = void 0), A(n) ? o = t.brighten(this.brightnesses[s]) : A(i) && (o = t.lighten(this.lightnesses[s]));
              var a = this.offsets[s];
              this.gradient.addColor(o, r, a);
            }

            return this.gradient;
          }, e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), this._offsets = e.offsets, this._brightnesses = e.brightnesses, this._lightnesses = e.lightnesses, this._opacities = e.opacities;
          }, e;
        }(cl);

        Fs.registeredClasses.GradientModifier = dl;

        var fl = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "LinearGradientModifier", e.gradient = new ia(), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), this.gradient = e.gradient.clone();
          }, e;
        }(dl);

        Fs.registeredClasses.LinearGradientModifier = fl;

        var gl = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "Cone", e.angle = 30, e.radius = h(100), e.topRadius = h(100), e.top = e.createChild(Ra), e.top.shouldClone = !1, e.bottom = e.createChild(Ra), e.bottom.shouldClone = !1, e.body = e.createChild(ba), e.body.shouldClone = !1, e.body.setElement(e.paper.add("path")), e.layout = "none", e.bodyFillModifier = new fl(), e.bodyFillModifier.lightnesses = [0, -.25, 0], e.body.fillModifier = e.bodyFillModifier, e.applyTheme(), e;
          }

          return n(e, t), e.prototype.draw = function () {
            t.prototype.draw.call(this), ne(this, this.top, va), ne(this, this.bottom, va), ne(this, this.body, va);
            var e,
                i,
                n,
                r = this.innerWidth,
                s = this.innerHeight,
                o = this.bottom,
                a = this.top,
                l = this.angle;
            "horizontal" == this.orientation ? (e = s / 2, o.y = s / 2, a.y = s / 2, a.x = r, i = (90 - l) / 90, n = 0, this.bodyFillModifier.gradient.rotation = 90) : (i = 0, n = (90 - l) / 90, e = r / 2, o.y = s, o.x = r / 2, a.x = r / 2, this.bodyFillModifier.gradient.rotation = 0);
            var h,
                u = this.radius.value * e,
                p = this.topRadius.value * e;
            o.radius = u - u * i, o.radiusY = u - u * n, a.radius = p - p * i, a.radiusY = p - p * n, h = "horizontal" == this.orientation ? xr({
              x: 0,
              y: s / 2 - o.radiusY
            }) + Or(-90, -180, o.radius, o.radiusY) + _r({
              x: r,
              y: s / 2 + a.radiusY
            }) + Or(90, 180, a.radius, a.radiusY) + " Z" : xr({
              x: r / 2 - a.radius,
              y: 0
            }) + Or(180, -180, a.radius, a.radiusY) + _r({
              x: r / 2 + o.radius,
              y: s
            }) + Or(0, 180, o.radius, o.radiusY) + " Z", this.body.path = h;
          }, Object.defineProperty(e.prototype, "angle", {
            get: function get() {
              return this.getPropertyValue("angle");
            },
            set: function set(t) {
              this.setPropertyValue("angle", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "radius", {
            get: function get() {
              return this.getPropertyValue("radius");
            },
            set: function set(t) {
              this.setPropertyValue("radius", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "topRadius", {
            get: function get() {
              return this.getPropertyValue("topRadius");
            },
            set: function set(t) {
              this.setPropertyValue("topRadius", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "orientation", {
            get: function get() {
              return this.getPropertyValue("orientation");
            },
            set: function set(t) {
              this.setPropertyValue("orientation", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(_a),
            yl = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "LightenFilter", e.feColorMatrix = e.paper.add("feColorMatrix"), e.feColorMatrix.attr({
              type: "matrix"
            }), e.filterPrimitives.push(e.feColorMatrix), e.lightness = 0, e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "lightness", {
            get: function get() {
              return this.properties.lightness;
            },
            set: function set(t) {
              this.properties.lightness = t;
              var e = t + 1;
              this.feColorMatrix.attr({
                values: e + " 0 0 0 0 0 " + e + " 0 0 0 0 0 " + e + " 0 0 0 0 0 1 0"
              });
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(tl);

        Fs.registeredClasses.LightenFilter = yl;

        var ml = function (t) {
          function e() {
            var e = t.call(this) || this;
            e.angle = 30, e.depth = 30, e.className = "Rectangle3D", e.layout = "none";
            var i = e.createChild(ba);
            i.shouldClone = !1, i.setElement(e.paper.add("path")), i.isMeasured = !1, e.sideBack = i, e._disposers.push(e.sideBack);
            var n = e.createChild(ba);
            n.shouldClone = !1, n.setElement(e.paper.add("path")), n.isMeasured = !1, e.sideBottom = n, e._disposers.push(e.sideBottom);
            var r = e.createChild(ba);
            r.shouldClone = !1, r.setElement(e.paper.add("path")), r.isMeasured = !1, e.sideLeft = r, e._disposers.push(e.sideLeft);
            var s = e.createChild(ba);
            s.shouldClone = !1, s.setElement(e.paper.add("path")), s.isMeasured = !1, e.sideRight = s, e._disposers.push(e.sideRight);
            var o = e.createChild(ba);
            o.shouldClone = !1, o.setElement(e.paper.add("path")), o.isMeasured = !1, e.sideTop = o, e._disposers.push(e.sideTop);
            var a = e.createChild(ba);
            return a.shouldClone = !1, a.setElement(e.paper.add("path")), a.isMeasured = !1, e.sideFront = a, e._disposers.push(e.sideFront), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.draw = function () {
            t.prototype.draw.call(this);
            var e = this.innerWidth,
                i = this.innerHeight,
                n = this.depth,
                r = this.angle,
                s = B(r),
                o = H(r),
                a = {
              x: 0,
              y: 0
            },
                l = {
              x: e,
              y: 0
            },
                h = {
              x: e,
              y: i
            },
                u = {
              x: 0,
              y: i
            },
                p = {
              x: n * o,
              y: -n * s
            },
                c = {
              x: n * o + e,
              y: -n * s
            },
                d = {
              x: n * o + e,
              y: -n * s + i
            },
                f = {
              x: n * o,
              y: -n * s + i
            };
            this.sideFront.path = xr(a) + _r(l) + _r(h) + _r(u) + " Z", this.sideBack.path = xr(p) + _r(c) + _r(d) + _r(f) + " Z", this.sideLeft.path = xr(a) + _r(p) + _r(f) + _r(u) + " Z", this.sideRight.path = xr(l) + _r(c) + _r(d) + _r(h) + " Z", this.sideBottom.path = xr(u) + _r(f) + _r(d) + _r(h) + " Z", this.sideTop.path = xr(a) + _r(p) + _r(c) + _r(l) + " Z";
          }, Object.defineProperty(e.prototype, "depth", {
            get: function get() {
              return this.getPropertyValue("depth");
            },
            set: function set(t) {
              this.setPropertyValue("depth", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "angle", {
            get: function get() {
              return this.getPropertyValue("angle");
            },
            set: function set(t) {
              this.setPropertyValue("angle", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setFill = function (e) {
            var i;
            if (t.prototype.setFill.call(this, e), e instanceof qs) i = e.hex;else if (e instanceof ia || e instanceof na) i = e.stops.getIndex(0).color.hex;else {
              var n = new yl();
              n.lightness = -.2, this.sideBack.filters.push(n);
              var r = n.clone();
              r.lightness = -.4, this.sideLeft.filters.push(r);
              var s = n.clone();
              s.lightness = -.2, this.sideRight.filters.push(s);
              var o = n.clone();
              o.lightness = -.1, this.sideTop.filters.push(o);
              var a = n.clone();
              a.lightness = -.5, this.sideBottom.filters.push(a);
            }
            i && (this.sideBack.fill = Je(i).lighten(-.2), this.sideLeft.fill = Je(i).lighten(-.4), this.sideRight.fill = Je(i).lighten(-.2), this.sideTop.fill = Je(i).lighten(-.1), this.sideBottom.fill = Je(i).lighten(-.5));
          }, e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), this.sideBack.copyFrom(e.sideBack), this.sideLeft.copyFrom(e.sideLeft), this.sideRight.copyFrom(e.sideRight), this.sideTop.copyFrom(e.sideTop), this.sideBottom.copyFrom(e.sideBottom);
          }, e;
        }(_a),
            vl = function (t) {
          function e() {
            var e = t.call(this) || this;
            e.className = "Slice3D", e.layout = "none";
            var i = e.createChild(ba);
            e.edge = i, i.shouldClone = !1, i.isMeasured = !1, i.toBack(), e.angle = 30, e.depth = 20;
            var n = e.createChild(ba);
            e.sideA = n, n.shouldClone = !1, n.isMeasured = !1;
            var r = e.createChild(ba);
            return e.sideB = r, r.shouldClone = !1, r.isMeasured = !1, e.applyTheme(), e;
          }

          return n(e, t), e.prototype.setFill = function (e) {
            var i;
            if (t.prototype.setFill.call(this, e), e instanceof qs) i = e.hex;else if (e instanceof ia || e instanceof na) i = e.stops.getIndex(0).color.hex;else {
              var n = new yl();
              n.lightness = -.25, this.edge.filters.push(n), this.sideA.filters.push(n.clone()), this.sideB.filters.push(n.clone());
            }

            if (i) {
              var r = Je(i).lighten(-.25);
              this.edge.fill = r, this.sideA.fill = r, this.sideB.fill = r, this.edge.stroke = r, this.sideA.stroke = r, this.sideB.stroke = r;
            }
          }, e.prototype.draw = function () {
            if (this.cornerRadius = 0, this.innerCornerRadius = 0, t.prototype.draw.call(this), 0 !== this.arc && this.radius > 0 && this.depth > 0) {
              this.sideB.show(0), this.sideA.show(0), this.edge.show(0);

              for (var e = this.startAngle, i = this.arc, n = this.pixelInnerRadius || 0, r = this.radiusY || 0, s = this.radius, o = e + i, a = r / s * n, l = {
                x: H(e) * n,
                y: B(e) * a
              }, h = {
                x: H(e) * s,
                y: B(e) * r
              }, u = {
                x: H(o) * s,
                y: B(o) * r
              }, p = {
                x: H(o) * n,
                y: B(o) * a
              }, c = this.depth, d = {
                x: l.x,
                y: l.y - c
              }, f = {
                x: h.x,
                y: h.y - c
              }, g = {
                x: u.x,
                y: u.y - c
              }, y = {
                x: p.x,
                y: p.y - c
              }, m = "", v = Math.ceil(i / 5), b = i / v, x = e, _ = f, P = 0; P < v; P++) if ((x += b) > 0 && x < 180) {
                m += xr(_);
                var w = {
                  x: H(x) * s,
                  y: B(x) * r - c
                };
                m += _r({
                  x: _.x,
                  y: _.y + c
                }), m += Ir({
                  x: w.x,
                  y: w.y + c
                }, s, r, !0), m += _r(w), m += Ir(_, s, r), m += "z", _ = w;
              } else m += xr(_), m += Ir(w = {
                x: H(x) * s,
                y: B(x) * r - c
              }, s, r, !0), m += _r({
                x: w.x,
                y: w.y + c
              }), m += Ir({
                x: _.x,
                y: _.y + c
              }, s, r), m += _r(_), m += "z", _ = w;

              for (_ = d, x = e, P = 0; P < v; P++) (x += b) > 0 && x < 180 ? (m += xr(_), w = {
                x: H(x) * n,
                y: B(x) * a - c
              }, m += _r({
                x: _.x,
                y: _.y + c
              }), m += Ir({
                x: w.x,
                y: w.y + c
              }, n, a, !0), m += _r(w), m += Ir(_, n, a), m += "z", _ = w) : (m += xr(_), m += Ir(w = {
                x: H(x) * n,
                y: B(x) * a - c
              }, n, a, !0), m += _r({
                x: w.x,
                y: w.y + c
              }), m += Ir({
                x: _.x,
                y: _.y + c
              }, n, a), m += _r(_), m += "z", _ = w);

              this.edge.path = m, this.sideA.path = xr(l) + _r(h) + _r(f) + _r(d) + " Z", this.sideB.path = xr(u) + _r(p) + _r(y) + _r(g) + " Z", this.startAngle < 90 ? this.sideA.toBack() : this.sideA.toFront(), this.startAngle + this.arc > 90 ? this.sideB.toBack() : this.sideB.toFront(), this.slice.dy = -c;
            } else this.sideA.hide(0), this.sideB.hide(0), this.edge.hide(0);
          }, Object.defineProperty(e.prototype, "depth", {
            get: function get() {
              return this.getPropertyValue("depth");
            },
            set: function set(t) {
              this.setPropertyValue("depth", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "angle", {
            get: function get() {
              var t = this.getPropertyValue("angle");
              return A(t) || (t = 0), t;
            },
            set: function set(t) {
              this.setPropertyValue("angle", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "radiusY", {
            get: function get() {
              var t = this.getPropertyValue("radiusY");
              return A(t) || (t = this.radius - this.radius * this.angle / 90), t;
            },
            set: function set(t) {
              this.setPropertyValue("radiusY", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), this.edge.copyFrom(e.edge), this.sideA.copyFrom(e.sideA), this.sideB.copyFrom(e.sideB);
          }, e;
        }(Ka),
            bl = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "RadialGradientModifier", e.gradient = new na(), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), this.gradient = e.gradient.clone();
          }, e;
        }(dl);

        Fs.registeredClasses.RadialGradientModifier = bl;

        var xl = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e._line = e.paper.add("line"), e.addElement(e._line), e;
          }

          return n(e, t), e.prototype.draw = function () {
            t.prototype.draw.call(this), this._line && this._line.attr({
              x2: 2 * this.width
            });
          }, e;
        }(ea);

        Fs.registeredClasses.LinePattern = xl;

        var _l = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.rectHeight = 1, e.rectWidth = 1, e;
          }

          return n(e, t), e.prototype.draw = function () {
            this._rect && this.removeElement(this._rect), this._rect = this.paper.add("rect"), this._rect.attr({
              width: this.rectWidth,
              height: this.rectHeight
            }), this.addElement(this._rect), t.prototype.draw.call(this);
          }, Object.defineProperty(e.prototype, "rectWidth", {
            get: function get() {
              return this.properties.rectWidth;
            },
            set: function set(t) {
              this.properties.rectWidth = t, this.draw();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "rectHeight", {
            get: function get() {
              return this.properties.rectHeight;
            },
            set: function set(t) {
              this.properties.rectHeight = t, this.draw();
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(ea);

        Fs.registeredClasses.RectPattern = _l;

        var Pl = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "ColorizeFilter", e.feColorMatrix = e.paper.add("feColorMatrix"), e.feColorMatrix.attr({
              type: "matrix"
            }), e.filterPrimitives.push(e.feColorMatrix), e.intensity = 1, e.applyTheme(), e;
          }

          return n(e, t), e.prototype.applyFilter = function () {
            var t,
                e,
                i,
                n = this.intensity,
                r = 1 - n,
                s = this.color;
            s && s.rgb ? (t = s.rgb.r / 255 * n, e = s.rgb.g / 255 * n, i = s.rgb.b / 255 * n) : (t = 0, e = 0, i = 0), this.feColorMatrix.attr({
              values: r + " 0 0 0 " + t + " 0 " + r + " 0 0 " + e + " 0 0 " + r + " 0 " + i + " 0 0 0 1 0"
            });
          }, Object.defineProperty(e.prototype, "color", {
            get: function get() {
              return this.properties.color;
            },
            set: function set(t) {
              this.properties.color = t, this.applyFilter();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "intensity", {
            get: function get() {
              return this.properties.intensity;
            },
            set: function set(t) {
              this.properties.intensity = t, this.applyFilter();
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(tl);

        Fs.registeredClasses.ColorizeFilter = Pl;

        var wl = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "DesaturateFilter", e.feColorMatrix = e.paper.add("feColorMatrix"), e.feColorMatrix.attr({
              type: "saturate"
            }), e.filterPrimitives.push(e.feColorMatrix), e.width = 120, e.height = 120, e.saturation = 0, e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "saturation", {
            get: function get() {
              return this.properties.saturation;
            },
            set: function set(t) {
              this.properties.saturation = t, this.feColorMatrix.attr({
                values: t.toString()
              });
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(tl);

        Fs.registeredClasses.DesaturateFilter = wl;

        var Cl = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "BlurFilter", e.feGaussianBlur = e.paper.add("feGaussianBlur"), e.feGaussianBlur.attr({
              result: "blurOut",
              "in": "SourceGraphic"
            }), e.filterPrimitives.push(e.feGaussianBlur), e.width = 200, e.height = 200, e.blur = 1.5, e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "blur", {
            get: function get() {
              return this.properties.blur;
            },
            set: function set(t) {
              this.properties.blur = t, this.feGaussianBlur.attr({
                stdDeviation: t / this.scale
              });
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(tl);

        Fs.registeredClasses.BlurFilter = Cl;

        var Ol = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "FocusFilter", e.feFlood = e.paper.add("feFlood"), e.feFlood.attr({
              "flood-color": new ta().getFor("primaryButtonHover"),
              result: "base"
            }), e.filterPrimitives.push(e.feFlood), e.feMorphology = e.paper.add("feMorphology"), e.feMorphology.attr({
              result: "bigger",
              "in": "SourceGraphic",
              operator: "dilate",
              radius: "2"
            }), e.filterPrimitives.push(e.feMorphology), e.feColorMatrix = e.paper.add("feColorMatrix"), e.feColorMatrix.attr({
              result: "mask",
              "in": "bigger",
              type: "matrix",
              values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0"
            }), e.filterPrimitives.push(e.feColorMatrix), e.feComposite = e.paper.add("feComposite"), e.feComposite.attr({
              result: "drop",
              "in": "base",
              in2: "mask",
              operator: "in"
            }), e.filterPrimitives.push(e.feComposite), e.feBlend = e.paper.add("feBlend"), e.feBlend.attr({
              "in": "SourceGraphic",
              in2: "drop",
              mode: "normal"
            }), e.filterPrimitives.push(e.feBlend), e.width = 130, e.height = 130, e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "stroke", {
            get: function get() {
              return this.properties.stroke;
            },
            set: function set(t) {
              this.properties.stroke = t, this.feFlood.attr({
                "flood-color": t
              });
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "strokeWidth", {
            get: function get() {
              return this.properties.strokeWidth;
            },
            set: function set(t) {
              this.properties.strokeWidth = t, this.feMorphology.attr({
                radius: t
              });
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "opacity", {
            get: function get() {
              return this.properties.opacity;
            },
            set: function set(t) {
              this.properties.opacity = t, this.feColorMatrix.attr({
                values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " + t + " 0"
              });
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setSprite = function (e) {
            this._sprite && this._sprite != e && this._sprite.group.removeStyle("outline"), e.group.addStyle({
              outline: "none"
            }), t.prototype.setSprite.call(this, e);
          }, e;
        }(tl),
            Sl = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e._list = [], e._currentStep = 0, e._startIndex = 0, e._currentPass = 0, e.baseColor = new qs({
              r: 103,
              g: 183,
              b: 220
            }), e.stepOptions = {}, e.passOptions = {
              brighten: -.2
            }, e.step = 1, e.minColors = 20, e.minLightness = .2, e.maxLightness = .9, e.shuffle = !1, e.wrap = !0, e.reuse = !1, e.saturation = 1, e.className = "ColorSet", e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "list", {
            get: function get() {
              return this._list || this.generate(this.minColors), this._list;
            },
            set: function set(t) {
              this._list = t, this.reset();
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.getReusableColor = function (t) {
            if (0 == this._list.length) return this.generate(1), this.list[0];
            var e = t - Math.floor(t / this._list.length) * this.list.length;
            return this.list[e];
          }, e.prototype.next = function () {
            var t;
            return this.list.length <= this._currentStep ? this.reuse ? t = this.getReusableColor(this._currentStep) : (this.generate(this.minColors), t = this.list[this._currentStep]) : t = this.list[this._currentStep], this._currentStep += this.step, t.saturate(this.saturation);
          }, e.prototype.getIndex = function (t) {
            var e;
            return this.list.length <= t ? this.reuse ? e = this.getReusableColor(t) : (this.generate(this.minColors), e = this.getIndex(t)) : e = this.list[t], e.saturate(this.saturation);
          }, e.prototype.reset = function () {
            this._currentStep = this._startIndex;
          }, Object.defineProperty(e.prototype, "currentStep", {
            get: function get() {
              return this._currentStep;
            },
            set: function set(t) {
              this._currentStep = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "startIndex", {
            get: function get() {
              return this._startIndex;
            },
            set: function set(t) {
              this._startIndex = t, this.reset();
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.generate = function (t) {
            var e = Ke(I(this.currentColor.rgb)),
                i = S(this.stepOptions.hue) ? this.stepOptions.hue : 1 / t,
                n = {
              brighten: 0,
              lighten: 0,
              hue: e.h,
              lightness: e.l,
              saturation: e.s
            },
                r = [],
                s = 0 == this.list.length ? 0 : 1;
            if (this.reuse) for (var o = s; o < t; o++) r.push(Ke(I(this._list[o].rgb)).h);else for (o = s; o < t; o++) {
              var a = e.h + i * o;
              this.wrap && a > 1 && (a -= 1), r.push(a);
            }

            for (this.shuffle && r.sort(function (t, e) {
              return Math.random() - .5;
            }), o = 0; o < t; o++) {
              this.reuse ? e = Ke(I(this._list[o].rgb)) : e.h = r.shift(), this.applyStepOptions(e, n, o + 1, this._currentPass);
              var l = Je(Ge(e)),
                  h = (this.stepOptions.brighten || 0) * (o + 1) + (this.passOptions.brighten || 0) * this._currentPass;
              0 != h && (h = this.wrap ? Ni(h, this.minLightness, this.maxLightness) : Bi(h, this.minLightness, this.maxLightness), l = l.brighten(h));
              var u = (this.stepOptions.lighten || 0) * (o + 1) + (this.passOptions.lighten || 0) * this._currentPass;
              0 != u && (u = this.wrap ? Ni(u, this.minLightness, this.maxLightness) : Bi(u, this.minLightness, this.maxLightness), l = l.lighten(u)), this._list.push(l);
            }

            this._currentPass++;
          }, Object.defineProperty(e.prototype, "currentColor", {
            get: function get() {
              return 0 == this._list.length ? this.baseColor.saturate(this.saturation) : this._list[this._list.length - 1].saturate(this.saturation);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.applyStepOptions = function (t, e, i, n) {
            t.l = e.lightness + (this.stepOptions.lightness || 0) * i + (this.passOptions.lightness || 0) * n, this.wrap ? (t.l > 1 ? t.l = t.l - Math.floor(t.l) : t.l < 0 && (t.l = -(t.l - Math.floor(t.l))), t.l = Ni(t.l, this.minLightness, this.maxLightness)) : (t.l > 1 ? t.l = 1 : t.l < 0 && (t.l = 0), t.l = Bi(t.l, this.minLightness, this.maxLightness));
          }, e.prototype.processConfig = function (e) {
            if (e && S(e.list) && F(e.list)) for (var i = 0, n = e.list.length; i < n; i++) e.list[i] instanceof qs || (e.list[i] = Je(e.list[i]));
            t.prototype.processConfig.call(this, e);
          }, e;
        }($s);

        Fs.registeredClasses.ColorSet = Sl;

        var Il = function () {
          function t() {
            this._disposed = !1, this._disposers = [];
          }

          return t.prototype.init = function () {}, t.prototype.isDisposed = function () {
            return this._disposed;
          }, t.prototype.dispose = function () {
            if (!this._disposed) {
              this._disposed = !0;
              var t = this._disposers;

              for (this._disposers = null; 0 !== t.length;) t.shift().dispose();
            }
          }, t;
        }(),
            Dl = function (t) {
          function e() {
            var e = t.call(this) || this;
            e.className = "AmChartsLogo", e.valign = "bottom";
            e.opacity = .3, e.defaultState.properties.opacity = .4, e.url = "https://www.amcharts.com/", e.urlTarget = "_blank", e.showSystemTooltip = !0, e.readerTitle = "Chart created using amCharts library", e.width = 66, e.height = 21, e.background.opacity = 0;
            var i = Je("#474758");
            "#ffffff" == new ta().getFor("background").alternative.hex && (i = Je("#ffffff"));
            var n = new ia();
            n.addColor(i), n.addColor(i, 1, .75), n.addColor(Je("#3cabff"), 1, .755), n.rotation = -10;
            var r = n,
                s = e.createChild(Ga);
            s.shouldClone = !1, s.isMeasured = !1, s.segments = [[{
              x: 15,
              y: 15
            }, {
              x: 27,
              y: 15
            }, {
              x: 36,
              y: 6
            }, {
              x: 40.5,
              y: 10.5
            }, {
              x: 45,
              y: 6
            }, {
              x: 54,
              y: 15
            }, {
              x: 60,
              y: 15
            }]], s.strokeWidth = 6 * .3, s.tensionX = .8, s.tensionY = 1, s.stroke = Je("#3cabff");
            var o = e.createChild(Ga);
            o.shouldClone = !1, o.isMeasured = !1, o.segments = [[{
              x: 6,
              y: 15
            }, {
              x: 15,
              y: 15
            }, {
              x: 27,
              y: 12 * .3
            }, {
              x: 39.9,
              y: 15
            }, {
              x: 51,
              y: 15
            }, {
              x: 60,
              y: 15
            }]], o.strokeWidth = 6 * .3, o.tensionX = .75, o.tensionY = 1, o.stroke = r, e._disposers.push(o);
            var a = new wl();
            e.filters.push(a);
            var l = new wl();
            l.saturation = 1;
            var h = e.states.create("hover");
            return h.properties.opacity = 1, h.filters.push(l), e.applyTheme(), e;
          }

          return n(e, t), e;
        }(_a),
            kl = function (t) {
          function e() {
            var e = t.call(this) || this;
            e.className = "Grip";
            var i = new ta();
            e.layout = "absolute", e.padding(10, 10, 10, 10), e.margin(3, 3, 3, 3), e.background.fillOpacity = .3, e.background.cornerRadius(10, 10, 10, 10);
            var n = new ba();
            n.element = e.paper.add("path");
            var r = xr({
              x: -6,
              y: 0
            });
            return r += _r({
              x: 6,
              y: 0
            }), r += xr({
              x: -8,
              y: -6
            }), r += _r({
              x: 0,
              y: -12
            }), r += _r({
              x: 8,
              y: -6
            }), r += xr({
              x: -8,
              y: 6
            }), r += _r({
              x: 0,
              y: 12
            }), r += _r({
              x: 8,
              y: 6
            }), n.path = r, n.strokeWidth = 2, n.fillOpacity = 0, n.pixelPerfect = !0, n.padding(0, 4, 0, 4), n.stroke = i.getFor("text"), n.strokeOpacity = .7, n.align = "center", n.valign = "middle", e.icon = n, e.label.dispose(), e.label = void 0, e.position = "right", e.autoHideDelay = 3e3, e.events.on("shown", function (t) {
              e._autoHideTimeout && e._autoHideTimeout.dispose(), e.autoHideDelay && (e._autoHideTimeout = e.setTimeout(function () {
                e.hide();
              }, e.autoHideDelay));
            }), e.events.on("down", function (t) {
              e._autoHideTimeout && e._autoHideTimeout.dispose();
            }), e.events.on("out", function (t) {
              e.autoHideDelay && (e._autoHideTimeout = e.setTimeout(function () {
                e.hide();
              }, e.autoHideDelay));
            }), e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "position", {
            get: function get() {
              return this.getPropertyValue("position");
            },
            set: function set(t) {
              if (this.setPropertyValue("position", t)) switch (t) {
                case "left":
                  this.align = "left", this.valign = "middle", this.horizontalCenter = "left", this.verticalCenter = "middle", this.icon.rotation = 0, this.width = void 0, this.height = h(30);
                  break;

                case "right":
                  this.align = "right", this.valign = "middle", this.horizontalCenter = "right", this.verticalCenter = "middle", this.icon.rotation = 0, this.width = void 0, this.height = h(30);
                  break;

                case "top":
                  this.align = "center", this.valign = "top", this.horizontalCenter = "middle", this.verticalCenter = "top", this.icon.rotation = 90, this.width = h(30), this.height = void 0;
                  break;

                case "bottom":
                  this.align = "center", this.valign = "bottom", this.horizontalCenter = "middle", this.verticalCenter = "bottom", this.icon.rotation = 90, this.width = h(30), this.height = void 0;
                  break;

                default:
                  this.align = "center", this.valign = "middle", this.horizontalCenter = "middle", this.verticalCenter = "middle", this.icon.rotation = 90, this.width = h(30), this.height = void 0;
              }
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "autoHideDelay", {
            get: function get() {
              return this.getPropertyValue("autoHideDelay");
            },
            set: function set(t) {
              this.setPropertyValue("autoHideDelay", t);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(La);

        Fs.registeredClasses.Grip = kl;

        var Tl = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "ChartDataItem", e.applyTheme(), e;
          }

          return n(e, t), e;
        }(Va),
            Al = function (t) {
          function e() {
            var i = t.call(this) || this;
            if (i._legend = new ys(), i.constructor === e) throw new Error("'Chart' cannot be instantiated directly. Please use a specific chart type.");
            i.className = "Chart";
            var n = new Ma();
            i.titles = new Hs(n), i._disposers.push(new Bs(i.titles)), i._disposers.push(n), i.width = h(100), i.height = h(100), i.layout = "vertical";
            var r = i.createChild(_a);
            r.shouldClone = !1, r.layout = "vertical", r.width = h(100), r.height = h(100), i.chartAndLegendContainer = r;
            var s = r.createChild(_a);
            return s.shouldClone = !1, s.width = h(100), s.height = h(100), i.chartContainer = s, i.showOnInit = !0, i._disposers.push(i._legend), i.titles.events.on("inserted", function (t) {
              i.processTitle(t), i.updateReaderTitleReferences();
            }, i, !1), i.titles.events.on("removed", function (t) {
              i.updateReaderTitleReferences();
            }, i, !1), i.role = "widget", i.defaultState.transitionDuration = 1, i.applyTheme(), i;
          }

          return n(e, t), e.prototype.applyInternalDefaults = function () {
            t.prototype.applyInternalDefaults.call(this), S(this.readerTitle) || (this.readerTitle = this.language.translate("Chart"));
          }, e.prototype.draw = function () {
            this.fixLayout(), t.prototype.draw.call(this);
          }, e.prototype.fixLayout = function () {
            var t = this.legend;

            if (t) {
              var e = this.chartAndLegendContainer,
                  i = this.chartContainer;

              switch (i.x = void 0, i.y = void 0, t.x = void 0, t.y = void 0, t.position) {
                case "left":
                  e.layout = "horizontal", A(t.width) || (t.width = 200), t.toBack();
                  break;

                case "right":
                  e.layout = "horizontal", A(t.width) || (t.width = 200), t.toFront();
                  break;

                case "top":
                  e.layout = "vertical", t.maxWidth = void 0, t.width = h(100), t.toBack();
                  break;

                case "bottom":
                  e.layout = "vertical", t.maxWidth = void 0, t.width = h(100), t.toFront();
              }
            }
          }, e.prototype.feedLegend = function () {}, e.prototype.processTitle = function (t) {
            var e = t.newValue;
            return e.parent = this, e.toBack(), e.shouldClone = !1, e.align = "center", e.uidAttr(), e;
          }, e.prototype.updateReaderTitleReferences = function () {
            if (this.titles.length) {
              var t = [];
              pe(this.titles.iterator(), function (e) {
                t.push(e.uid);
              }), this.setSVGAttribute({
                "aria-labelledby": t.join(" ")
              });
            } else this.removeSVGAttribute("aria-labelledby");
          }, Object.defineProperty(e.prototype, "legend", {
            get: function get() {
              return this._legend.get();
            },
            set: function set(t) {
              this.setLegend(t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setLegend = function (t) {
            var e = this;
            this._legend.get() !== t && (t ? (t.parent = this.chartAndLegendContainer, this._legend.set(t, t.events.on("propertychanged", function (t) {
              "position" != t.property && "width" != t.property || e.fixLayout();
            }, void 0, !1))) : this._legend.reset(), this.feedLegend());
          }, e.prototype.dispose = function () {
            this.legend && this.legend.dispose(), t.prototype.dispose.call(this);
          }, e.prototype.processConfig = function (e) {
            e && S(e.legend) && !S(e.legend.type) && (e.legend.type = "Legend"), t.prototype.processConfig.call(this, e);
          }, e.prototype.copyFrom = function (e) {
            this.titles.copyFrom(e.titles), e.legend && (this.legend = e.legend.clone(), this.legend.removeChildren()), t.prototype.copyFrom.call(this, e);
          }, Object.defineProperty(e.prototype, "dragGrip", {
            get: function get() {
              var t = this;

              if (!this._dragGrip) {
                var e = this.tooltipContainer.createChild(kl);
                e.align = "right", e.valign = "middle", e.hide(0), e.events.on("down", function (e) {
                  e.touch && (t.interactionsEnabled = !1);
                }), e.events.on("up", function (e) {
                  t.interactionsEnabled = !0;
                }), this.events.on("down", function (t) {
                  t.touch && e.show();
                }), this._dragGrip = e;
              }

              return this._dragGrip;
            },
            set: function set(t) {
              this._dragGrip = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "focusable", {
            get: function get() {
              return this.parent.focusable;
            },
            set: function set(t) {
              this.parent.focusable = !0;
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(Fa);

        Fs.registeredClasses.Chart = Al, Ta.push({
          relevant: Aa.widthXS,
          state: function state(t, e) {
            if (t instanceof Al) {
              var i = t.states.create(e);
              return t.pixelPaddingLeft > 10 && (i.properties.paddingLeft = 10), t.pixelPaddingRight > 10 && (i.properties.paddingRight = 10), i;
            }

            return null;
          }
        }), Ta.push({
          relevant: Aa.heightXS,
          state: function state(t, e) {
            if (t instanceof Al) {
              var i = t.states.create(e);
              return t.pixelPaddingTop > 10 && (i.properties.paddingTop = 10), t.pixelPaddingBottom > 10 && (i.properties.paddingBottom = 10), i;
            }

            return null;
          }
        }), Ta.push({
          relevant: Aa.widthXXS,
          state: function state(t, e) {
            if (t instanceof Al) {
              var i = t.states.create(e);
              return i.properties.paddingLeft = 0, i.properties.paddingRight = 0, i;
            }

            return null;
          }
        }), Ta.push({
          relevant: Aa.heightXXS,
          state: function state(t, e) {
            if (t instanceof Al) {
              var i = t.states.create(e);
              return i.properties.paddingTop = 0, i.properties.paddingBottom = 0, i;
            }

            return null;
          }
        });

        var Vl = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "Bullet", e.isMeasured = !1, e.tooltipX = 0, e.tooltipY = 0, e.layout = "none", e.applyOnClones = !0, e.copyToLegendMarker = !0, e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "locationX", {
            get: function get() {
              return this.getPropertyValue("locationX");
            },
            set: function set(t) {
              if (this.setPropertyValue("locationX", t)) {
                var e = this.dataItem;
                e && e.component && e.component.invalidate();
              }
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "locationY", {
            get: function get() {
              return this.getPropertyValue("locationY");
            },
            set: function set(t) {
              if (this.setPropertyValue("locationY", t)) {
                var e = this.dataItem;
                e && e.component && e.component.invalidate();
              }
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "xField", {
            get: function get() {
              return this.getPropertyValue("xField");
            },
            set: function set(t) {
              this.setPropertyValue("xField", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "yField", {
            get: function get() {
              return this.getPropertyValue("yField");
            },
            set: function set(t) {
              this.setPropertyValue("yField", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "isDynamic", {
            get: function get() {
              return this.getPropertyValue("isDynamic");
            },
            set: function set(t) {
              this.setPropertyValue("isDynamic", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "copyToLegendMarker", {
            get: function get() {
              return this.getPropertyValue("copyToLegendMarker");
            },
            set: function set(t) {
              this.setPropertyValue("copyToLegendMarker", t);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(_a);

        Fs.registeredClasses.Bullet = Vl, Ta.push({
          relevant: Aa.isXS,
          state: function state(t, e) {
            if (t instanceof Vl) {
              var i = t.states.create(e);
              return i.properties.disabled = !0, i;
            }

            return null;
          }
        });

        var Fl = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.childrenCreated = !1, e.className = "LegendDataItem", e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "label", {
            get: function get() {
              var t = this;

              if (!this._label) {
                var e = this.component.labels.create();
                this._label = e, this.addSprite(e), this._disposers.push(e), e.parent = this.itemContainer, this._disposers.push(new fs(function () {
                  S(t.component) && t.component.labels.removeValue(e);
                }));
              }

              return this._label;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "color", {
            get: function get() {
              return this.properties.color;
            },
            set: function set(t) {
              this.setProperty("color", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "valueLabel", {
            get: function get() {
              var t = this;

              if (!this._valueLabel) {
                var e = this.component.valueLabels.create();
                this._valueLabel = e, this.addSprite(e), this._disposers.push(e), e.parent = this.itemContainer, this._disposers.push(new fs(function () {
                  S(t.component) && t.component.valueLabels.removeValue(e);
                }));
              }

              return this._valueLabel;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "itemContainer", {
            get: function get() {
              var t = this;

              if (!this._itemContainer) {
                var e = this.component,
                    i = e.itemContainers.create();
                this._itemContainer = i, this.addSprite(i), this._disposers.push(i), i.togglable && i.events.on("toggled", function (t) {
                  e.toggleDataItem(t.target.dataItem);
                }, void 0, !1), i.focusable && (i.events.on("focus", function (t) {
                  e.focusedItem = t.target.dataItem;
                }, void 0, !1), i.events.on("blur", function (t) {
                  e.focusedItem = void 0;
                }, void 0, !1)), this._disposers.push(new fs(function () {
                  S(t.component) && t.component.itemContainers.removeValue(i);
                })), this.dataContext.uidAttr && (i.readerControls = this.dataContext.uidAttr(), i.readerLabelledBy = this.dataContext.uidAttr());
                var n = this.dataContext;
                (n instanceof Va || n instanceof ba) && !n.isDisposed() && (i.addDisposer(n.events.on("visibilitychanged", function (t) {
                  i.readerChecked = t.visible, i.events.disableType("toggled"), i.isActive = !t.visible, i.events.enableType("toggled");
                }, void 0, !1)), n.addDisposer(new fs(function () {
                  t.component && t.component.dataItems.remove(t);
                })), n instanceof ba && (i.addDisposer(n.events.on("hidden", function (t) {
                  i.readerChecked = !1, i.events.disableType("toggled"), i.isActive = !0, i.events.enableType("toggled");
                }, void 0, !1)), i.addDisposer(n.events.on("shown", function (t) {
                  i.readerChecked = !0, i.events.disableType("toggled"), i.isActive = !1, i.events.enableType("toggled");
                }, void 0, !1))));
              }

              return this._itemContainer;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "marker", {
            get: function get() {
              var t = this;

              if (!this._marker) {
                var e = this.component.markers.create();
                this._marker = e, e.parent = this.itemContainer, this.addSprite(e), this._disposers.push(e), this._disposers.push(new fs(function () {
                  S(t.component) && t.component.markers.removeValue(e);
                }));
              }

              return this._marker;
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(Va),
            Ml = function Ml() {
          this.createMarker = !0;
        },
            jl = function (t) {
          function e() {
            var e = t.call(this) || this;
            e.className = "Legend", e.layout = "grid", e.setPropertyValue("useDefaultMarker", !1), e.setPropertyValue("contentAlign", "center");
            var i = new _a();
            i.applyOnClones = !0, i.padding(10, 0, 10, 0), i.margin(0, 10, 0, 0), i.layout = "horizontal", i.clickable = !0, i.focusable = !0, i.role = "switch", i.togglable = !0, i.cursorOverStyle = sa.pointer, i.background.fillOpacity = 0, e.itemContainers = new Hs(i), e._disposers.push(new Bs(e.itemContainers)), e._disposers.push(e.itemContainers.template), e._disposers.push(pr().body.events.on("keyup", function (t) {
              Wo.isKey(t.event, "enter") && e.focusedItem && e.focusedItem.itemContainer.clickable && e.toggleDataItem(e.focusedItem);
            }, e));
            var n = new ta(),
                r = new _a();
            r.width = 23, r.height = 23, r.interactionsEnabled = !1, r.applyOnClones = !0, r.setStateOnChildren = !0, r.background.fillOpacity = 0, r.background.strokeOpacity = 0, r.propertyFields.fill = "fill", r.valign = "middle";
            var s = n.getFor("disabledBackground");
            r.events.on("childadded", function (t) {
              var e = t.newValue.states.create("active");
              e.properties.stroke = s, e.properties.fill = s;
            }), e.markers = new Hs(r), e._disposers.push(new Bs(e.markers)), e._disposers.push(e.markers.template);
            var o = r.createChild(ja);
            o.width = h(100), o.height = h(100), o.applyOnClones = !0, o.propertyFields.fill = "fill", o.strokeOpacity = 0;
            var a = new Ma();
            a.text = "{name}", a.margin(0, 5, 0, 5), a.valign = "middle", a.applyOnClones = !0, a.states.create("active").properties.fill = n.getFor("disabledBackground"), e.labels = new Hs(a), e._disposers.push(new Bs(e.labels)), e._disposers.push(e.labels.template), a.interactionsEnabled = !1;
            var l = new Ma();
            return l.margin(0, 5, 0, 0), l.valign = "middle", l.width = 50, l.align = "right", l.textAlign = "end", l.applyOnClones = !0, l.states.create("active").properties.fill = n.getFor("disabledBackground"), l.interactionsEnabled = !1, e.valueLabels = new Hs(l), e._disposers.push(new Bs(e.valueLabels)), e._disposers.push(e.valueLabels.template), e.position = "bottom", i.states.create("active"), i.setStateOnChildren = !0, e.role = "group", e.applyTheme(), e;
          }

          return n(e, t), e.prototype.applyInternalDefaults = function () {
            t.prototype.applyInternalDefaults.call(this), S(this.readerTitle) || (this.readerTitle = this.language.translate("Legend"));
          }, e.prototype.createDataItem = function () {
            return new Fl();
          }, e.prototype.validateDataElement = function (e) {
            t.prototype.validateDataElement.call(this, e);
            var i = e.itemContainer,
                n = e.marker;
            e.label;
            var r = e.valueLabel;
            i.parent = this, i.readerChecked = e.dataContext.visible, e.dataContext.legendDataItem = e;
            var s = e.dataContext.legendSettings,
                o = e.dataContext;
            !o.createLegendMarker || this.useDefaultMarker && o instanceof ba || e.childrenCreated || (o.createLegendMarker(n), e.childrenCreated = !0), o.updateLegendValue && o.updateLegendValue(), r.invalid && r.validate(), "" == r.currentText || null == r.currentText ? r.__disabled = !0 : r.__disabled = !1, !s || null == s.itemValueText && null == s.valueText || (r.__disabled = !1);
            var a = e.dataContext.visible;
            void 0 === a && (a = !0), a = P(a), e.dataContext.visible = a, i.events.disableType("toggled"), i.isActive = !a, i.events.enableType("toggled");
          }, Object.defineProperty(e.prototype, "position", {
            get: function get() {
              return this.getPropertyValue("position");
            },
            set: function set(t) {
              this.setPropertyValue("position", t) && ("left" == t || "right" == t ? (this.margin(10, 20, 10, 20), this.valign = "middle", this.itemContainers.template.width = h(100), this.valueLabels.template.width = h(100), this.labels.template.truncate = !0, this.labels.template.fullWords = !1) : (this.itemContainers.template.width = void 0, this.itemContainers.template.maxWidth = void 0, this.valueLabels.template.width = 50, this.labels.template.truncate = !1, this.width = h(100)), this.invalidate());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "useDefaultMarker", {
            get: function get() {
              return this.getPropertyValue("useDefaultMarker");
            },
            set: function set(t) {
              this.setPropertyValue("useDefaultMarker", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.toggleDataItem = function (t) {
            var e = t.dataContext;
            !e.visible || e.isHiding || e instanceof ba && e.isHidden ? (t.color = t.colorOrig, t.itemContainer.isActive = !1, !0 === e.hidden && (e.hidden = !1), e.show ? e.show() : e.visible = !0) : (t.itemContainer.isActive = !0, e.hide ? e.hide() : e.visible = !1, t.color = new ta().getFor("disabledBackground"));
          }, Object.defineProperty(e.prototype, "preloader", {
            get: function get() {},
            enumerable: !0,
            configurable: !0
          }), e.prototype.handleDataItemPropertyChange = function (t, e) {
            t.valueLabel.invalidate(), t.label.invalidate();
          }, e;
        }(Fa);

        Fs.registeredClasses.Legend = jl, Ta.push({
          relevant: Aa.widthXS,
          state: function state(t, e) {
            if (t instanceof jl && ("left" == t.position || "right" == t.position)) {
              var i = t.states.create(e);
              return i.properties.position = "bottom", i;
            }

            return null;
          }
        }), Ta.push({
          relevant: Aa.heightXS,
          state: function state(t, e) {
            if (t instanceof jl && ("top" == t.position || "bottom" == t.position)) {
              var i = t.states.create(e);
              return i.properties.position = "right", i;
            }

            return null;
          }
        }), Ta.push({
          relevant: Aa.isXS,
          state: function state(t, e) {
            if (t instanceof jl) {
              var i = t.states.create(e);
              return i.properties.disabled = !0, i;
            }

            return null;
          }
        });

        var Ll = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "SeriesDataItem", e.values.value = {}, e.values.value = {}, e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "bullets", {
            get: function get() {
              return this._bullets || (this._bullets = new Ds(), this._disposers.push(new Is(this._bullets))), this._bullets;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.dispose = function () {
            this.bullets.clear(), t.prototype.dispose.call(this);
          }, Object.defineProperty(e.prototype, "value", {
            get: function get() {
              return this.values.value.value;
            },
            set: function set(t) {
              this.setValue("value", t);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(Va),
            El = function (t) {
          function e() {
            var i = t.call(this) || this;
            if (i._ignoreMinMax = !1, i._showBullets = !0, i.legendSettings = new Ml(), i._tmin = new Ds(), i._tmax = new Ds(), i._smin = new Ds(), i._smax = new Ds(), i.dataItemsByAxis = new Ds(), i.skipFocusThreshold = 20, i._itemReaderTextChanged = !1, i.calculatePercent = !1, i.autoDispose = !0, i.simplifiedProcessing = !1, i.constructor === e) throw new Error("'Series' cannot be instantiated directly. Please use a specific series type.");
            i.className = "Series", i.isMeasured = !1, i.layout = "none", i.shouldClone = !1, i.setPropertyValue("hidden", !1), i.axisRanges = new Ns(), i.axisRanges.events.on("inserted", i.processAxisRange, i, !1), i.minBulletDistance = 0, i.mainContainer = i.createChild(_a), i.mainContainer.shouldClone = !1, i.mainContainer.mask = i.createChild(ba), i._disposers.push(i.mainContainer);
            var n = i.mainContainer.createChild(_a);
            return i._shouldBeReady.push(n), n.shouldClone = !1, n.layout = "none", n.virtualParent = i, i._disposers.push(n), i.bulletsContainer = n, i.tooltip = new il(), i.tooltip.virtualParent = i, i._disposers.push(i.tooltip), i.hiddenState.transitionEasing = _n, i.dataItem = i.createDataItem(), i._disposers.push(i.dataItem), i.dataItem.component = i, i.role = "group", i.applyTheme(), i;
          }

          return n(e, t), e.prototype.applyTheme = function () {
            t.prototype.applyTheme.call(this), Ms.autoSetClassName && this.bulletsContainer && (this.bulletsContainer.className = this.className + "-bullets", this.bulletsContainer.setClassName());
          }, e.prototype.applyInternalDefaults = function () {
            t.prototype.applyInternalDefaults.call(this), S(this.readerTitle) || (this.readerTitle = this.language.translate("Series"));
          }, e.prototype.createDataItem = function () {
            return new Ll();
          }, Object.defineProperty(e.prototype, "chart", {
            get: function get() {
              return this._chart;
            },
            set: function set(t) {
              this._chart = t;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.positionBullet = function (t) {}, e.prototype.processBullet = function (t) {
            var e = this,
                i = t.newValue;
            i.isTemplate = !0, this.events.once("datavalidated", function (t) {
              e.itemsFocusable() && (i.focusable = !0);
            });
          }, e.prototype.removeBullet = function (t) {
            var e = t.oldValue;
            this.dataItems.each(function (t) {
              var i = t.bullets.getKey(e.uid);
              i && i.dispose();
            }), this.invalidate();
          }, e.prototype.validateDataItems = function () {
            t.prototype.validateDataItems.call(this), this.processValues(!1);
          }, e.prototype.getFirstValue = function (t, e) {
            e > 0 && e < this.dataItems.length - 1 && e++;

            for (var i = e; i >= 0; i--) {
              var n = this.dataItems.getIndex(i).getActualWorkingValue(t);
              if (A(n)) return n;
            }

            return null;
          }, e.prototype.rangeChangeUpdate = function () {
            t.prototype.rangeChangeUpdate.call(this), this.processValues(!0);
          }, e.prototype.processValues = function (t) {
            var e = this;

            if (!this.simplifiedProcessing) {
              var i = this.dataItems,
                  n = {},
                  r = {},
                  s = {},
                  o = {},
                  a = {},
                  l = {},
                  h = {},
                  u = {},
                  p = W(0, this._workingStartIndex);
              p = X(p, this.dataItems.length);
              var c = X(this._workingEndIndex, this.dataItems.length);

              if (A(p) || (p = 0), A(c) || (c = this.dataItems.length), p > 0) {
                var d = i.getIndex(p - 1);
                Qt(d.values, function (t, e) {
                  var i = d.getActualWorkingValue(t);
                  A(i) && (h[t] = i);
                });
              }

              for (var f = p; f < c; f++) !function (t) {
                var c = i.getIndex(t);
                Qt(c.values, function (t, i) {
                  var d = c.getActualWorkingValue(t);

                  if (A(d)) {
                    A(n[t]) || (n[t] = 0), n[t]++, A(r[t]) || (r[t] = 0), r[t] += d, A(a[t]) || (a[t] = d), l[t] = d, A(s[t]) ? s[t] > d && (s[t] = d) : s[t] = d, A(o[t]) ? o[t] < d && (o[t] = d) : o[t] = d, A(u[t]) || (u[t] = e.getFirstValue(t, p)), c.setCalculatedValue(t, d - u[t], "change"), c.setCalculatedValue(t, (d - u[t]) / u[t] * 100, "changePercent");
                    var f = h[t];
                    A(f) || (f = d), c.setCalculatedValue(t, d - f, "previousChange"), c.setCalculatedValue(t, (d - f) / f * 100, "previousChangePercent"), h[t] = d;
                  }
                });
              }(f);

              if (this.calculatePercent) {
                for (f = p; f < c; f++) !function (t) {
                  var e = i.getIndex(t);
                  Qt(e.values, function (t) {
                    var i = r[t],
                        n = e.getActualWorkingValue(t);
                    if (A(n)) if (i > 0) {
                      n == i && (i = e.values[t].value);
                      var s = n / i * 100;
                      e.setCalculatedValue(t, s, "percent");
                    } else e.setCalculatedValue(t, 0, "percent");
                  });
                }(f);
              }

              if (p > 0) {
                var g = i.getIndex(p - 1);
                Qt(g.values, function (t) {
                  var e = g.values[t].value;
                  g.setCalculatedValue(t, e - a[t], "change"), g.setCalculatedValue(t, (e - a[t]) / a[t] * 100, "changePercent");
                });
              }

              var y = this.dataItem;
              Qt(y.values, function (t) {
                y.setCalculatedValue(t, r[t], "sum"), y.setCalculatedValue(t, r[t] / n[t], "average"), y.setCalculatedValue(t, a[t], "open"), y.setCalculatedValue(t, l[t], "close"), y.setCalculatedValue(t, s[t], "low"), y.setCalculatedValue(t, o[t], "high"), y.setCalculatedValue(t, n[t], "count");
              });
            }
          }, e.prototype.validate = function () {
            pe(this.axisRanges.iterator(), function (t) {
              t.validate();
            }), t.prototype.validate.call(this);
            var e = this.bulletsContainer;
            if (e.fill = this.fill, e.stroke = this.stroke, e.x = this.pixelX, e.y = this.pixelY, this.bulletsContainer.children.length > 0) if (this._showBullets) {
              for (var i = 0; i < this.startIndex; i++) (n = this.dataItems.getIndex(i)) && n.bullets.each(function (t, e) {
                e.__disabled = !0;
              });

              for (i = this.dataItems.length - 1; i > this.endIndex; i--) {
                var n;
                (n = this.dataItems.getIndex(i)) && n.bullets.each(function (t, e) {
                  e.__disabled = !0;
                });
              }
            } else this.bulletsContainer.children.each(function (t) {
              t.__disabled = !0;
            });
            this.updateTooltipBounds();
          }, e.prototype.updateTooltipBounds = function () {
            this.topParent && this.tooltip.setBounds({
              x: 0,
              y: 0,
              width: this.topParent.maxWidth,
              height: this.topParent.maxHeight
            });
          }, e.prototype.shouldCreateBullet = function (t, e) {
            return !0;
          }, e.prototype.validateDataElement = function (e) {
            var i = this;
            t.prototype.validateDataElement.call(this, e), this._showBullets ? (this.isHidden || (this.bulletsContainer.visible = !0), this.bullets.each(function (t) {
              var n = e.bullets.getKey(t.uid);

              if (i.shouldCreateBullet(e, t)) {
                if (!n) {
                  var r = t.propertyFields.disabled,
                      s = e.dataContext;
                  r && s && !1 === s[r] ? (t.applyOnClones = !1, t.disabled = !1, n = t.clone(), t.disabled = !0, t.applyOnClones = !0) : n = t.clone(), n.shouldClone = !1, e.addSprite(n), i.visible && !i.isHiding || n.hide(0);
                }

                var o = n.dataItem;

                if (o != e) {
                  o && o.bullets.setKey(t.uid, void 0);
                  var a = i.itemReaderText;
                  n instanceof Vl && (a || (a = "{" + n.xField + "}: {" + n.yField + "}"), n.isDynamic && (e.events.on("workingvaluechanged", n.deepInvalidate, n, !1), i.dataItem.events.on("workingvaluechanged", n.deepInvalidate, n, !1)), n.deepInvalidate()), n.focusable && (n.events.on("focus", function (t) {
                    n.readerTitle = i.populateString(a, n.dataItem);
                  }, void 0, !1), n.events.on("blur", function (t) {
                    n.readerTitle = "";
                  }, void 0, !1)), n.hoverable && (n.events.on("over", function (t) {
                    n.readerTitle = i.populateString(a, n.dataItem);
                  }, void 0, !1), n.events.on("out", function (t) {
                    n.readerTitle = "";
                  }, void 0, !1));
                }

                n.parent = i.bulletsContainer, e.bullets.setKey(t.uid, n), n.maxWidth = e.itemWidth, n.maxHeight = e.itemHeight, n.__disabled = !1, i.positionBullet(n);
              }
            })) : this.bulletsContainer.visible = !1;
          }, e.prototype.handleDataItemWorkingValueChange = function (t, e) {
            this.dataRangeInvalid || this.invalidateProcessedData();
          }, Object.defineProperty(e.prototype, "ignoreMinMax", {
            get: function get() {
              return this._ignoreMinMax;
            },
            set: function set(t) {
              this._ignoreMinMax = t, this.invalidateDataItems();
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.createMask = function () {}, e.prototype.processAxisRange = function (t) {
            this.rangesContainer || (this.rangesContainer = this.createChild(_a), this.rangesContainer.shouldClone = !1, this.rangesContainer.isMeasured = !1);
            var e = t.newValue;
            e && (e.contents.parent = this.rangesContainer, e.isRange = !0, e.events.on("valuechanged", this.invalidateDataItems, this, !1));
          }, e.prototype.getAxisField = function (t) {}, e.prototype.showTooltipAtPosition = function (t, e) {}, Object.defineProperty(e.prototype, "minBulletDistance", {
            get: function get() {
              return this.getPropertyValue("minBulletDistance");
            },
            set: function set(t) {
              this.setPropertyValue("minBulletDistance", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "bullets", {
            get: function get() {
              return this._bullets || (this._bullets = new Hs(new Vl()), this._bullets.template.virtualParent = this, this._bullets.events.on("inserted", this.processBullet, this, !1), this._bullets.events.on("removed", this.removeBullet, this, !1), this._disposers.push(new Bs(this._bullets)), this._disposers.push(this._bullets.template)), this._bullets;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.createLegendMarker = function (t) {}, Object.defineProperty(e.prototype, "hiddenInLegend", {
            get: function get() {
              return this.getPropertyValue("hiddenInLegend");
            },
            set: function set(t) {
              this.setPropertyValue("hiddenInLegend", t) && this.chart && this.chart.feedLegend();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "name", {
            get: function get() {
              return this.getPropertyValue("name");
            },
            set: function set(t) {
              this.setPropertyValue("name", t);
              var e = this.legendDataItem;
              e && (e.component.invalidate(), e.component.invalidateRawData()), this.readerTitle = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "itemReaderText", {
            get: function get() {
              var t = this._itemReaderText;
              return t || (this.tooltipText ? t = Di(this.tooltipText) : this.tooltipHTML && (t = Di(this.tooltipHTML))), this._adapterO ? this._adapterO.apply("itemReaderText", t) : t;
            },
            set: function set(t) {
              this._itemReaderText = t, this._itemReaderTextChanged = !0;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.itemsFocusable = function () {
            return !(this.dataItems.length >= this.skipFocusThreshold);
          }, Object.defineProperty(e.prototype, "legendDataItem", {
            get: function get() {
              return this._legendDataItem;
            },
            set: function set(t) {
              this._legendDataItem = t, this._legendDataItem.itemContainer.deepInvalidate();
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.updateLegendValue = function (t, e) {
            if (this.legendDataItem) {
              var i = this.legendSettings,
                  n = this.legendDataItem,
                  r = n.label,
                  s = n.valueLabel;
              t || e ? (s && (i.itemValueText && (s.text = i.itemValueText), s.dataItem = t), r && (i.itemLabelText && (r.text = i.itemLabelText), r.dataItem = t)) : (r && ((i.labelText || null != i.itemLabelText) && (r.text = i.labelText), r.dataItem = this.dataItem), s && ((i.valueText || null != i.itemValueText) && (s.text = i.valueText), s.dataItem = this.dataItem));
            }
          }, e.prototype.copyFrom = function (e) {
            this.bullets.copyFrom(e.bullets), this.bulletsContainer.copyFrom(e.bulletsContainer), this.calculatePercent = e.calculatePercent, this.simplifiedProcessing = e.simplifiedProcessing, t.prototype.copyFrom.call(this, e);
          }, e.prototype.raiseCriticalError = function (t) {
            this._chart.modal.content = this._chart.adapter.apply("criticalError", t).message, this._chart.modal.closable = !1, this._chart.modal.open(), this._chart.disabled = !0, Ms.verbose && console.log(t);
          }, e.prototype.applyFilters = function () {
            var e = this;
            t.prototype.applyFilters.call(this), this.bulletsContainer.filters.clear(), pe(this.filters.iterator(), function (t) {
              e.bulletsContainer.filters.push(t.clone());
            });
          }, Object.defineProperty(e.prototype, "heatRules", {
            get: function get() {
              var t = this;
              return this._heatRules || (this._heatRules = new Ns(), this._heatRules.events.on("inserted", function (e) {
                var i = e.newValue,
                    n = i.target;

                if (n) {
                  var r = i.dataField;
                  S(r) || (r = "value");
                  var s = i.min,
                      o = i.max,
                      a = t.dataItem,
                      l = i.property,
                      h = w(i.minValue),
                      u = w(i.maxValue);
                  A(h) || A(u) || t.dataItem.events.on("calculatedvaluechanged", function (e) {
                    e.property == r && pe(t.dataItems.iterator(), function (t) {
                      var e = !1;
                      mt(t.sprites, function (t) {
                        if (t.clonedFrom == n) {
                          var i = t;
                          i[l] = i[l], e = !0;
                        }
                      }), e || mt(t.sprites, function (t) {
                        t instanceof _a && pe(t.children.iterator(), function (t) {
                          if (t.className == n.className) {
                            var e = t;
                            e[l] = e[l];
                          } else t instanceof _a && t.deepInvalidate();
                        });
                      });
                    });
                  }), t.dataItems.template.events.on("workingvaluechanged", function (t) {
                    if (t.property == r) {
                      var e = t.target,
                          i = !1;
                      mt(e.sprites, function (t) {
                        if (t.clonedFrom == n) {
                          var e = t;
                          e[l] = e[l], i = !0;
                        }
                      }), i || mt(e.sprites, function (t) {
                        t instanceof _a && pe(t.children.iterator(), function (t) {
                          if (t.className == n.className) {
                            var e = t;
                            e[l] = e[l];
                          } else t instanceof _a && t.deepInvalidate();
                        });
                      });
                    }
                  }), n.adapter.add(l, function (t, e, n) {
                    var l = w(i.minValue),
                        h = w(i.maxValue);

                    if (e instanceof ba) {
                      var u = e.propertyFields[n];

                      if (u && e.dataItem) {
                        var p = e.dataItem.dataContext;
                        if (p && S(p[u])) return t;
                      }
                    }

                    var c = e.dataItem;

                    if (A(l) || (l = a.values[r].low), A(h) || (h = a.values[r].high), c && c.values[r]) {
                      var d = c.getActualWorkingValue(r);

                      if (S(s) && S(o) && A(l) && A(h) && A(d)) {
                        var f = (d - l) / (h - l);
                        if (A(d) && !A(f) && (f = .5), A(s)) return s + (o - s) * f;
                        if (s instanceof qs) return new qs(He(s.rgb, o.rgb, f));
                      }
                    }

                    return t;
                  });
                }
              })), this._heatRules;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.processConfig = function (e) {
            var i;

            if (e) {
              if (S(e.bullets) && F(e.bullets)) for (var n = 0, r = e.bullets.length; n < r; n++) {
                var s = e.bullets[n];
                S(s.type) || (s.type = "Bullet");
              }
              S(e.heatRules) && F(e.heatRules) && (i = e.heatRules, delete e.heatRules);
            }

            if (t.prototype.processConfig.call(this, e), i) {
              for (n = 0, r = i.length; n < r; n++) {
                var o = i[n],
                    a = this;
                if (S(o.target) && T(o.target)) if (this.map.hasKey(o.target)) a = this.map.getKey(o.target);else for (var l = o.target.split("."), h = 0; h < l.length; h++) if (a instanceof Ns) {
                  var u = a.getIndex(w(l[h]));
                  a = u || a[l[h]];
                } else a = a[l[h]];
                o.target = a, S(o.min) && (o.min = this.maybeColorOrPercent(o.min)), S(o.max) && (o.max = this.maybeColorOrPercent(o.max));
              }

              t.prototype.processConfig.call(this, {
                heatRules: i
              });
            }
          }, e.prototype.configOrder = function (e, i) {
            return e == i ? 0 : "heatRules" == e ? 1 : "heatRules" == i ? -1 : t.prototype.configOrder.call(this, e, i);
          }, e.prototype.setVisibility = function (e) {
            t.prototype.setVisibility.call(this, e), this.bulletsContainer.visible = e;
          }, e;
        }(Fa);

        Fs.registeredClasses.Series = El, Fs.registeredClasses.SeriesDataItem = Ll;

        var Rl = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "SerialChartDataItem", e.applyTheme(), e;
          }

          return n(e, t), e;
        }(Tl),
            Bl = function (t) {
          function e() {
            var e = t.call(this) || this;
            e.className = "SerialChart", e.colors = new Sl(), e._usesData = !1;
            var i = e.chartContainer.createChild(_a);
            i.shouldClone = !1, i.width = h(100), i.height = h(100), i.isMeasured = !1, i.layout = "none", i.zIndex = 2, e.seriesContainer = i;
            var n = e.chartContainer.createChild(_a);
            return n.shouldClone = !1, n.width = h(100), n.height = h(100), n.isMeasured = !1, n.zIndex = 3, n.layout = "none", e.bulletsContainer = n, e.applyTheme(), e;
          }

          return n(e, t), e.prototype.dispose = function () {
            t.prototype.dispose.call(this), this.colors && this.colors.dispose();
          }, e.prototype.applyInternalDefaults = function () {
            t.prototype.applyInternalDefaults.call(this), S(this.readerTitle) || (this.readerTitle = this.language.translate("Serial chart"));
          }, Object.defineProperty(e.prototype, "series", {
            get: function get() {
              var t = this;
              return this._series || (this._series = new Hs(this.createSeries()), this._series.events.on("inserted", function (e) {
                t.handleSeriesAdded(e);
              }, void 0, !1), this._series.events.on("removed", function (e) {
                var i = e.oldValue;
                t.dataUsers.removeValue(i), t.dataUsers.each(function (t) {
                  t.invalidateDataItems();
                }), i.autoDispose && i.dispose(), t.feedLegend();
              }, void 0, !1), this._disposers.push(new Bs(this._series)), this._disposers.push(this._series.template)), this._series;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.handleSeriesAdded = function (t) {
            var e = this,
                i = t.newValue;
            i.isDisposed() || (i.chart = this, i.parent = this.seriesContainer, i.bulletsContainer.parent = this.bulletsContainer, this._dataUsers.moveValue(i), i.addDisposer(new fs(function () {
              e.dataUsers.removeValue(i);
            })), this.handleSeriesAdded2(i), this.feedLegend());
          }, e.prototype.handleSeriesAdded2 = function (t) {
            this.dataInvalid || this.invalidateData();
          }, e.prototype.feedLegend = function () {
            var t = this.legend;

            if (t) {
              var e = [];
              pe(this.series.iterator(), function (t) {
                t.hiddenInLegend || e.push(t);
              }), t.dataFields.name = "name", t.data = e;
            }
          }, e.prototype.createSeries = function () {
            return new El();
          }, Object.defineProperty(e.prototype, "colors", {
            get: function get() {
              return this.getPropertyValue("colors");
            },
            set: function set(t) {
              this.setPropertyValue("colors", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), this.series.copyFrom(e.series);
          }, e.prototype.appear = function () {
            t.prototype.appear.call(this), this.series.each(function (t) {
              t.showOnInit && t.inited && t.appear();
            });
          }, e;
        }(Al);

        Fs.registeredClasses.SerialChart = Bl;

        var Nl = function (t) {
          function e() {
            var e = t.call(this) || this;
            e._axis = new ys(), e.dataItems = new Ns(), e.className = "AxisBreak", e.breakSize = .01, e.marginLeft = -5, e.marginRight = -5, e.marginTop = -5, e.marginBottom = -5;
            var i = new ta(),
                n = new ll();
            n.fill = i.getFor("background"), n.stroke = Je(), n.fillOpacity = .9, n.zIndex = 0, e._fillShape = n;
            var r = new ll();
            r.fill = Je(), r.stroke = i.getFor("grid"), r.strokeOpacity = .3, r.zIndex = 1, e._startLine = r;
            var s = new ll();
            return s.fill = Je(), s.stroke = Je("#000000"), s.strokeOpacity = .3, s.zIndex = 2, e._endLine = s, e._disposers.push(e._axis), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.dispose = function () {
            t.prototype.dispose.call(this), this._fillShape && this._fillShape.dispose(), this._startLine && this._startLine.dispose(), this._endLine && this._endLine.dispose();
          }, Object.defineProperty(e.prototype, "startLine", {
            get: function get() {
              return this._startLine;
            },
            set: function set(t) {
              this._startLine && this._startLine.dispose(), this._startLine = t, this.addBreakSprite(t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "endLine", {
            get: function get() {
              return this._endLine;
            },
            set: function set(t) {
              this._endLine && this._endLine.dispose(), this._endLine = t, this.addBreakSprite(t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "fillShape", {
            get: function get() {
              return this._fillShape;
            },
            set: function set(t) {
              this._fillShape && this._fillShape.dispose(), this._fillShape = t, this.addBreakSprite(t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.addBreakSprite = function (t) {
            t.parent = this, t.isMeasured = !1, this._disposers.push(t);
          }, Object.defineProperty(e.prototype, "axis", {
            get: function get() {
              return this._axis.get();
            },
            set: function set(t) {
              if (this._axis.get() !== t) {
                this._axis.set(t, t.renderer.gridContainer.events.on("transformed", this.invalidate, this, !1)), t.renderer.createBreakSprites(this);
                var e = t.axisBreaks.template;
                this.startLine.copyFrom(e.startLine), this.endLine.copyFrom(e.endLine), this.fillShape.copyFrom(e.fillShape);
              }
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "breakSize", {
            get: function get() {
              return this.getPropertyValue("breakSize");
            },
            set: function set(t) {
              this.setPropertyValue("breakSize", t) && this.axis && (this.axis.invalidate(), this.axis.invalidateSeries());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "startPoint", {
            get: function get() {
              var t = this.axis.renderer;
              if (t) return t.positionToPoint(this.startPosition);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "endPoint", {
            get: function get() {
              var t = this.axis.renderer;
              if (t) return t.positionToPoint(this.endPosition);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "startPosition", {
            get: function get() {},
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "endPosition", {
            get: function get() {},
            enumerable: !0,
            configurable: !0
          }), e.prototype.draw = function () {
            t.prototype.draw.call(this), this.axis && this.axis.renderer.updateBreakElement(this);
          }, Object.defineProperty(e.prototype, "startValue", {
            get: function get() {
              return this.getPropertyValue("startValue");
            },
            set: function set(t) {
              this.setPropertyValue("startValue", t) && this.axis && (this.axis.invalidate(), this.axis.invalidateSeries());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "endValue", {
            get: function get() {
              return this.getPropertyValue("endValue");
            },
            set: function set(t) {
              this.setPropertyValue("endValue", t) && this.axis && (this.axis.invalidate(), this.axis.invalidateSeries());
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(_a);

        Fs.registeredClasses.AxisBreak = Nl;

        var Hl,
            Wl = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "AxisDataItem", e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "grid", {
            get: function get() {
              if (!this._grid) {
                var t = this.component;

                if (t) {
                  var e,
                      i = void 0;

                  if (this.isRange) {
                    if ((i = t.axisRanges.template.grid).disabled) return;
                    e = i.clone();
                  } else {
                    if ((i = t.renderer.grid.template).disabled) return;
                    e = t.renderer.grid.create(), this._disposers.push(new fs(function () {
                      t.renderer.grid.removeValue(e);
                    }));
                  }

                  this.grid = e, e.shouldClone = !1, this._disposers.push(e), e.axis = this.component;
                }
              }

              return this._grid;
            },
            set: function set(t) {
              this._grid && this._grid != t && (St(this.sprites, this._grid), this._grid.dataItem = void 0), t && (t.dataItem && t.dataItem != this && (St(t.dataItem.sprites, t), t.dataItem.grid = void 0), this.addSprite(t)), this._grid = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "tick", {
            get: function get() {
              if (!this._tick) {
                var t = this.component;

                if (t) {
                  var e,
                      i = void 0;

                  if (this.isRange) {
                    if ((i = t.axisRanges.template.tick).disabled) return;
                    e = i.clone();
                  } else {
                    if ((i = t.renderer.ticks.template).disabled) return;
                    e = t.renderer.ticks.create(), this._disposers.push(new fs(function () {
                      t.renderer.ticks.removeValue(e);
                    }));
                  }

                  this.tick = e, e.axis = this.component, e.shouldClone = !1, this._disposers.push(e);
                }
              }

              return this._tick;
            },
            set: function set(t) {
              this._tick && this._tick != t && (St(this.sprites, this._tick), this._tick.dataItem = void 0), t && (t.dataItem && t.dataItem != this && (St(t.dataItem.sprites, t), t.dataItem.tick = void 0), this.addSprite(t)), this._tick = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "label", {
            get: function get() {
              if (!this._label) {
                var t = this.component;

                if (t) {
                  var e,
                      i = void 0;

                  if (this.isRange) {
                    if ((i = t.axisRanges.template.label).disabled) return;
                    e = i.clone();
                  } else {
                    if ((i = t.renderer.labels.template).disabled) return;
                    e = t.renderer.labels.create(), this._disposers.push(new fs(function () {
                      t.renderer.labels.removeValue(e);
                    }));
                  }

                  this._disposers.push(e), this.label = e, e.shouldClone = !1, e.axis = this.component, e.virtualParent = t;
                }
              }

              return this._label;
            },
            set: function set(t) {
              this._label && this._label != t && (St(this.sprites, this._label), this._label.dataItem = void 0), t && (t.dataItem && t.dataItem != this && (St(t.dataItem.sprites, t), t.dataItem.label = void 0), this.addSprite(t)), this._label = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "axisFill", {
            get: function get() {
              if (!this._axisFill) {
                var t = this.component;

                if (t) {
                  var e,
                      i = void 0;

                  if (this.isRange) {
                    if (i = t.axisRanges.template.axisFill, !this.isTemplate && i.disabled) return;
                    e = i.clone();
                  } else {
                    if ((i = t.renderer.axisFills.template).disabled) return;
                    e = t.renderer.axisFills.create(), this._disposers.push(new fs(function () {
                      t.renderer.axisFills.removeValue(e);
                    }));
                  }

                  this.axisFill = e, e.shouldClone = !1, this._disposers.push(e);
                }
              }

              return this._axisFill;
            },
            set: function set(t) {
              this._axisFill && this._axisFill != t && (St(this.sprites, this._axisFill), this._axisFill.dataItem = void 0), t && (t.dataItem && t.dataItem != this && (St(t.dataItem.sprites, t), t.dataItem.axisFill = void 0), t.axis = this.component, this.addSprite(t)), this._axisFill = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "text", {
            get: function get() {
              return this._text;
            },
            set: function set(t) {
              this._text = t, this._label && (this._label.text = t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "mask", {
            get: function get() {
              return this._mask;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "contents", {
            get: function get() {
              if (!this._contents) {
                var t = new _a();
                this.addSprite(t), t.isMeasured = !1, this._contents = t;
                var e = this.component;

                if (e) {
                  var i = e.renderer.createFill(this.component);
                  i.disabled = !1, i.axis = e, this.addSprite(i), this._mask = i, t.mask = i;
                }
              }

              return this._contents;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "axisBreak", {
            get: function get() {
              return this._axisBreak;
            },
            set: function set(t) {
              this._axisBreak && this._axisBreak.dataItems.removeValue(this), t && t.dataItems.push(this), this._axisBreak = t;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.validate = function () {
            this.component && this.component.validateDataElement(this);
          }, e.prototype.appendChildren = function () {
            this.component && this.component.appendDataItem(this);
          }, e.prototype.configOrder = function (t, e) {
            return t == e ? 0 : "language" == t ? -1 : "language" == e ? 1 : "component" == t ? -1 : "component" == e ? 1 : 0;
          }, e.prototype.hasProperty = function (e) {
            return "component" == e || t.prototype.hasProperty.call(this, e);
          }, e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), this.text = e.text, e.bullet && (this.bullet = e.bullet.clone()), this.minPosition = e.minPosition, this.maxPosition = e.maxPosition;
          }, e.prototype.setVisibility = function (e, i) {
            t.prototype.setVisibility.call(this, e, i), this._contents && (this._contents.visible = e);
          }, Object.defineProperty(e.prototype, "bullet", {
            get: function get() {
              return this._bullet;
            },
            set: function set(t) {
              this._bullet && this._bullet != t && (St(this.sprites, this._bullet), this._bullet.dataItem = void 0), this._bullet = t, t && this.addSprite(t);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(Va);

        !function (t) {
          t[t.Start = 0] = "Start", t[t.Middle = .5] = "Middle", t[t.End = 1] = "End";
        }(Hl || (Hl = {}));

        var Xl = function (t) {
          function e() {
            var i = t.call(this) || this;
            if (i._gridCount = 10, i._series = new Ns(), i.autoDispose = !0, i.constructor === e) throw new Error("'Axis' cannot be instantiated directly. Please use a specific axis type.");
            i.className = "Axis", i.shouldClone = !1, i.setPropertyValue("cursorTooltipEnabled", !0), i.toggleZoomOutButton = !0;
            var n = new ta();
            i.title = new Ma(), i.title.shouldClone = !1, i._disposers.push(i.title), i.setPropertyValue("startLocation", 0), i.setPropertyValue("endLocation", 1), i._dataItemsIterator = new Ss(i.dataItems, function () {
              return i.dataItems.create();
            }), i._dataItemsIterator.createNewItems = !0;
            var r = new il();
            i._disposers.push(r), r.label.padding(5, 10, 5, 10), r.background.pointerLength = 5, r.fitPointerToBounds = !0, r.background.filters.clear(), r.virtualParent = i;
            var s = r.background;
            return s.cornerRadius = 0, s.fill = n.getFor("alternativeBackground"), s.stroke = s.fill, s.strokeWidth = 1, s.fillOpacity = 1, r.label.fill = n.getFor("alternativeText"), i.tooltip = r, i.readerHidden = !0, i.applyTheme(), i;
          }

          return n(e, t), e.prototype.fillRule = function (t, e) {
            A(e) || (e = t.index), e / 2 == Math.round(e / 2) ? (t.axisFill.__disabled = !0, t.axisFill.opacity = 0) : (t.axisFill.opacity = 1, t.axisFill.__disabled = !1);
          }, e.prototype.resetFlags = function () {}, e.prototype.createDataItem = function () {
            return new Wl();
          }, e.prototype.invalidateLayout = function () {
            t.prototype.invalidateLayout.call(this), pe(this.series.iterator(), function (t) {
              t.invalidateLayout();
            });
          }, e.prototype.invalidateSeries = function () {
            pe(this.series.iterator(), function (t) {
              t.invalidate();
            });
          }, e.prototype.validateDataElements = function () {
            this.ghostLabel && (this.renderer.updateLabelElement(this.ghostLabel, this.start, this.end), this.ghostLabel.validate());
          }, e.prototype.updateGridCount = function () {
            this.renderer && (this._gridCount = this.axisLength / this.renderer.minGridDistance);
          }, e.prototype.validateLayout = function () {
            this.axisFullLength = this.axisLength / (this.end - this.start), t.prototype.validateLayout.call(this), this.updateGridCount(), this.renderer.updateAxisLine(), this.renderer.updateTooltip(), this.renderer.updateBaseGridElement(), this._prevLength != this.axisLength && (this.dispatchImmediately("lengthchanged"), this._prevLength = this.axisLength);
          }, e.prototype.initRenderer = function () {}, e.prototype.appendDataItem = function (t) {
            var e = this.renderer,
                i = t.tick;
            i && (i.above ? i.parent = e.bulletsContainer : i.parent = e.gridContainer), t.label && (t.label.parent = e);
            var n = t.axisFill;
            n && (n.above ? n.parent = e.bulletsContainer : n.parent = e.gridContainer);
            var r = t.grid;
            r && (r.above ? r.parent = e.bulletsContainer : r.parent = e.gridContainer), t.bullet && (t.bullet.parent = e.bulletsContainer);
          }, e.prototype.validate = function () {
            t.prototype.validate.call(this), this.validateLayout(), this.renderer.updateGridContainer();
          }, e.prototype.validateAxisRanges = function () {
            var t = this;
            pe(this.axisRanges.iterator(), function (e) {
              t.appendDataItem(e), t.validateDataElement(e), e.grid && e.grid.validate(), e.tick && e.tick.validate(), e.axisFill && e.axisFill.validate(), e.label && e.label.validate();
            });
          }, e.prototype.validateBreaks = function () {
            this._axisBreaks && pe(this._axisBreaks.iterator(), function (t) {
              t.invalidate();
            });
          }, e.prototype.processBreak = function (t) {
            var e = t.newValue;
            e.parent = this.renderer.breakContainer, e.axis = this;
          }, e.prototype.registerSeries = function (t) {
            var e = this;
            return this.series.moveValue(t), new gs([new fs(function () {
              e.series.removeValue(t);
            }), this.events.on("lengthchanged", t.invalidate, t, !1), this.events.on("lengthchanged", t.createMask, t, !1), this.events.on("startchanged", t.invalidate, t, !1), this.events.on("endchanged", t.invalidate, t, !1)]);
          }, Object.defineProperty(e.prototype, "renderer", {
            get: function get() {
              return this._renderer;
            },
            set: function set(t) {
              if (t != this._renderer) {
                this._renderer = t, t.chart = this.chart, t.axis = this, t.parent = this, this.title.parent = this, this.initRenderer(), this._disposers.push(t.gridContainer.events.on("maxsizechanged", this.invalidate, this, !1));
                var e = this.renderer.labels.create();
                this._disposers.push(e), e.dataItem = this.dataItems.template.clone(), e.text = "L", e.parent = this.renderer, e.shouldClone = !1, e.fillOpacity = 0, e.opacity = 0, e.strokeOpacity = 0, e.interactionsEnabled = !1, e.validate(), this.ghostLabel = e, this.events.on("beforedatavalidated", function () {
                  e.text = "L";
                }, void 0, !1);
              }
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.positionToAngle = function (t) {
            return this.renderer.positionToAngle(t);
          }, e.prototype.pointToPosition = function (t) {
            return this.renderer.pointToPosition(t);
          }, e.prototype.getAnyRangePath = function (t, e) {
            return this.renderer.getPositionRangePath(t, e);
          }, e.prototype.anyToPosition = function (t) {
            return 0;
          }, e.prototype.anyToPoint = function (t) {
            return {
              x: 0,
              y: 0,
              angle: 0
            };
          }, e.prototype.getPositionRangePath = function (t, e) {
            return this.renderer.getPositionRangePath(t, e);
          }, Object.defineProperty(e.prototype, "axisLength", {
            get: function get() {
              return this.renderer.axisLength;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "cursorTooltipEnabled", {
            get: function get() {
              return this.getPropertyValue("cursorTooltipEnabled");
            },
            set: function set(t) {
              this.setPropertyValue("cursorTooltipEnabled", t) && (t && this.renderer ? this.renderer.updateTooltip() : this.tooltip.hide(0));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "toggleZoomOutButton", {
            get: function get() {
              return this.getPropertyValue("toggleZoomOutButton");
            },
            set: function set(t) {
              this.setPropertyValue("toggleZoomOutButton", t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.hideTooltip = function (e) {
            t.prototype.hideTooltip.call(this, e), this._tooltipPosition = void 0;
          }, e.prototype.showTooltipAtPosition = function (t, e) {
            var i = this._tooltip;
            if (!i || this.dataItems.length <= 0) this._tooltipPosition = void 0;else {
              if (e || (t = this.toAxisPosition(t)), !A(t) || t < 0 || t > 1) return i.hide(0), void (this._tooltipPosition = void 0);
              var n = this.renderer;
              i.parent || (i.parent = this.tooltipContainer);
              var r = n.tooltipLocation,
                  s = this.getCellStartPosition(t),
                  o = this.getCellEndPosition(t);

              if ("fixed" == this.tooltipPosition && (t = L(s + (o - s) * r, 4)), t = R(t, this.start, this.end), this._tooltipPosition != t) {
                this._tooltipPosition = t;
                var a = n.tooltipLocation2,
                    l = n.positionToPoint(s, a),
                    h = n.positionToPoint(o, a);
                this.currentItemStartPoint = l, this.currentItemEndPoint = h, n.fullWidthTooltip && (i.width = h.x - l.x, i.height = h.y - l.y);
                var u = Wi(n.positionToPoint(t, a), this.renderer.line);
                i.text = this.getTooltipText(t), i.text && (i.pointTo(u), i.show());
              }

              this.cursorTooltipEnabled && !this.tooltip.disabled || i.hide(0);
            }
          }, e.prototype.toAxisPosition = function (t) {
            if (null != (t = this.renderer.toAxisPosition(t))) return t *= this.end - this.start, t = this.renderer.inversed ? this.end - t : this.start + t;
          }, e.prototype.toGlobalPosition = function (t) {
            return this.renderer.inversed ? t = this.end - t : t -= this.start, t / (this.end - this.start);
          }, e.prototype.getTooltipText = function (t) {}, e.prototype.updateTooltip = function (t, e) {
            var i = this._tooltip;
            i && (i.pointerOrientation = t, i.setBounds(zi(e, this.renderer.line)));
          }, e.prototype.roundPosition = function (t, e, i) {
            return t;
          }, e.prototype.getCellStartPosition = function (t) {
            return t;
          }, e.prototype.getCellEndPosition = function (t) {
            return t;
          }, Object.defineProperty(e.prototype, "axisRanges", {
            get: function get() {
              if (!this._axisRanges) {
                var t = this.createDataItem();
                t.isRange = !0, t.axisFill = this.renderer.axisFills.template.clone(), t.grid = this.renderer.grid.template.clone(), t.tick = this.renderer.ticks.template.clone(), t.label = this.renderer.labels.template.clone(), t.isTemplate = !0, t.component = this, t.axisFill.disabled = !1, t.tick.disabled = !1, t.grid.disabled = !1, t.label.disabled = !1, this._axisRanges = new Hs(t), this._axisRanges.events.on("inserted", this.processAxisRange, this, !1), this._disposers.push(new Bs(this._axisRanges)), this._disposers.push(this._axisRanges.template);
              }

              return this._axisRanges;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.processAxisRange = function (t) {
            var e = t.newValue;
            e.component = this, e.isRange = !0;
          }, Object.defineProperty(e.prototype, "axisBreaks", {
            get: function get() {
              return this._axisBreaks || (this._axisBreaks = new zs(this.createAxisBreak(), function (t, e) {
                return Ve(t.adjustedStartValue, e.adjustedStartValue);
              }), this._axisBreaks.events.on("inserted", this.processBreak, this, !1), this._disposers.push(new Bs(this._axisBreaks)), this._disposers.push(this._axisBreaks.template)), this._axisBreaks;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.createAxisBreak = function () {
            return new Nl();
          }, Object.defineProperty(e.prototype, "series", {
            get: function get() {
              return this._series || (this._series = new Ns()), this._series;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.processSeriesDataItems = function () {}, e.prototype.processSeriesDataItem = function (t, e) {}, e.prototype.postProcessSeriesDataItems = function () {}, e.prototype.postProcessSeriesDataItem = function (t) {}, e.prototype.updateAxisBySeries = function () {}, e.prototype.hideUnusedDataItems = function () {
            var t = this,
                e = this._dataItemsIterator;
            e.createNewItems = !1, pe(e.iterator(), function (e) {
              t.validateDataElement(e), e.__disabled = !0;
            }), e.clear(), e.createNewItems = !0;
          }, e.prototype.getSeriesDataItem = function (t, e, i) {}, e.prototype.getAngle = function (t, e, i, n, r) {}, e.prototype.getX = function (t, e, i, n, r) {}, e.prototype.getPositionX = function (t, e, i, n, r) {}, e.prototype.getY = function (t, e, i, n, r) {}, e.prototype.getPositionY = function (t, e, i, n, r) {}, Object.defineProperty(e.prototype, "basePoint", {
            get: function get() {
              return {
                x: 0,
                y: 0
              };
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.dataChangeUpdate = function () {}, e.prototype.seriesDataChangeUpdate = function (t) {}, e.prototype.adjustDifference = function (t, e) {
            var i = e - t;
            if (A(i)) return this._axisBreaks && ue(this._axisBreaks.iterator(), function (n) {
              var r = n.adjustedStartValue,
                  s = n.adjustedEndValue;

              if (A(r) && A(s)) {
                if (r > e) return !1;

                if (s >= t && A(r) && A(s)) {
                  var o = n.breakSize,
                      a = G({
                    start: r,
                    end: s
                  }, {
                    start: t,
                    end: e
                  });
                  a && (i -= (a.end - a.start) * (1 - o));
                }

                return !0;
              }
            }), i;
          }, e.prototype.isInBreak = function (t) {
            if (this._axisBreaks) return be(this._axisBreaks.iterator(), function (e) {
              return t >= e.adjustedStartValue && t <= e.adjustedEndValue;
            });
          }, e.prototype.fixAxisBreaks = function () {
            var t = this;

            if (this._axisBreaks) {
              var e = this._axisBreaks;

              if (e.length > 0) {
                mt(he(e.iterator()), function (e) {
                  var i = X(e.startValue, e.endValue),
                      n = W(e.startValue, e.endValue);
                  e.adjustedStartValue = i, e.adjustedEndValue = n, t._axisBreaks.update(e);
                });
                var i = e.first,
                    n = Math.min(i.startValue, i.endValue);
                pe(e.iterator(), function (t) {
                  var e = t.adjustedStartValue,
                      i = t.adjustedEndValue;
                  e < n && (e = n, i < n && (i = n)), t.adjustedStartValue = e, t.adjustedEndValue = i;
                });
              }
            }
          }, Object.defineProperty(e.prototype, "startIndex", {
            get: function get() {
              return 0;
            },
            set: function set(t) {},
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "endIndex", {
            get: function get() {
              return this.dataItems.length;
            },
            set: function set(t) {},
            enumerable: !0,
            configurable: !0
          }), e.prototype.getPositionLabel = function (t) {
            return Math.round(100 * t) + "%x";
          }, Object.defineProperty(e.prototype, "chart", {
            get: function get() {
              return this._chart;
            },
            set: function set(t) {
              this._chart = t;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.createSeriesRange = function (t) {
            var e = this.axisRanges.create();
            return e.component = this, e.axisFill = this.renderer.axisFills.template.clone(), e.axisFill.disabled = !1, e.axisFill.fillOpacity = 0, e.grid = this.renderer.grid.template.clone(), e.grid.disabled = !0, e.tick = this.renderer.ticks.template.clone(), e.tick.disabled = !0, e.label = this.renderer.labels.template.clone(), e.label.disabled = !0, t.axisRanges.push(e), e;
          }, e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), this.renderer ? this.renderer.copyFrom(e.renderer) : e.renderer && (this.renderer = e.renderer.clone(), this._disposers.push(this.renderer)), e.title && (this.title ? this.title.copyFrom(e.title) : (this.title = e.title.clone(), this.title.parent = this), this._disposers.push(this.title));
          }, e.prototype.resetIterators = function () {
            this._dataItemsIterator.reset();
          }, e.prototype.processConfig = function (e) {
            if (e && S(e.axisRanges) && F(e.axisRanges)) for (var i = 0, n = e.axisRanges.length; i < n; i++) {
              var r = e.axisRanges[i];
              S(r.series) && T(r.series) && this.map.hasKey(r.series) && (e.axisRanges[i] = this.createSeriesRange(this.map.getKey(r.series)), delete r.series, e.axisRanges[i].config = r);
            }
            t.prototype.processConfig.call(this, e);
          }, Object.defineProperty(e.prototype, "startLocation", {
            get: function get() {
              return this.getPropertyValue("startLocation");
            },
            set: function set(t) {
              this.setPropertyValue("startLocation", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "endLocation", {
            get: function get() {
              return this.getPropertyValue("endLocation");
            },
            set: function set(t) {
              this.setPropertyValue("endLocation", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setDisabled = function (e) {
            var i = t.prototype.setDisabled.call(this, e);
            return this.renderer && (this.renderer.gridContainer.disabled = e), i;
          }, Object.defineProperty(e.prototype, "title", {
            get: function get() {
              return this._title;
            },
            set: function set(t) {
              this._title && this._title != t && this._title.dispose(), t && (this._title = t, t.parent = this, t.shouldClone = !1);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(Fa);

        Fs.registeredClasses.Axis = Xl, Fs.registeredClasses.AxisDataItem = Wl, Ta.push({
          relevant: Aa.maybeXS,
          state: function state(t, e) {
            if (t instanceof Xl && t.tooltip) {
              var i = t.states.create(e);
              return i.properties.cursorTooltipEnabled = !1, i;
            }

            return null;
          }
        });

        var Yl = function (t) {
          function e() {
            var e = t.call(this) || this;
            e.className = "AxisLine", e.element = e.paper.add("path");
            var i = new ta();
            return e.stroke = i.getFor("grid"), e.strokeOpacity = .15, e.pixelPerfect = !0, e.fill = Je(), e.applyTheme(), e.interactionsEnabled = !1, e;
          }

          return n(e, t), e;
        }(ba);

        Fs.registeredClasses.AxisLine = Yl;

        var zl = function (t) {
          function e(e) {
            var i = t.call(this) || this;
            i.axis = e, i.element = i.paper.add("path"), i.className = "AxisFill", i.isMeasured = !1, i.location = 0, i.above = !1;
            var n = new ta();
            return i.fill = n.getFor("alternativeBackground"), i.fillOpacity = 0, i.applyTheme(), i;
          }

          return n(e, t), e.prototype.setDisabled = function (e) {
            var i = t.prototype.setDisabled.call(this, e);
            return this.axis && this.axis.invalidateDataItems(), i;
          }, e.prototype.draw = function () {
            t.prototype.draw.call(this), this.__disabled || this.disabled || this.axis && A(this.startPosition) && A(this.endPosition) && (this.fillPath = this.axis.getPositionRangePath(this.startPosition, this.endPosition), this.path = this.fillPath);
          }, Object.defineProperty(e.prototype, "startPosition", {
            get: function get() {
              return this.getPropertyValue("startPosition");
            },
            set: function set(t) {
              this.setPropertyValue("startPosition", t), this.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "endPosition", {
            get: function get() {
              return this.getPropertyValue("endPosition");
            },
            set: function set(t) {
              this.setPropertyValue("endPosition", t), this.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "location", {
            get: function get() {
              return this.getPropertyValue("location");
            },
            set: function set(t) {
              this.setPropertyValue("location", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setPath = function (t) {
            return !!this.setPropertyValue("path", t) && (this.element.attr({
              d: t
            }), !0);
          }, Object.defineProperty(e.prototype, "above", {
            get: function get() {
              return this.getPropertyValue("above");
            },
            set: function set(t) {
              this.setPropertyValue("above", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(ba);

        Fs.registeredClasses.AxisFill = zl;

        var Ul = function (t) {
          function e() {
            var e = t.call(this) || this;
            e.className = "Grid", e.element = e.paper.add("path"), e.location = .5, e.isMeasured = !1, e.above = !1;
            var i = new ta();
            return e.stroke = i.getFor("grid"), e.pixelPerfect = !0, e.strokeOpacity = .15, e.fill = Je(), e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "location", {
            get: function get() {
              return this.getPropertyValue("location");
            },
            set: function set(t) {
              this.setPropertyValue("location", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "above", {
            get: function get() {
              return this.getPropertyValue("above");
            },
            set: function set(t) {
              this.setPropertyValue("above", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setDisabled = function (e) {
            var i = t.prototype.setDisabled.call(this, e);
            return this.axis && this.axis.invalidateDataItems(), i;
          }, e;
        }(ba);

        Fs.registeredClasses.Grid = Ul, Ta.push({
          relevant: Aa.maybeXS,
          state: function state(t, e) {
            if (t instanceof Ul) {
              var i = t.states.create(e);
              return i.properties.disabled = !0, i;
            }

            return null;
          }
        });

        var Gl = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "AxisLabel", e.isMeasured = !1, e.padding(10, 10, 10, 10), e.location = .5, e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "location", {
            get: function get() {
              return this.getPropertyValue("location");
            },
            set: function set(t) {
              this.setPropertyValue("location", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "inside", {
            get: function get() {
              return this.getPropertyValue("inside");
            },
            set: function set(t) {
              this.setPropertyValue("inside", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setDisabled = function (e) {
            var i = t.prototype.setDisabled.call(this, e);
            return this.axis && this.axis.invalidateDataItems(), i;
          }, e;
        }(Ma);

        Fs.registeredClasses.AxisLabel = Gl;

        var Kl = function (t) {
          function e() {
            var e = t.call(this) || this;
            e.className = "Tick";
            var i = new ta();
            return e.fillOpacity = 0, e.length = 6, e.strokeOpacity = .2, e.stroke = i.getFor("grid"), e.isMeasured = !1, e.nonScalingStroke = !0, e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "length", {
            get: function get() {
              return this.disabled ? 0 : this.getPropertyValue("length");
            },
            set: function set(t) {
              this.setPropertyValue("length", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(ba);

        Fs.registeredClasses.Tick = Kl;

        var Zl = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "AxisTick", e.element = e.paper.add("path"), e.location = .5, e.above = !1, e.isMeasured = !1, e.pixelPerfect = !0, e.strokeOpacity = 0, e.length = 5, e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "location", {
            get: function get() {
              return this.getPropertyValue("location");
            },
            set: function set(t) {
              this.setPropertyValue("location", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "inside", {
            get: function get() {
              return this.getPropertyValue("inside");
            },
            set: function set(t) {
              this.setPropertyValue("inside", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "above", {
            get: function get() {
              return this.getPropertyValue("above");
            },
            set: function set(t) {
              this.setPropertyValue("above", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setDisabled = function (e) {
            var i = t.prototype.setDisabled.call(this, e);
            return this.axis && this.axis.invalidateDataItems(), i;
          }, e;
        }(Kl);

        Fs.registeredClasses.AxisTick = Zl;

        var ql = function (t) {
          function e() {
            var e = t.call(this) || this;
            e._chart = new ys(), e.className = "AxisRenderer", e.minGridDistance = 50, e.inside = !1, e.inversed = !1, e.tooltipLocation = .5, e.fullWidthTooltip = !1, e.cellStartLocation = 0, e.cellEndLocation = 1, e.minLabelPosition = 0, e.maxLabelPosition = 1, e.shouldClone = !1;
            var i = e.createChild(_a);
            i.shouldClone = !1, i.layout = "none", i.virtualParent = e, i.width = h(100), i.height = h(100), e.gridContainer = i, i.events.on("maxsizechanged", function () {
              e.inited && e.invalidateAxisItems();
            }, e, !1);
            var n = e.createChild(_a);
            n.shouldClone = !1, n.isMeasured = !1, n.layout = "none", n.width = h(100), n.height = h(100), e.breakContainer = n;
            var r = e.createChild(_a);
            r.shouldClone = !1, r.isMeasured = !1, r.layout = "none", r.width = h(100), r.height = h(100), e.bulletsContainer = r, e.line = e.createChild(Yl), e.line.shouldClone = !1, e.line.strokeOpacity = 0;
            var s = e.createChild(Ul);
            s.shouldClone = !1, e.baseGrid = s;
            var o = e._disposers;
            return o.push(s), o.push(e.line), o.push(i), o.push(n), o.push(r), o.push(e._chart), e.ticks.template.disabled = !0, e.axisFills.template.disabled = !0, e.axisFills.template.interactionsEnabled = !1, e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "axis", {
            get: function get() {
              return this._axis;
            },
            set: function set(t) {
              this.setAxis(t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setAxis = function (t) {
            this._axis = t, this.baseGrid.parent = t, this.line.parent = t, this.gridContainer.bind("opacity", t);
          }, e.prototype.processRenderer = function () {
            this.events.on("sizechanged", this.updateTooltip, this, !1), this.events.on("positionchanged", this.updateTooltip, this, !1), this.labels.template.inside = this.inside, this.ticks.template.inside = this.inside;
          }, e.prototype.updateTooltip = function () {}, Object.defineProperty(e.prototype, "axisLength", {
            get: function get() {
              return 0;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.positionItem = function (t, e) {
            t && t.moveTo(e);
          }, e.prototype.positionToPoint = function (t, e) {
            return {
              x: 0,
              y: 0
            };
          }, e.prototype.positionToAngle = function (t) {
            return 0;
          }, e.prototype.positionToCoordinate = function (t) {
            var e = this.axis,
                i = e.axisFullLength;
            return e.renderer.inversed ? (e.end - t) * i : (t - e.start) * i;
          }, e.prototype.updateGridContainer = function () {}, e.prototype.getHeight = function () {
            var t = this.axis;

            if (t && t.chart) {
              var e = this.axis.chart;
              if (e.plotContainer) return e.plotContainer.pixelHeight || 0;
            }

            return this.gridContainer.pixelHeight || 0;
          }, e.prototype.getWidth = function () {
            var t = this.axis;

            if (t && t.chart) {
              var e = this.axis.chart;
              if (e.plotContainer) return e.plotContainer.pixelWidth || 0;
            }

            return this.gridContainer.pixelWidth || 0;
          }, e.prototype.coordinateToPosition = function (t, e) {
            var i = this.axis,
                n = i.axisFullLength;
            return j(i.renderer.inversed ? i.end - t / n : t / n + i.start, 5);
          }, e.prototype.pointToPosition = function (t) {
            return 0;
          }, e.prototype.getPositionRangePath = function (t, e) {
            return "";
          }, e.prototype.invalidateAxisItems = function () {
            var t = this.axis;
            t && t.invalidateDataItems();
          }, e.prototype.updateGridElement = function (t, e, i) {}, e.prototype.updateTickElement = function (t, e, i) {}, e.prototype.updateBullet = function (t, e, i) {}, e.prototype.updateLabelElement = function (t, e, i, n) {}, e.prototype.updateFillElement = function (t, e, i) {
            t.startPosition = e, t.endPosition = i;
          }, e.prototype.updateAxisLine = function () {}, e.prototype.updateBaseGridElement = function () {}, e.prototype.updateBreakElement = function (t) {
            this.positionItem(t.startLine, t.startPoint), this.toggleVisibility(t.startLine, t.startPosition, 0, 1), this.positionItem(t.endLine, t.endPoint), this.toggleVisibility(t.endLine, t.endPosition, 0, 1);
          }, Object.defineProperty(e.prototype, "minGridDistance", {
            get: function get() {
              return this.getPropertyValue("minGridDistance");
            },
            set: function set(t) {
              this.setPropertyValue("minGridDistance", t) && this.axis && this.axis.invalidateLayout();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "chart", {
            get: function get() {
              return this._chart.get();
            },
            set: function set(t) {
              this._chart.set(t, null);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.toggleVisibility = function (t, e, i, n) {
            var r = this.axis,
                s = t.dataItem;
            s && s instanceof Wl && (A(s.minPosition) && (i = s.minPosition), A(s.maxPosition) && (n = s.maxPosition));
            var o = r.start + (r.end - r.start) * (i - 1e-4),
                a = r.start + (r.end - r.start) * (n + 1e-4);
            t.disabled || (t.__disabled = e < o || e > a);
          }, e.prototype.createBreakSprites = function (t) {}, Object.defineProperty(e.prototype, "axisFills", {
            get: function get() {
              if (!this._axisFills) {
                var t = this.createFill(this.axis);
                this._axisFills = new Hs(t), t.applyOnClones = !0, t.events.on("enabled", this.invalidateAxisItems, this, !1), this._disposers.push(new Bs(this._axisFills)), this._disposers.push(this._axisFills.template);
              }

              return this._axisFills;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.createFill = function (t) {
            return new zl(t);
          }, Object.defineProperty(e.prototype, "grid", {
            get: function get() {
              if (!this._grid) {
                var t = this.createGrid();
                this._grid = new Hs(t), t.applyOnClones = !0, t.events.on("enabled", this.invalidateAxisItems, this, !1), this._disposers.push(new Bs(this._grid)), this._disposers.push(this._grid.template);
              }

              return this._grid;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.createGrid = function () {
            return new Ul();
          }, Object.defineProperty(e.prototype, "ticks", {
            get: function get() {
              if (!this._ticks) {
                var t = this.createTick();
                t.applyOnClones = !0, t.isMeasured = !1, t.events.on("enabled", this.invalidateAxisItems, this, !1), this._ticks = new Hs(t), this._disposers.push(new Bs(this._ticks)), this._disposers.push(this._ticks.template);
              }

              return this._ticks;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.createTick = function () {
            return new Zl();
          }, Object.defineProperty(e.prototype, "labels", {
            get: function get() {
              if (!this._labels) {
                var t = this.createLabel();
                this._labels = new Hs(t), t.applyOnClones = !0, t.events.on("enabled", this.invalidateAxisItems, this, !1), this._disposers.push(new Bs(this._labels)), this._disposers.push(this._labels.template);
              }

              return this._labels;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.createLabel = function () {
            return new Gl();
          }, Object.defineProperty(e.prototype, "inside", {
            get: function get() {
              return this.getPropertyValue("inside");
            },
            set: function set(t) {
              this.setPropertyValue("inside", t) && this.axis && this.axis.invalidate(), t ? (this.width = 0, this.height = 0) : (this.width = void 0, this.height = void 0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "opposite", {
            get: function get() {
              return this.getPropertyValue("opposite");
            },
            set: function set(t) {
              this.setPropertyValue("opposite", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "fullWidthTooltip", {
            get: function get() {
              return this.getPropertyValue("fullWidthTooltip");
            },
            set: function set(t) {
              this.setPropertyValue("fullWidthTooltip", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "tooltipLocation", {
            get: function get() {
              return this.getPropertyValue("tooltipLocation");
            },
            set: function set(t) {
              this.setPropertyValue("tooltipLocation", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "tooltipLocation2", {
            get: function get() {
              return this.getPropertyValue("tooltipLocation2");
            },
            set: function set(t) {
              this.setPropertyValue("tooltipLocation2", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "cellStartLocation", {
            get: function get() {
              return this.getPropertyValue("cellStartLocation");
            },
            set: function set(t) {
              this.setPropertyValue("cellStartLocation", t) && this.axis && this.axis.invalidateSeries();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "cellEndLocation", {
            get: function get() {
              return this.getPropertyValue("cellEndLocation");
            },
            set: function set(t) {
              this.setPropertyValue("cellEndLocation", t) && this.axis && this.axis.invalidateSeries();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "inversed", {
            get: function get() {
              return this.getPropertyValue("inversed");
            },
            set: function set(t) {
              this.setPropertyValue("inversed", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "minLabelPosition", {
            get: function get() {
              return this.getPropertyValue("minLabelPosition");
            },
            set: function set(t) {
              this.setPropertyValue("minLabelPosition", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "maxLabelPosition", {
            get: function get() {
              return this.getPropertyValue("maxLabelPosition");
            },
            set: function set(t) {
              this.setPropertyValue("maxLabelPosition", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), this.grid.template.copyFrom(e.grid.template), this.ticks.template.copyFrom(e.ticks.template), this.labels.template.copyFrom(e.labels.template), this.axisFills.template.copyFrom(e.axisFills.template), this.line.copyFrom(e.line), this.baseGrid.copyFrom(e.baseGrid);
          }, e.prototype.toAxisPosition = function (t) {
            return t;
          }, e.prototype.setVisibility = function (e) {
            t.prototype.setVisibility.call(this, e), this.bulletsContainer.visible = e;
          }, e;
        }(_a);

        Fs.registeredClasses.AxisRenderer = ql;

        var $l = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "AxisBullet", e.location = .5, e.isMeasured = !1, e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "location", {
            get: function get() {
              return this.getPropertyValue("location");
            },
            set: function set(t) {
              this.setPropertyValue("location", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setDisabled = function (e) {
            var i = t.prototype.setDisabled.call(this, e);
            return this.axis && this.axis.invalidateDataItems(), i;
          }, e;
        }(_a);

        Fs.registeredClasses.AxisBullet = $l;

        var Jl = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "AxisRendererY", e.minGridDistance = 40, e.opposite = !1, e.height = h(100), e.labels.template.verticalCenter = "middle", e.applyTheme(), e;
          }

          return n(e, t), e.prototype.setAxis = function (e) {
            t.prototype.setAxis.call(this, e), e.layout = "horizontal";
          }, e.prototype.updateGridContainer = function () {
            var t = this.axis;

            if (t) {
              var e = this.gridContainer;
              e.y = t.pixelY, e.height = t.axisLength;
            }
          }, e.prototype.toAxisPosition = function (t) {
            var e = 1 - t,
                i = this.axis,
                n = i.parent;
            return i && n ? 1 - (e - i.pixelY / n.innerHeight) / (i.axisLength / n.innerHeight) : t;
          }, e.prototype.processRenderer = function () {
            t.prototype.processRenderer.call(this);
            var e = this.axis;

            if (e) {
              var i = e.title;
              i.valign = "middle", e.height instanceof hs || (e.height = h(100)), this.opposite ? (i.rotation = 90, this.line.toBack(), i.toFront()) : (i.rotation = -90, i.toBack(), this.line.toFront());
            }
          }, e.prototype.updateTooltip = function () {
            if (this.axis) {
              var t = 0,
                  e = 2e3,
                  i = this.axisLength;
              this.opposite ? this.inside && (t = -2e3, e = 2e3) : this.inside || (t = -2e3, e = 2e3), this.axis.updateTooltip("horizontal", {
                x: t,
                y: 0,
                width: e,
                height: i
              });
            }
          }, Object.defineProperty(e.prototype, "axisLength", {
            get: function get() {
              var t = this.axis;
              return t.measuredHeight - t.pixelPaddingTop - t.pixelPaddingBottom || 0;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.positionToPoint = function (t, e) {
            return {
              x: 0,
              y: this.positionToCoordinate(t)
            };
          }, e.prototype.pointToPosition = function (t) {
            return this.coordinateToPosition(t.y, t.x);
          }, e.prototype.getPositionRangePath = function (t, e) {
            var i = R(this.positionToCoordinate(t), 0, this.axisLength),
                n = R(this.positionToCoordinate(e), 0, this.axisLength),
                r = Math.abs(n - i),
                s = this.getWidth();
            return kr({
              x: 0,
              y: Math.min(i, n),
              width: s,
              height: r
            }, !0);
          }, e.prototype.updateGridElement = function (t, e, i) {
            e += (i - e) * t.location;
            var n = this.positionToPoint(e);
            t.path = xr({
              x: 0,
              y: 0
            }) + _r({
              x: this.getWidth(),
              y: 0
            }), this.positionItem(t, n), this.toggleVisibility(t, e, 0, 1);
          }, e.prototype.updateTickElement = function (t, e, i) {
            e += (i - e) * t.location;
            var n = this.positionToPoint(e),
                r = t.length;

            try {
              this.axis.title.measuredWidth;
            } catch (t) {}

            n.x = Xi({
              x: this.line.pixelX,
              y: 0
            }, this.line.parent, this.gridContainer).x, this.opposite ? r *= t.inside ? -1 : 1 : r *= t.inside ? 1 : -1, t.path = xr({
              x: 0,
              y: 0
            }) + _r({
              x: r,
              y: 0
            }), this.positionItem(t, n), this.toggleVisibility(t, e, 0, 1);
          }, e.prototype.updateAxisLine = function () {
            this.line.path = xr({
              x: 0,
              y: 0
            }) + _r({
              x: 0,
              y: this.axisLength
            });
          }, e.prototype.updateBaseGridElement = function () {
            t.prototype.updateBaseGridElement.call(this);
            var e = this.axis,
                i = this.getWidth(),
                n = this.axisLength,
                r = e.basePoint.y,
                s = this.baseGrid;
            if (r < -.2 || r > n + .2) s.hide(0);else {
              var o = Xi({
                x: 0,
                y: 0
              }, this.gridContainer, s.parent).x;
              s.path = xr({
                x: 0,
                y: 0
              }) + _r({
                x: i,
                y: 0
              }), s.moveTo({
                x: o,
                y: r
              }), s.show(0);
            }
          }, e.prototype.updateLabelElement = function (t, e, i, n) {
            S(n) || (n = t.location), e += (i - e) * n, t.isMeasured = !t.inside;
            var r,
                s = this.positionToPoint(e),
                o = 0,
                a = this.gridContainer.maxWidth;
            this.opposite ? (t.inside ? (r = "right", "left" == t.align && (o = -a, r = "left"), "center" == t.align && (o = -a / 2, r = "middle")) : r = "left", s.x = 0 + o) : (t.inside ? (r = "left", "right" == t.align && (o = a, r = "right"), "center" == t.align && (o = a / 2, r = "middle")) : r = "right", s.x = this.measuredWidth + o), 0 == t.rotation && (t.horizontalCenter = r), this.positionItem(t, s), this.toggleVisibility(t, e, this.minLabelPosition, this.maxLabelPosition);
          }, e.prototype.updateBreakElement = function (e) {
            t.prototype.updateBreakElement.call(this, e);
            var i = e.startLine,
                n = e.endLine,
                r = e.fillShape,
                s = e.startPoint,
                o = e.endPoint,
                a = e.pixelMarginLeft,
                l = this.getWidth() - e.pixelMarginLeft - e.pixelMarginRight;
            s.y = R(s.y, -1, this.axisLength + 1), o.y = R(o.y, -1, this.axisLength + 1), s.y == o.y && (s.y < 0 || s.y > this.axisLength) ? e.fillShape.__disabled = !0 : e.fillShape.__disabled = !1;
            var h = Math.abs(l - a);
            i.x = a, i.height = 0, i.width = h, n.x = a, n.height = 0, n.width = h, r.width = h, r.height = Math.abs(o.y - s.y), r.x = a, r.y = o.y;
          }, e.prototype.createBreakSprites = function (t) {
            t.startLine = new ll(), t.endLine = new ll();
            var e = new hl();
            e.setWavedSides(!0, !1, !0, !1), t.fillShape = e;
          }, e.prototype.positionToCoordinate = function (t) {
            var e = this.axis,
                i = e.axisFullLength;
            return j(e.renderer.inversed ? (t - e.start) * i : (e.end - t) * i, 1);
          }, e.prototype.updateBullet = function (t, e, i) {
            var n = .5;
            t instanceof $l && (n = t.location), e += (i - e) * n;
            var r = this.positionToPoint(e);
            r.x = Xi({
              x: this.line.pixelX,
              y: 0
            }, this.line.parent, this.gridContainer).x, this.positionItem(t, r), this.toggleVisibility(t, e, 0, 1);
          }, e;
        }(ql);

        Fs.registeredClasses.AxisRendererY = Jl, Ta.push({
          relevant: Aa.widthS,
          state: function state(t, e) {
            if (t instanceof Jl) {
              var i = t.states.create(e);
              return i.properties.inside = !0, i.properties.maxLabelPosition = .9, i.properties.minLabelPosition = .1, i;
            }

            return null;
          }
        }), Ta.push({
          relevant: Aa.widthXS,
          state: function state(t, e) {
            if (t instanceof Jl) {
              var i = t.states.create(e);
              return i.properties.disabled = !0, i;
            }

            return null;
          }
        });

        var Ql = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "ValueAxisBreak", e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "startPosition", {
            get: function get() {
              if (this.axis) return this.axis.valueToPosition(this.adjustedStartValue);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "endPosition", {
            get: function get() {
              if (this.axis) return this.axis.valueToPosition(this.adjustedEndValue);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(Nl);

        Fs.registeredClasses.ValueAxisBreak = Ql;

        var th = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "ValueAxisDataItem", e.values.value = {}, e.values.endValue = {}, e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "value", {
            get: function get() {
              return this.values.value.value;
            },
            set: function set(t) {
              this.setValue("value", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "endValue", {
            get: function get() {
              return this.values.endValue.value;
            },
            set: function set(t) {
              this.setValue("endValue", t);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(Wl),
            eh = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e._stepDecimalPlaces = 0, e._baseValue = 0, e._adjustedStart = 0, e._adjustedEnd = 1, e._extremesChanged = !1, e._deltaMinMax = 1, e.calculateTotals = !1, e.className = "ValueAxis", e.axisFieldName = "value", e.setPropertyValue("maxZoomFactor", 1e3), e.setPropertyValue("extraMin", 0), e.setPropertyValue("extraMax", 0), e.setPropertyValue("strictMinMax", !1), e.setPropertyValue("maxPrecision", Number.MAX_VALUE), e.keepSelection = !1, e.includeRangesInMinMax = !1, e.applyTheme(), e;
          }

          return n(e, t), e.prototype.fillRule = function (t) {
            var e = t.value,
                i = t.component;
            t.axisFill.disabled || (j(e / i.step / 2, 5) == Math.round(e / i.step / 2) ? t.axisFill.__disabled = !0 : t.axisFill.__disabled = !1);
          }, e.prototype.createDataItem = function () {
            return new th();
          }, e.prototype.createAxisBreak = function () {
            return new Ql();
          }, e.prototype.dataChangeUpdate = function () {
            this.keepSelection ? (0 != this._start && this.dispatchImmediately("startchanged"), 1 != this._end && this.dispatchImmediately("endchanged"), 0 == this._start && 1 == this._end || this.dispatchImmediately("startendchanged")) : 0 == this._start && 1 == this._end || (this._start = 0, this._end = 1, this.dispatchImmediately("startendchanged")), this._maxZoomed = this._maxDefined, this._minZoomed = this._minDefined, this._maxAdjusted = this._maxDefined, this._minAdjusted = this._minDefined;
          }, e.prototype.processSeriesDataItems = function () {
            if (this.calculateTotals) {
              var t = this.series.getIndex(0),
                  e = t.startIndex;

              if (t.dataItems.length > 0) {
                e > 0 && e--;
                var i = t.endIndex;
                i < t.dataItems.length && i++;

                for (var n = this, r = e; r < i; ++r) !function (t) {
                  var e = {};
                  n.series.each(function (i) {
                    if (!i.excludeFromTotal) {
                      var n = i.dataItems.getIndex(t);
                      n && Qt(n.values, function (t) {
                        var i = n.values[t].workingValue;
                        A(i) && (A(e[t]) ? e[t] += Math.abs(i) : e[t] = Math.abs(i));
                      });
                    }
                  }), n.series.each(function (i) {
                    if (!i.excludeFromTotal) {
                      var n = i.dataItems.getIndex(t);
                      n && Qt(n.values, function (t) {
                        var i = n.values[t].workingValue;
                        A(i) && (n.setCalculatedValue(t, e[t], "total"), n.setCalculatedValue(t, 100 * i / e[t], "totalPercent"));
                      });
                    }
                  });
                }(r);
              }
            }
          }, e.prototype.validate = function () {
            this.axisLength <= 0 || (t.prototype.validate.call(this), this.getMinMax(), this.fixAxisBreaks(), this.calculateZoom(), this.validateAxisElements(), this.validateAxisRanges(), this.validateBreaks(), this.hideUnusedDataItems(), this.renderer.invalidateLayout());
          }, e.prototype.calculateZoom = function () {
            if (A(this.min) && A(this.max)) {
              var t = this.positionToValue(this.start),
                  e = this.positionToValue(this.end),
                  i = this.adjustDifference(t, e),
                  n = this.adjustMinMax(t, e, i, this._gridCount, !0);
              t = n.min, e = n.max, this._adjustedStart = j((t - this.min) / (this.max - this.min), 5), this._adjustedEnd = j((e - this.min) / (this.max - this.min), 5), this._step = n.step, this._stepDecimalPlaces = Ji(this._step), this._minZoomed == t && this._maxZoomed == e || (this._minZoomed = t, this._maxZoomed = e, this.dispatchImmediately("selectionextremeschanged"));
            } else this._adjustedStart = this.start, this._adjustedEnd = this.end;
          }, e.prototype.validateAxisElements = function () {
            var t = this;

            if (A(this.max) && A(this.min)) {
              var e = this.minZoomed - 2 * this._step;
              this.logarithmic ? Math.log(this.max) * Math.LOG10E - Math.log(this.min) * Math.LOG10E > 1 ? e = Math.pow(10, Math.log(this.min) * Math.LOG10E) : 0 == (e = Math.floor(this.minZoomed / this._step) * this._step) && (e = this.minZoomed) : e = Math.floor(e / this._step) * this._step;
              var i = this._maxZoomed + this._step;
              this.resetIterators();

              for (var n = this._dataItemsIterator, r = 0; e <= i;) {
                if (!this.isInBreak(e)) {
                  var s = n.find(function (t) {
                    return t.value === e;
                  });
                  s.__disabled && (s.__disabled = !1), this.appendDataItem(s), s.axisBreak = void 0, s.value != e && (s.value = e, s.text = this.formatLabel(e), s.label && s.label.invalid && s.label.validate(), s.value >= this.min && s.value <= this.max && s.label && ("Y" == this.axisLetter && s.label.measuredWidth > this.ghostLabel.measuredWidth || "X" == this.axisLetter && s.label.measuredHeight > this.ghostLabel.measuredHeight) && (this.ghostLabel.text = s.label.currentText, this.ghostLabel.validate())), this.validateDataElement(s);
                }

                r++, this.logarithmic && Math.log(this.max) * Math.LOG10E - Math.log(this.min) * Math.LOG10E > 1 ? e = Math.pow(10, Math.log(this.min) * Math.LOG10E + r) : e += this._step;
                var o = Math.pow(10, Math.floor(Math.log(Math.abs(this._step)) * Math.LOG10E));

                if (o < 1) {
                  var a = Math.round(Math.abs(Math.log(Math.abs(o)) * Math.LOG10E)) + 2;
                  e = j(e, a);
                }
              }

              var l = this._axisBreaks;

              if (l) {
                var h = this.renderer;
                pe(l.iterator(), function (e) {
                  if (e.breakSize > 0 && K(e.startPoint, e.endPoint) > h.minGridDistance) for (var i = e.adjustedMin; i <= e.adjustedMax;) {
                    if (i >= e.adjustedStartValue && i <= e.adjustedEndValue) {
                      var r = n.find(function (t) {
                        return t.value === i;
                      });
                      r.__disabled && (r.__disabled = !1), t.appendDataItem(r), r.axisBreak = e, r.value != i && (r.value = i, r.text = t.formatLabel(i), r.label && r.label.invalid && r.label.validate()), t.validateDataElement(r);
                    }

                    i += e.adjustedStep;
                  }
                });
              }
            }
          }, e.prototype.validateDataElement = function (e) {
            t.prototype.validateDataElement.call(this, e);
            var i = this.renderer,
                n = e.value,
                r = e.endValue,
                s = this.valueToPosition(n);
            e.position = s;
            var o = s,
                a = this.valueToPosition(n + this._step);
            A(r) && (a = o = this.valueToPosition(r)), e.point = i.positionToPoint(s);
            var l = e.tick;
            l && !l.disabled && i.updateTickElement(l, s, o);
            var h = e.grid;
            h && !h.disabled && i.updateGridElement(h, s, o);
            var u = e.label;
            u && !u.disabled && i.updateLabelElement(u, s, o);
            var p = e.axisFill;
            p && !p.disabled && (i.updateFillElement(p, s, a), e.isRange || this.fillRule(e)), e.bullet && i.updateBullet(e.bullet, s, o);
            var c = e.mask;
            c && i.updateFillElement(c, s, a);
          }, e.prototype.formatLabel = function (t) {
            return this.numberFormatter.format(t);
          }, Object.defineProperty(e.prototype, "basePoint", {
            get: function get() {
              var t = this.baseValue,
                  e = this.valueToPosition(t);
              return this.renderer.positionToPoint(e);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "baseValue", {
            get: function get() {
              return this.logarithmic ? this.min : this._baseValue;
            },
            set: function set(t) {
              this._baseValue = t, this.invalidateLayout(), this.invalidateSeries();
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.anyToPosition = function (t) {
            return this.valueToPosition(t);
          }, e.prototype.valueToPoint = function (t) {
            var e = this.valueToPosition(t),
                i = this.renderer.positionToPoint(e),
                n = this.renderer.positionToAngle(e);
            return {
              x: i.x,
              y: i.y,
              angle: n
            };
          }, e.prototype.anyToPoint = function (t) {
            return this.valueToPoint(t);
          }, e.prototype.valueToPosition = function (t) {
            if (A(t)) {
              var e = this.min,
                  i = this.max;

              if (A(e) && A(i)) {
                var n = this._difference,
                    r = this._axisBreaks;
                return r && r.length > 0 && ue(r.iterator(), function (n) {
                  var r = n.adjustedStartValue,
                      s = n.adjustedEndValue;

                  if (A(r) && A(s)) {
                    if (t < r) return !1;

                    if (z({
                      start: r,
                      end: s
                    }, {
                      start: e,
                      end: i
                    })) {
                      r = Math.max(r, e), s = Math.min(s, i);
                      var o = n.breakSize;
                      t > s ? e += (s - r) * (1 - o) : t < r || (t = r + (t - r) * o);
                    }
                  }

                  return !0;
                }), this.logarithmic ? (Math.log(t) * Math.LOG10E - Math.log(this.min) * Math.LOG10E) / (Math.log(this.max) * Math.LOG10E - Math.log(this.min) * Math.LOG10E) : (t - e) / n;
              }
            }

            return 0;
          }, e.prototype.positionToValue = function (t) {
            t = j(t, 10);
            var e = this.min,
                i = this.max;

            if (A(e) && A(i)) {
              var n = i - e,
                  r = null,
                  s = this._axisBreaks;
              return s && s.length > 0 && ue(s.iterator(), function (s) {
                var o = s.startPosition,
                    a = s.endPosition,
                    l = s.adjustedStartValue,
                    h = s.adjustedEndValue;

                if (A(l) && A(h)) {
                  if (l > i) return !1;

                  if (z({
                    start: l,
                    end: h
                  }, {
                    start: e,
                    end: i
                  })) {
                    l = W(l, e), h = X(h, i);
                    var u = s.breakSize;
                    if (n -= (h - l) * (1 - u), t > a) e += (h - l) * (1 - u);else if (!(t < o)) return r = l + (t - o) / (a - o) * (h - l), !1;
                  }

                  return !0;
                }
              }), A(r) || (r = this.logarithmic ? Math.pow(Math.E, (t * (Math.log(this.max) * Math.LOG10E - Math.log(this.min) * Math.LOG10E) + Math.log(this.min) * Math.LOG10E) / Math.LOG10E) : t * n + e), r;
            }
          }, e.prototype.xToValue = function (t) {
            return this.positionToValue(this.pointToPosition({
              x: t,
              y: 0
            }));
          }, e.prototype.yToValue = function (t) {
            return this.positionToValue(this.pointToPosition({
              x: 0,
              y: t
            }));
          }, e.prototype.pointToPosition = function (t) {
            return this.renderer instanceof Jl ? 1 - this.renderer.pointToPosition(t) : this.renderer.pointToPosition(t);
          }, e.prototype.getMinMax = function () {
            var t = this;
            this.updateGridCount();
            var e = Number.POSITIVE_INFINITY,
                i = Number.NEGATIVE_INFINITY;
            if (A(this._minDefined) && A(this._maxDefined) || (this.series.each(function (n) {
              if (!n.ignoreMinMax) {
                var r = n.min(t);
                A(r) && r < e && (e = r);
                var s = n.max(t);
                A(s) && s > i && (i = s);
              }
            }), this.includeRangesInMinMax && this.axisRanges.each(function (t) {
              if (!t.ignoreMinMax) {
                var n = X(t.value, t.endValue),
                    r = W(t.value, t.endValue);
                (n < e || !A(e)) && (e = n), (r > i || !A(i)) && (i = r);
              }
            })), this.logarithmic && e <= 0) throw Error("Logarithmic value axis can not have vales <= 0.");

            if (0 == e && 0 == i && (i = .9, e = -.9), A(this._minDefined) && (e = this._minDefined), A(this._maxDefined) && (i = this._maxDefined), A(e) && A(i)) {
              this._minReal = e, this._maxReal = i, e == Number.POSITIVE_INFINITY && (e = void 0), i == Number.NEGATIVE_INFINITY && (i = void 0);
              var n = this.adjustDifference(e, i);

              if (e = this.fixMin(e), (i = this.fixMax(i)) - e <= 1 / Math.pow(10, 15)) {
                if (i - e != 0) this._deltaMinMax = (i - e) / 2;else {
                  var r = Math.log(Math.abs(i)) * Math.LOG10E,
                      s = Math.pow(10, Math.floor(r));
                  s /= 10, this._deltaMinMax = s;
                }
                e -= this._deltaMinMax, i += this._deltaMinMax;
              }

              e -= (i - e) * this.extraMin, i += (i - e) * this.extraMax;
              var o = this.strictMinMax;
              A(this._maxDefined) && (o = !0);
              var a = this.adjustMinMax(e, i, n, this._gridCount, o);

              if (e = a.min, n = (i = a.max) - e, a = this.adjustMinMax(e, i, i - e, this._gridCount, !0), e = a.min, i = a.max, this.strictMinMax && (e = A(this._minDefined) ? this._minDefined : this._minReal, (i = A(this._maxDefined) ? this._maxDefined : this._maxReal) - e <= 1e-8 && (e -= this._deltaMinMax, i += this._deltaMinMax), e -= (i - e) * this.extraMin, i += (i - e) * this.extraMax), (this._minAdjusted != e || this._maxAdjusted != i) && A(e) && A(i)) {
                var l = this._minMaxAnimation;

                if (this._extremesChanged && A(this._minAdjusted) && A(this._maxAdjusted) && this.inited) {
                  if (l && !l.isFinished() && this._finalMax == i && this._finalMin == e) return;
                  this._finalMin = e, this._finalMax = i, (l = this.animate([{
                    property: "_minAdjusted",
                    from: this._minAdjusted,
                    to: e
                  }, {
                    property: "_maxAdjusted",
                    from: this._maxAdjusted,
                    to: i
                  }], this.rangeChangeDuration)) && !l.isFinished() ? (l.events.on("animationprogress", this.validateDataItems, this), l.events.on("animationended", function () {
                    t.series.each(function (t) {
                      t.validate();
                    }), t.validateDataItems(), t.handleSelectionExtremesChange();
                  }), this._minMaxAnimation = l) : this.series.each(function (t) {
                    t.validate();
                  }), this.validateDataItems(), this.dispatchImmediately("extremeschanged"), this.handleSelectionExtremesChange();
                } else {
                  if (l && !l.isFinished() && this._finalMax == i && this._finalMin == e) return;
                  this._minAdjusted = e, this._maxAdjusted = i, this._finalMin = e, this._finalMax = i, this.invalidateDataItems(), this.dispatchImmediately("extremeschanged");
                }
              }

              this._extremesChanged = !1, this._difference = this.adjustDifference(e, i);
            }
          }, e.prototype.fixMin = function (t) {
            return t;
          }, e.prototype.fixMax = function (t) {
            return t;
          }, e.prototype.adjustMinMax = function (t, e, i, n, r) {
            n <= 1 && (n = 1), n = Math.round(n);
            var s = t,
                o = e;
            0 === i && (i = Math.abs(e));
            var a = Math.log(Math.abs(i)) * Math.LOG10E,
                l = Math.pow(10, Math.floor(a)),
                h = l /= 10;
            r && (h = 0), this.logarithmic ? (t <= 0 && (t = this.baseValue), t == 1 / 0 && (t = 1), e == -1 / 0 && (e = 10), t = Math.pow(10, Math.floor(Math.log(Math.abs(t)) * Math.LOG10E)), e = Math.pow(10, Math.ceil(Math.log(Math.abs(e)) * Math.LOG10E))) : (r ? (t = Math.floor(t / l) * l, e = Math.ceil(e / l) * l) : (t = Math.ceil(t / l) * l - h, e = Math.floor(e / l) * l + h), t < 0 && s >= 0 && (t = 0), e > 0 && o <= 0 && (e = 0)), a = Math.log(Math.abs(i)) * Math.LOG10E, l = Math.pow(10, Math.floor(a)), l /= 10;
            var u = Math.ceil(i / n / l) * l,
                p = Math.pow(10, Math.floor(Math.log(Math.abs(u)) * Math.LOG10E)),
                c = Math.ceil(u / p);
            c > 5 ? c = 10 : c <= 5 && c > 2 && (c = 5), u = Math.ceil(u / (p * c)) * p * c, this.maxPrecision < Number.MAX_VALUE && u != L(u, this.maxPrecision) && (u = L(u, this.maxPrecision));
            var d = 0;

            if (p < 1 && (u = j(u, d = Math.round(Math.abs(Math.log(Math.abs(p)) * Math.LOG10E)) + 1)), !this.logarithmic) {
              var f = Math.floor(t / u);
              t = j(u * f, d);
              var g = void 0;
              (g = r ? Math.floor(e / u) : Math.ceil(e / u)) == f && g++, (e = j(u * g, d)) < o && (e += u), t > s && (t -= u);
            }

            return {
              min: t,
              max: e,
              step: u
            };
          }, Object.defineProperty(e.prototype, "min", {
            get: function get() {
              var t = this._minAdjusted;
              return A(t) || (t = this._minDefined), t;
            },
            set: function set(t) {
              this._minDefined != t && (this._minDefined = t, this.invalidate());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "minDefined", {
            get: function get() {
              return this._minDefined;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "maxDefined", {
            get: function get() {
              return this._maxDefined;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "extraMin", {
            get: function get() {
              return this.getPropertyValue("extraMin");
            },
            set: function set(t) {
              this.setPropertyValue("extraMin", t) && this.invalidateDataItems();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "extraMax", {
            get: function get() {
              return this.getPropertyValue("extraMax");
            },
            set: function set(t) {
              this.setPropertyValue("extraMax", t) && this.invalidateDataItems();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "step", {
            get: function get() {
              return this._step;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "max", {
            get: function get() {
              var t = this._maxAdjusted;
              return A(t) || (t = this._maxDefined), t;
            },
            set: function set(t) {
              this._maxDefined != t && (this._maxDefined = t, this.invalidate());
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.registerSeries = function (e) {
            return new gs([t.prototype.registerSeries.call(this, e), e.events.on("extremeschanged", this.handleExtremesChange, this, !1), e.events.on("selectionextremeschanged", this.handleSelectionExtremesChange, this, !1), this.events.on("extremeschanged", e.invalidate, e, !1)]);
          }, e.prototype.handleSelectionExtremesChange = function () {
            var t,
                e,
                i = this,
                n = !0;

            if (pe(this.series.iterator(), function (r) {
              if (!r.ignoreMinMax && !r.isHidden) {
                r.visible && !r.isHiding && (n = !1);
                var s = r.selectionMin(i),
                    o = r.selectionMax(i);
                A(s) && (!A(t) || s < t) && (t = s), A(o) && (!A(e) || o > e) && (e = o);
              }
            }), this.includeRangesInMinMax && this.axisRanges.each(function (t) {
              if (!t.ignoreMinMax) {
                var i = X(t.value, t.endValue),
                    n = W(t.value, t.endValue);
                i < e && (e = i), n > e && (e = n);
              }
            }), A(this._minDefined) ? t = this.strictMinMax ? this._minDefined : this.min : this.strictMinMax && (t = this._minReal), A(this._maxDefined) ? e = this.strictMinMax ? this._maxDefined : this.max : this.strictMinMax && (e = this._maxReal), t == e) {
              t -= this._deltaMinMax, e += this._deltaMinMax;
              var r = this.adjustMinMax(t, e, 0, this._gridCount, this.strictMinMax);
              t = r.min, e = r.max;
            }

            var s = this.adjustDifference(t, e),
                o = this.adjustMinMax(t, e, s, this._gridCount);
            t = o.min, e = o.max, t -= (e - t) * this.extraMin, e += (e - t) * this.extraMax, t = R(t, this.min, this.max), e = R(e, this.min, this.max), s = this.adjustDifference(t, e), o = this.adjustMinMax(t, e, s, this._gridCount, !0), t = o.min, e = o.max, this.strictMinMax && (t = W(t, this._minDefined), e = X(e, this._maxDefined)), this._minZoomed = t, this._maxZoomed = e, this._step = o.step;
            var a = this.valueToPosition(t),
                l = this.valueToPosition(e);
            n && (a = 0, l = 1), this.keepSelection || this.zoom({
              start: a,
              end: l
            }, !1, !1, 0);
          }, Object.defineProperty(e.prototype, "strictMinMax", {
            get: function get() {
              return this.getPropertyValue("strictMinMax");
            },
            set: function set(t) {
              this.setPropertyValue("strictMinMax", t) && this.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "logarithmic", {
            get: function get() {
              return this.getPropertyValue("logarithmic");
            },
            set: function set(t) {
              this.setPropertyValue("logarithmic", t) && this.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "keepSelection", {
            get: function get() {
              return this.getPropertyValue("keepSelection");
            },
            set: function set(t) {
              this.setPropertyValue("keepSelection", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "includeRangesInMinMax", {
            get: function get() {
              return this.getPropertyValue("includeRangesInMinMax");
            },
            set: function set(t) {
              this.setPropertyValue("includeRangesInMinMax", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "maxPrecision", {
            get: function get() {
              return this.getPropertyValue("maxPrecision");
            },
            set: function set(t) {
              this.setPropertyValue("maxPrecision", t) && this.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.handleExtremesChange = function () {
            var t = this;
            this._extremesChanged = !0, this.getMinMax(), this.ghostLabel && this.dataItems.each(function (e) {
              e.label && e.label.pixelWidth > 0 && (t.ghostLabel.text = e.label.currentText);
            });
          }, e.prototype.getX = function (t, e, i, n, r) {
            return this.renderer.positionToPoint(this.getPositionX(t, e, i, n, r)).x;
          }, e.prototype.getPositionX = function (t, e, i, n, r) {
            var s = t.getWorkingValue(e);
            S(n) || (n = "valueX");
            var o = t.getValue(n, "stack");
            A(s) || (s = this.baseValue, this.logarithmic && o > 0 && (s = 0));
            var a = this.valueToPosition(s + o);
            return r && (a = R(a, r.start, r.end)), a;
          }, e.prototype.getY = function (t, e, i, n, r) {
            return this.renderer.positionToPoint(this.getPositionY(t, e, i, n, r)).y;
          }, e.prototype.getPositionY = function (t, e, i, n, r) {
            var s = t.getWorkingValue(e);
            S(n) || (n = "valueY");
            var o = t.getValue(n, "stack");
            A(s) || (s = this.baseValue, this.logarithmic && o > 0 && (s = 0));
            var a = this.valueToPosition(s + o);
            return r && (a = R(a, r.start, r.end)), a;
          }, e.prototype.getAngle = function (t, e, i, n, r) {
            var s = t.getWorkingValue(e),
                o = t.getValue(n, "stack");
            A(s) || (s = this.baseValue);
            var a = this.valueToPosition(s + o);
            return r && (a = R(a, r.start, r.end)), this.positionToAngle(a);
          }, e.prototype.getAnyRangePath = function (t, e, i) {
            var n = this.valueToPosition(t),
                r = this.valueToPosition(e);
            return this.getPositionRangePath(n, r);
          }, e.prototype.getTooltipText = function (t) {
            var e = j(this.positionToValue(t), this._stepDecimalPlaces),
                i = this.tooltip.numberFormatter.format(e);
            return this._adapterO ? this._adapterO.apply("getTooltipText", i) : i;
          }, e.prototype.zoomToValues = function (t, e, i, n) {
            var r = (t - this.min) / (this.max - this.min),
                s = (e - this.min) / (this.max - this.min);
            this.zoom({
              start: r,
              end: s
            }, i, n);
          }, Object.defineProperty(e.prototype, "minZoomed", {
            get: function get() {
              return W(this.min, this._minZoomed);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "maxZoomed", {
            get: function get() {
              return X(this.max, this._maxZoomed);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.fixAxisBreaks = function () {
            var e = this;
            t.prototype.fixAxisBreaks.call(this);
            var i = this._axisBreaks;
            i && i.length > 0 && i.each(function (t) {
              var i = t.adjustedStartValue,
                  n = t.adjustedEndValue,
                  r = n - i,
                  s = Math.ceil(r * t.breakSize) * e._gridCount / (e.max - e.min),
                  o = e.adjustMinMax(i, n, r, s, !0);
              t.adjustedStep = o.step, t.adjustedMin = o.min, t.adjustedMax = o.max;
            }), this._difference = this.adjustDifference(this.min, this.max);
          }, e.prototype.getPositionLabel = function (t) {
            var e = this.positionToValue(t);
            return this.numberFormatter.format(e);
          }, e.prototype.showTooltipAt = function (t) {
            this.showTooltipAtPosition(this.valueToPosition(t));
          }, e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), this.min = e.min, this.max = e.max, this.calculateTotals = e.calculateTotals, this._baseValue = e.baseValue;
          }, e;
        }(Xl);

        Fs.registeredClasses.ValueAxis = eh, Fs.registeredClasses.ValueAxisDataItem = th;

        var ih = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "DateAxisBreak", e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "startDate", {
            get: function get() {
              return this.getPropertyValue("startDate");
            },
            set: function set(t) {
              this.setPropertyValue("startDate", t) && (this.startValue = t.getTime(), this.axis && (this.axis.invalidate(), this.axis.invalidateSeries()));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "endDate", {
            get: function get() {
              return this.getPropertyValue("endDate");
            },
            set: function set(t) {
              this.setPropertyValue("endDate", t) && (this.endValue = t.getTime(), this.axis && (this.axis.invalidate(), this.axis.invalidateSeries()));
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(Ql);

        Fs.registeredClasses.DateAxisBreak = ih;

        var nh = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "DateAxisDataItem", e.applyTheme(), e.values.date = {}, e.values.endDate = {}, e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "date", {
            get: function get() {
              return this.dates.date;
            },
            set: function set(t) {
              this.setDate("date", t), this.value = t.getTime();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "endDate", {
            get: function get() {
              return this.dates.endDate;
            },
            set: function set(t) {
              this.setDate("endDate", t), this.endValue = t.getTime();
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(th),
            rh = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.gridIntervals = new Ns(), e.groupIntervals = new Ns(), e.dateFormats = new Ds(), e.periodChangeDateFormats = new Ds(), e._baseIntervalReal = {
              timeUnit: "day",
              count: 1
            }, e._minDifference = {}, e._firstWeekDay = 1, e._dataGrouped = !1, e.groupMin = {}, e.groupMax = {}, e.className = "DateAxis", e.setPropertyValue("markUnitChange", !0), e.snapTooltip = !0, e.tooltipPosition = "pointer", e.groupData = !1, e.groupCount = 200, e.events.on("parentset", e.getDFFormatter, e, !1), e.gridIntervals.pushAll([{
              timeUnit: "millisecond",
              count: 1
            }, {
              timeUnit: "millisecond",
              count: 5
            }, {
              timeUnit: "millisecond",
              count: 10
            }, {
              timeUnit: "millisecond",
              count: 50
            }, {
              timeUnit: "millisecond",
              count: 100
            }, {
              timeUnit: "millisecond",
              count: 500
            }, {
              timeUnit: "second",
              count: 1
            }, {
              timeUnit: "second",
              count: 5
            }, {
              timeUnit: "second",
              count: 10
            }, {
              timeUnit: "second",
              count: 30
            }, {
              timeUnit: "minute",
              count: 1
            }, {
              timeUnit: "minute",
              count: 5
            }, {
              timeUnit: "minute",
              count: 10
            }, {
              timeUnit: "minute",
              count: 15
            }, {
              timeUnit: "minute",
              count: 30
            }, {
              timeUnit: "hour",
              count: 1
            }, {
              timeUnit: "hour",
              count: 3
            }, {
              timeUnit: "hour",
              count: 6
            }, {
              timeUnit: "hour",
              count: 12
            }, {
              timeUnit: "day",
              count: 1
            }, {
              timeUnit: "day",
              count: 2
            }, {
              timeUnit: "day",
              count: 3
            }, {
              timeUnit: "day",
              count: 4
            }, {
              timeUnit: "day",
              count: 5
            }, {
              timeUnit: "week",
              count: 1
            }, {
              timeUnit: "month",
              count: 1
            }, {
              timeUnit: "month",
              count: 2
            }, {
              timeUnit: "month",
              count: 3
            }, {
              timeUnit: "month",
              count: 6
            }, {
              timeUnit: "year",
              count: 1
            }, {
              timeUnit: "year",
              count: 2
            }, {
              timeUnit: "year",
              count: 5
            }, {
              timeUnit: "year",
              count: 10
            }, {
              timeUnit: "year",
              count: 50
            }, {
              timeUnit: "year",
              count: 100
            }, {
              timeUnit: "year",
              count: 200
            }, {
              timeUnit: "year",
              count: 500
            }, {
              timeUnit: "year",
              count: 1e3
            }, {
              timeUnit: "year",
              count: 2e3
            }, {
              timeUnit: "year",
              count: 5e3
            }, {
              timeUnit: "year",
              count: 1e4
            }, {
              timeUnit: "year",
              count: 1e5
            }]), e.groupIntervals.pushAll([{
              timeUnit: "millisecond",
              count: 1
            }, {
              timeUnit: "millisecond",
              count: 10
            }, {
              timeUnit: "millisecond",
              count: 100
            }, {
              timeUnit: "second",
              count: 1
            }, {
              timeUnit: "second",
              count: 10
            }, {
              timeUnit: "minute",
              count: 1
            }, {
              timeUnit: "minute",
              count: 10
            }, {
              timeUnit: "hour",
              count: 1
            }, {
              timeUnit: "day",
              count: 1
            }, {
              timeUnit: "week",
              count: 1
            }, {
              timeUnit: "month",
              count: 1
            }, {
              timeUnit: "year",
              count: 1
            }]), e.axisFieldName = "date", e.applyTheme(), e;
          }

          return n(e, t), e.prototype.fillRule = function (t) {
            var e = t.value,
                i = t.component,
                n = i._gridInterval,
                r = rr(n.timeUnit, n.count);
            Math.round((e - i.min) / r) / 2 == Math.round(Math.round((e - i.min) / r) / 2) ? t.axisFill.__disabled = !0 : t.axisFill.__disabled = !1;
          }, e.prototype.resetFlags = function () {
            var t = this;
            this.groupData && (this._dataGrouped = !1, this.series.each(function (e) {
              e.baseAxis == t && e.setDataSet("");
            }));
          }, e.prototype.applyInternalDefaults = function () {
            t.prototype.applyInternalDefaults.call(this), this.dateFormats.hasKey("millisecond") || this.dateFormats.setKey("millisecond", this.language.translate("_date_millisecond")), this.dateFormats.hasKey("second") || this.dateFormats.setKey("second", this.language.translate("_date_second")), this.dateFormats.hasKey("minute") || this.dateFormats.setKey("minute", this.language.translate("_date_minute")), this.dateFormats.hasKey("hour") || this.dateFormats.setKey("hour", this.language.translate("_date_hour")), this.dateFormats.hasKey("day") || this.dateFormats.setKey("day", this.language.translate("_date_day")), this.dateFormats.hasKey("week") || this.dateFormats.setKey("week", this.language.translate("_date_day")), this.dateFormats.hasKey("month") || this.dateFormats.setKey("month", this.language.translate("_date_month")), this.dateFormats.hasKey("year") || this.dateFormats.setKey("year", this.language.translate("_date_year")), this.periodChangeDateFormats.hasKey("millisecond") || this.periodChangeDateFormats.setKey("millisecond", this.language.translate("_date_millisecond")), this.periodChangeDateFormats.hasKey("second") || this.periodChangeDateFormats.setKey("second", this.language.translate("_date_second")), this.periodChangeDateFormats.hasKey("minute") || this.periodChangeDateFormats.setKey("minute", this.language.translate("_date_minute")), this.periodChangeDateFormats.hasKey("hour") || this.periodChangeDateFormats.setKey("hour", this.language.translate("_date_hour")), this.periodChangeDateFormats.hasKey("day") || this.periodChangeDateFormats.setKey("day", this.language.translate("_date_day")), this.periodChangeDateFormats.hasKey("week") || this.periodChangeDateFormats.setKey("week", this.language.translate("_date_day")), this.periodChangeDateFormats.hasKey("month") || this.periodChangeDateFormats.setKey("month", this.language.translate("_date_month") + " " + this.language.translate("_date_year"));
          }, e.prototype.createDataItem = function () {
            return new nh();
          }, e.prototype.createAxisBreak = function () {
            return new ih();
          }, e.prototype.validateDataItems = function () {
            var e = this.start,
                i = this.end,
                n = this.baseDuration,
                r = (this.max - this.min) / n;
            this._firstWeekDay = this.getFirstWeekDay(), this.getDFFormatter(), t.prototype.validateDataItems.call(this);
            var s = rr(this.mainBaseInterval.timeUnit, this.mainBaseInterval.count);
            this.maxZoomFactor = (this.max - this.min) / s, this._deltaMinMax = this.baseDuration / 2, e += (i - e) * (1 - r / ((this.max - this.min) / n)), this.zoom({
              start: e,
              end: i
            }, !1, !0);
          }, e.prototype.handleSelectionExtremesChange = function () {}, e.prototype.calculateZoom = function () {
            var e = this;
            t.prototype.calculateZoom.call(this);
            var i = this.adjustDifference(this._minZoomed, this._maxZoomed);

            if (this.groupData && S(i)) {
              var n = this.mainBaseInterval,
                  r = this.chooseInterval(0, i, this.groupCount, this.groupIntervals);
              (r.timeUnit == n.timeUnit && r.count < n.count || rr(r.timeUnit, 1) < rr(n.timeUnit, 1)) && (r = _ls({}, n)), this._groupInterval = r, this.series.each(function (t) {
                t.baseAxis == e && t.setDataSet(r.timeUnit + r.count);
              });
            }

            var s = this.chooseInterval(0, i, this._gridCount);
            rr(s.timeUnit, s.count) < this.baseDuration && (s = _ls({}, this.baseInterval)), this._gridInterval = s, this._nextGridUnit = nr(s.timeUnit), this._intervalDuration = rr(s.timeUnit, s.count), this._gridDate = ur(new Date(this.minZoomed - rr(s.timeUnit, s.count)), s.timeUnit, s.count, this._firstWeekDay, this._df.utc, new Date(this.min)), pe(this.series.iterator(), function (t) {
              if (t.baseAxis == e) {
                var i = t.getAxisField(e),
                    n = ur(new Date(e._minZoomed), e.baseInterval.timeUnit, e.baseInterval.count).getTime(),
                    r = n.toString(),
                    s = t.dataItemsByAxis.getKey(e.uid).getKey(r + t.currentDataSetId),
                    o = 0;
                0 != e.start && (o = s ? (s = e.findFirst(s, n, i)).index : t.dataItems.findClosestIndex(e._minZoomed, function (t) {
                  return t[i];
                }, "left"));
                var a = e.baseInterval,
                    l = hr(ur(new Date(e._maxZoomed), a.timeUnit, a.count, e._firstWeekDay, e._df.utc), a.timeUnit, a.count, e._df.utc).getTime(),
                    h = l.toString(),
                    u = t.dataItemsByAxis.getKey(e.uid).getKey(h + t.currentDataSetId),
                    p = t.dataItems.length;
                1 != e.end && (u ? p = u.index : (l -= 1, (p = t.dataItems.findClosestIndex(l, function (t) {
                  return t[i];
                }, "right")) > 0 && p++)), t.startIndex = o, t.endIndex = p, t.dataRangeInvalid && t.validateDataRange();
              }
            });
          }, e.prototype.findFirst = function (t, e, i) {
            var n = t.index;

            if (n > 0) {
              var r = t.component.dataItems.getIndex(n - 1),
                  s = r[i];
              return !s || s.getTime() < e ? t : this.findFirst(r, e, i);
            }

            return t;
          }, e.prototype.validateData = function () {
            t.prototype.validateData.call(this), A(this.baseInterval.count) || (this.baseInterval.count = 1);
          }, Object.defineProperty(e.prototype, "minDifference", {
            get: function get() {
              var t = this,
                  e = Number.MAX_VALUE;
              return this.series.each(function (i) {
                e > t._minDifference[i.uid] && (e = t._minDifference[i.uid]);
              }), e != Number.MAX_VALUE && 0 != e || (e = rr("day")), e;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.seriesDataChangeUpdate = function (t) {
            this._minDifference[t.uid] = Number.MAX_VALUE;
          }, e.prototype.postProcessSeriesDataItems = function () {
            var t = this;
            this.series.each(function (e) {
              JSON.stringify(e._baseInterval[t.uid]) != JSON.stringify(t.mainBaseInterval) && (e.mainDataSet.each(function (e) {
                t.postProcessSeriesDataItem(e);
              }), e._baseInterval[t.uid] = t.mainBaseInterval);
            }), this.addEmptyUnitsBreaks(), this.groupSeriesData();
          }, e.prototype.groupSeriesData = function () {
            var t = this;

            if (this.groupData && !this._dataGrouped) {
              this._dataGrouped = !0;
              var e = [],
                  i = this.mainBaseInterval,
                  n = rr(i.timeUnit, i.count);
              this.groupIntervals.each(function (i) {
                var r = rr(i.timeUnit, i.count);
                r > n && r < t.max - t.min && e.push(i);
              }), this.series.each(function (t) {
                t._dataSets = void 0;
              }), mt(e, function (e) {
                var i = "date" + t.axisLetter;
                t.series.each(function (n) {
                  if (n.baseAxis == t) {
                    var r = e.timeUnit + e.count,
                        s = new Ys(n.mainDataSet.template.clone()),
                        o = n.dataSets.getKey(r);
                    o && o.clear(), n.dataSets.setKey(r, s);
                    var a,
                        l = n.mainDataSet,
                        h = Number.NEGATIVE_INFINITY,
                        u = 0,
                        p = [];
                    Qt(n.dataFields, function (t, e) {
                      var n = t;
                      n != i && -1 == n.indexOf("Show") && p.push(n);
                    }), l.each(function (r) {
                      var o = r.getDate(i);

                      if (o) {
                        var l = o.getTime(),
                            c = ur(new Date(l), e.timeUnit, e.count, t._df.firstDayOfWeek, t._df.utc),
                            d = c.getTime();
                        h < c.getTime() ? ((a = s.create()).component = n, a.setDate(i, c), a._index = u, u++, mt(p, function (t) {
                          var e = r.values[t].value;

                          if (A(e)) {
                            var i = a.values[t];
                            i.value = e, i.workingValue = e, i.open = e, i.close = e, i.low = e, i.high = e, i.sum = e, i.average = e, i.count = 1;
                          }
                        }), t.postProcessSeriesDataItem(a, e), Qt(n.propertyFields, function (t, e) {
                          var i = t,
                              n = r.properties[t];
                          S(n) && (a.hasProperties = !0, a.setProperty(i, n));
                        }), a.groupDataItems = [r], h = d) : a && (mt(p, function (t) {
                          var e = n.groupFields[t],
                              i = r.values[t].value;

                          if (A(i)) {
                            var s = a.values[t];
                            A(s.open) || (s.open = i), s.close = i, (s.low > i || !A(s.low)) && (s.low = i), (s.high < i || !A(s.high)) && (s.high = i), A(s.sum) ? s.sum += i : s.sum = i, s.count++, s.average = s.sum / s.count, s.value = s[e], s.workingValue = s.value;
                          }
                        }), ni(r.properties, a.properties), Qt(n.propertyFields, function (t, e) {
                          var i = t,
                              n = r.properties[t];
                          S(n) && (a.hasProperties = !0, a.setProperty(i, n));
                        }), a.groupDataItems.push(r));
                      }
                    });
                  }
                });
              });
            }
          }, e.prototype.getDFFormatter = function () {
            this._df = this.dateFormatter;
          }, e.prototype.postProcessSeriesDataItem = function (t, e) {
            var i = this,
                n = "";
            e ? n = e.timeUnit + e.count : e = this.mainBaseInterval;
            var r = t.component.dataItemsByAxis.getKey(this.uid);
            Qt(t.dates, function (s) {
              var o = t.getDate(s).getTime(),
                  a = ur(new Date(o), e.timeUnit, e.count, i._firstWeekDay, i._df.utc).getTime(),
                  l = hr(new Date(a), e.timeUnit, e.count, i._df.utc);
              t.setCalculatedValue(s, a, "open"), t.setCalculatedValue(s, l.getTime(), "close"), r.setKey(a + n, t);
            });
          }, e.prototype.addEmptyUnitsBreaks = function () {
            var t = this;

            if (this.skipEmptyPeriods && A(this.min) && A(this.max)) {
              var e = this.baseInterval.timeUnit,
                  i = this.baseInterval.count;
              this._axisBreaks && this._axisBreaks.clear();

              for (var n = ur(new Date(this.min), e, i, this._firstWeekDay, this._df.utc), r = void 0, s = this; n.getTime() < this.max - this.baseDuration;) !function () {
                hr(n, e, i, s._df.utc);
                var o = n.getTime(),
                    a = o.toString();
                _e(s.series.iterator(), function (e) {
                  return !!e.dataItemsByAxis.getKey(t.uid).getKey(a + e.currentDataSetId);
                }) ? r && (r.endDate = new Date(o - 1), r = void 0) : r || ((r = s.axisBreaks.create()).startDate = new Date(o));
              }();
            }
          }, e.prototype.fixAxisBreaks = function () {
            var e = this;
            t.prototype.fixAxisBreaks.call(this);
            var i = this._axisBreaks;
            i && i.length > 0 && i.each(function (t) {
              var i = Math.ceil(e._gridCount * (Math.min(e.end, t.endPosition) - Math.max(e.start, t.startPosition)) / (e.end - e.start));
              t.gridInterval = e.chooseInterval(0, t.adjustedEndValue - t.adjustedStartValue, i);
              var n = ur(new Date(t.adjustedStartValue), t.gridInterval.timeUnit, t.gridInterval.count, e._firstWeekDay, e._df.utc);
              n.getTime() > t.startDate.getTime() && hr(n, t.gridInterval.timeUnit, t.gridInterval.count, e._df.utc), t.gridDate = n;
            });
          }, e.prototype.getFirstWeekDay = function () {
            return this._df ? this._df.firstDayOfWeek : 1;
          }, e.prototype.getGridDate = function (t, e) {
            var i = this._gridInterval.timeUnit,
                n = this._gridInterval.count;
            ur(t, i, 1, this._firstWeekDay, this._df.utc);
            var r = t.getTime(),
                s = ar(t),
                o = hr(s, i, e, this._df.utc).getTime(),
                a = this.isInBreak(o);
            a && a.endDate && (ur(s = new Date(a.endDate.getTime()), i, n, this._firstWeekDay, this._df.utc), s.getTime() < a.endDate.getTime() && hr(s, i, n, this._df.utc), o = s.getTime());
            var l = this.adjustDifference(r, o);
            return Math.round(l / rr(i)) < n ? this.getGridDate(t, e + n) : s;
          }, e.prototype.getBreaklessDate = function (t, e, i) {
            var n = new Date(t.endValue);
            ur(n, e, i, this._firstWeekDay, this._df.utc), hr(n, e, i, this._df.utc);
            var r = n.getTime();
            return (t = this.isInBreak(r)) ? this.getBreaklessDate(t, e, i) : n;
          }, e.prototype.validateAxisElements = function () {
            var t = this;

            if (A(this.max) && A(this.min)) {
              this.calculateZoom();

              var e = this._gridDate.getTime(),
                  i = this._gridInterval.timeUnit,
                  n = this._gridInterval.count,
                  r = ar(this._gridDate),
                  s = this._dataItemsIterator;

              this.resetIterators();

              for (var o = this; e <= this._maxZoomed;) !function () {
                var t = o.getGridDate(ar(r), n);
                e = t.getTime();
                var a = ar(t);
                a = hr(a, i, n, o._df.utc);
                var l = o.dateFormats.getKey(i);
                o.markUnitChange && r && lr(t, r, o._nextGridUnit, o._df.utc) && "year" !== i && (l = o.periodChangeDateFormats.getKey(i));

                var h = o._df.format(t, l),
                    u = s.find(function (t) {
                  return t.text === h;
                });

                u.__disabled && (u.__disabled = !1), o.appendDataItem(u), u.axisBreak = void 0, u.date = t, u.endDate = a, u.text = h, o.validateDataElement(u), r = t;
              }();

              var a = this.renderer;
              this._axisBreaks && pe(this._axisBreaks.iterator(), function (e) {
                if (e.breakSize > 0) {
                  var i = e.gridInterval.timeUnit,
                      n = e.gridInterval.count;
                  if (K(e.startPoint, e.endPoint) > 4 * a.minGridDistance) for (var r, o = e.gridDate.getTime(), l = 0; o <= e.adjustedMax;) !function () {
                    var a = ar(e.gridDate);

                    if (o = hr(a, i, n * l, t._df.utc).getTime(), l++, o > e.adjustedStartValue && o < e.adjustedEndValue) {
                      var h = ar(a);
                      h = hr(h, i, n, t._df.utc);
                      var u = t.dateFormats.getKey(i);
                      t.markUnitChange && r && lr(a, r, t._nextGridUnit, t._df.utc) && "year" !== i && (u = t.periodChangeDateFormats.getKey(i));

                      var p = t._df.format(a, u),
                          c = s.find(function (t) {
                        return t.text === p;
                      });

                      c.__disabled && (c.__disabled = !1), t.appendDataItem(c), c.axisBreak = e, e.dataItems.moveValue(c), c.date = a, c.endDate = h, c.text = p, r = a, t.validateDataElement(c);
                    }
                  }();
                }
              });
            }
          }, e.prototype.validateDataElement = function (t) {
            if (A(this.max) && A(this.min)) {
              var e = this.renderer,
                  i = t.value,
                  n = t.endValue;
              A(n) || (n = i);
              var r = this.valueToPosition(i),
                  s = this.valueToPosition(n),
                  o = s;
              !t.isRange && this._gridInterval.count > this.baseInterval.count && (s = r + (s - r) / (this._gridInterval.count / this.baseInterval.count)), t.position = r;
              var a = t.tick;
              a && !a.disabled && e.updateTickElement(a, r, s);
              var l = t.grid;
              l && !l.disabled && e.updateGridElement(l, r, s);
              var h = t.axisFill;
              h && !h.disabled && (e.updateFillElement(h, r, o), t.isRange || this.fillRule(t));
              var u = t.mask;
              u && e.updateFillElement(u, r, s), t.bullet && e.updateBullet(t.bullet, r, s);
              var p = t.label;

              if (p && !p.disabled) {
                var c = p.location;
                0 == c && (c = 1 != this._gridInterval.count || "week" == this._gridInterval.timeUnit || t.isRange ? 0 : .5), e.updateLabelElement(p, r, s, c);
              }
            }
          }, Object.defineProperty(e.prototype, "baseDuration", {
            get: function get() {
              return rr(this.baseInterval.timeUnit, this.baseInterval.count);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.adjustMinMax = function (t, e) {
            return {
              min: t,
              max: e,
              step: this.baseDuration
            };
          }, e.prototype.fixMin = function (t) {
            var e = this.baseInterval,
                i = ur(new Date(t), e.timeUnit, e.count, this._firstWeekDay, this._df.utc).getTime();
            return i + (hr(new Date(i), e.timeUnit, e.count, this._df.utc).getTime() - i) * this.startLocation;
          }, e.prototype.fixMax = function (t) {
            var e = this.baseInterval,
                i = ur(new Date(t), e.timeUnit, e.count, this._firstWeekDay, this._df.utc).getTime();
            return i + (hr(new Date(i), e.timeUnit, e.count, this._df.utc).getTime() - i) * this.endLocation;
          }, e.prototype.chooseInterval = function (t, e, i, n) {
            n || (n = this.gridIntervals);
            var r = n.getIndex(t),
                s = rr(r.timeUnit, r.count),
                o = n.length - 1;
            if (t >= o) return _ls({}, n.getIndex(o));
            var a = Math.ceil(e / s);
            return e < s && t > 0 ? _ls({}, n.getIndex(t - 1)) : a <= i ? _ls({}, n.getIndex(t)) : t + 1 < n.length ? this.chooseInterval(t + 1, e, i, n) : _ls({}, n.getIndex(t));
          }, e.prototype.formatLabel = function (t) {
            return this._df.format(t);
          }, e.prototype.dateToPosition = function (t) {
            return this.valueToPosition(t.getTime());
          }, e.prototype.anyToPosition = function (t) {
            return t instanceof Date ? this.dateToPosition(t) : this.valueToPosition(t);
          }, e.prototype.dateToPoint = function (t) {
            var e = this.dateToPosition(t),
                i = this.renderer.positionToPoint(e),
                n = this.renderer.positionToAngle(e);
            return {
              x: i.x,
              y: i.y,
              angle: n
            };
          }, e.prototype.anyToPoint = function (t) {
            return t instanceof Date ? this.dateToPoint(t) : this.valueToPoint(t);
          }, e.prototype.positionToDate = function (t) {
            return new Date(this.positionToValue(t));
          }, e.prototype.getPositionX = function (t, e, i, n, r) {
            var s = this.getTimeByLocation(t, e, i);
            A(s) || (s = this.baseValue);
            var o = this.valueToPosition(s);
            return r && (o = R(o, r.start, r.end)), o;
          }, e.prototype.getPositionY = function (t, e, i, n, r) {
            var s = this.getTimeByLocation(t, e, i),
                o = t.getValue("valueX", "stack");
            A(s) || (s = this.baseValue);
            var a = this.valueToPosition(s + o);
            return r && (a = R(a, r.start, r.end)), a;
          }, e.prototype.getAngle = function (t, e, i, n, r) {
            var s = this.getTimeByLocation(t, e, i),
                o = t.getValue(n, "stack");
            A(s) || (s = this.baseValue);
            var a = this.valueToPosition(s + o);
            return r && (a = R(a, r.start, r.end)), this.positionToAngle(a);
          }, e.prototype.getTimeByLocation = function (t, e, i) {
            if (S(e)) {
              A(i) || A(i = t.workingLocations[e]) || (i = 0);
              var n = t.values[e].open,
                  r = t.values[e].close,
                  s = t.values[e].workingValue,
                  o = t.values[e].value - s;
              return r -= o, A(n -= o) && A(r) ? n + (r - n) * i : void 0;
            }
          }, e.prototype.processSeriesDataItem = function (t, e) {
            var i,
                n = t.component,
                r = t["date" + e];

            if (r) {
              i = r.getTime();
              var s,
                  o = t["openDate" + e],
                  a = this._prevSeriesTime;

              if (o && (s = o.getTime()), A(s)) {
                var l = Math.abs(i - s);
                this._minDifference[n.uid] > l && (this._minDifference[n.uid] = l);
              }

              var h = i - a;
              h > 0 && this._minDifference[n.uid] > h && (this._minDifference[n.uid] = h), this._prevSeriesTime = i, n._baseInterval[this.uid] ? this.postProcessSeriesDataItem(t) : this._baseInterval && (n._baseInterval[this.uid] = this._baseInterval, this.postProcessSeriesDataItem(t));
            }
          }, e.prototype.updateAxisBySeries = function () {
            t.prototype.updateAxisBySeries.call(this);
            var e = this.chooseInterval(0, this.minDifference, 1);
            this.minDifference >= rr("day", 27) && "week" == e.timeUnit && (e.timeUnit = "month", e.count = 1), "month" == e.timeUnit && (this.minDifference >= rr("day", 58) && 1 == e.count && (e.count = 2), this.minDifference >= rr("day", 87) && 2 == e.count && (e.count = 3), this.minDifference >= rr("day", 174) && 5 == e.count && (e.count = 6)), this.minDifference >= rr("hour", 23) && "hour" == e.timeUnit && (e.timeUnit = "day", e.count = 1), this.minDifference >= rr("week", 1) - rr("hour", 1) && "day" == e.timeUnit && (e.timeUnit = "week", e.count = 1), this.minDifference >= rr("year", 1) - rr("day", 1.01) && "month" == e.timeUnit && (e.timeUnit = "year", e.count = 1), this._baseIntervalReal = e, this._mainBaseInterval = e;
          }, Object.defineProperty(e.prototype, "baseInterval", {
            get: function get() {
              return this._groupInterval ? this._groupInterval : this._baseInterval ? this._baseInterval : this._baseIntervalReal;
            },
            set: function set(t) {
              JSON.stringify(this._baseInterval) != JSON.stringify(t) && (this._baseInterval = t, this._mainBaseInterval = t, A(t.count) || (t.count = 1), this.invalidate(), this.postProcessSeriesDataItems());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "mainBaseInterval", {
            get: function get() {
              return this._baseInterval ? this._baseInterval : this._mainBaseInterval ? this._mainBaseInterval : this._baseIntervalReal;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "skipEmptyPeriods", {
            get: function get() {
              return this.getPropertyValue("skipEmptyPeriods");
            },
            set: function set(t) {
              if (this.setPropertyValue("skipEmptyPeriods", t) && this.invalidateData(), t) {
                var e = this.axisBreaks.template;
                e.startLine.disabled = !0, e.endLine.disabled = !0, e.fillShape.disabled = !0, e.breakSize = 0;
              }
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "tooltipDateFormat", {
            get: function get() {
              return this.getPropertyValue("tooltipDateFormat");
            },
            set: function set(t) {
              this.setPropertyValue("tooltipDateFormat", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "markUnitChange", {
            get: function get() {
              return this.getPropertyValue("markUnitChange");
            },
            set: function set(t) {
              this.setPropertyValue("markUnitChange", t) && this.invalidateData();
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.getTooltipText = function (t) {
            var e,
                i = this.positionToDate(t);
            if (i = ur(i, this.baseInterval.timeUnit, this.baseInterval.count, this._firstWeekDay, this._df.utc, new Date(this.min)), S(this.tooltipDateFormat)) e = this._df.format(i, this.tooltipDateFormat);else {
              var n = this.dateFormats.getKey(this.baseInterval.timeUnit);
              e = n ? this._df.format(i, n) : this.getPositionLabel(t);
            }
            return this._adapterO ? this._adapterO.apply("getTooltipText", e) : e;
          }, e.prototype.roundPosition = function (t, e, i) {
            var n = this.baseInterval,
                r = n.timeUnit,
                s = n.count,
                o = this.positionToDate(t);
            if (ur(o, r, s, this._firstWeekDay, this._df.utc), e > 0 && hr(o, r, e * s, this._df.utc), i > 0 && i < 1 && o.setTime(o.getTime() + this.baseDuration * i), this.isInBreak(o.getTime())) for (; o.getTime() < this.max && (hr(o, r, s, this._df.utc), this.isInBreak(o.getTime())););
            return this.dateToPosition(o);
          }, e.prototype.getCellStartPosition = function (t) {
            return this.roundPosition(t, 0);
          }, e.prototype.getCellEndPosition = function (t) {
            return this.roundPosition(t, 1);
          }, e.prototype.getSeriesDataItem = function (t, e, i) {
            var n,
                r = this.positionToValue(e),
                s = ur(new Date(r), this.baseInterval.timeUnit, this.baseInterval.count, this._firstWeekDay, this._df.utc),
                o = t.dataItemsByAxis.getKey(this.uid).getKey(s.getTime().toString());
            return !o && i && (n = "Y" == this.axisLetter ? "dateY" : "dateX", o = t.dataItems.getIndex(t.dataItems.findClosestIndex(s.getTime(), function (t) {
              return t[n] ? t[n].getTime() : -1 / 0;
            }, "any"))), o;
          }, e.prototype.getPositionLabel = function (t) {
            var e = this.positionToDate(t);
            return this._df.format(e, this.getCurrentLabelFormat());
          }, e.prototype.getCurrentLabelFormat = function () {
            return this.dateFormats.getKey(this._gridInterval ? this._gridInterval.timeUnit : "day");
          }, e.prototype.initRenderer = function () {
            t.prototype.initRenderer.call(this);
            var e = this.renderer;
            e && (e.ticks.template.location = 0, e.grid.template.location = 0, e.labels.template.location = 0, e.baseGrid.disabled = !0);
          }, Object.defineProperty(e.prototype, "basePoint", {
            get: function get() {
              return {
                x: 0,
                y: 0
              };
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.handleExtremesChange = function () {
            if (t.prototype.handleExtremesChange.call(this), this.groupData) {
              var e = this.baseInterval.timeUnit + this.baseInterval.count;
              this.groupMin[e] = this.min, this.groupMax[e] = this.max;
            }
          }, e.prototype.zoomToDates = function (t, e, i, n, r) {
            t = this._df.parse(t), e = this._df.parse(e), this.zoomToValues(t.getTime(), e.getTime(), i, n, r);
          }, e.prototype.zoomToValues = function (t, e, i, n, r) {
            var s = this;

            if (this.groupData) {
              var o = this.adjustDifference(t, e),
                  a = !1;
              e == this.max && (a = !0);
              var l = !1;

              if (t == this.min && (l = !0), S(o)) {
                var h = this.mainBaseInterval,
                    u = this.chooseInterval(0, o, this.groupCount, this.groupIntervals);
                (u.timeUnit == h.timeUnit && u.count < h.count || rr(u.timeUnit, 1) < rr(h.timeUnit, 1)) && (u = _ls({}, h));
                var p = u.timeUnit + u.count,
                    c = this.groupMin[p],
                    d = this.groupMax[p];
                A(c) && A(d) || (c = Number.POSITIVE_INFINITY, d = Number.NEGATIVE_INFINITY, this.series.each(function (t) {
                  var e = t.min(s),
                      i = t.max(s);
                  e < c && (c = e), i < d && (d = i);
                }), this.groupMin[p] = c, this.groupMax[p] = d), t = R(t, c, d), e = R(e, c, d), r && (a && (t = e - o, console.log("adjust"), t = R(t, c, d)), l && (e = R(e = t + o, c, d))), f = (t - c) / (d - c), g = (e - c) / (d - c), this.zoom({
                  start: f,
                  end: g
                }, i, n);
              }
            } else {
              var f = (t - this.min) / (this.max - this.min),
                  g = (e - this.min) / (this.max - this.min);
              this.zoom({
                start: f,
                end: g
              }, i, n);
            }
          }, e.prototype.asIs = function (e) {
            return "baseInterval" == e || t.prototype.asIs.call(this, e);
          }, e.prototype.copyFrom = function (e) {
            var i = this;
            t.prototype.copyFrom.call(this, e), this.dateFormats = e.dateFormats, this.periodChangeDateFormats = e.periodChangeDateFormats, this.groupIntervals.clear(), e.groupIntervals.each(function (t) {
              i.groupIntervals.push(_ls({}, t));
            }), this.gridIntervals.clear(), e.gridIntervals.each(function (t) {
              i.gridIntervals.push(_ls({}, t));
            }), e._baseInterval && (this.baseInterval = e._baseInterval);
          }, e.prototype.showTooltipAtPosition = function (e, i) {
            var n = this;

            if (i || (e = this.toAxisPosition(e)), this.snapTooltip) {
              var r,
                  s = this.positionToDate(e).getTime();

              if (this.series.each(function (t) {
                if (t.baseAxis == n) {
                  var i = n.getSeriesDataItem(t, e, !0);

                  if (i) {
                    var o = void 0;
                    t.xAxis == n && (o = i.dateX), t.yAxis == n && (o = i.dateY), r ? Math.abs(r.getTime() - s) > Math.abs(o.getTime() - s) && (r = o) : r = o;
                  }
                }
              }), r) {
                var o = r.getTime();
                r = ur(new Date(o), this.baseInterval.timeUnit, this.baseInterval.count, this._firstWeekDay, this._df.utc), o = r.getTime();
                var a = this.renderer.tooltipLocation;
                0 == a && (a = 1e-4), r = new Date(r.getTime() + this.baseDuration * a), e = this.dateToPosition(r), this.series.each(function (t) {
                  var e = t.dataItemsByAxis.getKey(n.uid).getKey(o + t.currentDataSetId),
                      i = t.showTooltipAtDataItem(e);
                  i ? n.chart._seriesPoints.push({
                    series: t,
                    point: i
                  }) : (t.tooltipText || t.tooltipHTML) && t.hideTooltip();
                });
              }
            }

            t.prototype.showTooltipAtPosition.call(this, e, !0);
          }, Object.defineProperty(e.prototype, "snapTooltip", {
            get: function get() {
              return this.getPropertyValue("snapTooltip");
            },
            set: function set(t) {
              this.setPropertyValue("snapTooltip", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "groupData", {
            get: function get() {
              return this.getPropertyValue("groupData");
            },
            set: function set(t) {
              this.setPropertyValue("groupData", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "groupCount", {
            get: function get() {
              return this.getPropertyValue("groupCount");
            },
            set: function set(t) {
              this.setPropertyValue("groupCount", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "gridInterval", {
            get: function get() {
              return this._gridInterval;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.makeGap = function (t, e) {
            var i = t.component;
            return !!(t && e && !i.connect && A(i.autoGapCount) && i.baseAxis == this && t.dates["date" + this.axisLetter].getTime() - e.dates["date" + this.axisLetter].getTime() > i.autoGapCount * this.baseDuration);
          }, Object.defineProperty(e.prototype, "baseValue", {
            get: function get() {
              return this.min;
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(eh);

        Fs.registeredClasses.DateAxis = rh, Fs.registeredClasses.DateAxisDataItem = nh;

        var sh = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "AxisRendererX", e.minGridDistance = 120, e.opposite = !1, e.rotation = 0, e.width = h(100), e.labels.template.horizontalCenter = "middle", e.applyTheme(), e;
          }

          return n(e, t), e.prototype.setAxis = function (e) {
            t.prototype.setAxis.call(this, e), e.layout = "vertical";
          }, e.prototype.updateGridContainer = function () {
            var t = this.axis;

            if (t) {
              var e = this.gridContainer;
              e.x = t.pixelX, e.width = t.axisLength;
            }
          }, e.prototype.processRenderer = function () {
            t.prototype.processRenderer.call(this);
            var e = this.axis;

            if (e) {
              e.width instanceof hs || (e.width = h(100)), this.line;
              var i = e.title;
              i.rotation = 0, i.align = "center", this.opposite ? (this.line.toFront(), i.toBack()) : (i.toFront(), this.toBack(), this.line.toBack());
            }
          }, e.prototype.updateTooltip = function () {
            if (this.axis) {
              var t = this.line.pixelX,
                  e = this.line.pixelY,
                  i = this.axisLength,
                  n = 1e3;
              this.opposite ? this.inside || (e = -1e3, n = 1e3) : this.inside && (e = -1e3, n = 1e3), this.axis.updateTooltip("vertical", {
                x: t,
                y: e,
                width: i,
                height: n
              });
            }
          }, e.prototype.updateLabelElement = function (t, e, i, n) {
            S(n) || (n = t.location), e += (i - e) * n;
            var r = this.positionToPoint(e);
            t.isMeasured = !t.inside;
            var s,
                o = 0,
                a = this.gridContainer.maxHeight;
            this.opposite ? (t.inside ? (s = "top", "bottom" == t.valign && (o = a, s = "bottom"), "middle" == t.valign && (o = a / 2, s = "middle")) : s = "bottom", r.y = o) : (t.inside ? (s = "bottom", "top" == t.valign && (o = -a, s = "top"), "middle" == t.valign && (o = -a / 2, s = "middle")) : s = "top", r.y += o), 0 == t.rotation && (t.verticalCenter = s), this.positionItem(t, r), this.toggleVisibility(t, e, this.minLabelPosition, this.maxLabelPosition);
          }, Object.defineProperty(e.prototype, "axisLength", {
            get: function get() {
              var t = this.axis;
              return t.measuredWidth - t.pixelPaddingRight - t.pixelPaddingLeft || 0;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.positionToPoint = function (t, e) {
            return {
              x: this.positionToCoordinate(t),
              y: 0
            };
          }, e.prototype.pointToPosition = function (t) {
            return this.coordinateToPosition(t.x, t.y);
          }, e.prototype.getPositionRangePath = function (t, e) {
            var i = R(this.positionToCoordinate(t), 0, this.axisLength),
                n = R(this.positionToCoordinate(e), 0, this.axisLength),
                r = Math.abs(n - i),
                s = this.getHeight();
            return kr({
              x: Math.min(i, n),
              y: 0,
              width: r,
              height: s
            }, !0);
          }, e.prototype.updateBreakElement = function (e) {
            t.prototype.updateBreakElement.call(this, e);
            var i = e.startLine,
                n = e.endLine,
                r = e.fillShape,
                s = e.startPoint,
                o = e.endPoint,
                a = e.pixelMarginLeft,
                l = this.getHeight() - e.pixelMarginTop - e.pixelMarginBottom;
            s.x = R(s.x, -1, this.axisLength + 1), o.x = R(o.x, -1, this.axisLength + 1), s.x == o.x && (s.x < 0 || s.x > this.axisLength) ? e.fillShape.__disabled = !0 : e.fillShape.__disabled = !1, i.y = a, i.width = 0, i.height = l, n.y = a, n.width = 0, n.height = l, r.height = l, r.width = Math.abs(o.x - s.x), r.y = a, r.x = s.x;
          }, e.prototype.updateGridElement = function (t, e, i) {
            e += (i - e) * t.location;
            var n = this.positionToPoint(e);
            t.path = xr({
              x: 0,
              y: 0
            }) + _r({
              x: 0,
              y: this.getHeight()
            }), this.positionItem(t, n), this.toggleVisibility(t, e, 0, 1);
          }, e.prototype.updateTickElement = function (t, e, i) {
            e += (i - e) * t.location;
            var n = this.positionToPoint(e),
                r = t.length;
            n.y = Xi({
              x: 0,
              y: this.line.pixelY
            }, this.line.parent, this.gridContainer).y, this.opposite ? r *= t.inside ? 1 : -1 : r *= t.inside ? -1 : 1, t.path = xr({
              x: 0,
              y: 0
            }) + _r({
              x: 0,
              y: r
            }), this.positionItem(t, n), this.toggleVisibility(t, e, 0, 1);
          }, e.prototype.updateAxisLine = function () {
            this.line.path = xr({
              x: 0,
              y: 0
            }) + _r({
              x: this.axisLength,
              y: 0
            });
          }, e.prototype.updateBaseGridElement = function () {
            t.prototype.updateBaseGridElement.call(this);
            var e = this.axis,
                i = this.getHeight(),
                n = this.axisLength,
                r = this.baseGrid,
                s = e.basePoint.x;
            if (s < -.2 || s > n + .2) r.hide(0);else {
              var o = Xi({
                x: 0,
                y: 0
              }, this.gridContainer, r.parent).y;
              r.path = xr({
                x: 0,
                y: 0
              }) + _r({
                x: 0,
                y: i
              }), r.moveTo({
                x: s,
                y: o
              }), r.show(0);
            }
          }, e.prototype.createBreakSprites = function (t) {
            t.startLine = new ll(), t.endLine = new ll();
            var e = new hl();
            e.setWavedSides(!1, !0, !1, !0), t.fillShape = e;
          }, e.prototype.toAxisPosition = function (t) {
            var e = t,
                i = this.axis,
                n = i.parent;
            return i && n ? (e - i.pixelX / n.innerWidth) / (i.axisLength / n.innerWidth) : t;
          }, e.prototype.updateBullet = function (t, e, i) {
            var n = .5;
            t instanceof $l && (n = t.location), e += (i - e) * n;
            var r = this.positionToPoint(e);
            r.y = Xi({
              x: 0,
              y: this.line.pixelY
            }, this.line.parent, this.gridContainer).y, this.positionItem(t, r), this.toggleVisibility(t, e, 0, 1);
          }, e;
        }(ql);

        Fs.registeredClasses.AxisRendererX = sh, Ta.push({
          relevant: Aa.heightXS,
          state: function state(t, e) {
            if (t instanceof sh) {
              var i = t.states.create(e);
              return i.properties.inside = !0, i.properties.maxLabelPosition = .9, i.properties.minLabelPosition = .1, i;
            }

            return null;
          }
        }), Ta.push({
          relevant: Aa.heightXXS,
          state: function state(t, e) {
            if (t instanceof sh) {
              var i = t.states.create(e);
              return i.properties.disabled = !0, i;
            }

            return null;
          }
        });

        var oh = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "CategoryAxisBreak", e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "startPosition", {
            get: function get() {
              if (this.axis) return this.axis.indexToPosition(this.adjustedStartValue);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "endPosition", {
            get: function get() {
              if (this.axis) return this.axis.indexToPosition(this.adjustedEndValue);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "startCategory", {
            get: function get() {
              return this.getPropertyValue("startCategory");
            },
            set: function set(t) {
              this.setPropertyValue("startCategory", t) && this.axis && (this.axis.invalidateDataItems(), this.axis.invalidateSeries());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "endCategory", {
            get: function get() {
              return this.getPropertyValue("endCategory");
            },
            set: function set(t) {
              this.setPropertyValue("endCategory", t) && this.axis && (this.axis.invalidateDataItems(), this.axis.invalidateSeries());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "startValue", {
            get: function get() {
              var t = this.getPropertyValue("startCategory");
              return t ? this.axis.categoryToIndex(t) : this.getPropertyValue("startValue");
            },
            set: function set(t) {
              this.setPropertyValue("startValue", t) && this.axis && (this.axis.invalidateDataItems(), this.axis.invalidateSeries());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "endValue", {
            get: function get() {
              var t = this.getPropertyValue("endCategory");
              return t ? this.axis.categoryToIndex(t) : this.getPropertyValue("endValue");
            },
            set: function set(t) {
              this.setPropertyValue("endValue", t) && this.axis && (this.axis.invalidateDataItems(), this.axis.invalidateSeries());
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(Nl);

        Fs.registeredClasses.CategoryAxisBreak = oh;

        var ah = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.seriesDataItems = {}, e.className = "CategoryAxisDataItem", e.text = "{category}", e.locations.category = 0, e.locations.endCategory = 1, e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "adapter", {
            get: function get() {
              return this._adapterO || (this._adapterO = new Ks(this)), this._adapterO;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "category", {
            get: function get() {
              return this._adapterO && this._adapterO.isEnabled("category") ? this._adapterO.apply("category", this.properties.category) : this.properties.category;
            },
            set: function set(t) {
              this.setProperty("category", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "endCategory", {
            get: function get() {
              return this.properties.endCategory;
            },
            set: function set(t) {
              this.setProperty("endCategory", t);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(Wl),
            lh = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.dataItemsByCategory = new Ds(), e.className = "CategoryAxis", e.axisFieldName = "category", e._lastDataItem = e.createDataItem(), e._lastDataItem.component = e, e._disposers.push(e._lastDataItem), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.createDataItem = function () {
            return new ah();
          }, e.prototype.createAxisBreak = function () {
            return new oh();
          }, e.prototype.processSeriesDataItem = function (e, i) {
            t.prototype.processSeriesDataItem.call(this, e, i);
            var n = e["category" + this.axisLetter];

            if (S(n)) {
              var r = this.dataItemsByCategory.getKey(n);

              if (r) {
                var s = e.component.uid,
                    o = r.seriesDataItems[s];
                o || (o = [], r.seriesDataItems[s] = o), o.push(e);
              }
            } else e.component.dataItems.remove(e);
          }, e.prototype.validateDataRange = function () {
            var i = this;
            t.prototype.validateDataRange.call(this), pe(this._series.iterator(), function (t) {
              if (t.xAxis instanceof e && t.yAxis instanceof e) t.invalidateDataRange();else {
                var n = i.positionToIndex(i.start),
                    r = i.positionToIndex(i.end);
                r >= i.dataItems.length && r--;

                for (var s = t.uid, o = void 0, a = void 0, l = n; l <= r; l++) {
                  var h = i.dataItems.getIndex(l);

                  if (h) {
                    var u = h.seriesDataItems[s];
                    if (u) for (var p = 0; p < u.length; p++) {
                      var c = u[p];

                      if (c) {
                        var d = c.index;
                        (!A(o) || d < o) && (o = d), (!A(a) || d > a) && (a = d);
                      }
                    }
                  }
                }

                A(o) ? t.startIndex = o : t.start = i.start, A(a) ? t.endIndex = a + 1 : t.end = i.end, i._axisBreaks && i._axisBreaks.length > 0 && t.invalidateDataRange();
              }
            });
          }, e.prototype.validate = function () {
            var e = this;
            t.prototype.validate.call(this);
            var i = this.dataItems.length,
                n = R(Math.floor(this.start * i - 1), 0, i),
                r = R(Math.ceil(this.end * i), 0, i);
            this.renderer.invalid && this.renderer.validate();
            var s = this.renderer.axisLength / this.renderer.minGridDistance,
                o = Math.min(this.dataItems.length, Math.ceil((r - n) / s));

            if (this._startIndex = Math.floor(n / o) * o, this._endIndex = Math.ceil(this.end * i), this.fixAxisBreaks(), this._startIndex == this._endIndex && this._endIndex++, this._frequency = o, !(this.axisLength <= 0)) {
              this.maxZoomFactor = this.dataItems.length, this.dataItems.length <= 0 && (this.maxZoomFactor = 1), this.resetIterators(), n = W(0, this._startIndex - this._frequency), r = X(this.dataItems.length, this._endIndex + this._frequency);

              for (var a = 0, l = 0; l < n; l++) (u = this.dataItems.getIndex(l)).__disabled = !0;

              l = r;

              for (var h = this.dataItems.length; l < h; l++) (u = this.dataItems.getIndex(l)).__disabled = !0;

              for (l = n; l < r; l++) if (l < this.dataItems.length) {
                var u = this.dataItems.getIndex(l);
                l / this._frequency == Math.round(l / this._frequency) ? (this.isInBreak(l) || (this.appendDataItem(u), this.validateDataElement(u, a)), a++) : u.__disabled = !0;
              }

              this.appendDataItem(this._lastDataItem), this.validateDataElement(this._lastDataItem, a + 1, this.dataItems.length), this._axisBreaks && this._axisBreaks.each(function (t) {
                var i = t.adjustedStartValue,
                    n = t.adjustedEndValue;
                if (z({
                  start: i,
                  end: n
                }, {
                  start: e._startIndex,
                  end: e._endIndex
                })) for (var r = R(Math.ceil(e._frequency / t.breakSize), 1, n - i), s = 0, o = i; o <= n; o += r) {
                  var a = e.dataItems.getIndex(o);
                  e.appendDataItem(a), e.validateDataElement(a, s), s++;
                }
              }), this.validateBreaks(), this.validateAxisRanges(), this.ghostLabel.invalidate(), this.renderer.invalidateLayout();
            }
          }, e.prototype.validateDataElement = function (e, i, n) {
            t.prototype.validateDataElement.call(this, e);
            var r = this.renderer;
            A(n) || (n = this.categoryToIndex(e.category));
            var s = this.categoryToIndex(e.endCategory);
            A(s) || (s = n);
            var o,
                a,
                l,
                h = this.indexToPosition(n, e.locations.category),
                u = this.indexToPosition(s, e.locations.endCategory);
            e.position = h, e.isRange && (o = s, a = this.indexToPosition(n, e.locations.category), l = this.indexToPosition(o, e.locations.endCategory)), e.point = r.positionToPoint(h);
            var p = e.tick;
            p && !p.disabled && r.updateTickElement(p, h, u);
            var c = e.grid;
            c && !c.disabled && r.updateGridElement(c, h, u);
            var d = e.label;
            d && !d.disabled && (e.isRange && null != d.text || (e.text = e.text), r.updateLabelElement(d, h, u), (r instanceof Jl && e.label.measuredWidth > this.ghostLabel.measuredWidth || r instanceof sh && e.label.measuredHeight > this.ghostLabel.measuredHeight) && (e.label.html ? this.ghostLabel.html = e.label.currentText : this.ghostLabel.text = e.label.currentText));
            var f = e.axisFill;
            f && !f.disabled && (e.isRange || (o = n + this._frequency, a = this.indexToPosition(n, f.location), l = this.indexToPosition(o, f.location)), r.updateFillElement(f, a, l), e.isRange || this.fillRule(e, i)), e.bullet && r.updateBullet(e.bullet, h, u);
            var g = e.mask;
            g && r.updateFillElement(g, a, l);
          }, e.prototype.disposeData = function () {
            this.dataItemsByCategory.clear(), t.prototype.disposeData.call(this);
          }, e.prototype.processDataItem = function (e, i) {
            e && (t.prototype.processDataItem.call(this, e, i), S(e.category) && this.dataItemsByCategory.setKey(e.category, e));
          }, e.prototype.getDataItem = function (t) {
            var e = t[this.dataFields.category];

            if (S(e)) {
              return this.dataItemsByCategory.getKey(e) || this.dataItems.create();
            }
          }, e.prototype.indexToPosition = function (t, e) {
            A(e) || (e = .5);
            var i = this.startIndex,
                n = this.endIndex,
                r = this.adjustDifference(i, n),
                s = this.startLocation;
            return r -= s, r -= 1 - this.endLocation, this._axisBreaks && ue(this._axisBreaks.iterator(), function (e) {
              var r = e.adjustedStartValue,
                  s = e.adjustedEndValue;
              if (t < i) return !1;

              if (z({
                start: r,
                end: s
              }, {
                start: i,
                end: n
              })) {
                r = Math.max(i, r), s = Math.min(n, s);
                var o = e.breakSize;
                t > s ? i += (s - r) * (1 - o) : t < r || (t = r + (t - r) * o);
              }

              return !0;
            }), j((t + e - s - i) / r, 5);
          }, e.prototype.categoryToPosition = function (t, e) {
            var i = this.categoryToIndex(t);
            return this.indexToPosition(i, e);
          }, e.prototype.categoryToPoint = function (t, e) {
            var i = this.categoryToPosition(t, e),
                n = this.renderer.positionToPoint(i),
                r = this.renderer.positionToAngle(i);
            return {
              x: n.x,
              y: n.y,
              angle: r
            };
          }, e.prototype.anyToPoint = function (t, e) {
            return this.categoryToPoint(t, e);
          }, e.prototype.anyToPosition = function (t, e) {
            return this.categoryToPosition(t, e);
          }, e.prototype.categoryToIndex = function (t) {
            if (S(t)) {
              var e = this.dataItemsByCategory.getKey(t);
              if (e) return e.index;
            }
          }, e.prototype.zoomToCategories = function (t, e) {
            this.zoomToIndexes(this.categoryToIndex(t), this.categoryToIndex(e) + 1);
          }, e.prototype.getAnyRangePath = function (t, e, i, n) {
            var r = this.categoryToPosition(t, i),
                s = this.categoryToPosition(e, n);
            return this.getPositionRangePath(r, s);
          }, e.prototype.roundPosition = function (t, e) {
            var i = this.positionToIndex(t);
            return this.indexToPosition(i, e);
          }, e.prototype.getFirstSeriesDataItem = function (t, e) {
            for (var i = 0; i < t.dataItems.length; i++) {
              var n = t.dataItems.getIndex(i);
              if (t.xAxis == this && n.categoryX == e) return n;
              if (t.yAxis == this && n.categoryY == e) return n;
            }
          }, e.prototype.getLastSeriesDataItem = function (t, e) {
            for (var i = t.dataItems.length - 1; i >= 0; i--) {
              var n = t.dataItems.getIndex(i);
              if (t.xAxis == this && n.categoryX == e) return n;
              if (t.yAxis == this && n.categoryY == e) return n;
            }
          }, e.prototype.getSeriesDataItem = function (t, e, i) {
            var n = this;

            if (A(e)) {
              var r = this.positionToIndex(e);
              r >= this.dataItems.length && r--;
              var s = this.dataItems.getIndex(r);

              if (s) {
                var o,
                    a = s.category,
                    l = t.dataItems.getIndex(r);

                if (l) {
                  if (t.xAxis == this && l.categoryX == a) return l;
                  if (t.yAxis == this && l.categoryY == a) return l;
                }

                return t.dataItems.each(function (e) {
                  t.xAxis == n && e.categoryX == a && (o || (o = e), Math.abs(r - o.index) > Math.abs(r - e.index) && (o = e)), t.yAxis == n && e.categoryY == a && (o || (o = e), Math.abs(r - o.index) > Math.abs(r - e.index) && (o = e));
                }), o;
              }
            }
          }, e.prototype.getX = function (t, e, i, n, r) {
            var s = this.getPositionX(t, e, i, n, r);
            return p(s) ? this.basePoint.x : this.renderer.positionToPoint(s).x;
          }, e.prototype.getPositionX = function (t, e, i, n, r) {
            var s;
            return S(e) && (s = this.categoryToPosition(t.categories[e], i)), r && (s = R(s, r.start, r.end)), s;
          }, e.prototype.getY = function (t, e, i, n, r) {
            var s = this.getPositionY(t, e, i, n, r);
            return p(s) ? this.basePoint.y : this.renderer.positionToPoint(s).y;
          }, e.prototype.getPositionY = function (t, e, i, n, r) {
            var s;
            return S(e) && (s = this.categoryToPosition(t.categories[e], i)), r && (s = R(s, r.start, r.end)), s;
          }, e.prototype.getAngle = function (t, e, i, n, r) {
            var s = this.categoryToPosition(t.categories[e], i);
            return r && (s = R(s, r.start, r.end)), this.positionToAngle(s);
          }, e.prototype.getCellStartPosition = function (t) {
            return this.roundPosition(t, 0);
          }, e.prototype.getCellEndPosition = function (t) {
            return this.roundPosition(t, 1);
          }, e.prototype.getTooltipText = function (t) {
            var e = this.dataItems.getIndex(this.positionToIndex(t));
            if (e) return this._adapterO ? this._adapterO.apply("getTooltipText", e.category) : e.category;
          }, e.prototype.positionToIndex = function (t) {
            (t = j(t, 10)) < 0 && (t = 0), t > 1 && (t = 1);
            var e = this.startIndex,
                i = this.endIndex,
                n = i - e - this.startLocation - (1 - this.endLocation);
            t += 1 / n * this.startLocation;
            var r = null;
            return this._axisBreaks && ue(this._axisBreaks.iterator(), function (s) {
              var o = s.startPosition,
                  a = s.endPosition,
                  l = s.adjustedStartValue,
                  h = s.adjustedEndValue;
              l = W(l, e), h = X(h, i);
              var u = s.breakSize;
              if (n -= (h - l) * (1 - u), t > a) e += (h - l) * (1 - u);else if (!(t < o)) {
                var p = (t - o) / (a - o);
                return r = l + Math.round(p * (h - l)), !1;
              }
              return !0;
            }), A(r) || (r = Math.floor(t * n + e)), r >= this.dataItems.length && (r = this.dataItems.length - 1), r;
          }, e.prototype.positionToCategory = function (t) {
            return this.getPositionLabel(t);
          }, e.prototype.getPositionLabel = function (t) {
            var e = this.dataItems.getIndex(this.positionToIndex(t));
            if (e) return e.category;
          }, Object.defineProperty(e.prototype, "basePoint", {
            get: function get() {
              return this.renderer.positionToPoint(1);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.initRenderer = function () {
            t.prototype.initRenderer.call(this), this.renderer.baseGrid.disabled = !0;
          }, Object.defineProperty(e.prototype, "frequency", {
            get: function get() {
              return this._frequency;
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(Xl);

        Fs.registeredClasses.CategoryAxis = lh, Fs.registeredClasses.CategoryAxisDataItem = ah;

        var hh = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "XYSeriesDataItem", e.values.valueX = {
              stack: 0
            }, e.values.valueY = {
              stack: 0
            }, e.values.openValueX = {}, e.values.openValueY = {}, e.values.dateX = {}, e.values.dateY = {}, e.values.openDateX = {}, e.values.openDateY = {}, e.setLocation("dateX", .5, 0), e.setLocation("dateY", .5, 0), e.setLocation("categoryX", .5, 0), e.setLocation("categoryY", .5, 0), e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "valueX", {
            get: function get() {
              return this.values.valueX.value;
            },
            set: function set(t) {
              this.setValue("valueX", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "valueY", {
            get: function get() {
              return this.values.valueY.value;
            },
            set: function set(t) {
              this.setValue("valueY", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "dateX", {
            get: function get() {
              return this.getDate("dateX");
            },
            set: function set(t) {
              this.setDate("dateX", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "dateY", {
            get: function get() {
              return this.getDate("dateY");
            },
            set: function set(t) {
              this.setDate("dateY", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "categoryX", {
            get: function get() {
              return this.categories.categoryX;
            },
            set: function set(t) {
              this.setCategory("categoryX", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "categoryY", {
            get: function get() {
              return this.categories.categoryY;
            },
            set: function set(t) {
              this.setCategory("categoryY", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "openValueX", {
            get: function get() {
              return this.values.openValueX.value;
            },
            set: function set(t) {
              this.setValue("openValueX", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "openValueY", {
            get: function get() {
              return this.values.openValueY.value;
            },
            set: function set(t) {
              this.setValue("openValueY", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "openDateX", {
            get: function get() {
              return this.getDate("openDateX");
            },
            set: function set(t) {
              this.setDate("openDateX", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "openDateY", {
            get: function get() {
              return this.getDate("openDateY");
            },
            set: function set(t) {
              this.setDate("openDateY", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "openCategoryX", {
            get: function get() {
              return this.categories.openCategoryX;
            },
            set: function set(t) {
              this.setCategory("openCategoryX", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "openCategoryY", {
            get: function get() {
              return this.categories.openCategoryY;
            },
            set: function set(t) {
              this.setCategory("openCategoryY", t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.getMin = function (t, e, i) {
            var n,
                r = this;
            return A(i) || (i = 0), mt(t, function (t) {
              var s;
              s = e ? r.getWorkingValue(t) : r.getValue(t), ((s += i) < n || !A(n)) && (n = s);
            }), n;
          }, e.prototype.getMax = function (t, e, i) {
            var n,
                r = this;
            return A(i) || (i = 0), mt(t, function (t) {
              var s;
              s = e ? r.getWorkingValue(t) : r.getValue(t), ((s += i) > n || !A(n)) && (n = s);
            }), n;
          }, e;
        }(Ll),
            uh = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.groupFields = {}, e._xAxis = new ys(), e._yAxis = new ys(), e._xValueFields = [], e._yValueFields = [], e._baseInterval = {}, e.className = "XYSeries", e.isMeasured = !1, e.groupFields.valueX = "close", e.groupFields.valueY = "close", e.groupFields.openValueX = "open", e.groupFields.openValueY = "open", e.cursorTooltipEnabled = !0, e.cursorHoverEnabled = !0, e.excludeFromTotal = !1, e.mainContainer.mask = new ba(), e.mainContainer.mask.setElement(e.paper.add("path")), e.stacked = !1, e.snapTooltip = !1, e.tooltip.pointerOrientation = "horizontal", e.tooltip.events.on("hidden", function () {
              e.returnBulletDefaultState();
            }, void 0, !1), e._disposers.push(e._xAxis), e._disposers.push(e._yAxis), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.applyInternalDefaults = function () {
            t.prototype.applyInternalDefaults.call(this), S(this.readerTitle) || (this.readerTitle = this.language.translate("X/Y Series"));
          }, e.prototype.createDataItem = function () {
            return new hh();
          }, e.prototype.dataChangeUpdate = function () {
            this._tmin.clear(), this._tmax.clear(), this._smin.clear(), this._smax.clear(), this.xAxis && this.xAxis.seriesDataChangeUpdate(this), this.yAxis && this.yAxis.seriesDataChangeUpdate(this);
          }, e.prototype.validateData = function () {
            if (this.defineFields(), this.data.length > 0 && this.dataChangeUpdate(), t.prototype.validateData.call(this), this.updateItemReaderText(), !S(this.dataFields[this._xField]) || !S(this.dataFields[this._yField])) throw Error('Data fields for series "' + (this.name ? this.name : this.uid) + '" are not properly defined.');
          }, e.prototype.processDataItem = function (e, i) {
            try {
              t.prototype.processDataItem.call(this, e, i), this.xAxis.processSeriesDataItem(e, "X"), this.yAxis.processSeriesDataItem(e, "Y"), this.setInitialWorkingValues(e);
            } catch (t) {
              this._chart.raiseCriticalError(t);
            }
          }, e.prototype.updateDataItem = function (e) {
            t.prototype.updateDataItem.call(this, e), this.xAxis.processSeriesDataItem(e, "X"), this.yAxis.processSeriesDataItem(e, "Y");
          }, e.prototype.setInitialWorkingValues = function (t) {}, e.prototype.disposeData = function () {
            if (t.prototype.disposeData.call(this), this.xAxis) {
              var e = this.dataItemsByAxis.getKey(this.xAxis.uid);
              e && e.clear(), this.xAxis instanceof lh && this.clearCatAxis(this.xAxis);
            }

            if (this.yAxis) {
              var i = this.dataItemsByAxis.getKey(this.yAxis.uid);
              i && i.clear(), this.yAxis instanceof lh && this.clearCatAxis(this.yAxis);
            }
          }, e.prototype.clearCatAxis = function (t) {
            var e = this.uid;
            t.dataItems.each(function (t) {
              t.seriesDataItems[e] && (t.seriesDataItems[e] = []);
            });
          }, e.prototype.defineFields = function () {
            var t = this.xAxis,
                e = this.yAxis,
                i = t.axisFieldName,
                n = i + "X",
                r = "open" + fi(i) + "X",
                s = e.axisFieldName,
                o = s + "Y",
                a = "open" + fi(s) + "Y";
            this._xField = n, this._yField = o, this.dataFields[r] && (this._xOpenField = r), this.dataFields[a] && (this._yOpenField = a), this.dataFields[a] || this.baseAxis != this.yAxis || (this._yOpenField = o), this.dataFields[r] || this.baseAxis != this.xAxis || (this._xOpenField = n), this.stacked && this.baseAxis == this.xAxis && (this._xOpenField = n), this.stacked && this.baseAxis == this.yAxis && (this._yOpenField = o), this.xAxis instanceof lh && this.yAxis instanceof lh && (this._yOpenField || (this._yOpenField = o)), this._xValueFields = [], this._yValueFields = [], this.addValueField(this.xAxis, this._xValueFields, this._xField), this.addValueField(this.xAxis, this._xValueFields, this._xOpenField), this.addValueField(this.yAxis, this._yValueFields, this._yField), this.addValueField(this.yAxis, this._yValueFields, this._yOpenField);
          }, e.prototype.addValueField = function (t, e, i) {
            t instanceof eh && S(this.dataFields[i]) && -1 == e.indexOf(i) && e.push(i);
          }, e.prototype.setCategoryAxisField = function (t, e) {
            S(this.dataFields[t]) || (this.dataFields[t] = e.dataFields.category);
          }, e.prototype.setDateAxisField = function (t, e) {
            S(this.dataFields[t]) || (this.dataFields[t] = e.dataFields.date);
          }, e.prototype.afterDraw = function () {
            t.prototype.afterDraw.call(this), this.createMask();
          }, e.prototype.createMask = function () {
            if (this.mainContainer.mask) {
              var t = this.getMaskPath();
              pe(this.axisRanges.iterator(), function (e) {
                e.axisFill.fillPath && (e.axisFill.validate(), t += e.axisFill.fillPath);
              }), this.mainContainer.mask.path = t;
            }
          }, e.prototype.getMaskPath = function () {
            return kr({
              x: 0,
              y: 0,
              width: this.xAxis.axisLength,
              height: this.yAxis.axisLength
            });
          }, e.prototype.getAxisField = function (t) {
            return t == this.xAxis ? this.xField : t == this.yAxis ? this.yField : void 0;
          }, e.prototype.validateDataItems = function () {
            this.xAxis.updateAxisBySeries(), this.yAxis.updateAxisBySeries(), t.prototype.validateDataItems.call(this), this.xAxis.postProcessSeriesDataItems(), this.yAxis.postProcessSeriesDataItems();
          }, e.prototype.validateDataRange = function () {
            this.xAxis.dataRangeInvalid && this.xAxis.validateDataRange(), this.yAxis.dataRangeInvalid && this.yAxis.validateDataRange(), t.prototype.validateDataRange.call(this);
          }, e.prototype.validate = function () {
            this.xAxis.invalid && this.xAxis.validate(), this.yAxis.invalid && this.yAxis.validate(), this.y = this.yAxis.pixelY, this.x = this.xAxis.pixelX, this._showBullets = !0;
            var e = this.minBulletDistance;
            A(e) && this.baseAxis.axisLength / (this.endIndex - this.startIndex) < e && (this._showBullets = !1), t.prototype.validate.call(this);
          }, Object.defineProperty(e.prototype, "xAxis", {
            get: function get() {
              if (this.chart) {
                if (!this._xAxis.get()) {
                  var t = this.chart.xAxes.getIndex(0);
                  if (!t) throw Error("There are no X axes on chart.");
                  this.xAxis = t;
                }

                return this._xAxis.get();
              }
            },
            set: function set(t) {
              this.setXAxis(t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setXAxis = function (t) {
            var e = this._xAxis.get();

            e != t && (e && (this.dataItemsByAxis.removeKey(e.uid), this._xAxis.dispose(), e.series.removeValue(this)), this._xAxis.set(t, t.registerSeries(this)), this.dataItemsByAxis.setKey(t.uid, new Ds()), this.invalidateData(), this.events.on("beforedatavalidated", function () {
              t.resetFlags();
            }, this, !1));
          }, Object.defineProperty(e.prototype, "yAxis", {
            get: function get() {
              if (this.chart) {
                if (!this._yAxis.get()) {
                  var t = this.chart.yAxes.getIndex(0);
                  if (!t) throw Error("There are no Y axes on chart.");
                  this.yAxis = t;
                }

                return this._yAxis.get();
              }
            },
            set: function set(t) {
              this.setYAxis(t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setYAxis = function (t) {
            var e = this._yAxis.get();

            e != t && (e && (this.dataItemsByAxis.removeKey(e.uid), this._yAxis.dispose(), e.series.removeValue(this)), this._yAxis.set(t, t.registerSeries(this)), this.events.on("beforedatavalidated", function () {
              t.resetFlags();
            }, this, !1), this.dataItemsByAxis.setKey(t.uid, new Ds()), this.invalidateData());
          }, Object.defineProperty(e.prototype, "baseAxis", {
            get: function get() {
              return this._baseAxis || (this.yAxis instanceof rh && (this._baseAxis = this.yAxis), this.xAxis instanceof rh && (this._baseAxis = this.xAxis), this.yAxis instanceof lh && (this._baseAxis = this.yAxis), this.xAxis instanceof lh && (this._baseAxis = this.xAxis), this._baseAxis || (this._baseAxis = this.xAxis)), this._baseAxis;
            },
            set: function set(t) {
              this._baseAxis != t && (this._baseAxis = t, this.invalidate());
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.processValues = function (e) {
            t.prototype.processValues.call(this, e);
            var i = this.dataItems,
                n = 1 / 0,
                r = -1 / 0,
                s = 1 / 0,
                o = -1 / 0,
                a = this.startIndex,
                l = this.endIndex,
                h = a,
                u = l;
            e || (a = 0, l = this.dataItems.length);

            for (var p = a; p < l; p++) {
              var c = i.getIndex(p);
              this.getStackValue(c, e);
              var d = c.getValue("valueX", "stack"),
                  f = c.getValue("valueY", "stack");
              n = X(c.getMin(this._xValueFields, e, d), n), s = X(c.getMin(this._yValueFields, e, f), s), r = W(c.getMax(this._xValueFields, e, d), r), o = W(c.getMax(this._yValueFields, e, f), o), this.stacked && (this.baseAxis == this.xAxis && (f < s && (s = f), f > o && (o = f)), this.baseAxis == this.yAxis && (d < n && (n = d), d > r && (r = d)));
            }

            this.xAxis.processSeriesDataItems(), this.yAxis.processSeriesDataItems();
            var g = this.xAxis.uid,
                y = this.yAxis.uid;

            if (!e && (this._tmin.getKey(g) != n || this._tmax.getKey(g) != r || this._tmin.getKey(y) != s || this._tmax.getKey(y) != o)) {
              this._tmin.setKey(g, n), this._tmax.setKey(g, r), this._tmin.setKey(y, s), this._tmax.setKey(y, o);
              var m = this.stackedSeries;
              m && (m.isDisposed() ? this.stackedSeries = void 0 : m.processValues(!1)), this.dispatchImmediately("extremeschanged");
            }

            if (a != h || l != u) for (n = 1 / 0, r = -1 / 0, s = 1 / 0, o = -1 / 0, p = h; p < u; p++) c = i.getIndex(p), this.getStackValue(c, e), d = c.getValue("valueX", "stack"), f = c.getValue("valueY", "stack"), n = X(c.getMin(this._xValueFields, e, d), n), s = X(c.getMin(this._yValueFields, e, f), s), r = W(c.getMax(this._xValueFields, e, d), r), o = W(c.getMax(this._yValueFields, e, f), o), this.stacked && (this.baseAxis == this.xAxis && (f < s && (s = f), f > o && (o = f)), this.baseAxis == this.yAxis && (d < n && (n = d), d > r && (r = d)));

            if ((this._smin.getKey(g) != n || this._smax.getKey(g) != r || this._smin.getKey(y) != s || this._smax.getKey(y) != o) && (this._smin.setKey(g, n), this._smax.setKey(g, r), this._smin.setKey(y, s), this._smax.setKey(y, o), this.appeared || 0 != this.start || 1 != this.end || this.dataItems != this.mainDataSet)) {
              var v = !1;
              this.yAxis instanceof eh && !(this.yAxis instanceof rh) && (s < this._tmin.getKey(y) && (this._tmin.setKey(y, s), v = !0), o > this._tmin.getKey(y) && (this._tmax.setKey(y, o), v = !0)), this.xAxis instanceof eh && !(this.xAxis instanceof rh) && (n < this._tmin.getKey(g) && (this._tmin.setKey(g, n), v = !0), r > this._tmax.getKey(g) && (this._tmax.setKey(g, r), v = !0)), this.dispatchImmediately("selectionextremeschanged"), v && this.dispatchImmediately("extremeschanged");
            }

            !e && this.stacked && this.processValues(!0);
          }, e.prototype.hideTooltip = function () {
            t.prototype.hideTooltip.call(this), this.returnBulletDefaultState(), this._prevTooltipDataItem = void 0;
          }, e.prototype.showTooltipAtPosition = function (t, e) {
            var i;

            if (this.visible && !this.isHiding && !this.isShowing) {
              var n = this._xAxis.get(),
                  r = this._yAxis.get();

              n == this.baseAxis && (i = n.getSeriesDataItem(this, n.toAxisPosition(t), this.snapTooltip)), r == this.baseAxis && (i = r.getSeriesDataItem(this, r.toAxisPosition(e), this.snapTooltip));
              var s = this.showTooltipAtDataItem(i);
              if (s) return s;
              if (!this.tooltipText) return;
            }

            this.hideTooltip();
          }, e.prototype.getAdjustedXLocation = function (t, e) {
            return t.locations[e];
          }, e.prototype.getAdjustedYLocation = function (t, e) {
            return t.locations[e];
          }, e.prototype.showTooltipAtDataItem = function (t) {
            var e,
                i,
                n = this.chart.cursor;
            if (n && n.hideSeriesTooltipsOnSelection && n.selection.visible && n.downPoint) this.hideTooltip();else if (this.returnBulletDefaultState(t), t && t.visible) {
              if (this.updateLegendValue(t), this.cursorTooltipEnabled) {
                this.tooltipDataItem = t;
                var r = this.tooltipXField,
                    s = this.tooltipYField;

                if (S(t[r]) && S(t[s])) {
                  var a = this.getPoint(t, r, s, this.getAdjustedXLocation(t, r), this.getAdjustedYLocation(t, s));

                  if (a) {
                    if (this.tooltipX = a.x, this.tooltipY = a.y, this._prevTooltipDataItem != t && (this.dispatchImmediately("tooltipshownat", {
                      type: "tooltipshownat",
                      target: this,
                      dataItem: t
                    }), this._prevTooltipDataItem = t), this.cursorHoverEnabled) try {
                      for (var l = o(t.sprites), h = l.next(); !h.done; h = l.next()) {
                        var u = h.value;
                        !u.parent.visible || u.isHidden || u.__disabled || u.disabled || u.isHiding || (u.isHover = !0);
                      }
                    } catch (t) {
                      e = {
                        error: t
                      };
                    } finally {
                      try {
                        h && !h.done && (i = l["return"]) && i.call(l);
                      } finally {
                        if (e) throw e.error;
                      }
                    }
                    return this.showTooltip() ? Wi({
                      x: a.x,
                      y: a.y
                    }, this) : void 0;
                  }
                }
              }
            } else this.updateLegendValue(t, !0);
          }, e.prototype.returnBulletDefaultState = function (t) {
            if (this._prevTooltipDataItem && this._prevTooltipDataItem != t) try {
              for (var e = o(this._prevTooltipDataItem.sprites), i = e.next(); !i.done; i = e.next()) {
                var n = i.value;
                n.isDisposed() ? this._prevTooltipDataItem = void 0 : n.isHover = !1;
              }
            } catch (t) {
              r = {
                error: t
              };
            } finally {
              try {
                i && !i.done && (s = e["return"]) && s.call(e);
              } finally {
                if (r) throw r.error;
              }
            }
            var r, s;
          }, e.prototype.shouldCreateBullet = function (t, e) {
            var i = e.xField;
            S(i) || (i = this.xField);
            var n = e.yField;
            if (S(n) || (n = this.yField), this.xAxis instanceof eh && !t.hasValue([i]) || this.yAxis instanceof eh && !t.hasValue([n])) return !1;

            if (e.disabled) {
              var r = e.propertyFields.disabled,
                  s = t.dataContext;
              return !(!s || !1 !== s[r]);
            }

            return !0;
          }, e.prototype.positionBullet = function (e) {
            t.prototype.positionBullet.call(this, e);
            var i = e.dataItem,
                n = e.xField;
            S(n) || (n = this.xField);
            var r = e.yField;
            if (S(r) || (r = this.yField), this.xAxis instanceof eh && !i.hasValue([n]) || this.yAxis instanceof eh && !i.hasValue([r])) e.visible = !1;else {
              var s = this.getBulletLocationX(e, n),
                  o = this.getBulletLocationY(e, r);

              if (this.getPoint(i, n, r, s, o)) {
                var a = this.xOpenField,
                    l = this.yOpenField,
                    h = this.xAxis,
                    u = this.yAxis,
                    p = void 0,
                    c = void 0;

                if (h instanceof rh) {
                  A(s) || (s = 0);
                  var d = void 0,
                      f = i.getWorkingValue(n);

                  if (a ? d = i.getWorkingValue(a) : h == this.baseAxis && (d = h.baseValue), A(d) || (d = f), (d += x = i.getValue("valueX", "stack")) == (f += x)) {
                    var g = h.baseInterval;
                    d = ur(new Date(d), g.timeUnit, g.count, h.dateFormatter.firstDayOfWeek).getTime(), f = hr(new Date(d), g.timeUnit, g.count).getTime();
                  }

                  var y = void 0;
                  y = h == this.baseAxis ? d + (f - d) * s : d + (f - d) * (1 - s), p = h.valueToPosition(y);
                } else if (h instanceof eh) A(s) || (s = 0), d = void 0, f = i.getWorkingValue(n), d = a ? i.getWorkingValue(a) : h.baseValue, y = (d += x = i.getValue("valueX", "stack")) + ((f += x) - d) * (1 - s), p = h.valueToPosition(y);else if (h instanceof lh) {
                  var m = this.getAdjustedXLocation(i, n),
                      v = this.getAdjustedXLocation(i, a);
                  p = h.categoryToPosition(i[n], m);
                  var b = void 0;
                  a && (b = h.categoryToPosition(i[a], v)), A(b) || (b = 1), p = b + (p - b) * s;
                }

                if (u instanceof rh) A(o) || (o = 0), d = void 0, f = i.getWorkingValue(r), l ? d = i.getWorkingValue(l) : u == this.baseAxis && (d = u.baseValue), A(d) || (d = f), (d += x = i.getValue("valueY", "stack")) == (f += x) && (g = u.baseInterval, d = ur(new Date(d), g.timeUnit, g.count, u.dateFormatter.firstDayOfWeek).getTime(), f = hr(new Date(d), g.timeUnit, g.count).getTime()), y = void 0, y = u == this.baseAxis ? d + (f - d) * o : d + (f - d) * (1 - o), c = u.valueToPosition(y);else if (u instanceof eh) {
                  A(o) || (o = 0);
                  var x;
                  d = void 0, f = i.getWorkingValue(r), d = l ? i.getWorkingValue(l) : u.baseValue, y = (d += x = i.getValue("valueY", "stack")) + ((f += x) - d) * (1 - o), c = u.valueToPosition(y);
                } else if (u instanceof lh) {
                  c = u.categoryToPosition(i[r], o);

                  var _ = this.getAdjustedYLocation(i, r),
                      P = this.getAdjustedYLocation(i, l);

                  c = u.categoryToPosition(i[r], _);
                  var w = void 0;
                  l && (w = u.categoryToPosition(i[l], P)), A(w) || (w = 1), c = w + (c - w) * o;
                }
                e.visible = !0, this.positionBulletReal(e, p, c);
              } else e.visible = !1;
            }
          }, e.prototype.positionBulletReal = function (t, e, i) {
            t.x = this.xAxis.renderer.positionToPoint(e, i).x, t.y = this.yAxis.renderer.positionToPoint(i, e).y;
          }, e.prototype.getBulletLocationX = function (t, e) {
            var i = t.locationX,
                n = t.dataItem;
            return A(i) || (i = n.workingLocations[e]), i;
          }, e.prototype.getBulletLocationY = function (t, e) {
            var i = t.locationY,
                n = t.dataItem;
            return A(i) || (i = n.workingLocations[e]), i;
          }, Object.defineProperty(e.prototype, "stacked", {
            get: function get() {
              return this.getPropertyValue("stacked");
            },
            set: function set(t) {
              this.setPropertyValue("stacked", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "snapTooltip", {
            get: function get() {
              return this.getPropertyValue("snapTooltip");
            },
            set: function set(t) {
              this.setPropertyValue("snapTooltip", t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.show = function (e) {
            var i,
                n = this;
            this.xAxis instanceof eh && this.xAxis != this.baseAxis && (i = this._xValueFields), this.yAxis instanceof eh && this.yAxis != this.baseAxis && (i = this._yValueFields);
            var r,
                s = this.startIndex,
                o = this.endIndex,
                a = 0,
                l = this.defaultState.transitionDuration;
            A(e) && (l = e), pe(me(this.dataItems.iterator()), function (t) {
              var e = t[0],
                  h = t[1];
              n.sequencedInterpolation && l > 0 && (a = n.sequencedInterpolationDelay * e + l * (e - s) / (o - s)), r = h.show(l, a, i);
            }), this.dataSets.each(function (t, e) {
              e != n.dataItems && e.each(function (t) {
                t.events.disable(), t.show(0, 0, i), t.events.enable();
              });
            }), this.mainDataSet != this.dataItems && this.mainDataSet.each(function (t) {
              t.events.disable(), t.show(0, 0, i), t.events.enable();
            });
            var h = t.prototype.show.call(this, e);
            return r && !r.isFinished() && (h = r), h;
          }, e.prototype.hide = function (e) {
            var i,
                n,
                r = this,
                s = this.xAxis;
            s instanceof eh && s != this.baseAxis && (i = this._xValueFields, n = this.stacked || s.minZoomed < s.baseValue && s.maxZoomed > s.baseValue || this.stackedSeries ? s.baseValue : s.min);
            var o = this.yAxis;
            o instanceof eh && o != this.baseAxis && (i = this._yValueFields, n = this.stacked || o.minZoomed < o.baseValue && o.maxZoomed > o.baseValue || this.stackedSeries ? o.baseValue : o.min);
            var a = this.startIndex,
                l = this.endIndex,
                h = this.hiddenState.transitionDuration;
            A(e) && (h = e);
            var u,
                p = 0;
            pe(me(this.dataItems.iterator()), function (t) {
              var e = t[0],
                  s = t[1];
              0 == h ? s.hide(0, 0, n, i) : (r.sequencedInterpolation && h > 0 && (p = r.sequencedInterpolationDelay * e + h * (e - a) / (l - a)), u = s.hide(h, p, n, i));
            });
            var c = t.prototype.hide.call(this, h);
            return c && !c.isFinished() && c.delay(p), u && !u.isFinished() && (c = u), this.validateDataElements(), c;
          }, e.prototype.handleDataItemWorkingValueChange = function (e, i) {
            t.prototype.handleDataItemWorkingValueChange.call(this, e, i), pe(this.baseAxis.series.iterator(), function (t) {
              t.stacked && t.invalidateProcessedData();
            });
          }, e.prototype.getStackValue = function (t, e) {
            var i = this;

            if (this.stacked) {
              var n,
                  r = this.chart,
                  s = r.series.indexOf(this);
              this.xAxis != this.baseAxis && this.xAxis instanceof eh && (n = this.xField), this.yAxis != this.baseAxis && this.yAxis instanceof eh && (n = this.yField), n && (t.setCalculatedValue(n, 0, "stack"), ue(r.series.range(0, s).backwards().iterator(), function (r) {
                if (r.xAxis == i.xAxis && r.yAxis == i.yAxis) {
                  r.stackedSeries = i;
                  var s = r.dataItems.getIndex(t.index);

                  if (s && s.hasValue(i._xValueFields) && s.hasValue(i._yValueFields)) {
                    var o = t.getValue(n),
                        a = void 0,
                        l = s.getValue(n) + s.getValue(n, "stack");
                    if (a = e ? s.getWorkingValue(n) + s.getValue(n, "stack") : s.getValue(n) + s.getValue(n, "stack"), o >= 0 && l >= 0 || o < 0 && l < 0) return t.setCalculatedValue(n, a, "stack"), !1;
                  } else if (!r.stacked) return !1;
                }

                return !0;
              }));
            }
          }, Object.defineProperty(e.prototype, "xField", {
            get: function get() {
              return this._xField;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "yField", {
            get: function get() {
              return this._yField;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "xOpenField", {
            get: function get() {
              return this._xOpenField;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "yOpenField", {
            get: function get() {
              return this._yOpenField;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "tooltipXField", {
            get: function get() {
              return this._tooltipXField ? this._tooltipXField : this._xField;
            },
            set: function set(t) {
              this._tooltipXField = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "tooltipYField", {
            get: function get() {
              return this._tooltipYField ? this._tooltipYField : this._yField;
            },
            set: function set(t) {
              this._tooltipYField = t;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.min = function (t) {
            return this._tmin.getKey(t.uid);
          }, e.prototype.max = function (t) {
            return this._tmax.getKey(t.uid);
          }, e.prototype.selectionMin = function (t) {
            var e = this._smin.getKey(t.uid);

            return A(e) || (e = this.min(t)), e;
          }, e.prototype.selectionMax = function (t) {
            var e = this._smax.getKey(t.uid);

            return A(e) || (e = this.max(t)), e;
          }, e.prototype.processConfig = function (e) {
            if (e) {
              if (S(e.baseAxis) && T(e.baseAxis) && (this.map.hasKey(e.baseAxis) ? e.baseAxis = this.map.getKey(e.baseAxis) : (this.processingErrors.push("[XYSeries (" + (this.name || "unnamed") + ')] No axis with id "' + e.baseAxis + '" found for `baseAxis`.'), delete e.baseAxis)), S(e.xAxis) && T(e.xAxis) && (this.map.hasKey(e.xAxis) ? e.xAxis = this.map.getKey(e.xAxis) : (this.processingErrors.push("[XYSeries (" + (this.name || "unnamed") + ')] No axis with id "' + e.xAxis + '" found for `xAxis`.'), delete e.xAxis)), S(e.yAxis) && T(e.yAxis) && (this.map.hasKey(e.yAxis) ? e.yAxis = this.map.getKey(e.yAxis) : (this.processingErrors.push("[XYSeries (" + (this.name || "unnamed") + ')] No axis with id "' + e.yAxis + '" found for `yAxis`.'), delete e.yAxis)), S(e.axisRanges) && F(e.axisRanges)) for (var i = 0, n = e.axisRanges.length; i < n; i++) {
                var r = e.axisRanges[i];
                S(r.type) || (r.type = "AxisDataItem"), S(r.axis) && T(r.axis) && this.map.hasKey(r.axis) ? r.component = this.map.getKey(r.axis) : S(r.component) && T(r.component) && this.map.hasKey(r.component) && (r.component = this.map.getKey(r.component));
              }
              S(e.dataFields) && V(e.dataFields) || this.processingErrors.push("`dataFields` is not set for series [" + (this.name || "unnamed") + "]");
            }

            t.prototype.processConfig.call(this, e);
          }, e.prototype.getPoint = function (t, e, i, n, r, s, o) {
            var a = this.xAxis.getX(t, e, n),
                l = this.yAxis.getY(t, i, r);
            return {
              x: a = R(a, -1e5, 1e5),
              y: l = R(l, -1e5, 1e5)
            };
          }, e.prototype.updateItemReaderText = function () {
            if (!this._itemReaderTextChanged) {
              var t = "";
              Qt(this.dataFields, function (e, i) {
                t += "{" + e + "} ";
              }), this.itemReaderText = t, this._itemReaderTextChanged = !1;
            }
          }, Object.defineProperty(e.prototype, "cursorTooltipEnabled", {
            get: function get() {
              return this.getPropertyValue("cursorTooltipEnabled");
            },
            set: function set(t) {
              this.setPropertyValue("cursorTooltipEnabled", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "cursorHoverEnabled", {
            get: function get() {
              return this.getPropertyValue("cursorHoverEnabled");
            },
            set: function set(t) {
              this.setPropertyValue("cursorHoverEnabled", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "excludeFromTotal", {
            get: function get() {
              return this.getPropertyValue("excludeFromTotal");
            },
            set: function set(t) {
              this.setPropertyValue("excludeFromTotal", t);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(El);

        Fs.registeredClasses.XYSeries = uh, Fs.registeredClasses.XYSeriesDataItem = hh;

        var ph = function (t) {
          function e() {
            var e = t.call(this) || this;
            e._chart = new ys(), e.className = "XYChartScrollbar";
            var i = new ta();
            e.padding(0, 0, 0, 0);
            var n = e.createChild(dh);
            n.shouldClone = !1, n.margin(0, 0, 0, 0), n.padding(0, 0, 0, 0), n.interactionsEnabled = !1, e._scrollbarChart = n, e._disposers.push(e._scrollbarChart), e.minHeight = 60, e.minWidth = 60;
            var r = e.createChild(ba);
            r.shouldClone = !1, r.setElement(e.paper.add("path")), r.fill = i.getFor("background"), r.fillOpacity = .8, r.interactionsEnabled = !1, r.isMeasured = !1, r.toBack(), e._unselectedOverlay = r, e._disposers.push(e._unselectedOverlay), n.toBack(), e.background.cornerRadius(0, 0, 0, 0);
            var s = e.thumb.background;
            s.cornerRadius(0, 0, 0, 0), s.fillOpacity = 0, s.fill = i.getFor("background");
            var o = s.states.getKey("hover");
            o && (o.properties.fillOpacity = .2);
            var a = s.states.getKey("down");
            return a && (a.properties.fillOpacity = .4), e._disposers.push(e._chart), e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "series", {
            get: function get() {
              return this._series || (this._series = new Ns(), this._disposers.push(this._series.events.on("inserted", this.handleSeriesAdded, this, !1)), this._disposers.push(this._series.events.on("removed", this.handleSeriesRemoved, this, !1))), this._series;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.handleSeriesAdded = function (t) {
            var e = t.newValue,
                i = this.scrollbarChart;
            i.zoomOutButton.disabled = !0, this.chart = e.chart;
            var n = !0,
                r = !0;
            pe(this.series.iterator(), function (t) {
              t != e && (t.xAxis == e.xAxis && (n = !1), t.yAxis == e.yAxis && (r = !1));
            });
            var s = new ta(),
                o = e.clone();

            if (n) {
              var a = e.xAxis.clone();

              if (i.xAxes.moveValue(a), a.title.disabled = !0, a.rangeChangeDuration = 0, a.id = e.uid, (c = a.renderer).ticks.template.disabled = !0, c.inside = !0, c.labels.template.inside = !0, c.line.strokeOpacity = 0, c.minLabelPosition = .02, c.maxLabelPosition = .98, c.line.disabled = !0, c.axisFills.template.disabled = !0, c.baseGrid.disabled = !0, c.grid.template.strokeOpacity = .05, c.minWidth = void 0, c.minHeight = void 0, c.padding(0, 0, 0, 0), c.chart = i, c.margin(0, 0, 0, 0), a.width = h(100), c.labels.template.fillOpacity = .5, a instanceof rh) {
                var l = a,
                    u = e.xAxis;
                a.groupCount = 5 * u.groupCount, this._disposers.push(l.clonedFrom.events.on("extremeschanged", function () {
                  A(l.clonedFrom.minDefined) && (l.min = l.clonedFrom.minDefined), A(l.clonedFrom.maxDefined) && (l.max = l.clonedFrom.maxDefined);
                }, void 0, !1));
              } else if (a instanceof eh) {
                var p = a;

                this._disposers.push(p.clonedFrom.events.on("extremeschanged", function () {
                  A(p.clonedFrom.minDefined) && (p.min = p.clonedFrom.min), A(p.clonedFrom.maxDefined) && (p.max = p.clonedFrom.max);
                }, void 0, !1));
              }

              o.xAxis = a;
            } else this.scrollbarChart.xAxes.each(function (t) {
              t.clonedFrom == e.xAxis && (o.xAxis = t);
            });

            if (r) {
              var c,
                  d = e.yAxis.clone();

              if (i.yAxes.moveValue(d), d.title.disabled = !0, d.rangeChangeDuration = 0, (c = d.renderer).ticks.template.disabled = !0, c.inside = !0, c.labels.template.inside = !0, c.line.strokeOpacity = 0, c.minLabelPosition = .02, c.maxLabelPosition = .98, c.line.disabled = !0, c.axisFills.template.disabled = !0, c.grid.template.stroke = s.getFor("background"), c.baseGrid.disabled = !0, c.grid.template.strokeOpacity = .05, c.minWidth = void 0, c.minHeight = void 0, c.chart = i, c.padding(0, 0, 0, 0), c.margin(0, 0, 0, 0), d.height = h(100), c.labels.template.fillOpacity = .5, o.yAxis = d, d instanceof rh) {
                var f = d;
                u = e.yAxis, d.groupCount = 5 * u.groupCount, this._disposers.push(f.clonedFrom.events.on("extremeschanged", function () {
                  A(f.clonedFrom.minDefined) && (f.min = f.clonedFrom.minDefined), A(f.clonedFrom.maxDefined) && (f.max = f.clonedFrom.maxDefined);
                }));
              } else if (d instanceof eh) {
                var g = d;

                this._disposers.push(g.clonedFrom.events.on("extremeschanged", function () {
                  A(g.clonedFrom.minDefined) && (g.min = g.clonedFrom.minDefined), A(g.clonedFrom.maxDefined) && (g.max = g.clonedFrom.maxDefined);
                }));
              }
            } else this.scrollbarChart.yAxes.each(function (t) {
              t.clonedFrom == e.yAxis && (o.yAxis = t);
            });

            o.rangeChangeDuration = 0, o.interpolationDuration = 0, o.defaultState.transitionDuration = 0, o.showOnInit = !1, this._disposers.push(o.events.on("validated", this.zoomOutAxes, this, !1)), this._disposers.push(e.events.on("datavalidated", function () {
              o.data != e.data && (o.data = e.data);
            }, void 0, !1)), o.defaultState.properties.visible = !0, o.filters.push(new wl()), i.series.push(o), this.updateByOrientation();
          }, e.prototype.updateByOrientation = function () {
            var t = this;
            this._scrollbarChart && (pe(this._scrollbarChart.xAxes.iterator(), function (e) {
              var i = e.renderer;
              "vertical" == t.orientation ? (i.grid.template.disabled = !0, i.labels.template.disabled = !0, i.minGridDistance = 10) : (i.grid.template.disabled = !1, i.labels.template.disabled = !1, i.minGridDistance = e.clonedFrom.renderer.minGridDistance);
            }), pe(this._scrollbarChart.yAxes.iterator(), function (e) {
              var i = e.renderer;
              "horizontal" == t.orientation ? (i.grid.template.disabled = !0, i.labels.template.disabled = !0, i.minGridDistance = 10) : (i.grid.template.disabled = !1, i.labels.template.disabled = !1, i.minGridDistance = e.clonedFrom.renderer.minGridDistance);
            }));
          }, e.prototype.handleSeriesRemoved = function (t) {
            t.oldValue.events.off("validated", this.zoomOutAxes, this);
          }, Object.defineProperty(e.prototype, "scrollbarChart", {
            get: function get() {
              return this._scrollbarChart;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "chart", {
            get: function get() {
              return this._chart.get();
            },
            set: function set(t) {
              this._chart.get() !== t && (this._chart.set(t, t.events.on("datavalidated", this.handleDataChanged, this, !1)), this.handleDataChanged(), this._scrollbarChart.dataProvider = t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "unselectedOverlay", {
            get: function get() {
              return this._unselectedOverlay;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.handleDataChanged = function () {
            this.chart.data != this.scrollbarChart.data && (this.scrollbarChart.data = this.chart.data);
          }, e.prototype.zoomOutAxes = function () {
            var t = this.scrollbarChart;
            pe(t.xAxes.iterator(), function (t) {
              t.zoom({
                start: 0,
                end: 1
              }, !0, !0);
            }), pe(t.yAxes.iterator(), function (t) {
              t.zoom({
                start: 0,
                end: 1
              }, !0, !0);
            });
          }, e.prototype.updateThumb = function () {
            if (t.prototype.updateThumb.call(this), this._unselectedOverlay) {
              var e = this.thumb,
                  i = e.pixelX || 0,
                  n = e.pixelY || 0,
                  r = e.pixelWidth || 0,
                  s = e.pixelHeight || 0,
                  o = "";
              "horizontal" == this.orientation ? (o = kr({
                x: -1,
                y: 0,
                width: i,
                height: s
              }), o += kr({
                x: i + r,
                y: 0,
                width: (this.pixelWidth || 0) - i - r,
                height: s
              })) : (o = kr({
                x: 0,
                y: 0,
                width: r,
                height: n
              }), o += kr({
                x: 0,
                y: n + s,
                width: r,
                height: (this.pixelHeight || 0) - n - s
              })), this._unselectedOverlay.path = o;
            }
          }, e.prototype.processConfig = function (e) {
            if (e && S(e.series) && F(e.series)) for (var i = 0, n = e.series.length; i < n; i++) {
              var r = e.series[i];

              if (S(r) && T(r)) {
                if (!this.map.hasKey(r)) throw Error("XYChartScrollbar error: Series with id `" + r + "` does not exist.");
                e.series[i] = this.map.getKey(r);
              }
            }
            t.prototype.processConfig.call(this, e);
          }, e;
        }($a);

        Fs.registeredClasses.XYChartScrollbar = ph;

        var ch = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "XYChartDataItem", e.applyTheme(), e;
          }

          return n(e, t), e;
        }(Rl),
            dh = function (t) {
          function e() {
            var e = t.call(this) || this;
            e._axisRendererX = sh, e._axisRendererY = Jl, e._seriesPoints = [], e.className = "XYChart", e.maskBullets = !0, e.arrangeTooltips = !0;
            var i = e.chartContainer;
            i.layout = "vertical", e.padding(15, 15, 15, 15);
            var n = i.createChild(_a);
            n.shouldClone = !1, n.layout = "vertical", n.width = h(100), n.zIndex = 1, e.topAxesContainer = n;
            var r = i.createChild(_a);
            r.shouldClone = !1, r.layout = "horizontal", r.width = h(100), r.height = h(100), r.zIndex = 0, e.yAxesAndPlotContainer = r;
            var s = i.createChild(_a);
            s.shouldClone = !1, s.width = h(100), s.layout = "vertical", s.zIndex = 1, e.bottomAxesContainer = s;
            var o = r.createChild(_a);
            o.shouldClone = !1, o.layout = "horizontal", o.height = h(100), o.contentAlign = "right", o.events.on("transformed", e.updateXAxesMargins, e, !1), o.zIndex = 1, e.leftAxesContainer = o;
            var a = r.createChild(_a);
            a.shouldClone = !1, a.height = h(100), a.width = h(100), a.background.fillOpacity = 0, e.plotContainer = a, e.mouseWheelBehavior = "none", e._cursorContainer = a;
            var l = r.createChild(_a);
            l.shouldClone = !1, l.layout = "horizontal", l.height = h(100), l.zIndex = 1, l.events.on("transformed", e.updateXAxesMargins, e, !1), e.rightAxesContainer = l, e.seriesContainer.parent = a, e.bulletsContainer.parent = a;
            var u = a.createChild(ul);
            u.shouldClone = !1, u.align = "right", u.valign = "top", u.zIndex = Number.MAX_SAFE_INTEGER, u.marginTop = 5, u.marginRight = 5, u.hide(0), e.zoomOutButton = u;
            var p = e.plotContainer.createChild(_a);
            return p.shouldClone = !1, p.width = h(100), p.height = h(100), p.isMeasured = !1, p.zIndex = 4, p.layout = "none", e.axisBulletsContainer = p, e._bulletMask = e.plotContainer, e.applyTheme(), e;
          }

          return n(e, t), e.prototype.applyInternalDefaults = function () {
            t.prototype.applyInternalDefaults.call(this), this.zoomOutButton.exportable = !1, S(this.readerTitle) || (this.readerTitle = this.language.translate("X/Y chart"));
          }, e.prototype.draw = function () {
            t.prototype.draw.call(this), this.seriesContainer.toFront(), this.bulletsContainer.toFront(), this.maskBullets && (this.bulletsContainer.mask = this._bulletMask), this.updateSeriesLegend();
          }, e.prototype.updatePlotElements = function () {
            pe(this.series.iterator(), function (t) {
              t.invalidate();
            });
          }, e.prototype.validateData = function () {
            0 == this._parseDataFrom && (pe(this.xAxes.iterator(), function (t) {
              t.dataChangeUpdate();
            }), pe(this.yAxes.iterator(), function (t) {
              t.dataChangeUpdate();
            }), pe(this.series.iterator(), function (t) {
              t.dataChangeUpdate();
            })), t.prototype.validateData.call(this);
          }, e.prototype.updateXAxesMargins = function () {
            var t = this.leftAxesContainer.measuredWidth,
                e = this.rightAxesContainer.measuredWidth,
                i = this.bottomAxesContainer;
            i.paddingLeft == t && i.paddingRight == e || (i.paddingLeft = t, i.paddingRight = e);
            var n = this.topAxesContainer;
            n.paddingLeft == t && n.paddingRight == e || (n.paddingLeft = t, n.paddingRight = e);
          }, e.prototype.reinit = function () {
            t.prototype.reinit.call(this), this.series.each(function (t) {
              t.appeared = !1;
            });
          }, e.prototype.handleXAxisChange = function (t) {
            this.updateXAxis(t.target);
          }, e.prototype.handleYAxisChange = function (t) {
            this.updateYAxis(t.target);
          }, e.prototype.processXAxis = function (t) {
            var e = t.newValue;
            e.chart = this, e.renderer || (e.renderer = new this._axisRendererX(), e.renderer.observe(["opposite", "inside", "inversed", "minGridDistance"], this.handleXAxisChange, this, !1)), e.axisLetter = "X", e.events.on("startendchanged", this.handleXAxisRangeChange, this, !1), e.dataProvider = this, this.events.on("beforedatavalidated", function () {
              e.resetFlags();
            }, this, !1), this.updateXAxis(e.renderer), this.processAxis(e);
          }, e.prototype.processYAxis = function (t) {
            var e = t.newValue;
            e.chart = this, e.renderer || (e.renderer = new this._axisRendererY(), e.renderer.observe(["opposite", "inside", "inversed", "minGridDistance"], this.handleYAxisChange, this, !1)), e.axisLetter = "Y", e.events.on("startendchanged", this.handleYAxisRangeChange, this, !1), e.dataProvider = this, this.events.on("beforedatavalidated", function () {
              e.resetFlags();
            }), this.updateYAxis(e.renderer), this.processAxis(e);
          }, e.prototype.handleXAxisRangeChange = function () {
            var t = this.getCommonAxisRange(this.xAxes);
            this.scrollbarX && this.zoomAxes(this.xAxes, t, !0), this.toggleZoomOutButton(), this.updateScrollbar(this.scrollbarX, t);
          }, e.prototype.toggleZoomOutButton = function () {
            if (this.zoomOutButton) {
              var t = !1;
              ue(this.xAxes.iterator(), function (e) {
                if (e.toggleZoomOutButton) if (e.maxZoomCount > 0) {
                  var i = e.maxZoomFactor / e.maxZoomCount;
                  if (j(e.end - e.start, 3) < 1 / i) return t = !0, !1;
                } else if (0 != j(e.start, 3) || 1 != j(e.end, 3)) return t = !0, !1;
                return !0;
              }), ue(this.yAxes.iterator(), function (e) {
                if (e.toggleZoomOutButton) {
                  if (e.maxZoomCount > 0) {
                    var i = e.maxZoomFactor / e.maxZoomCount;
                    if (j(e.end - e.start, 3) < 1 / i) return t = !0, !1;
                  } else if (0 != j(e.start, 3) || 1 != j(e.end, 3)) return t = !0, !1;

                  return !0;
                }
              }), this.seriesAppeared || (t = !1), t ? this.zoomOutButton.show() : this.zoomOutButton.hide();
            }
          }, e.prototype.seriesAppeared = function () {
            var t = !1;
            return pe(this.series.iterator(), function (e) {
              if (!e.appeared) return t = !1, !1;
            }), t;
          }, e.prototype.handleYAxisRangeChange = function () {
            var t = this.getCommonAxisRange(this.yAxes);
            this.scrollbarY && this.zoomAxes(this.yAxes, t, !0), this.toggleZoomOutButton(), this.updateScrollbar(this.scrollbarY, t);
          }, e.prototype.updateScrollbar = function (t, e) {
            t && (t.skipRangeEvents(), t.start = e.start, t.end = e.end);
          }, e.prototype.getCommonAxisRange = function (t) {
            var e, i;
            return pe(t.iterator(), function (t) {
              var n = t.start,
                  r = t.end;
              t.renderer.inversed && (n = 1 - t.end, r = 1 - t.start), (!A(e) || n < e) && (e = n), (!A(i) || r > i) && (i = r);
            }), {
              start: e,
              end: i
            };
          }, e.prototype.updateXAxis = function (t) {
            var e = t.axis;
            t.opposite ? (e.parent = this.topAxesContainer, e.toFront()) : (e.parent = this.bottomAxesContainer, e.toBack()), e.renderer && e.renderer.processRenderer();
          }, e.prototype.updateYAxis = function (t) {
            var e = t.axis;
            t.opposite ? (e.parent = this.rightAxesContainer, e.toBack()) : (e.parent = this.leftAxesContainer, e.toFront()), e.renderer && e.renderer.processRenderer();
          }, e.prototype.processAxis = function (t) {
            var e = this;
            t instanceof lh && this._dataUsers.moveValue(t);
            var i = t.renderer;
            i.gridContainer.parent = this.plotContainer, i.gridContainer.toBack(), i.breakContainer.parent = this.plotContainer, i.breakContainer.toFront(), i.breakContainer.zIndex = 10, t.addDisposer(new fs(function () {
              e.dataUsers.removeValue(t);
            })), i.bulletsContainer.parent = this.axisBulletsContainer, this.plotContainer.events.on("maxsizechanged", function () {
              e.inited && (t.invalidateDataItems(), e.updateSeriesMasks());
            }, t, !1);
          }, e.prototype.updateSeriesMasks = function () {
            rn() && this.series.each(function (t) {
              var e = t.mainContainer.mask;
              t.mainContainer.mask = void 0, t.mainContainer.mask = e;
            });
          }, Object.defineProperty(e.prototype, "xAxes", {
            get: function get() {
              return this._xAxes || (this._xAxes = new Ns(), this._xAxes.events.on("inserted", this.processXAxis, this, !1), this._xAxes.events.on("removed", this.handleAxisRemoval, this, !1)), this._xAxes;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.handleAxisRemoval = function (t) {
            var e = t.oldValue;
            this.dataUsers.removeValue(e), e.autoDispose && e.dispose();
          }, Object.defineProperty(e.prototype, "yAxes", {
            get: function get() {
              return this._yAxes || (this._yAxes = new Ns(), this._yAxes.events.on("inserted", this.processYAxis, this, !1), this._yAxes.events.on("removed", this.handleAxisRemoval, this, !1)), this._yAxes;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.handleSeriesAdded = function (e) {
            try {
              t.prototype.handleSeriesAdded.call(this, e);
              var i = e.newValue;
              0 != this.xAxes.length && 0 != this.yAxes.length || (Fs.removeFromInvalidComponents(i), i.dataInvalid = !1), i.xAxis, i.yAxis, null == i.fill && (i.fill = this.colors.next()), null == i.stroke && (i.stroke = i.fill);
            } catch (t) {
              this.raiseCriticalError(t);
            }
          }, Object.defineProperty(e.prototype, "cursor", {
            get: function get() {
              return this._cursor;
            },
            set: function set(t) {
              this._cursor != t && (this._cursor && this.removeDispose(this._cursor), this._cursor = t, t && (this._disposers.push(t), t.chart = this, t.shouldClone = !1, t.parent = this._cursorContainer, t.events.on("cursorpositionchanged", this.handleCursorPositionChange, this, !1), t.events.on("zoomstarted", this.handleCursorZoomStart, this, !1), t.events.on("zoomended", this.handleCursorZoomEnd, this, !1), t.events.on("panstarted", this.handleCursorPanStart, this, !1), t.events.on("panning", this.handleCursorPanning, this, !1), t.events.on("panended", this.handleCursorPanEnd, this, !1), t.events.on("behaviorcanceled", this.handleCursorCanceled, this, !1), t.events.on("hidden", this.handleHideCursor, this, !1), t.zIndex = Number.MAX_SAFE_INTEGER - 1, this.tapToActivate && this.setTapToActivate(this.tapToActivate)));
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.handleCursorPositionChange = function () {
            var t = this.cursor;

            if (t.visible && !t.isHiding) {
              var e = this.cursor.xPosition,
                  i = this.cursor.yPosition;
              this.showSeriesTooltip({
                x: e,
                y: i
              });
              var n = void 0,
                  r = t.snapToSeries;

              if (r) {
                r.baseAxis == r.xAxis && (n = r.yAxis), r.baseAxis == r.yAxis && (n = r.xAxis);
                var s = r.xAxis,
                    o = r.yAxis;

                if (s instanceof eh && !(s instanceof rh) && o instanceof eh && !(o instanceof rh)) {
                  var a,
                      l = 1 / 0;
                  r.dataItems.each(function (t) {
                    var n = s.toGlobalPosition(s.getPositionX(t, "valueX")) * s.axisFullLength,
                        r = o.toGlobalPosition(o.getPositionY(t, "valueY")) * o.axisFullLength,
                        h = Math.sqrt(Math.pow(e * s.axisFullLength - n, 2) + Math.pow(i * o.axisFullLength - r, 2));
                    h < l && (l = h, a = t);
                  }), a && r.showTooltipAtDataItem(a);
                }
              }

              this._seriesPoints = [], this._cursorXPosition != e && this.showAxisTooltip(this.xAxes, e, n), this._cursorYPosition != i && this.showAxisTooltip(this.yAxes, i, n), this.sortSeriesTooltips(this._seriesPoints);
            }
          }, e.prototype.handleHideCursor = function () {
            this.hideObjectTooltip(this.xAxes), this.hideObjectTooltip(this.yAxes), this.hideObjectTooltip(this.series), this._cursorXPosition = void 0, this._cursorYPosition = void 0, this.updateSeriesLegend();
          }, e.prototype.updateSeriesLegend = function () {
            pe(this.series.iterator(), function (t) {
              t.updateLegendValue();
            });
          }, e.prototype.hideObjectTooltip = function (t) {
            pe(t.iterator(), function (t) {
              t.hideTooltip(0);
            });
          }, e.prototype.showSeriesTooltip = function (t) {
            var e = this;

            if (t) {
              var i = [];
              this.series.each(function (n) {
                if (n.xAxis instanceof rh && n.xAxis.snapTooltip || n.yAxis instanceof rh && n.yAxis.snapTooltip) ;else {
                  var r = n.showTooltipAtPosition(t.x, t.y);
                  r && (n.tooltip.setBounds({
                    x: 0,
                    y: 0,
                    width: e.pixelWidth,
                    height: e.pixelHeight
                  }), i.push({
                    series: n,
                    point: r
                  }));
                }
              }), this.arrangeTooltips && this.sortSeriesTooltips(i);
            } else this.series.each(function (t) {
              t.hideTooltip();
            });
          }, e.prototype.sortSeriesTooltips = function (t) {
            var e = Wi({
              x: -.5,
              y: -.5
            }, this.plotContainer),
                i = Wi({
              x: this.plotContainer.pixelWidth + .5,
              y: this.plotContainer.pixelHeight + .5
            }, this.plotContainer),
                n = 0,
                r = [];
            mt(t, function (t) {
              var s = t.point;
              s && ct(s, {
                x: e.x,
                y: e.y,
                width: i.x - e.x,
                height: i.y - e.y
              }) && (r.push({
                point: s,
                series: t.series
              }), n += s.y);
            }), (t = r).sort(function (t, e) {
              return t.point.y > e.point.y ? 1 : t.point.y < e.point.y ? -1 : 0;
            });
            var s = n / t.length,
                o = Gi({
              x: 0,
              y: 0
            }, this.svgContainer.SVGContainer).y;

            if (t.length > 0) {
              var a = e.y,
                  l = i.y;
              Zi({
                x: 0,
                y: a
              }, this);
              var h = !1;
              if (s > a + (l - a) / 2) for (var u = l, p = t.length - 1; p >= 0; p--) {
                var c = (y = t[p].series).tooltip,
                    d = t[p].point.y;

                if (c.setBounds({
                  x: 0,
                  y: -o,
                  width: this.pixelWidth,
                  height: u + o
                }), c.invalid && c.validate(), c.toBack(), (u = Wi({
                  x: 0,
                  y: c.label.pixelY - c.pixelY + d - c.pixelMarginTop
                }, c).y) < -o) {
                  h = !0;
                  break;
                }
              }
              if (s <= a + (l - a) / 2 || h) for (var f = a, g = (p = 0, t.length); p < g; p++) {
                var y = t[p].series;
                d = t[p].point.y, (c = y.tooltip).setBounds({
                  x: 0,
                  y: f,
                  width: this.pixelWidth,
                  height: l
                }), c.invalid && c.validate(), c.toBack(), f = Wi({
                  x: 0,
                  y: c.label.pixelY + c.label.measuredHeight - c.pixelY + d + c.pixelMarginBottom
                }, c).y;
              }
            }
          }, e.prototype.showAxisTooltip = function (t, e, i) {
            var n = this;
            pe(t.iterator(), function (t) {
              t != i && (n.dataItems.length > 0 || t.dataItems.length > 0) && t.showTooltipAtPosition(e);
            });
          }, e.prototype.getUpdatedRange = function (t, e) {
            if (t) {
              var i,
                  n,
                  r = t.renderer.inversed;
              t.renderer instanceof Jl && (e = U(e)), r ? (U(e), i = 1 - t.end, n = 1 - t.start) : (i = t.start, n = t.end);
              var s = n - i;
              return {
                start: i + e.start * s,
                end: i + e.end * s
              };
            }
          }, e.prototype.handleCursorZoomEnd = function (t) {
            var e = this.cursor,
                i = e.behavior;

            if ("zoomX" == i || "zoomXY" == i) {
              var n = e.xRange;
              n && this.xAxes.length > 0 && ((n = this.getUpdatedRange(this.xAxes.getIndex(0), n)).priority = "start", this.zoomAxes(this.xAxes, n));
            }

            if ("zoomY" == i || "zoomXY" == i) {
              var r = e.yRange;
              r && this.yAxes.length > 0 && ((r = this.getUpdatedRange(this.yAxes.getIndex(0), r)).priority = "start", this.zoomAxes(this.yAxes, r));
            }

            this.handleHideCursor();
          }, e.prototype.handleCursorPanStart = function (t) {
            var e = this.xAxes.getIndex(0);
            e && (this._panStartXRange = {
              start: e.start,
              end: e.end
            });
            var i = this.yAxes.getIndex(0);
            i && (this._panStartYRange = {
              start: i.start,
              end: i.end
            });
          }, e.prototype.handleCursorPanEnd = function (t) {
            var e = this.cursor.behavior;

            if (this._panEndXRange && ("panX" == e || "panXY" == e)) {
              var i = 0;
              (n = this._panEndXRange).start < 0 && (i = n.start), n.end > 1 && (i = n.end - 1), this.zoomAxes(this.xAxes, {
                start: n.start - i,
                end: n.end - i
              }, !1, !0), this._panEndXRange = void 0, this._panStartXRange = void 0;
            }

            if (this._panEndYRange && ("panY" == e || "panXY" == e)) {
              var n;
              i = 0, (n = this._panEndYRange).start < 0 && (i = n.start), n.end > 1 && (i = n.end - 1), this.zoomAxes(this.yAxes, {
                start: n.start - i,
                end: n.end - i
              }, !1, !0), this._panEndYRange = void 0, this._panStartYRange = void 0;
            }
          }, e.prototype.handleCursorCanceled = function () {
            this._panEndXRange = void 0, this._panStartXRange = void 0;
          }, e.prototype.handleCursorPanning = function (t) {
            var e = this.cursor,
                i = e.behavior,
                n = e.maxPanOut;

            if (this._panStartXRange && ("panX" == i || "panXY" == i)) {
              var r = this._panStartXRange,
                  s = e.xRange,
                  o = this.getCommonAxisRange(this.xAxes),
                  a = r.end - r.start,
                  l = s.start * (o.end - o.start),
                  h = Math.max(-n, l + r.start),
                  u = Math.min(l + r.end, 1 + n);
              h <= 0 && (u = h + a), u >= 1 && (h = u - a);
              var p = {
                start: h,
                end: u
              };
              this._panEndXRange = p, this.zoomAxes(this.xAxes, p, !1, !1, e.maxPanOut);
            }

            !this._panStartYRange || "panY" != i && "panXY" != i || (r = this._panStartYRange, s = e.yRange, o = this.getCommonAxisRange(this.yAxes), a = r.end - r.start, l = s.start * (o.end - o.start), h = Math.max(-n, l + r.start), u = Math.min(l + r.end, 1 + n), h <= 0 && (u = h + a), u >= 1 && (h = u - a), p = {
              start: h,
              end: u
            }, this._panEndYRange = p, this.zoomAxes(this.yAxes, p, !1, !1, e.maxPanOut)), this.handleHideCursor();
          }, e.prototype.handleCursorZoomStart = function (t) {}, Object.defineProperty(e.prototype, "scrollbarX", {
            get: function get() {
              return this._scrollbarX;
            },
            set: function set(t) {
              var e = this;
              this._scrollbarX && this.removeDispose(this._scrollbarX), this._scrollbarX = t, t && (this._disposers.push(t), t.parent = this.topAxesContainer, t.shouldClone = !1, t.startGrip.exportable = !1, t.endGrip.exportable = !1, t.toBack(), t.orientation = "horizontal", t.events.on("rangechanged", this.handleXScrollbarChange, this, !1), t.adapter.add("positionValue", function (t) {
                var i = e.xAxes.getIndex(0);
                return i && (t.value = i.getPositionLabel(t.position)), t;
              }));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "scrollbarY", {
            get: function get() {
              return this._scrollbarY;
            },
            set: function set(t) {
              var e = this;
              this._scrollbarY && this.removeDispose(this._scrollbarY), this._scrollbarY = t, t && (this._disposers.push(t), t.parent = this.rightAxesContainer, t.startGrip.exportable = !1, t.shouldClone = !1, t.endGrip.exportable = !1, t.toFront(), t.orientation = "vertical", t.events.on("rangechanged", this.handleYScrollbarChange, this, !1), t.adapter.add("positionValue", function (t) {
                var i = e.yAxes.getIndex(0);
                return i && (t.value = i.getPositionLabel(t.position)), t;
              }));
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.handleXScrollbarChange = function (t) {
            if (this.inited) {
              var e = t.target,
                  i = e.range;
              0 == i.start && (i.priority = "start"), 1 == i.end && (i.priority = "end"), i = this.zoomAxes(this.xAxes, i), e.fixRange(i);
            }
          }, e.prototype.handleYScrollbarChange = function (t) {
            if (this.inited) {
              var e = t.target,
                  i = e.range;
              1 == i.end && (i.priority = "end"), 0 == i.start && (i.priority = "start"), i = this.zoomAxes(this.yAxes, i), e.fixRange(i);
            }
          }, e.prototype.zoomAxes = function (t, e, i, n, r) {
            var s = {
              start: 0,
              end: 1
            };
            return this.showSeriesTooltip(), this.dataInvalid || pe(t.iterator(), function (t) {
              if (t.renderer.inversed && (e = U(e)), t.hideTooltip(0), n) if (t instanceof lh) {
                var o = t.getCellEndPosition(0) - t.getCellStartPosition(0);
                e.start = t.roundPosition(e.start + o / 2 - t.startLocation * o, t.startLocation), e.end = t.roundPosition(e.end - o / 2 + (1 - t.endLocation) * o, t.endLocation);
              } else e.start = t.roundPosition(e.start + 1e-4, 0, t.startLocation), e.end = t.roundPosition(e.end + 1e-4, 0, t.endLocation);
              var a = t.zoom(e, i, i, r);
              t.renderer.inversed && (a = U(a)), s = a;
            }), s;
          }, Object.defineProperty(e.prototype, "maskBullets", {
            get: function get() {
              return this.getPropertyValue("maskBullets");
            },
            set: function set(t) {
              this.setPropertyValue("maskBullets", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "arrangeTooltips", {
            get: function get() {
              return this.getPropertyValue("arrangeTooltips");
            },
            set: function set(t) {
              this.setPropertyValue("arrangeTooltips", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.handleWheel = function (t) {
            var e = this.plotContainer,
                i = Hi(Ui(t.point, this.htmlContainer, this.svgContainer.cssScale), e),
                n = t.shift.y,
                r = this.getCommonAxisRange(this.xAxes),
                s = this.getCommonAxisRange(this.yAxes),
                o = this.mouseWheelBehavior;

            if ("panX" == o || "panXY" == o) {
              var a = r.end - r.start,
                  l = Math.max(-0, r.start + .05 * n / 100),
                  h = Math.min(r.end + .05 * n / 100, 1);
              l <= 0 && (h = l + a), h >= 1 && (l = h - a), this.zoomAxes(this.xAxes, {
                start: l,
                end: h
              });
            }

            if ("panY" == o || "panXY" == o) {
              n *= -1;
              var u = s.end - s.start,
                  p = Math.max(-0, s.start + .05 * n / 100),
                  c = Math.min(s.end + .05 * n / 100, 1);
              p <= 0 && (c = p + u), c >= 1 && (p = c - u), this.zoomAxes(this.yAxes, {
                start: p,
                end: c
              });
            }

            if ("zoomX" == o || "zoomXY" == o) {
              var d = i.x / e.maxWidth;
              l = Math.max(-0, r.start - .05 * n / 100 * d), l = Math.min(l, r.start + (r.end - r.start) * d - .05 * .05), h = Math.min(r.end + .05 * n / 100 * (1 - d), 1), h = Math.max(h, r.start + (r.end - r.start) * d + .05 * .05), this.zoomAxes(this.xAxes, {
                start: l,
                end: h
              });
            }

            if ("zoomY" == o || "zoomXY" == o) {
              var f = i.y / e.maxHeight;
              p = Math.max(-0, s.start - .05 * n / 100 * (1 - f)), p = Math.min(p, s.start + (s.end - s.start) * f - .05 * .05), c = Math.min(s.end + .05 * n / 100 * f, 1), c = Math.max(c, s.start + (s.end - s.start) * f + .05 * .05), this.zoomAxes(this.yAxes, {
                start: p,
                end: c
              });
            }
          }, Object.defineProperty(e.prototype, "mouseWheelBehavior", {
            get: function get() {
              return this.getPropertyValue("mouseWheelBehavior");
            },
            set: function set(t) {
              this.setPropertyValue("mouseWheelBehavior", t) && ("none" != t ? (this._mouseWheelDisposer = this.plotContainer.events.on("wheel", this.handleWheel, this, !1), this._disposers.push(this._mouseWheelDisposer)) : this._mouseWheelDisposer && (this.plotContainer.wheelable = !1, this.plotContainer.hoverable = !1, this._mouseWheelDisposer.dispose()));
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.dataSourceDateFields = function (e) {
            var i = this;
            return e = t.prototype.dataSourceDateFields.call(this, e), pe(this.series.iterator(), function (t) {
              e = i.populateDataSourceFields(e, t.dataFields, ["dateX", "dateY", "openDateX", "openDateY"]);
            }), e;
          }, e.prototype.dataSourceNumberFields = function (e) {
            var i = this;
            return e = t.prototype.dataSourceDateFields.call(this, e), pe(this.series.iterator(), function (t) {
              e = i.populateDataSourceFields(e, t.dataFields, ["valueX", "valueY", "openValueX", "openValueY"]);
            }), e;
          }, e.prototype.processConfig = function (e) {
            if (e) {
              var i = [],
                  n = [];
              if (S(e.xAxes) && F(e.xAxes)) for (var r = 0, s = e.xAxes.length; r < s; r++) {
                if (!e.xAxes[r].type) throw Error("[XYChart error] No type set for xAxes[" + r + "].");

                if (S(e.xAxes[r].axisRanges)) {
                  for (var o = 0, a = e.xAxes[r].axisRanges.length; o < a; o++) S((h = e.xAxes[r].axisRanges[o]).date) && T(h.date) && (h.date = this.dateFormatter.parse(h.date)), S(h.endDate) && T(h.endDate) && (h.endDate = this.dateFormatter.parse(h.endDate));

                  i.push({
                    axisRanges: e.xAxes[r].axisRanges,
                    index: r
                  }), delete e.xAxes[r].axisRanges;
                }
              }
              if (S(e.yAxes) && F(e.yAxes)) for (r = 0, s = e.yAxes.length; r < s; r++) {
                if (!e.yAxes[r].type) throw Error("[XYChart error] No type set for yAxes[" + r + "].");

                if (S(e.yAxes[r].axisRanges)) {
                  o = 0;

                  for (var l = e.yAxes[r].axisRanges.length; o < l; o++) {
                    var h;
                    S((h = e.yAxes[r].axisRanges[o]).date) && T(h.date) && (h.date = this.dateFormatter.parse(h.date)), S(h.endDate) && T(h.endDate) && (h.endDate = this.dateFormatter.parse(h.endDate));
                  }

                  n.push({
                    axisRanges: e.yAxes[r].axisRanges,
                    index: r
                  }), delete e.yAxes[r].axisRanges;
                }
              }
              if (S(e.series) && F(e.series)) for (r = 0, s = e.series.length; r < s; r++) e.series[r].type = e.series[r].type || "LineSeries";
              if (S(e.cursor) && !S(e.cursor.type) && (e.cursor.type = "XYCursor"), S(e.scrollbarX) && !S(e.scrollbarX.type) && (e.scrollbarX.type = "Scrollbar"), S(e.scrollbarY) && !S(e.scrollbarY.type) && (e.scrollbarY.type = "Scrollbar"), t.prototype.processConfig.call(this, e), n.length) for (r = 0, s = n.length; r < s; r++) this.yAxes.getIndex(n[r].index).config = {
                axisRanges: n[r].axisRanges
              };
              if (i.length) for (r = 0, s = i.length; r < s; r++) this.xAxes.getIndex(i[r].index).config = {
                axisRanges: i[r].axisRanges
              };
            }
          }, e.prototype.configOrder = function (e, i) {
            return e == i ? 0 : "scrollbarX" == e ? 1 : "scrollbarX" == i ? -1 : "scrollbarY" == e ? 1 : "scrollbarY" == i ? -1 : "cursor" == e ? 1 : "cursor" == i ? -1 : "series" == e ? 1 : "series" == i ? -1 : t.prototype.configOrder.call(this, e, i);
          }, e.prototype.createSeries = function () {
            return new uh();
          }, Object.defineProperty(e.prototype, "zoomOutButton", {
            get: function get() {
              return this._zoomOutButton;
            },
            set: function set(t) {
              var e = this;
              this._zoomOutButton = t, t && t.events.on("hit", function () {
                e.zoomAxes(e.xAxes, {
                  start: 0,
                  end: 1
                }), e.zoomAxes(e.yAxes, {
                  start: 0,
                  end: 1
                });
              }, void 0, !1);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.copyFrom = function (e) {
            var i = this;
            e.xAxes.each(function (t) {
              i.xAxes.push(t.clone());
            }), e.yAxes.each(function (t) {
              i.yAxes.push(t.clone());
            }), t.prototype.copyFrom.call(this, e), e.cursor && (this.cursor = e.cursor.clone()), e.scrollbarX && (this.scrollbarX = e.scrollbarX.clone()), e.scrollbarY && (this.scrollbarY = e.scrollbarY.clone());
          }, e.prototype.disposeData = function () {
            t.prototype.disposeData.call(this);
            var e = this.scrollbarX;
            e && e instanceof ph && e.scrollbarChart.disposeData();
            var i = this.scrollbarY;
            i && i instanceof ph && i.scrollbarChart.disposeData(), this.xAxes.each(function (t) {
              t.disposeData();
            }), this.yAxes.each(function (t) {
              t.disposeData();
            });
          }, e.prototype.addData = function (e, i) {
            this.scrollbarX instanceof ph && this.addScrollbarData(this.scrollbarX, i), this.scrollbarY instanceof ph && this.addScrollbarData(this.scrollbarY, i), t.prototype.addData.call(this, e, i);
          }, e.prototype.addScrollbarData = function (t, e) {
            var i = t.scrollbarChart;
            i._parseDataFrom = i.data.length, i.invalidateData();
          }, e.prototype.removeScrollbarData = function (t, e) {
            var i = t.scrollbarChart;

            if (A(e)) {
              for (; e > 0;) {
                var n = this.dataItems.getIndex(0);
                n && i.dataItems.remove(n), i.dataUsers.each(function (t) {
                  var e = t.dataItems.getIndex(0);
                  e && t.dataItems.remove(e);
                }), i._parseDataFrom--, e--;
              }

              i.invalidateData();
            }
          }, e.prototype.removeData = function (e) {
            this.scrollbarX instanceof ph && this.removeScrollbarData(this.scrollbarX, e), this.scrollbarY instanceof ph && this.removeScrollbarData(this.scrollbarY, e), t.prototype.removeData.call(this, e);
          }, e.prototype.setTapToActivate = function (e) {
            t.prototype.setTapToActivate.call(this, e), this.cursor && (this.cursor.interactions.isTouchProtected = e, this.plotContainer.interactions.isTouchProtected = e);
          }, e.prototype.handleTapToActivate = function () {
            t.prototype.handleTapToActivate.call(this), this.cursor && (this.cursor.interactions.isTouchProtected = !1, this.plotContainer.interactions.isTouchProtected = !1);
          }, e.prototype.handleTapToActivateDeactivation = function () {
            t.prototype.handleTapToActivateDeactivation.call(this), this.cursor && (this.cursor.interactions.isTouchProtected = !0, this.plotContainer.interactions.isTouchProtected = !0);
          }, e;
        }(Bl);

        Fs.registeredClasses.XYChart = dh, Ta.push({
          relevant: Aa.maybeXS,
          state: function state(t, e) {
            if (t instanceof dh && t.scrollbarX) {
              var i = t.states.create(e);
              return t.scrollbarX.states.create(e).properties.disabled = !0, i;
            }

            return null;
          }
        }), Ta.push({
          relevant: Aa.maybeXS,
          state: function state(t, e) {
            if (t instanceof dh && t.scrollbarY) {
              var i = t.states.create(e);
              return t.scrollbarY.states.create(e).properties.disabled = !0, i;
            }

            return null;
          }
        });

        var fh = function (t) {
          function e() {
            var e = t.call(this) || this;
            e.className = "LineSeriesSegment", e.isMeasured = !1, e.interactionsEnabled = !1, e.layout = "none";
            var i = e.createChild(ba);
            e.fillSprite = i, i.shouldClone = !1, i.setElement(e.paper.add("path")), i.isMeasured = !1, e._disposers.push(i);
            var n = e.createChild(ba);
            return e.strokeSprite = n, n.shouldClone = !1, n.fill = Je(), n.setElement(e.paper.add("path")), n.isMeasured = !1, e._disposers.push(n), e;
          }

          return n(e, t), e.prototype.drawSegment = function (t, e, i, n) {
            if (!this.disabled) if (t.length > 0 && e.length > 0) {
              var r = xr({
                x: t[0].x - .2,
                y: t[0].y - .2
              }) + xr(t[0]) + new sl(i, n).smooth(t);
              0 == this.strokeOpacity || 0 == this.strokeSprite.strokeOpacity || (this.strokeSprite.path = r), (this.fillOpacity > 0 || this.fillSprite.fillOpacity > 0) && (r += _r(e[0]) + new sl(i, n).smooth(e), r += _r(t[0]), r += " Z", this.fillSprite.path = r);
            } else this.fillSprite.path = "", this.strokeSprite.path = "";
          }, e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e);
            var i = this.strokeSprite;
            ne(e, i.properties, va), i.events.copyFrom(e.strokeSprite.events), i.fillOpacity = 0;
            var n = this.fillSprite;
            ne(e, n.properties, va), n.events.copyFrom(e.fillSprite.events), n.strokeOpacity = 0;
          }, e;
        }(_a);

        Fs.registeredClasses.LineSeriesSegment = fh;

        var gh = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "LineSeriesDataItem", e;
          }

          return n(e, t), e;
        }(hh),
            yh = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.minDistance = .5, e.segments = new Hs(e.createSegment()), e.segments.template.applyOnClones = !0, e._disposers.push(new Bs(e.segments)), e._disposers.push(e.segments.template), e._segmentsIterator = new Ss(e.segments, function () {
              return e.segments.create();
            }), e._segmentsIterator.createNewItems = !0, e.className = "LineSeries", e.strokeOpacity = 1, e.fillOpacity = 0, e.connect = !0, e.tensionX = 1, e.tensionY = 1, e.autoGapCount = 1.1, e.segmentsContainer = e.mainContainer.createChild(_a), e.segmentsContainer.isMeasured = !1, e.bulletsContainer.toFront(), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.applyInternalDefaults = function () {
            t.prototype.applyInternalDefaults.call(this), S(this.readerTitle) || (this.readerTitle = this.language.translate("Line Series"));
          }, e.prototype.createSegment = function () {
            return new fh();
          }, e.prototype.createDataItem = function () {
            return new gh();
          }, e.prototype.setInitialWorkingValues = function (t) {
            var e = this._yAxis.get(),
                i = this._xAxis.get();

            if (this.appeared && this.visible) {
              var n = this.dataItems.getIndex(t.index - 1);

              if (t.component = this, this.baseAxis == i && e instanceof eh) {
                var r = e.minZoomed;
                n && (r = n.values.valueY.workingValue), t.setWorkingValue("valueY", r, 0), t.setWorkingValue("valueY", t.values.valueY.value), i instanceof rh && (t.setWorkingLocation("dateX", t.locations.dateX - 1, 0), t.setWorkingLocation("dateX", t.locations.dateX));
              }

              if (this.baseAxis == e && i instanceof eh) {
                var s = i.minZoomed;
                n && (s = n.values.valueX.workingValue), t.setWorkingValue("valueX", s, 0), t.setWorkingValue("valueX", t.values.valueX.value), e instanceof rh && (t.setWorkingLocation("dateY", t.locations.dateX - 1, 0), t.setWorkingLocation("dateY", t.locations.dateY));
              }
            } else this.baseAxis == i && e instanceof eh && (i instanceof rh && t.setWorkingLocation("dateX", t.locations.dateX), i instanceof lh && t.setWorkingLocation("categoryX", t.locations.categoryX)), this.baseAxis == e && i instanceof eh && (e instanceof rh && t.setWorkingLocation("dateY", t.locations.dateY), e instanceof lh && t.setWorkingLocation("categoryY", t.locations.categoryY));
          }, e.prototype.updateLegendValue = function (e, i) {
            t.prototype.updateLegendValue.call(this, e, i), e && e.segment && (this.tooltipColorSource = e.segment);
          }, e.prototype.validate = function () {
            var e = this;
            t.prototype.validate.call(this), this._segmentsIterator.reset(), this.openSegmentWrapper(this._adjustedStartIndex), pe(this.axisRanges.iterator(), function (t) {
              e.openSegmentWrapper(e._adjustedStartIndex, t);
            }), pe(this._segmentsIterator.iterator(), function (t) {
              t.__disabled = !0;
            });
          }, e.prototype.sliceData = function () {
            for (var t = this.startIndex, e = this.endIndex, i = this.startIndex - 1; i >= 0; i--) if ((r = this.dataItems.getIndex(i)) && r.hasValue(this._xValueFields) && r.hasValue(this._yValueFields)) {
              t = i;
              break;
            }

            this._adjustedStartIndex = this.findAdjustedIndex(t, ["stroke", "strokeWidth", "strokeDasharray", "strokeOpacity", "fill", "fillOpacity", "opacity"]), i = this.endIndex;

            for (var n = this.dataItems.length; i < n; i++) {
              var r;

              if ((r = this.dataItems.getIndex(i)) && r.hasValue(this._xValueFields) && r.hasValue(this._yValueFields)) {
                e = i + 1;
                break;
              }
            }

            this._workingStartIndex = t, this._workingEndIndex = e;
          }, e.prototype.findAdjustedIndex = function (t, e) {
            var i = this,
                n = this.propertyFields,
                r = t;
            return mt(e, function (e) {
              if (S(n[e])) for (var s = r; s >= 0; s--) {
                var o = i.dataItems.getIndex(s);

                if (o && S(o.properties[e])) {
                  t > s && (t = s);
                  break;
                }
              }
            }), t;
          }, e.prototype.openSegmentWrapper = function (t, e) {
            var i = {
              index: t,
              axisRange: e
            };

            do {
              i = this.openSegment(i.index, i.axisRange);
            } while (i);
          }, e.prototype.openSegment = function (t, e) {
            var i = !1,
                n = [];
            t = Math.min(t, this.dataItems.length);
            var r,
                s = Math.min(this._workingEndIndex, this.dataItems.length);
            this._workingEndIndex = Math.min(this._workingEndIndex, this.dataItems.length);

            var o = !1,
                a = this._segmentsIterator.getFirst();

            a.__disabled = !1, e ? (a.parent = e.contents, ne(e.contents, a, va)) : (ne(this, a, va), a.filters.clear(), a.parent = this.segmentsContainer);

            for (var l = this.connect, h = !1, u = t; u < s; u++) {
              var p = this.dataItems.getIndex(u);
              if (p.segment = a, p.hasProperties && (u == t ? this.updateSegmentProperties(p.properties, a) : o = this.updateSegmentProperties(p.properties, a, !0)), p.hasValue(this._xValueFields) && p.hasValue(this._yValueFields)) this.addPoints(n, p, this.xField, this.yField), h = !0;else {
                if (u == t) continue;

                if (!l && h) {
                  r = u;
                  break;
                }
              }

              if (r = u, this.baseAxis instanceof rh) {
                var c = this.dataItems.getIndex(u + 1);

                if (c && this.baseAxis.makeGap(c, p)) {
                  i = !0;
                  break;
                }
              }

              if (o) break;
            }

            return this.closeSegment(a, n, t, r, e, i);
          }, e.prototype.addPoints = function (t, e, i, n, r) {
            var s = this.getPoint(e, i, n, e.workingLocations[i], e.workingLocations[n]);
            r || (e.point = s), t.push(s);
          }, e.prototype.closeSegment = function (t, e, i, n, r, s) {
            var o = [];
            if (this.dataFields[this._xOpenField] || this.dataFields[this._yOpenField] || this.stacked) for (var a = n; a >= i; a--) {
              var l = this.dataItems.getIndex(a);
              l.hasValue(this._xValueFields) && l.hasValue(this._yValueFields) && this.addPoints(o, l, this.xOpenField, this.yOpenField, !0);
            } else {
              var h = this.baseAxis,
                  u = e.length,
                  p = this.xAxis,
                  c = this.yAxis;
              u > 0 && (h == p ? (o.push({
                x: e[u - 1].x,
                y: c.basePoint.y
              }), o.push({
                x: e[0].x,
                y: c.basePoint.y
              })) : (o.push({
                x: p.basePoint.x,
                y: e[u - 1].y
              }), o.push({
                x: p.basePoint.x,
                y: e[0].y
              })));
            }
            return this.drawSegment(t, e, o), s && n++, n < this._workingEndIndex - 1 ? {
              index: n,
              axisRange: r
            } : null;
          }, e.prototype.drawSegment = function (t, e, i) {
            t.drawSegment(e, i, this.tensionX, this.tensionY);
          }, e.prototype.updateSegmentProperties = function (t, e, i) {
            var n = !1;
            return Qt(t, function (t, r) {
              if (S(r)) {
                var s = e[t],
                    o = void 0;
                s && (o = s.toString ? s.toString() : s);
                var a = void 0;
                r && (a = r.toString ? r.toString() : r), s == r || null != o && null != a && o == a || (i || (e[t] = r), n = !0);
              }
            }), n;
          }, Object.defineProperty(e.prototype, "connect", {
            get: function get() {
              return this.getPropertyValue("connect");
            },
            set: function set(t) {
              this.setPropertyValue("connect", t) && this.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "tensionX", {
            get: function get() {
              return this.getPropertyValue("tensionX");
            },
            set: function set(t) {
              this.setPropertyValue("tensionX", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "tensionY", {
            get: function get() {
              return this.getPropertyValue("tensionY");
            },
            set: function set(t) {
              this.setPropertyValue("tensionY", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.createLegendMarker = function (t) {
            var e = this,
                i = t.pixelWidth,
                n = t.pixelHeight;
            t.disposeChildren();
            var r = t.createChild(Na);

            if (r.shouldClone = !1, ne(this, r, va), r.x2 = i, r.y = n / 2, r.visible = !0, this.fillOpacity > 0) {
              var s = t.createChild(xa);
              ne(this, s, va), s.width = i, s.height = n, s.y = 0, s.strokeOpacity = 0, s.visible = !0, r.y = 0;
            }

            var o = t.dataItem;
            o.color = this.stroke, o.colorOrig = this.fill, ue(this.bullets.iterator(), function (r) {
              if (r instanceof Vl && !r.copyToLegendMarker) return !1;
              var s = !1;

              if (r instanceof _a && pe(r.children.iterator(), function (t) {
                if (t instanceof Ma) return s = !0, !0;
              }), !s) {
                var o = r.clone();
                return o.parent = t, o.isMeasured = !0, o.tooltipText = void 0, o.x = i / 2, e.fillOpacity > 0 ? o.y = 0 : o.y = n / 2, o.visible = !0, S(o.fill) || (o.fill = e.fill), S(o.stroke) || (o.stroke = e.stroke), !1;
              }
            });
          }, e.prototype.disposeData = function () {
            t.prototype.disposeData.call(this), this.segments.clear();
          }, Object.defineProperty(e.prototype, "autoGapCount", {
            get: function get() {
              return this.getPropertyValue("autoGapCount");
            },
            set: function set(t) {
              this.setPropertyValue("autoGapCount", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(uh);

        Fs.registeredClasses.LineSeries = yh, Fs.registeredClasses.LineSeriesDataItem = gh;

        var mh = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "RadarSeriesDataItem", e.setLocation("dateX", 0, 0), e.setLocation("dateY", 0, 0), e.setLocation("categoryX", 0, 0), e.setLocation("categoryY", 0, 0), e.applyTheme(), e;
          }

          return n(e, t), e;
        }(gh),
            vh = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "RadarSeries", e.connectEnds = !0, e.applyTheme(), e;
          }

          return n(e, t), e.prototype.validate = function () {
            this.chart.invalid && this.chart.validate(), t.prototype.validate.call(this);
          }, e.prototype.createDataItem = function () {
            return new mh();
          }, e.prototype.getPoint = function (t, e, i, n, r, s, o) {
            s || (s = "valueX"), o || (o = "valueY");
            var a = K({
              x: this.yAxis.getX(t, i, r, o),
              y: this.yAxis.getY(t, i, r, o)
            });
            0 == a && (a = 1e-5);
            var l = this.xAxis.getAngle(t, e, n, s),
                h = this.chart.startAngle,
                u = this.chart.endAngle;
            return l < h || l > u ? void 0 : {
              x: a * H(l),
              y: a * B(l)
            };
          }, e.prototype.addPoints = function (t, e, i, n, r) {
            var s = this.getPoint(e, i, n, e.locations[i], e.locations[n]);
            s && t.push(s);
          }, e.prototype.getMaskPath = function () {
            var t = this.yAxis.renderer;
            return Sr(t.startAngle, t.endAngle - t.startAngle, t.pixelRadius, t.pixelInnerRadius);
          }, e.prototype.drawSegment = function (e, i, n) {
            var r = this.yAxis.renderer;
            this.connectEnds && 360 == Math.abs(r.endAngle - r.startAngle) && (this.dataFields[this._xOpenField] || this.dataFields[this._yOpenField] || this.stacked) && (i.push(i[0]), n.length > 0 && n.unshift(n[n.length - 1])), t.prototype.drawSegment.call(this, e, i, n);
          }, Object.defineProperty(e.prototype, "connectEnds", {
            get: function get() {
              return this.getPropertyValue("connectEnds");
            },
            set: function set(t) {
              this.setPropertyValue("connectEnds", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.positionBulletReal = function (t, e, i) {
            var n = this.xAxis,
                r = this.yAxis;
            (e < n.start || e > n.end || i < r.start || i > r.end) && (t.visible = !1), t.moveTo(this.xAxis.renderer.positionToPoint(e, i));
          }, e;
        }(yh);

        Fs.registeredClasses.RadarSeries = vh, Fs.registeredClasses.RadarSeriesDataItem = mh;

        var bh = function (t) {
          function e(e) {
            var i = t.call(this, e) || this;
            return i.className = "AxisFillCircular", i.element = i.paper.add("path"), i.radius = h(100), i.applyTheme(), i;
          }

          return n(e, t), e.prototype.draw = function () {
            if (t.prototype.draw.call(this), !this.__disabled && !this.disabled && this.axis) {
              var e = this.axis.renderer;
              this.fillPath = e.getPositionRangePath(this.startPosition, this.endPosition, this.radius, S(this.innerRadius) ? this.innerRadius : e.innerRadius, this.cornerRadius), this.path = this.fillPath;
            }
          }, Object.defineProperty(e.prototype, "innerRadius", {
            get: function get() {
              return this.getPropertyValue("innerRadius");
            },
            set: function set(t) {
              this.setPercentProperty("innerRadius", t, !0, !1, 10, !1);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "radius", {
            get: function get() {
              return this.getPropertyValue("radius");
            },
            set: function set(t) {
              this.setPercentProperty("radius", t, !0, !1, 10, !1);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "cornerRadius", {
            get: function get() {
              return this.getPropertyValue("cornerRadius");
            },
            set: function set(t) {
              this.setPropertyValue("cornerRadius", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(zl);

        Fs.registeredClasses.AxisFillCircular = bh;

        var xh = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "GridCircular", e.pixelPerfect = !1, e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "innerRadius", {
            get: function get() {
              return this.getPropertyValue("innerRadius");
            },
            set: function set(t) {
              this.setPercentProperty("innerRadius", t, !0, !1, 10, !1);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "radius", {
            get: function get() {
              return this.getPropertyValue("radius");
            },
            set: function set(t) {
              this.setPercentProperty("radius", t, !0, !1, 10, !1);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(Ul);

        Fs.registeredClasses.GridCircular = xh;

        var _h = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.fdx = 0, e.fdy = 0, e.className = "AxisLabelCircular", e.padding(0, 0, 0, 0), e.location = .5, e.radius = 0, e.isMeasured = !1, e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "relativeRotation", {
            get: function get() {
              return this.getPropertyValue("relativeRotation");
            },
            set: function set(t) {
              if (this.setPropertyValue("relativeRotation", t, !0), !S(t)) {
                this.rotation = void 0;
                var e = this.dataItem;
                e && e.component && e.component.invalidateDataItems();
              }
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "radius", {
            get: function get() {
              return this.getPropertyValue("radius");
            },
            set: function set(t) {
              this.setPercentProperty("radius", t, !0, !1, 10, !1);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "bent", {
            get: function get() {
              return this.getPropertyValue("bent");
            },
            set: function set(t) {
              this.setPropertyValue("bent", t, !0), this.setPropertyValue("wrap", !1), this.setPropertyValue("horizontalCenter", "none"), this.setPropertyValue("verticalCenter", "none"), t && (this.textAlign = "middle");
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.pixelRadius = function (t) {
            var e = 1;
            return this.inside && (e = -1), hi(this.radius, t) * e;
          }, e.prototype.pixelRadiusY = function (t, e) {
            var i = 1;
            this.inside && (i = -1);
            var n = this.radius;
            return A(n) ? hi(n *= e / t, t) * i : hi(n, e) * i;
          }, e.prototype.fixPosition = function (t, e, i, n, r) {
            A(i) || (i = e), A(n) || (n = 0), A(r) || (r = 0);
            var s = {
              x: e * H(t),
              y: i * B(t)
            };
            this.invalid && this.validate();
            var o = !1,
                a = this.radius;
            a instanceof hs && a.value < 0 ? o = !0 : a < 0 && (o = !0);
            var l = this.relativeRotation,
                h = this.pixelRadius(e);

            if (this.bent) {
              var u = {
                x: e * H(t + 180),
                y: i * B(t + 180)
              };
              return this.path = xr(u) + Or(t + 180, 360, e + h, i + h * i / e), void (this.locationOnPath = .5);
            }

            if (A(l)) {
              this.horizontalCenter = "none", this.verticalCenter = "none", t = ht(t, -180, 180);
              var p = this.bbox.width,
                  c = this.bbox.height,
                  d = this.pixelPaddingBottom,
                  f = this.pixelPaddingTop,
                  g = this.pixelPaddingLeft,
                  y = this.pixelPaddingRight;
              t > 90 || t < -90 ? -90 == l && (l = 90, p = 0) : (-90 == l && (c = -c), 90 == l && (l = -90, p = -g - y, c = -c - f - d)), this.rotation = l + t + 90;
              var m = B(l) / 2,
                  v = H(l) / 2,
                  b = this.rotation;
              this.dx = c * m * B(b) - p * v * H(b), this.dy = -c * m * H(b) - p * v * B(b), this.inside ? t > 90 || t < -90 ? h -= (d + f) * H(l) + (g + y) * B(l) : h += (d + this.bbox.height + f) * H(l) + (g + y + this.bbox.width) * B(l) : h += (c + d + f) * H(l) + (p + g + y) * B(l), s.x += H(t) * h, s.y += B(t) * h * i / e;
            } else this.horizontalCenter = "middle", this.verticalCenter = "middle", o ? (this.dx = 0, this.dy = 0, s.x = (e + h) * H(t), s.y = (i + h * i / e) * B(t)) : (this.dy = this._measuredHeight / 2 * B(t), this.dx = this._measuredWidth / 2 * H(t), s.x += H(t) * h, s.y += B(t) * h * i / e);

            s.x += n, s.y += r, this.fdx = this.dx, this.fdy = this.dy, this.moveTo(s);
          }, e;
        }(Gl);

        Fs.registeredClasses.AxisLabelCircular = _h;

        var Ph = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.pixelRadiusReal = 0, e.layout = "none", e.className = "AxisRendererCircular", e.isMeasured = !1, e.startAngle = -90, e.endAngle = 270, e.useChartAngles = !0, e.radius = h(100), e.isMeasured = !1, e.grid.template.location = 0, e.labels.template.location = 0, e.labels.template.radius = 15, e.ticks.template.location = 0, e.ticks.template.pixelPerfect = !1, e.tooltipLocation = 0, e.line.strokeOpacity = 0, e.applyTheme(), e;
          }

          return n(e, t), e.prototype.setAxis = function (e) {
            var i = this;
            t.prototype.setAxis.call(this, e), e.isMeasured = !1;
            var n = e.tooltip;
            n.adapter.add("dx", function (t, e) {
              var n = Hi({
                x: e.pixelX,
                y: e.pixelY
              }, i);
              return i.pixelRadius * Math.cos(Math.atan2(n.y, n.x)) - n.x;
            }), n.adapter.add("dy", function (t, e) {
              var n = Hi({
                x: e.pixelX,
                y: e.pixelY
              }, i);
              return i.pixelRadius * Math.sin(Math.atan2(n.y, n.x)) - n.y;
            });
          }, e.prototype.validate = function () {
            this.chart && this.chart.invalid && this.chart.validate(), t.prototype.validate.call(this);
          }, Object.defineProperty(e.prototype, "axisLength", {
            get: function get() {
              return 2 * Math.PI * this.pixelRadius;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "radius", {
            get: function get() {
              return this.getPropertyValue("radius");
            },
            set: function set(t) {
              this.setPercentProperty("radius", t, !1, !1, 10, !1) && this.axis && this.axis.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "pixelRadius", {
            get: function get() {
              return ui(this.radius, this.pixelRadiusReal) || 0;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "innerRadius", {
            get: function get() {
              return this.getPropertyValue("innerRadius");
            },
            set: function set(t) {
              this.setPercentProperty("innerRadius", t, !1, !1, 10, !1) && this.axis && this.axis.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "useChartAngles", {
            get: function get() {
              return this.getPropertyValue("useChartAngles");
            },
            set: function set(t) {
              this.setPropertyValue("useChartAngles", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "pixelInnerRadius", {
            get: function get() {
              return ui(this.innerRadius, this.pixelRadiusReal) || 0;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.positionToPoint = function (t, e) {
            A(e) || (e = 1);
            var i = this.positionToCoordinate(t),
                n = this.startAngle + (this.endAngle - this.startAngle) * i / this.axisLength,
                r = this.pixelRadius,
                s = this.pixelInnerRadius;
            return {
              x: H(n) * s + (r - s) * H(n) * e,
              y: B(n) * s + (r - s) * B(n) * e
            };
          }, e.prototype.positionToAngle = function (t) {
            var e = this.axis,
                i = (this.endAngle - this.startAngle) / (e.end - e.start);
            return j(e.renderer.inversed ? this.startAngle + (e.end - t) * i : this.startAngle + (t - e.start) * i, 3);
          }, e.prototype.updateAxisLine = function () {
            var t = this.pixelRadius,
                e = this.startAngle,
                i = this.endAngle - e;
            this.line.path = xr({
              x: t * H(e),
              y: t * B(e)
            }) + Or(e, i, t, t);
          }, e.prototype.updateGridElement = function (t, e, i) {
            e += (i - e) * t.location;
            var n = this.positionToPoint(e);

            if (A(n.x) && A(n.y) && t.element) {
              var r = ds * Math.atan2(n.y, n.x),
                  s = ui(S(t.radius) ? t.radius : h(100), this.pixelRadius),
                  o = ui(t.innerRadius, this.pixelRadius);
              t.zIndex = 0;
              var a = ui(A(o) ? o : this.innerRadius, this.pixelRadius, !0);
              t.path = xr({
                x: a * H(r),
                y: a * B(r)
              }) + _r({
                x: s * H(r),
                y: s * B(r)
              });
            }

            this.toggleVisibility(t, e, 0, 1);
          }, e.prototype.updateTickElement = function (t, e, i) {
            e += (i - e) * t.location;
            var n = this.positionToPoint(e);

            if (t.element) {
              var r = this.pixelRadius,
                  s = ds * Math.atan2(n.y, n.x),
                  o = t.length;
              t.inside && (o = -o), t.zIndex = 1, t.path = xr({
                x: r * H(s),
                y: r * B(s)
              }) + _r({
                x: (r + o) * H(s),
                y: (r + o) * B(s)
              });
            }

            this.toggleVisibility(t, e, 0, 1);
          }, e.prototype.updateBullet = function (t, e, i) {
            var n = .5;
            t instanceof $l && (n = t.location), e += (i - e) * n;
            var r = this.positionToPoint(e),
                s = this.pixelRadius,
                o = ds * Math.atan2(r.y, r.x);
            r = {
              x: s * H(o),
              y: s * B(o)
            }, this.positionItem(t, r), this.toggleVisibility(t, e, 0, 1);
          }, e.prototype.updateLabelElement = function (t, e, i, n) {
            S(n) || (n = t.location), e += (i - e) * n, t.fixPosition(this.positionToAngle(e), this.pixelRadius), t.zIndex = 2, this.toggleVisibility(t, e, this.minLabelPosition, this.maxLabelPosition);
          }, e.prototype.fitsToBounds = function (t) {
            return !0;
          }, Object.defineProperty(e.prototype, "startAngle", {
            get: function get() {
              return this.getPropertyValue("startAngle");
            },
            set: function set(t) {
              this.setPropertyValue("startAngle", t) && (this.invalidateAxisItems(), this.axis && this.axis.invalidateSeries());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "endAngle", {
            get: function get() {
              return this.getPropertyValue("endAngle");
            },
            set: function set(t) {
              this.setPropertyValue("endAngle", t) && (this.invalidateAxisItems(), this.axis && this.axis.invalidateSeries());
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.getPositionRangePath = function (t, e, i, n, r) {
            var s = "";

            if (A(t) && A(e)) {
              S(i) || (i = this.radius), t = W(t, this.axis.start), (e = X(e, this.axis.end)) < t && (e = t);
              var o = ui(i, this.pixelRadius),
                  a = ui(n, this.pixelRadius, !0),
                  l = this.positionToAngle(t);
              s = Sr(l, this.positionToAngle(e) - l, o, a, o, r);
            }

            return s;
          }, e.prototype.createGrid = function () {
            return new xh();
          }, e.prototype.createFill = function (t) {
            return new bh(t);
          }, e.prototype.createLabel = function () {
            return new _h();
          }, e.prototype.pointToPosition = function (t) {
            var e = ht(Q(t), this.startAngle, this.endAngle);
            return this.coordinateToPosition((e - this.startAngle) / 360 * this.axisLength);
          }, e;
        }(ql);

        Fs.registeredClasses.AxisRendererCircular = Ph;

        var wh = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e._chart = new ys(), e.pixelRadiusReal = 0, e.className = "AxisRendererRadial", e.isMeasured = !1, e.startAngle = -90, e.endAngle = 270, e.minGridDistance = 30, e.gridType = "circles", e.axisAngle = -90, e.isMeasured = !1, e.layout = "none", e.radius = h(100), e.line.strokeOpacity = 0, e.labels.template.horizontalCenter = "middle", e._disposers.push(e._chart), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.validate = function () {
            this.chart && this.chart.invalid && this.chart.validate(), t.prototype.validate.call(this);
          }, Object.defineProperty(e.prototype, "axisLength", {
            get: function get() {
              return this.pixelRadius - this.pixelInnerRadius;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "radius", {
            get: function get() {
              return this.getPropertyValue("radius");
            },
            set: function set(t) {
              this.setPercentProperty("radius", t, !1, !1, 10, !1);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "pixelRadius", {
            get: function get() {
              return ui(this.radius, this.pixelRadiusReal) || 0;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "innerRadius", {
            get: function get() {
              return this.getPropertyValue("innerRadius");
            },
            set: function set(t) {
              this.setPercentProperty("innerRadius", t, !1, !1, 10, !1);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "pixelInnerRadius", {
            get: function get() {
              return ui(this.innerRadius, this.pixelRadiusReal) || 0;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "chart", {
            get: function get() {
              return this._chart.get();
            },
            set: function set(t) {
              this._chart.set(t, null);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.positionToPoint = function (t, e) {
            var i = R(this.positionToCoordinate(t), 0, 1 / 0);
            return {
              x: i * H(this.axisAngle),
              y: i * B(this.axisAngle)
            };
          }, e.prototype.updateAxisLine = function () {
            this.line.path = xr({
              x: this.pixelInnerRadius * H(this.axisAngle),
              y: this.pixelInnerRadius * B(this.axisAngle)
            }) + _r({
              x: this.pixelRadius * H(this.axisAngle),
              y: this.pixelRadius * B(this.axisAngle)
            });
            var t = this.axis.title;
            t.valign = "none", t.horizontalCenter = "middle", t.verticalCenter = "bottom", t.y = -this.axisLength / 2;
            var e = 90;
            this.opposite ? this.inside || (e = -90) : this.inside && (e = -90), t.rotation = e;
          }, e.prototype.updateGridElement = function (t, e, i) {
            e += (i - e) * t.location;
            var n,
                r = K(this.positionToPoint(e)),
                s = this.startAngle,
                o = this.endAngle;

            if (A(r) && t.element) {
              var a = this.chart,
                  l = a.xAxes.getIndex(0),
                  h = a.dataItems.length,
                  u = a.series.getIndex(0);

              if ("polygons" == this.gridType && h > 0 && u && l && l instanceof lh) {
                var p = l.renderer.grid.template.location,
                    c = l.getAngle(u.dataItems.getIndex(0), "categoryX", p);
                n = xr({
                  x: r * H(c),
                  y: r * B(c)
                });

                for (var d = a.dataItems.length, f = 1; f < d; f++) n += _r({
                  x: r * H(c = l.getAngle(u.dataItems.getIndex(f), "categoryX", p)),
                  y: r * B(c)
                });

                n += _r({
                  x: r * H(c = l.getAngle(u.dataItems.getIndex(d - 1), "categoryX", l.renderer.cellEndLocation)),
                  y: r * B(c)
                });
              } else n = xr({
                x: r * H(s),
                y: r * B(s)
              }) + Or(s, o - s, r, r);

              t.path = n;
            }

            this.toggleVisibility(t, e, 0, 1);
          }, e.prototype.updateLabelElement = function (t, e, i, n) {
            S(n) || (n = t.location), e += (i - e) * n;
            var r = this.positionToPoint(e);
            this.positionItem(t, r), this.toggleVisibility(t, e, this.minLabelPosition, this.maxLabelPosition);
          }, e.prototype.updateBaseGridElement = function () {}, e.prototype.fitsToBounds = function (t) {
            return !0;
          }, Object.defineProperty(e.prototype, "startAngle", {
            get: function get() {
              return this.getPropertyValue("startAngle");
            },
            set: function set(t) {
              this.setPropertyValue("startAngle", t) && this.invalidateAxisItems();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "endAngle", {
            get: function get() {
              return this.getPropertyValue("endAngle");
            },
            set: function set(t) {
              this.setPropertyValue("endAngle", t) && this.invalidateAxisItems();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "axisAngle", {
            get: function get() {
              return this.getPropertyValue("axisAngle");
            },
            set: function set(t) {
              this.setPropertyValue("axisAngle", lt(t)), this.invalidateAxisItems();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "gridType", {
            get: function get() {
              return this.chart.xAxes.getIndex(0) instanceof lh ? this.getPropertyValue("gridType") : "circles";
            },
            set: function set(t) {
              this.setPropertyValue("gridType", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.getPositionRangePath = function (t, e) {
            var i,
                n = this.pixelInnerRadius,
                r = this.axisLength + n,
                s = R(this.positionToCoordinate(t), n, r),
                o = R(this.positionToCoordinate(e), n, r),
                a = this.startAngle,
                l = this.endAngle - a,
                h = this.chart,
                u = h.xAxes.getIndex(0),
                p = h.dataItems.length,
                c = h.series.getIndex(0);

            if ("polygons" == this.gridType && p > 0 && c && u && u instanceof lh) {
              var d = u.renderer.grid.template.location,
                  f = u.getAngle(c.dataItems.getIndex(0), "categoryX", d);
              i = xr({
                x: o * H(f),
                y: o * B(f)
              });

              for (var g = h.dataItems.length, y = 1; y < g; y++) i += _r({
                x: o * H(f = u.getAngle(c.dataItems.getIndex(y), "categoryX", d)),
                y: o * B(f)
              });

              for (i += _r({
                x: o * H(f = u.getAngle(c.dataItems.getIndex(g - 1), "categoryX", u.renderer.cellEndLocation)),
                y: o * B(f)
              }), i += xr({
                x: s * H(f),
                y: s * B(f)
              }), y = g - 1; y >= 0; y--) i += _r({
                x: s * H(f = u.getAngle(c.dataItems.getIndex(y), "categoryX", d)),
                y: s * B(f)
              });
            } else i = Sr(a, l, o, s);

            return i;
          }, e.prototype.updateBreakElement = function (t) {
            var e = t.startLine,
                i = t.endLine,
                n = t.fillShape,
                r = t.startPoint,
                s = t.endPoint;
            e.radius = Math.abs(r.y), i.radius = Math.abs(s.y), n.radius = Math.abs(s.y), n.innerRadius = Math.abs(r.y);
          }, e.prototype.createBreakSprites = function (t) {
            t.startLine = new al(), t.endLine = new al(), t.fillShape = new al();
          }, e.prototype.updateTooltip = function () {
            if (this.axis) {
              var t = this.axisAngle;
              t < 0 && (t += 360);
              var e = "vertical";
              (t > 45 && t < 135 || t > 225 && t < 315) && (e = "horizontal"), this.axis.updateTooltip(e, {
                x: -4e3,
                y: -4e3,
                width: 8e3,
                height: 8e3
              });
            }
          }, e.prototype.updateTickElement = function (t, e) {
            var i = this.positionToPoint(e);

            if (t.element) {
              var n = lt(this.axisAngle + 90);
              n / 90 != Math.round(n / 90) ? t.pixelPerfect = !1 : t.pixelPerfect = !0;
              var r = -t.length;
              t.inside && (r *= -1), t.path = xr({
                x: 0,
                y: 0
              }) + _r({
                x: r * H(n),
                y: r * B(n)
              });
            }

            this.positionItem(t, i), this.toggleVisibility(t, e, 0, 1);
          }, e.prototype.updateBullet = function (t, e, i) {
            var n = .5;
            t instanceof $l && (n = t.location), e += (i - e) * n;
            var r = this.positionToPoint(e);
            this.positionItem(t, r), this.toggleVisibility(t, e, 0, 1);
          }, e.prototype.positionToCoordinate = function (t) {
            var e = this.axis,
                i = e.axisFullLength,
                n = this.pixelInnerRadius;
            return j(e.renderer.inversed ? (e.end - t) * i + n : (t - e.start) * i + n, 1);
          }, e.prototype.pointToPosition = function (t) {
            var e = K(t) - this.pixelInnerRadius;
            return this.coordinateToPosition(e);
          }, e;
        }(Jl);

        Fs.registeredClasses.AxisRendererRadial = wh;

        var Ch = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "RadarChartDataItem", e.applyTheme(), e;
          }

          return n(e, t), e;
        }(ch),
            Oh = function (t) {
          function e() {
            var e = t.call(this) || this;
            e._axisRendererX = Ph, e._axisRendererY = wh, e.innerRadiusModifyer = 1, e.className = "RadarChart", e.startAngle = -90, e.endAngle = 270, e.radius = h(80), e.innerRadius = 0;
            var i = e.plotContainer.createChild(_a);
            return i.shouldClone = !1, i.layout = "absolute", i.align = "center", i.valign = "middle", e.seriesContainer.parent = i, e.radarContainer = i, e.bulletsContainer.parent = i, e.axisBulletsContainer = i, e._cursorContainer = i, e._bulletMask = i.createChild(Ea), e._bulletMask.shouldClone = !1, e._bulletMask.element = e.paper.add("path"), e._bulletMask.opacity = 0, e.applyTheme(), e;
          }

          return n(e, t), e.prototype.applyInternalDefaults = function () {
            t.prototype.applyInternalDefaults.call(this), S(this.readerTitle) || (this.readerTitle = this.language.translate("Radar chart"));
          }, e.prototype.processAxis = function (e) {
            t.prototype.processAxis.call(this, e);
            var i = e.renderer;
            i.gridContainer.parent = i, i.breakContainer.parent = i, e.parent = this.radarContainer, i.toBack();
          }, e.prototype.handleXAxisRangeChange = function () {
            t.prototype.handleXAxisRangeChange.call(this), pe(this.yAxes.iterator(), function (t) {
              t.invalidate();
            });
          }, e.prototype.handleYAxisRangeChange = function () {
            t.prototype.handleYAxisRangeChange.call(this), pe(this.xAxes.iterator(), function (t) {
              t.invalidate();
            });
          }, e.prototype.processConfig = function (e) {
            if (e && (S(e.cursor) && !S(e.cursor.type) && (e.cursor.type = "RadarCursor"), S(e.series) && F(e.series))) for (var i = 0, n = e.series.length; i < n; i++) e.series[i].type = e.series[i].type || "RadarSeries";
            t.prototype.processConfig.call(this, e);
          }, e.prototype.beforeDraw = function () {
            t.prototype.beforeDraw.call(this);
            var e = this.plotContainer,
                i = ut(this.startAngle, this.endAngle, 1),
                n = {
              x: 0,
              y: 0,
              width: 0,
              height: 0
            },
                r = e.innerWidth / i.width,
                s = e.innerHeight / i.height,
                o = this.innerRadius;

            if (o instanceof hs) {
              var a = o.value,
                  l = Math.min(r, s);
              a = Math.max(l * a, l - Math.min(e.innerHeight, e.innerWidth)) / l, n = ut(this.startAngle, this.endAngle, a), this.innerRadiusModifyer = a / o.value, o = h(100 * a);
            }

            i = it([i, n]);
            var u = Math.min(e.innerWidth / i.width, e.innerHeight / i.height),
                p = 2 * ui(this.radius, u) || 0,
                c = p / 2,
                d = this.startAngle,
                f = this.endAngle;
            this._pixelInnerRadius = ui(o, c), this._bulletMask.path = Sr(d, f - d, c, this._pixelInnerRadius), pe(this.xAxes.iterator(), function (t) {
              t.renderer.useChartAngles && (t.renderer.startAngle = d, t.renderer.endAngle = f), t.width = p, t.height = p, t.renderer.pixelRadiusReal = c, t.renderer.innerRadius = o;
            }), pe(this.yAxes.iterator(), function (t) {
              t.renderer.startAngle = d, t.renderer.endAngle = f, t.width = p, t.height = p, t.renderer.pixelRadiusReal = c, t.renderer.innerRadius = o;
            });
            var g = this.cursor;
            g && (g.width = p, g.height = p, g.startAngle = d, g.endAngle = f), this.radarContainer.definedBBox = {
              x: c * i.x,
              y: c * i.y,
              width: c * i.width,
              height: c * i.height
            }, this.radarContainer.validatePosition();
          }, e.prototype.createSeries = function () {
            return new vh();
          }, Object.defineProperty(e.prototype, "startAngle", {
            get: function get() {
              return this.getPropertyValue("startAngle");
            },
            set: function set(t) {
              this.setPropertyValue("startAngle", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "endAngle", {
            get: function get() {
              return this.getPropertyValue("endAngle");
            },
            set: function set(t) {
              this.setPropertyValue("endAngle", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "radius", {
            get: function get() {
              return this.getPropertyValue("radius");
            },
            set: function set(t) {
              this.setPercentProperty("radius", t, !0, !1, 10, !1);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "pixelInnerRadius", {
            get: function get() {
              return this._pixelInnerRadius;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "innerRadius", {
            get: function get() {
              return this.getPropertyValue("innerRadius");
            },
            set: function set(t) {
              this.setPercentProperty("innerRadius", t, !0, !1, 10, !1);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.updateXAxis = function (t) {
            t && t.processRenderer();
          }, e.prototype.updateYAxis = function (t) {
            t && t.processRenderer();
          }, e;
        }(dh);

        Fs.registeredClasses.RadarChart = Oh;

        var Sh = function (t) {
          function e() {
            var e = t.call(this) || this;
            e._axis = new ys(), e.className = "ClockHand";
            var i = new ta();
            e.fill = i.getFor("alternativeBackground"), e.stroke = e.fill;
            var n = new Ea();
            n.radius = 5, e.pin = n, e.isMeasured = !1, e.startWidth = 5, e.endWidth = 1, e.width = h(100), e.height = h(100), e.radius = h(100), e.innerRadius = h(0);
            var r = new nl();
            return e.hand = r, e._disposers.push(e._axis), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.validate = function () {
            t.prototype.validate.call(this);
            var e = this.hand;
            e.width = this.pixelWidth;
            var i = Math.max(this.startWidth, this.endWidth);

            if (e.height = i, e.leftSide = h(this.startWidth / i * 100), e.rightSide = h(this.endWidth / i * 100), this.axis) {
              var n = this.axis.renderer,
                  r = ui(this.innerRadius, n.pixelRadius),
                  s = ui(this.radius, n.pixelRadius);
              e.x = r, e.y = -i / 2, e.width = s - r;
            }
          }, Object.defineProperty(e.prototype, "pin", {
            get: function get() {
              return this._pin;
            },
            set: function set(t) {
              this._pin && this.removeDispose(this._pin), t && (this._pin = t, t.parent = this, this._disposers.push(t));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "hand", {
            get: function get() {
              return this._hand;
            },
            set: function set(t) {
              this._hand && this.removeDispose(this._hand), t && (this._hand = t, t.parent = this, this._disposers.push(t));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "radius", {
            get: function get() {
              return this.getPropertyValue("radius");
            },
            set: function set(t) {
              this.setPercentProperty("radius", t, !0, !1, 10, !1);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "innerRadius", {
            get: function get() {
              return this.getPropertyValue("innerRadius");
            },
            set: function set(t) {
              this.setPercentProperty("innerRadius", t, !0, !1, 10, !1);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "startWidth", {
            get: function get() {
              return this.getPropertyValue("startWidth");
            },
            set: function set(t) {
              this.setPropertyValue("startWidth", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "endWidth", {
            get: function get() {
              return this.getPropertyValue("endWidth");
            },
            set: function set(t) {
              this.setPropertyValue("endWidth", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "rotationDirection", {
            get: function get() {
              return this.getPropertyValue("rotationDirection");
            },
            set: function set(t) {
              this.setPropertyValue("rotationDirection", t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.showValue = function (t, e, i) {
            if (this._value = t, null != t && (A(e) || (e = 0), this.axis)) {
              var n = this.axis.renderer.positionToAngle(this.axis.anyToPosition(t)),
                  r = this.rotation;
              "clockWise" == this.rotationDirection && n < r && (this.rotation = r - 360), "counterClockWise" == this.rotationDirection && n > r && (this.rotation = r + 360), this.animate({
                property: "rotation",
                to: n
              }, e, i);
            }
          }, Object.defineProperty(e.prototype, "value", {
            get: function get() {
              return this._value;
            },
            set: function set(t) {
              this.showValue(t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "axis", {
            get: function get() {
              return this._axis.get();
            },
            set: function set(t) {
              if (this.axis != t && this._axis.set(t, new gs([t.events.on("datavalidated", this.updateValue, this, !1), t.events.on("datarangechanged", this.updateValue, this, !1), t.events.on("dataitemsvalidated", this.updateValue, this, !1), t.events.on("propertychanged", this.invalidate, this, !1)])), t) {
                var e = t.chart;
                e && (this.rotation = e.startAngle);
              }

              this.parent = t.renderer, this.zIndex = 5;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.updateValue = function () {
            this.value = this.value;
          }, e.prototype.processConfig = function (e) {
            e && S(e.axis) && T(e.axis) && this.map.hasKey(e.axis) && (e.axis = this.map.getKey(e.axis)), t.prototype.processConfig.call(this, e);
          }, e;
        }(_a);

        Fs.registeredClasses.ClockHand = Sh;

        var Ih = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "GaugeChartDataItem", e.applyTheme(), e;
          }

          return n(e, t), e;
        }(Ch),
            Dh = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "GaugeChart", e.startAngle = 180, e.endAngle = 360, e.hands = new Hs(new Sh()), e.hands.events.on("inserted", e.processHand, e, !1), e._disposers.push(new Bs(e.hands)), e._disposers.push(e.hands.template), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.applyInternalDefaults = function () {
            t.prototype.applyInternalDefaults.call(this), S(this.readerTitle) || (this.readerTitle = this.language.translate("Gauge chart"));
          }, e.prototype.processHand = function (t) {
            var e = t.newValue;
            e.axis || (e.axis = this.xAxes.getIndex(0));
          }, e.prototype.configOrder = function (e, i) {
            return e == i ? 0 : "hands" == e ? 1 : "hands" == i ? -1 : t.prototype.configOrder.call(this, e, i);
          }, e;
        }(Oh);

        Fs.registeredClasses.GaugeChart = Dh;

        var kh = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "PercentSeriesDataItem", e.applyTheme(), e;
          }

          return n(e, t), e.prototype.uidAttr = function () {
            return this.slice.uidAttr();
          }, e.prototype.hide = function (e, i, n, r) {
            return r || (r = ["value"]), t.prototype.hide.call(this, e, i, 0, r);
          }, e.prototype.setVisibility = function (e, i) {
            i || (e ? this.setWorkingValue("value", this.values.value.value, 0, 0) : this.setWorkingValue("value", 0, 0, 0)), t.prototype.setVisibility.call(this, e, i);
          }, e.prototype.show = function (e, i, n) {
            return n || (n = ["value"]), t.prototype.show.call(this, e, i, n);
          }, Object.defineProperty(e.prototype, "category", {
            get: function get() {
              return this.properties.category;
            },
            set: function set(t) {
              this.setProperty("category", t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.createLegendMarker = function (t) {
            this.component.createLegendMarker(t, this);
          }, Object.defineProperty(e.prototype, "legendDataItem", {
            get: function get() {
              return this._legendDataItem;
            },
            set: function set(t) {
              this._legendDataItem = t, t.label && (t.label.dataItem = this), t.valueLabel && (t.valueLabel.dataItem = this);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "tick", {
            get: function get() {
              var t = this;

              if (!this._tick) {
                var e = this.component.ticks.create();
                this._tick = e, this._disposers.push(e), e.parent = this.component.ticksContainer, this._disposers.push(new fs(function () {
                  t.component && t.component.ticks.removeValue(e);
                })), this.addSprite(e), e.visible = this.visible;
              }

              return this._tick;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "label", {
            get: function get() {
              var t = this;

              if (!this._label) {
                var e = this.component.labels.create();
                this._label = e, this._disposers.push(e), e.parent = this.component.labelsContainer, this._disposers.push(new fs(function () {
                  t.component && t.component.labels.removeValue(e);
                })), this.addSprite(e), e.visible = this.visible;
              }

              return this._label;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "slice", {
            get: function get() {
              var t = this;

              if (!this._slice) {
                var e = this.component,
                    i = e.slices.create();
                this._slice = i, this._disposers.push(i), i.parent = e.slicesContainer, this._disposers.push(new fs(function () {
                  e.slices.removeValue(i);
                })), this.addSprite(i), i.visible = this.visible, e.itemsFocusable() ? (i.role = "menuitem", i.focusable = !0) : (i.role = "listitem", i.focusable = !1), i.focusable && (i.events.on("focus", function (n) {
                  i.readerTitle = e.populateString(e.itemReaderText, t);
                }, void 0, !1), i.events.on("blur", function (t) {
                  i.readerTitle = "";
                }, void 0, !1)), i.hoverable && (i.events.on("over", function (n) {
                  i.readerTitle = e.populateString(e.itemReaderText, t);
                }, void 0, !1), i.events.on("out", function (t) {
                  i.readerTitle = "";
                }, void 0, !1));
              }

              return this._slice;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "hiddenInLegend", {
            get: function get() {
              return this.properties.hiddenInLegend;
            },
            set: function set(t) {
              this.setProperty("hiddenInLegend", t);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(Ll),
            Th = function (t) {
          function e() {
            var e = t.call(this) || this;
            e.className = "PercentSeries", e._addAllDataItems = !1, e.colors = new Sl(), e.colors.step = 1, e.isMeasured = !0, e.calculatePercent = !0;
            var i = e.createChild(_a);
            i.shouldClone = !1, i.isMeasured = !1, e.slicesContainer = i;
            var n = e.createChild(_a);
            n.shouldClone = !1, n.isMeasured = !1, n.layout = "none", e.ticksContainer = n;
            var r = e.createChild(_a);
            return r.shouldClone = !1, r.isMeasured = !1, r.layout = "none", e.labelsContainer = r, e.alignLabels = !1, e.bulletsContainer.toFront(), e.skipFocusThreshold = 50, e.defaultState.transitionEasing = bn, e.itemReaderText = "{category}: {value.percent.formatNumber('#.#')}%", e.applyTheme(), e;
          }

          return n(e, t), e.prototype.createSlice = function () {
            return new ba();
          }, e.prototype.createTick = function () {
            return new Kl();
          }, e.prototype.createLabel = function () {
            return new Ma();
          }, Object.defineProperty(e.prototype, "slices", {
            get: function get() {
              if (!this._slices) {
                var t = this.createSlice();
                t.applyOnClones = !0, this._disposers.push(t), this.initSlice(t), this._slices = new Hs(t), this._disposers.push(new Bs(this._slices));
              }

              return this._slices;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "ticks", {
            get: function get() {
              if (!this._ticks) {
                var t = this.createTick();
                t.applyOnClones = !0, this._disposers.push(t), this.initTick(t), this._ticks = new Hs(t), this._disposers.push(new Bs(this._ticks));
              }

              return this._ticks;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "labels", {
            get: function get() {
              if (!this._labels) {
                var t = this.createLabel();
                t.applyOnClones = !0, this._disposers.push(t), this.initLabel(t), this._labels = new Hs(t), this._disposers.push(new Bs(this._labels));
              }

              return this._labels;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.createDataItem = function () {
            return new kh();
          }, e.prototype.initSlice = function (t) {}, e.prototype.initLabel = function (t) {
            t.text = "{category}: {value.percent.formatNumber('#.0')}%", t.isMeasured = !1, t.padding(5, 5, 5, 5);
          }, e.prototype.initTick = function (t) {}, e.prototype.validateDataItems = function () {
            this.colors.reset(), t.prototype.validateDataItems.call(this);
          }, e.prototype.validateDataElement = function (e) {
            var i = e.slice;
            i && (null == i.fill && (i.fill = this.colors.next()), null == i.stroke && (i.stroke = i.fill)), t.prototype.validateDataElement.call(this, e), i && e.bullets.each(function (t, e) {
              null == e.fill && (e.fill = i.fill), null == e.stroke && (e.stroke = i.stroke);
            }), this.updateLegendValue(e);
          }, e.prototype.validateData = function () {
            t.prototype.validateData.call(this), this.chart && this.chart.feedLegend();
          }, e.prototype.arrangeLabels = function (t) {
            for (var e = 0, i = t.length; e < i; e++) {
              var n = t[e].label;

              if (n) {
                var r = n.measuredHeight;
                n.visible || (r = 0), n.pixelY - r / 2 < -this.maxHeight / 2 && (n.y = -this.maxHeight / 2 + r / 2);
                var s = this.getNextLabel(e + 1, t);
                n.invalid && n.validate();
                var o = n.pixelY + r;
                s && s.y < o && (s.y = o);
              }
            }
          }, e.prototype.arrangeLabels2 = function (t) {
            for (var e = this.maxHeight / 2, i = t.length - 1; i >= 0; i--) {
              var n = t[i].label;

              if (n) {
                n.invalid && n.validate();
                var r = n.measuredHeight;
                n.visible || (r = 0), i == t.length - 1 && (e += r / 2), n.pixelY + r > e && (n.y = e - r, e = n.y);
              }
            }
          }, e.prototype.getNextLabel = function (t, e) {
            if (e.length >= t) {
              var i = e[t];
              if (i) return i.label && i.visible ? i.label : this.getNextLabel(t + 1, e);
            }
          }, Object.defineProperty(e.prototype, "colors", {
            get: function get() {
              return this.getPropertyValue("colors");
            },
            set: function set(t) {
              this.setPropertyValue("colors", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.createLegendMarker = function (t, e) {
            pe(t.children.iterator(), function (i) {
              var n = e.slice;
              i.defaultState.properties.fill = n.fill, i.defaultState.properties.stroke = n.stroke, i.defaultState.properties.fillOpacity = n.fillOpacity, i.defaultState.properties.strokeOpacity = n.strokeOpacity, i.fill = n.fill, i.stroke = n.stroke, i.fillOpacity = n.fillOpacity, i.strokeOpacity = n.strokeOpacity, null == i.fill && (i.__disabled = !0);
              var r = t.dataItem;
              r.color = n.fill, r.colorOrig = n.fill, i.addDisposer(n.events.on("propertychanged", function (t) {
                "fill" == t.property && (i.__disabled = !1, i.isActive || (i.fill = n.fill), i.defaultState.properties.fill = n.fill, r.color = n.fill, r.colorOrig = n.fill), "stroke" == t.property && (i.isActive || (i.stroke = n.stroke), i.defaultState.properties.stroke = n.stroke);
              }, void 0, !1));
            });
          }, e.prototype.handleSliceScale = function (t) {
            var e = this;
            pe(t.target.dataItem.bullets.iterator(), function (t) {
              var i = t[1];
              e.positionBullet(i);
            });
          }, e.prototype.handleSliceMove = function (t) {}, e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), this.slices.template.copyFrom(e.slices.template), this.labels.template.copyFrom(e.labels.template), this.ticks.template.copyFrom(e.ticks.template);
          }, Object.defineProperty(e.prototype, "alignLabels", {
            get: function get() {
              return this.getPropertyValue("alignLabels");
            },
            set: function set(t) {
              this.setAlignLabels(t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setAlignLabels = function (t) {
            this.setPropertyValue("alignLabels", t, !0);
          }, e.prototype.updateLegendValue = function (t) {
            if (t) {
              var e = t.legendDataItem,
                  i = t.legendSettings;
              e && i && i && (i.labelText && (e.label.text = i.labelText), i.itemLabelText && (e.label.text = i.itemLabelText), i.valueText && (e.valueLabel.text = i.valueText), i.itemValueText && (e.valueLabel.text = i.itemValueText));
            }
          }, e;
        }(El);

        Fs.registeredClasses.PercentSeries = Th, Fs.registeredClasses.PercentSeriesDataItem = kh, Ta.push({
          relevant: Aa.maybeXS,
          state: function state(t, e) {
            if (t instanceof Th) {
              var i = t.states.create(e);
              return t.labels.template.states.create(e).properties.disabled = !0, t.ticks.template.states.create(e).properties.disabled = !0, i;
            }

            return null;
          }
        });

        var Ah = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "PercentChartDataItem", e.applyTheme(), e;
          }

          return n(e, t), e;
        }(Rl),
            Vh = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "PercentChart", e.align = "none", e.valign = "none", e.chartContainer.minHeight = 50, e.chartContainer.minWidth = 50, e.applyTheme(), e;
          }

          return n(e, t), e.prototype.validateData = function () {
            t.prototype.validateData.call(this), this.feedLegend();
          }, e.prototype.feedLegend = function () {
            var t = this.legend;

            if (t) {
              var e = [];
              pe(this.series.iterator(), function (t) {
                t.hiddenInLegend || pe(t.dataItems.iterator(), function (i) {
                  i.hiddenInLegend || (e.push(i), i.legendSettings || (i.legendSettings = t.legendSettings));
                });
              }), t.data = e, t.dataFields.name = "category";
            }
          }, e.prototype.createSeries = function () {
            return new Th();
          }, e.prototype.setLegend = function (e) {
            t.prototype.setLegend.call(this, e), e && (e.labels.template.text = "{category}", e.valueLabels.template.text = "{value.percent.formatNumber('#.0')}%", e.itemContainers.template.events.on("over", function (t) {
              var e = t.target.dataItem.dataContext;
              e.visible && !e.isHiding && (e.slice.isHover = !0);
            }), e.itemContainers.template.events.on("out", function (t) {
              t.target.dataItem.dataContext.slice.isHover = !1;
            }));
          }, e;
        }(Bl);

        Fs.registeredClasses.PercentChart = Vh, Fs.registeredClasses.PercentChartDataItem = Ah;

        var Fh = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e._label = new ys(), e._slice = new ys(), e.className = "PieTick", e.element = e.paper.add("polyline"), e._disposers.push(e._label), e._disposers.push(e._slice), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.draw = function () {
            t.prototype.draw.call(this);
            var e = this.slice,
                i = this.label,
                n = e.dataItem.component;

            if (e && e.radius > 0 && i && i.text) {
              var r = e.dx + e.slice.dx + e.pixelX + e.ix * e.radius * e.scale,
                  s = e.dy + e.slice.dy + e.pixelY + e.iy * e.radiusY * e.scale,
                  o = void 0,
                  a = void 0,
                  l = void 0,
                  h = void 0;
              if (n.alignLabels) o = i.pixelX - this.length, a = i.pixelY, l = i.pixelX, h = a, "right" == i.horizontalCenter && (l = (o += 2 * this.length) - this.length);else {
                var u = i.pixelRadius(e.radius);
                l = o = r + u * e.ix, h = a = s + u * e.iy;
              }
              this.element.attr({
                points: [r, s, o, a, l, h]
              });
            }
          }, Object.defineProperty(e.prototype, "slice", {
            get: function get() {
              return this._slice.get();
            },
            set: function set(t) {
              this._slice.set(t, new gs([t.events.on("transformed", this.invalidate, this), t.events.on("validated", this.invalidate, this)]));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "label", {
            get: function get() {
              return this._label.get();
            },
            set: function set(t) {
              this._label.set(t, t.events.on("transformed", this.invalidate, this, !1));
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(Kl);

        Fs.registeredClasses.PieTick = Fh;

        var Mh = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "PieSeriesDataItem", e.values.radiusValue = {}, e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "radiusValue", {
            get: function get() {
              return this.values.radiusValue.value;
            },
            set: function set(t) {
              this.setValue("radiusValue", t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.hide = function (e, i, n, r) {
            return t.prototype.hide.call(this, e, i, 0, ["value", "radiusValue"]);
          }, e.prototype.show = function (e, i, n) {
            return t.prototype.show.call(this, e, i, ["value", "radiusValue"]);
          }, e;
        }(kh),
            jh = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "PieSeries", e.alignLabels = !0, e.startAngle = -90, e.endAngle = 270, e.layout = "none", e.labels.template.radius = h(5), e.addDisposer(e.labels.template.events.on("enabled", e.invalidate, e, !1)), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.createSlice = function () {
            return new Ka();
          }, e.prototype.createTick = function () {
            return new Fh();
          }, e.prototype.createLabel = function () {
            return new _h();
          }, e.prototype.applyInternalDefaults = function () {
            t.prototype.applyInternalDefaults.call(this), S(this.readerTitle) || (this.readerTitle = this.language.translate("Pie Slice Series"));
          }, e.prototype.createDataItem = function () {
            return new Mh();
          }, e.prototype.initSlice = function (t) {
            t.isMeasured = !1, t.defaultState.properties.scale = 1, t.observe("scale", this.handleSliceScale, this), t.observe(["dx", "dy", "x", "y", "shiftRadius"], this.handleSliceMove, this), t.tooltipText = "{category}: {value.percent.formatNumber('#.#')}% ({value.value})", t.states.create("hover").properties.scale = 1.05, t.defaultState.properties.shiftRadius = 0, t.togglable = !0, t.events.on("toggled", function (t) {
              t.target.hideTooltip();
            }), t.states.create("active").properties.shiftRadius = .1;
          }, e.prototype.validate = function () {
            this._leftItems = [], this._rightItems = [], this._currentStartAngle = this.startAngle, this._arcRect = ut(this.startAngle, this.endAngle), this._maxRadiusPercent = 0;

            for (var e = this.startIndex; e < this.endIndex; e++) {
              var i = this.dataItems.getIndex(e).values.radiusValue.percent;
              i > this._maxRadiusPercent && (this._maxRadiusPercent = i);
            }

            t.prototype.validate.call(this), this.alignLabels && (this.startAngle > this.endAngle ? this._rightItems.reverse() : this._leftItems.reverse(), this._rightItems.sort(function (t, e) {
              var i = (t.slice.middleAngle + 360) % 360,
                  n = (e.slice.middleAngle + 360) % 360;
              return i > 270 && (i -= 360), n > 270 && (n -= 360), i < n ? -1 : 1;
            }), this._leftItems.sort(function (t, e) {
              return (t.slice.middleAngle + 360) % 360 < (e.slice.middleAngle + 360) % 360 ? 1 : -1;
            }), this.arrangeLabels(this._rightItems), this.arrangeLabels2(this._rightItems), this.arrangeLabels(this._leftItems), this.arrangeLabels2(this._leftItems));
          }, e.prototype.validateDataElement = function (e) {
            if (this.pixelRadius > 0) {
              var i = e.slice;

              if (i.radius = this.pixelRadius, A(e.radiusValue) && (i.radius = this.pixelInnerRadius + (this.pixelRadius - this.pixelInnerRadius) * e.values.radiusValue.percent / this._maxRadiusPercent), i.innerRadius instanceof hs || (i.innerRadius = this.pixelInnerRadius), i.startAngle = this._currentStartAngle, i.arc = e.values.value.percent * (this.endAngle - this.startAngle) / 100, !this.labels.template.disabled) {
                var n = e.label,
                    r = e.tick;
                r.slice = i, r.label = n;
                var s = (i.middleAngle + 360) % 360,
                    o = void 0;

                if (this.alignLabels) {
                  var a = n.pixelRadius(i.radius),
                      l = r.length + a;
                  n.dx = 0, n.dy = 0, n.verticalCenter = "middle";
                  var h = this._arcRect;
                  s >= 270 || s <= 90 ? (l += (h.width + h.x) * this.pixelRadius, n.horizontalCenter = "left", this._rightItems.push(e)) : (l -= h.x * this.pixelRadius, n.horizontalCenter = "right", this._leftItems.push(e), l *= -1);
                  var u = i.radius + r.length + a;
                  o = {
                    x: l,
                    y: i.iy * u
                  }, n.moveTo(o);
                } else {
                  var p = i.depth;
                  A(p) || (p = 0), n.fixPosition(i.middleAngle, i.radius, i.radiusY, 0, -p);
                }
              }

              this._currentStartAngle += i.arc, t.prototype.validateDataElement.call(this, e);
            }
          }, Object.defineProperty(e.prototype, "radius", {
            get: function get() {
              return this.getPropertyValue("radius");
            },
            set: function set(t) {
              this.setPercentProperty("radius", t, !0, !1, 10, !1) && this.invalidateDataItems();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "pixelRadius", {
            get: function get() {
              return this._pixelRadius;
            },
            set: function set(t) {
              this._pixelRadius != t && (this._pixelRadius = t, this.invalidateDataItems());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "pixelInnerRadius", {
            get: function get() {
              return this._pixelInnerRadius;
            },
            set: function set(t) {
              this._pixelInnerRadius != t && (this._pixelInnerRadius = t, this.invalidateDataItems());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "innerRadius", {
            get: function get() {
              return this.getPropertyValue("innerRadius");
            },
            set: function set(t) {
              this.setPercentProperty("innerRadius", t, !0, !1, 10, !1);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "startAngle", {
            get: function get() {
              return this.getPropertyValue("startAngle");
            },
            set: function set(t) {
              this.setPropertyValue("startAngle", lt(t), !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "endAngle", {
            get: function get() {
              return this.getPropertyValue("endAngle");
            },
            set: function set(t) {
              this.setPropertyValue("endAngle", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.positionBullet = function (e) {
            t.prototype.positionBullet.call(this, e);
            var i = e.dataItem.slice,
                n = e.locationX;
            A(n) || (n = .5);
            var r = e.locationY;
            A(r) || (r = 1);
            var s = i.startAngle + i.arc * n;
            e.x = r * i.radius * H(s), e.y = r * i.radiusY * B(s);
          }, e.prototype.handleSliceMove = function (t) {
            if (!this.alignLabels) {
              var e = t.target,
                  i = e.dataItem;

              if (i) {
                var n = i.label;
                n && (n.dx = n.fdx + e.dx + e.pixelX, n.dy = n.fdy + e.dy + e.pixelY);
              }
            }
          }, Object.defineProperty(e.prototype, "bbox", {
            get: function get() {
              if (this.definedBBox) return this.definedBBox;
              var t = this.chart;
              return t ? ut(t.startAngle, t.endAngle, this.pixelRadius) : ut(this.startAngle, this.endAngle, this.pixelRadius);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(Th);

        Fs.registeredClasses.PieSeries = jh, Fs.registeredClasses.PieSeriesDataItem = Mh;

        var Lh = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "PieChartDataItem", e.applyTheme(), e;
          }

          return n(e, t), e;
        }(Ah),
            Eh = function (t) {
          function e() {
            var e = t.call(this) || this;
            e.className = "PieChart", e.innerRadius = 0, e.radius = h(80), e.align = "none", e.valign = "none", e.startAngle = -90, e.endAngle = 270;
            var i = e.seriesContainer;
            return i.isMeasured = !0, i.valign = "middle", i.align = "center", i.layout = "absolute", i.width = void 0, i.height = void 0, e.chartContainer.minHeight = 50, e.chartContainer.minWidth = 50, e.chartContainer.events.on("maxsizechanged", e.updateRadius, e, !1), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.applyInternalDefaults = function () {
            t.prototype.applyInternalDefaults.call(this), S(this.readerTitle) || (this.readerTitle = this.language.translate("Pie chart"));
          }, e.prototype.validateLayout = function () {
            t.prototype.validateLayout.call(this), this.updateRadius();
          }, e.prototype.handleSeriesAdded = function (e) {
            t.prototype.handleSeriesAdded.call(this, e), this._chartPixelRadius = void 0, this.updateSeriesAngles();
          }, e.prototype.updateSeriesAngles = function () {
            var t = this;
            this.series.each(function (e) {
              e.startAngle = t.startAngle, e.endAngle = t.endAngle, e.defaultState.properties.startAngle = t.startAngle, e.defaultState.properties.endAngle = t.endAngle;
            });
          }, e.prototype.updateRadius = function () {
            var t = this.chartContainer,
                e = ut(this.startAngle, this.endAngle, 1),
                i = {
              x: 0,
              y: 0,
              width: 0,
              height: 0
            },
                n = this.innerRadius;
            n instanceof hs && (i = ut(this.startAngle, this.endAngle, n.value)), e = it([e, i]);
            var r = Math.min(t.innerWidth / e.width, t.innerHeight / e.height);
            A(r) || (r = 0);
            var s = ui(this.radius, r),
                o = ui(this.innerRadius, r),
                a = (s - o) / this.series.length;
            s == this._chartPixelRadius && o == this._chartPixelInnerRadius || (this._chartPixelRadius = s, this._chartPixelInnerRadius = o, pe(me(this.series.iterator()), function (t) {
              var e = t[0],
                  i = t[1],
                  n = o + ui(i.radius, s - o),
                  r = o + ui(i.innerRadius, s - o);
              A(n) || (n = o + a * (e + 1)), A(r) || (r = o + a * e), i.pixelRadius = n, i.pixelInnerRadius = r;
            }), this.seriesContainer.definedBBox = {
              x: s * e.x,
              y: s * e.y,
              width: s * e.width,
              height: s * e.height
            }, this.seriesContainer.invalidateLayout(), this.bulletsContainer.x = this.seriesContainer.x, this.bulletsContainer.y = this.seriesContainer.y);
          }, Object.defineProperty(e.prototype, "radius", {
            get: function get() {
              return this.getPropertyValue("radius");
            },
            set: function set(t) {
              this.setPercentProperty("radius", t, !0, !1, 10, !1) && this.invalidateLayout();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "innerRadius", {
            get: function get() {
              return this.getPropertyValue("innerRadius");
            },
            set: function set(t) {
              this.setPercentProperty("innerRadius", t, !0, !1, 10, !1);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.createSeries = function () {
            return new jh();
          }, Object.defineProperty(e.prototype, "startAngle", {
            get: function get() {
              return this.getPropertyValue("startAngle");
            },
            set: function set(t) {
              this.setPropertyValue("startAngle", t) && (this.updateRadius(), this.updateSeriesAngles());
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "endAngle", {
            get: function get() {
              return this.getPropertyValue("endAngle");
            },
            set: function set(t) {
              this.setPropertyValue("endAngle", t) && (this.updateRadius(), this.updateSeriesAngles());
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(Vh);

        Fs.registeredClasses.PieChart = Eh, Fs.registeredClasses.PieChartDataItem = Lh;

        var Rh = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "PieSeries3DDataItem", e.values.depthValue = {}, e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "depthValue", {
            get: function get() {
              return this.values.depthValue.value;
            },
            set: function set(t) {
              this.setValue("depthValue", t);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(Mh),
            Bh = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "PieSeries3D", e.applyTheme(), e;
          }

          return n(e, t), e.prototype.createDataItem = function () {
            return new Rh();
          }, e.prototype.createSlice = function () {
            return new vl();
          }, e.prototype.validateDataElement = function (e) {
            var i = e.slice,
                n = this.depth;
            A(n) || (n = this.chart.depth);
            var r = e.values.depthValue.percent;
            A(r) || (r = 100), i.depth = r * n / 100;
            var s = this.angle;
            A(s) || (s = this.chart.angle), i.angle = s, t.prototype.validateDataElement.call(this, e);
          }, e.prototype.validate = function () {
            t.prototype.validate.call(this);

            for (var e = this._workingStartIndex; e < this._workingEndIndex; e++) {
              var i = this.dataItems.getIndex(e).slice,
                  n = i.startAngle;
              n >= -90 && n < 90 ? i.toFront() : n >= 90 && i.toBack();
            }
          }, Object.defineProperty(e.prototype, "depth", {
            get: function get() {
              return this.getPropertyValue("depth");
            },
            set: function set(t) {
              this.setPropertyValue("depth", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "angle", {
            get: function get() {
              return this.getPropertyValue("angle");
            },
            set: function set(t) {
              this.setPropertyValue("angle", t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.positionBullet = function (e) {
            t.prototype.positionBullet.call(this, e);
            var i = e.dataItem.slice;
            e.y = e.pixelY - i.depth;
          }, e;
        }(jh);

        Fs.registeredClasses.PieSeries3D = Bh, Fs.registeredClasses.PieSeries3DDataItem = Rh;

        var Nh = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "PieChart3DDataItem", e.applyTheme(), e;
          }

          return n(e, t), e;
        }(Lh),
            Hh = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "PieChart3D", e.depth = 20, e.angle = 10, e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "depth", {
            get: function get() {
              return this.getPropertyValue("depth");
            },
            set: function set(t) {
              this.setPropertyValue("depth", t) && this.invalidateDataUsers();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "angle", {
            get: function get() {
              return this.getPropertyValue("angle");
            },
            set: function set(t) {
              t = R(t, 0, 90), this.setPropertyValue("angle", t) && this.invalidateDataUsers();
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.createSeries = function () {
            return new Bh();
          }, e;
        }(Eh);

        Fs.registeredClasses.PieChart3D = Hh;

        var Wh = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "SlicedChartDataItem", e.applyTheme(), e;
          }

          return n(e, t), e;
        }(Ah),
            Xh = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "SlicedChart", e.seriesContainer.layout = "horizontal", e.padding(15, 15, 15, 15), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.applyInternalDefaults = function () {
            t.prototype.applyInternalDefaults.call(this), S(this.readerTitle) || (this.readerTitle = this.language.translate("Sliced chart"));
          }, e.prototype.validate = function () {
            t.prototype.validate.call(this);
          }, e;
        }(Vh);

        Fs.registeredClasses.SlicedChart = Xh, Fs.registeredClasses.SlicedChartDataItem = Wh;

        var Yh = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.legendSettings = new Ml(), e.className = "FlowDiagramNode", e.isMeasured = !1, new ta(), e.draggable = !0, e.inert = !0, e.setStateOnChildren = !0, e.events.on("positionchanged", e.invalidateLinks, e, !1), e.events.on("sizechanged", e.invalidateLinks, e, !1), e;
          }

          return n(e, t), e.prototype.handleHit = function (t) {
            this.isHidden || this.isHiding ? this.show() : this.hide();
          }, e.prototype.show = function (e) {
            var i = t.prototype.show.call(this, e);
            return this.outgoingDataItems.each(function (t) {
              (!t.toNode || t.toNode && !t.toNode.isHidden) && t.setWorkingValue("value", t.getValue("value"), e);
            }), this.incomingDataItems.each(function (t) {
              (!t.fromNode || t.fromNode && !t.fromNode.isHidden) && t.setWorkingValue("value", t.getValue("value"), e);
            }), i;
          }, e.prototype.hide = function (e) {
            var i = t.prototype.hide.call(this, e);
            return this.outgoingDataItems.each(function (t) {
              t.setWorkingValue("value", 0, e);
            }), this.incomingDataItems.each(function (t) {
              t.setWorkingValue("value", 0, e);
            }), i;
          }, e.prototype.validate = function () {
            this.isDisposed() || (t.prototype.validate.call(this), this.invalidateLinks());
          }, e.prototype.invalidateLinks = function () {
            var t = this;
            this.outgoingDataItems.each(function (e) {
              var i = e.link;

              if ("fromNode" == i.colorMode && (i.fill = i.dataItem.fromNode.color), "gradient" == i.colorMode) {
                i.fill = i.gradient, i.stroke = i.gradient;
                var n = i.gradient.stops.getIndex(0);
                n && (n.color = t.color, i.gradient.validate());
              }
            }), this.incomingDataItems.each(function (e) {
              var i = e.link;

              if ("toNode" == i.colorMode && (i.fill = i.dataItem.toNode.color), "gradient" == i.colorMode) {
                i.fill = i.gradient, i.stroke = i.gradient;
                var n = i.gradient.stops.getIndex(1);
                n && (n.color = t.color, i.gradient.validate());
              }
            });
          }, Object.defineProperty(e.prototype, "incomingDataItems", {
            get: function get() {
              var t = this;

              if (!this._incomingDataItems) {
                var e = new Ns();
                e.events.on("inserted", function () {
                  "name" == t.chart.sortBy ? t._incomingSorted = ce(t._incomingDataItems.iterator(), function (t, e) {
                    return De(t.fromName, e.fromName);
                  }) : "value" == t.chart.sortBy ? t._incomingSorted = ce(t._incomingDataItems.iterator(), function (t, e) {
                    return Fe(Ve(t.value, e.value));
                  }) : t._incomingSorted = t._incomingDataItems.iterator();
                }, void 0, !1), this._incomingDataItems = e;
              }

              return this._incomingDataItems;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "outgoingDataItems", {
            get: function get() {
              var t = this;

              if (!this._outgoingDataItems) {
                var e = new Ns();
                e.events.on("inserted", function () {
                  "name" == t.chart.sortBy ? t._outgoingSorted = ce(t._outgoingDataItems.iterator(), function (t, e) {
                    return De(t.fromName, e.fromName);
                  }) : "value" == t.chart.sortBy ? t._outgoingSorted = ce(t._outgoingDataItems.iterator(), function (t, e) {
                    return Fe(Ve(t.value, e.value));
                  }) : t._outgoingSorted = t._outgoingDataItems.iterator();
                }, void 0, !1), this._outgoingDataItems = e;
              }

              return this._outgoingDataItems;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "name", {
            get: function get() {
              return this.getPropertyValue("name");
            },
            set: function set(t) {
              this.setPropertyValue("name", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "total", {
            get: function get() {
              return this.getPropertyValue("total");
            },
            set: function set(t) {
              this.setPropertyValue("total", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "totalIncoming", {
            get: function get() {
              return this.getPropertyValue("totalIncoming");
            },
            set: function set(t) {
              this.setPropertyValue("totalIncoming", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "totalOutgoing", {
            get: function get() {
              return this.getPropertyValue("totalOutgoing");
            },
            set: function set(t) {
              this.setPropertyValue("totalOutgoing", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "color", {
            get: function get() {
              return this.getPropertyValue("color");
            },
            set: function set(t) {
              this.setColorProperty("color", t), this._background && (this._background.fill = t), this.fill = t;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.createLegendMarker = function (t) {
            var e = t.pixelWidth,
                i = t.pixelHeight;
            t.removeChildren();
            var n = t.createChild(ja);
            n.shouldClone = !1, ne(this, n, va), n.stroke = this.fill, n.copyFrom(this), n.padding(0, 0, 0, 0), n.width = e, n.height = i;
            var r = t.dataItem;
            r.color = n.fill, r.colorOrig = n.fill;
          }, Object.defineProperty(e.prototype, "legendDataItem", {
            get: function get() {
              return this._legendDataItem;
            },
            set: function set(t) {
              this._legendDataItem = t, this._legendDataItem.itemContainer.deepInvalidate();
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(_a);

        Fs.registeredClasses.FlowDiagramNode = Yh;

        var zh = function (t) {
          function e() {
            var e = t.call(this) || this;
            e.className = "FlowDiagramLink";
            var i = new ta();
            return e.maskBullets = !1, e.colorMode = "fromNode", e.layout = "none", e.isMeasured = !1, e.startAngle = 0, e.endAngle = 0, e.strokeOpacity = 0, e.verticalCenter = "none", e.horizontalCenter = "none", e.tooltipText = "{fromName}→{toName}:{value.value}", e.tooltipLocation = .5, e.link = e.createChild(ba), e.link.shouldClone = !1, e.link.setElement(e.paper.add("path")), e.link.isMeasured = !1, e.fillOpacity = .2, e.fill = i.getFor("alternativeBackground"), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.positionBullets = function () {
            var t = this;
            pe(this.bullets.iterator(), function (e) {
              e.parent = t.bulletsContainer, e.maxWidth = t.maxWidth, e.maxHeight = t.maxHeight, t.positionBullet(e);
            });
          }, Object.defineProperty(e.prototype, "bulletsContainer", {
            get: function get() {
              if (!this._bulletsContainer) {
                var t = this.createChild(_a);
                t.shouldClone = !1, t.layout = "none", this._bulletsContainer = t;
              }

              return this._bulletsContainer;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "bulletsMask", {
            get: function get() {
              if (!this._bulletsMask) {
                var t = this.createChild(ba);
                t.shouldClone = !1, t.setElement(this.paper.add("path")), t.isMeasured = !1, this._bulletsMask = t;
              }

              return this._bulletsMask;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.positionBullet = function (t) {
            var e = t.locationX;
            A(e) || (e = t.locationY), A(e) || (e = .5);
            var i = this.middleLine.positionToPoint(e);
            t.moveTo(i);
            var n,
                r = t.propertyFields.rotation;
            t.dataItem && (n = t.dataItem.dataContext[r]), A(n) || (n = i.angle), t.rotation = n;
          }, Object.defineProperty(e.prototype, "startAngle", {
            get: function get() {
              return this.getPropertyValue("startAngle");
            },
            set: function set(t) {
              this.setPropertyValue("startAngle", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "endAngle", {
            get: function get() {
              return this.getPropertyValue("endAngle");
            },
            set: function set(t) {
              this.setPropertyValue("endAngle", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "colorMode", {
            get: function get() {
              return this.getPropertyValue("colorMode");
            },
            set: function set(t) {
              if ("gradient" == t) {
                var e = this.fill;
                this.gradient.stops.clear(), e instanceof qs && (this.gradient.addColor(e), this.gradient.addColor(e)), this.fill = this.gradient, this.stroke = this.gradient;
              }

              this.setPropertyValue("colorMode", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "maskBullets", {
            get: function get() {
              return this.getPropertyValue("maskBullets");
            },
            set: function set(t) {
              this.setPropertyValue("maskBullets", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "tooltipLocation", {
            get: function get() {
              return this.getPropertyValue("tooltipLocation");
            },
            set: function set(t) {
              this.setPropertyValue("tooltipLocation", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setFill = function (e) {
            t.prototype.setFill.call(this, e);
            var i = this._gradient;
            i && e instanceof qs && (i.stops.clear(), i.addColor(e), i.addColor(e));
          }, e.prototype.measureElement = function () {}, Object.defineProperty(e.prototype, "bullets", {
            get: function get() {
              var t = this;
              return this._bullets || (this._bullets = new Hs(new Vl()), this._disposers.push(new Bs(this._bullets)), this._disposers.push(this._bullets.template), this._bullets.events.on("inserted", function (e) {
                e.newValue.events.on("propertychanged", function (e) {
                  "locationX" != e.property && "locationY" != e.property || t.positionBullet(e.target);
                }, void 0, !1);
              }, void 0, !1)), this._bullets;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), this.bullets.copyFrom(e.bullets);
            var i = this.middleLine;
            i && (i instanceof Na && e.middleLine instanceof Na && i.copyFrom(e.middleLine), i instanceof Xa && e.middleLine instanceof Xa && i.copyFrom(e.middleLine)), this.link.copyFrom(e.link);
          }, e.prototype.getTooltipX = function () {
            if (this.middleLine) return this.middleLine.positionToPoint(this.tooltipLocation).x;
          }, e.prototype.getTooltipY = function () {
            if (this.middleLine) return this.middleLine.positionToPoint(this.tooltipLocation).y;
          }, Object.defineProperty(e.prototype, "gradient", {
            get: function get() {
              return this._gradient || (this._gradient = new ia()), this._gradient;
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(_a);

        Fs.registeredClasses.FlowDiagramLink = zh;

        var Uh = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "FlowDiagramDataItem", e.values.value = {}, e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "fromName", {
            get: function get() {
              return this.properties.fromName;
            },
            set: function set(t) {
              this.setProperty("fromName", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "toName", {
            get: function get() {
              return this.properties.toName;
            },
            set: function set(t) {
              this.setProperty("toName", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "color", {
            get: function get() {
              return this.properties.color;
            },
            set: function set(t) {
              this.setProperty("color", ei(t));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "value", {
            get: function get() {
              return this.values.value.value;
            },
            set: function set(t) {
              this.setValue("value", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "link", {
            get: function get() {
              var t = this;

              if (!this._link) {
                var e = this.component.links.create();
                this._link = e, this.addSprite(e), this._disposers.push(new fs(function () {
                  t.component && t.component.links.removeValue(e);
                }));
              }

              return this._link;
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(Tl),
            Gh = function (t) {
          function e() {
            var e = t.call(this) || this;
            e.colors = new Sl(), e.className = "FlowDiagram", e.nodePadding = 20, e.sortBy = "none", e.sequencedInterpolation = !0, e.colors.step = 2, e.minNodeSize = .02;
            var i = e.chartContainer.createChild(_a);
            i.shouldClone = !1, i.layout = "none", i.isMeasured = !1, e.linksContainer = i;
            var n = e.chartContainer.createChild(_a);
            return n.shouldClone = !1, n.layout = "none", n.isMeasured = !1, e.nodesContainer = n, e.dataItem = e.createDataItem(), e.dataItem.component = e, e.applyTheme(), e;
          }

          return n(e, t), e.prototype.dispose = function () {
            t.prototype.dispose.call(this), this.dataItem.dispose();
          }, e.prototype.validateData = function () {
            var e = this;
            0 == this._parseDataFrom && this.nodes.clear(), this.sortNodes(), this.colors.reset(), t.prototype.validateData.call(this);
            var i,
                n,
                r = 0,
                s = 0;
            pe(this.dataItems.iterator(), function (t) {
              var o = t.fromName;
              o && ((a = e.nodes.getKey(o)) || ((a = e.nodes.create(o)).name = o, a.chart = e, a.dataItem = t), t.fromNode = a, t.fromNode.outgoingDataItems.push(t));
              var a,
                  l = t.toName;

              if (l && ((a = e.nodes.getKey(l)) || ((a = e.nodes.create(l)).name = l, a.chart = e, a.dataItem = t), t.toNode = a, t.toNode.incomingDataItems.push(t)), !t.fromNode) {
                var h = new fl();
                h.opacities = [0, 1], t.link.strokeModifier = h;
              }

              if (!t.toNode) {
                var u = new fl();
                u.opacities = [1, 0], t.link.strokeModifier = u;
              }

              var p = t.value;
              A(p) && (r += p, s++, (i > p || !A(i)) && (i = p), (n < p || !A(n)) && (n = p));
            });
            var o = "value";
            this.dataItem.setCalculatedValue(o, n, "high"), this.dataItem.setCalculatedValue(o, i, "low"), this.dataItem.setCalculatedValue(o, r, "sum"), this.dataItem.setCalculatedValue(o, r / s, "average"), this.dataItem.setCalculatedValue(o, s, "count"), pe(this.nodes.iterator(), function (t) {
              var i = t[1];
              i.fill instanceof qs && (i.color = i.fill), null == i.color && (i.color = e.colors.next()), null != i.dataItem.color && (i.color = i.dataItem.color), i.dataItem.visible || i.hide(0), e.getNodeValue(i);
            }), this.sortNodes(), this.feedLegend();
          }, e.prototype.handleDataItemWorkingValueChange = function (t, e) {
            this.invalidate();
          }, e.prototype.sortNodes = function () {
            "name" == this.sortBy ? this._sorted = this.nodes.sortedIterator() : "value" == this.sortBy ? this._sorted = ce(this.nodes.iterator(), function (t, e) {
              return Fe(Ve(t[1].total, e[1].total));
            }) : this._sorted = this.nodes.iterator();
          }, e.prototype.getNodeValue = function (t) {
            var e = 0,
                i = 0;
            pe(t.incomingDataItems.iterator(), function (t) {
              var i = t.getWorkingValue("value");
              A(i) && (e += i);
            }), pe(t.outgoingDataItems.iterator(), function (t) {
              var e = t.getWorkingValue("value");
              A(e) && (i += e);
            }), t.total = e + i, t.totalIncoming = e, t.totalOutgoing = i;
          }, e.prototype.changeSorting = function () {
            this.sortNodes();
          }, e.prototype.applyInternalDefaults = function () {
            t.prototype.applyInternalDefaults.call(this), S(this.readerTitle) || (this.readerTitle = this.language.translate("Flow diagram"));
          }, e.prototype.createDataItem = function () {
            return new Uh();
          }, Object.defineProperty(e.prototype, "nodePadding", {
            get: function get() {
              return this.getPropertyValue("nodePadding");
            },
            set: function set(t) {
              this.setPropertyValue("nodePadding", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "sortBy", {
            get: function get() {
              return this.getPropertyValue("sortBy");
            },
            set: function set(t) {
              this.setPropertyValue("sortBy", t), this.changeSorting();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "minNodeSize", {
            get: function get() {
              return this.getPropertyValue("minNodeSize");
            },
            set: function set(t) {
              this.setPropertyValue("minNodeSize", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "nodes", {
            get: function get() {
              if (!this._nodes) {
                var t = this.createNode();
                t.events.on("hit", function (t) {
                  t.target.handleHit(t);
                }), this._nodes = new ks(t), this._disposers.push(new Is(this._nodes));
              }

              return this._nodes;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.createNode = function () {
            var t = new Yh();
            return this._disposers.push(t), t;
          }, Object.defineProperty(e.prototype, "links", {
            get: function get() {
              return this._links || (this._links = new Hs(this.createLink()), this._disposers.push(new Bs(this._links))), this._links;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.createLink = function () {
            var t = new zh();
            return this._disposers.push(t), t;
          }, e.prototype.feedLegend = function () {
            var t = this.legend;

            if (t) {
              var e = [];
              this.nodes.each(function (t, i) {
                e.push(i);
              }), t.data = e, t.dataFields.name = "name";
            }
          }, e.prototype.disposeData = function () {
            t.prototype.disposeData.call(this), this.nodes.clear();
          }, e;
        }(Al);

        Fs.registeredClasses.FlowDiagram = Gh;

        var Kh = function (t) {
          function e() {
            var e = t.call(this) || this;
            e.className = "LabelBullet";
            var i = e.createChild(Ma);
            return i.shouldClone = !1, i.verticalCenter = "middle", i.horizontalCenter = "middle", i.truncate = !0, i.hideOversized = !1, i.maxWidth = 500, i.maxHeight = 500, i.stroke = Je(), i.strokeOpacity = 0, i.fill = new ta().getFor("text"), e.events.on("maxsizechanged", e.handleMaxSize, e, !1), e.label = i, e.applyTheme(), e;
          }

          return n(e, t), e.prototype.handleMaxSize = function () {
            this.label.maxWidth = this.maxWidth, this.label.maxHeight = this.maxHeight;
          }, e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), this.label.copyFrom(e.label);
          }, e;
        }(Vl);

        Fs.registeredClasses.LabelBullet = Kh;

        var Zh = function (t) {
          function e() {
            var e = t.call(this) || this;
            e.nextInCoord = 0, e.nextOutCoord = 0, e.className = "SankeyNode", e.width = 10, e.height = 10;
            var i = e.createChild(Kh);
            i.shouldClone = !1, i.locationX = 1, i.locationY = .5, i.label.text = "{name}", i.width = 150, i.height = 150, i.label.horizontalCenter = "left", i.label.padding(0, 5, 0, 5), e.nameLabel = i;
            var n = e.createChild(Kh);
            n.shouldClone = !1, n.label.hideOversized = !1, n.locationX = .5, n.locationY = .5, n.width = 150, n.height = 150, n.label.horizontalCenter = "middle", e.valueLabel = n;
            var r = e.hiddenState;
            return r.properties.fill = new ta().getFor("disabledBackground"), r.properties.opacity = .5, r.properties.visible = !0, e.background.hiddenState.copyFrom(r), e;
          }

          return n(e, t), e.prototype.invalidateLinks = function () {
            var e = this;
            t.prototype.invalidateLinks.call(this), this.nextInCoord = 0, this.nextOutCoord = 0;
            var i = this.chart;

            if (i) {
              var n = i.orientation;
              this._incomingSorted && pe(this._incomingSorted, function (t) {
                var r = t.link,
                    s = t.getWorkingValue("value");

                if (A(s)) {
                  r.parent = e.chart.linksContainer;
                  var o = void 0,
                      a = void 0,
                      l = void 0;

                  if ("horizontal" == n ? (o = e.pixelX + e.dx, a = e.nextInCoord + e.pixelY + e.dy, l = 0) : (a = e.pixelY + e.dy, o = e.nextInCoord + e.pixelX + e.dx, l = 90), r.endX = o, r.endY = a, r.startAngle = l, r.endAngle = l, r.gradient.rotation = l, r.linkWidth = s * i.valueHeight, !t.fromNode) {
                    "horizontal" == n ? (r.maxWidth = 200, r.startX = e.pixelX + e.dx - r.maxWidth, r.startY = r.endY) : (r.maxHeight = 200, r.startX = r.endX, r.startY = e.pixelY + e.dy - r.maxHeight), r.gradient, r.fill = t.toNode.color;
                    var h = r.gradient.stops.getIndex(0);
                    h && ("gradient" == r.colorMode && (h.color = e.color), h.opacity = 0, r.fill = r.gradient, r.stroke = r.gradient, r.gradient.validate());
                  }

                  e.nextInCoord += r.linkWidth;
                }
              }), this._outgoingSorted && pe(this._outgoingSorted, function (t) {
                var i = t.link;
                i.parent = e.chart.linksContainer;
                var r = t.getWorkingValue("value");

                if (A(r)) {
                  var s = void 0,
                      o = void 0,
                      a = void 0;

                  if ("horizontal" == n ? (a = 0, s = e.pixelX + e.pixelWidth + e.dx - 1, o = e.nextOutCoord + e.pixelY + e.dy) : (a = 90, s = e.nextOutCoord + e.pixelX + e.dx, o = e.pixelY + e.pixelHeight + e.dy - 1), i.startX = s, i.startY = o, i.startAngle = a, i.endAngle = a, i.gradient.rotation = a, i.linkWidth = r * e.chart.valueHeight, !t.toNode) {
                    "horizontal" == n ? (i.maxWidth = 200, i.endX = e.pixelX + i.maxWidth + e.dx, i.endY = i.startY) : (i.maxHeight = 200, i.endX = i.startX, i.endY = e.pixelY + i.maxHeight + e.dy), i.opacity = e.opacity;
                    var l = i.gradient.stops.getIndex(1);
                    l && ("gradient" == i.colorMode && (l.color = e.color), l.opacity = 0, i.fill = i.gradient, i.stroke = i.gradient, i.gradient.validate());
                  }

                  e.nextOutCoord += i.linkWidth;
                }
              });
            }

            this.positionBullet(this.nameLabel), this.positionBullet(this.valueLabel);
          }, e.prototype.positionBullet = function (t) {
            t && (t.x = this.measuredWidth * t.locationX, t.y = this.measuredHeight * t.locationY);
          }, Object.defineProperty(e.prototype, "level", {
            get: function get() {
              return this.getPropertyValue("level");
            },
            set: function set(t) {
              this.setPropertyValue("level", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), this.nameLabel.copyFrom(e.nameLabel), this.valueLabel.copyFrom(e.valueLabel);
          }, e;
        }(Yh);

        Fs.registeredClasses.SankeyNode = Zh;

        var qh = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "SankeyLink", new ta(), e.tension = .8, e.controlPointDistance = .2, e.startAngle = 0, e.endAngle = 0, e.linkWidth = 0, e.startX = 0, e.endX = 0, e.startY = 0, e.endY = 0, e.middleLine = e.createChild(Ga), e.middleLine.shouldClone = !1, e.middleLine.strokeOpacity = 0, e.applyTheme(), e;
          }

          return n(e, t), e.prototype.validate = function () {
            if (t.prototype.validate.call(this), !this.isTemplate) {
              var e = this.startX,
                  i = this.startY,
                  n = this.endX,
                  r = this.endY;
              A(n) || (n = e), A(r) || (r = i);
              var s = this.startAngle,
                  o = this.endAngle,
                  a = this.linkWidth,
                  l = "",
                  h = e,
                  u = i,
                  p = n,
                  c = r,
                  d = e + a * B(s),
                  f = n + a * B(o),
                  g = i + a * H(s),
                  y = r + a * H(o),
                  m = e + a / 2 * B(s),
                  v = n + a / 2 * B(o),
                  b = i + a / 2 * H(s),
                  x = r + a / 2 * H(o);
              this.zIndex = this.zIndex || this.dataItem.index;

              var _ = this.tension + (1 - this.tension) * B(s),
                  P = this.tension + (1 - this.tension) * H(s);

              if (this.middleLine.tensionX = _, this.middleLine.tensionY = P, A(a) && A(e) && A(n) && A(i) && A(r)) {
                j(h, 3) == j(p, 3) && (p += .01), j(u, 3) == j(c, 3) && (c += .01), j(d, 3) == j(f, 3) && (f += .01), j(g, 3) == j(y, 3) && (y += .01);
                var w = Math.min(d, f, h, p),
                    C = Math.min(g, y, u, c),
                    O = Math.max(d, f, h, p),
                    S = Math.max(g, y, u, c);
                this._bbox = {
                  x: w,
                  y: C,
                  width: O - w,
                  height: S - C
                };
                var I = this.controlPointDistance,
                    D = h + (p - h) * I * H(s),
                    k = u + (c - u) * I * B(s),
                    T = p - (p - h) * I * H(o),
                    V = c - (c - u) * I * B(o),
                    F = m + (v - m) * I * H(s),
                    M = b + (x - b) * I * B(s),
                    L = v - (v - m) * I * H(o),
                    E = x - (x - b) * I * B(o),
                    R = Q({
                  x: D,
                  y: k
                }, {
                  x: T,
                  y: V
                }),
                    W = (a / H(R) - a) / N(R) * H(s),
                    X = (a / B(R) - a) * N(R) * B(s),
                    Y = -W / 2 + d + (f - d) * I * H(s),
                    z = -X / 2 + g + (y - g) * I * B(s),
                    U = -W / 2 + f - (f - d) * I * H(o),
                    G = -X / 2 + y - (y - g) * I * B(o);
                this.middleLine.segments = [[{
                  x: m,
                  y: b
                }, {
                  x: F,
                  y: M
                }, {
                  x: L,
                  y: E
                }, {
                  x: v,
                  y: x
                }]], D += W / 2, k += X / 2, T += W / 2, V += X / 2, l += xr({
                  x: h,
                  y: u
                }), l += new sl(_, P).smooth([{
                  x: h,
                  y: u
                }, {
                  x: D,
                  y: k
                }, {
                  x: T,
                  y: V
                }, {
                  x: p,
                  y: c
                }]), l += _r({
                  x: f,
                  y: y
                }), l += new sl(_, P).smooth([{
                  x: f,
                  y: y
                }, {
                  x: U,
                  y: G
                }, {
                  x: Y,
                  y: z
                }, {
                  x: d,
                  y: g
                }]), l += " Z";
              }

              this.link.path = l, this.maskBullets && (this.bulletsMask.path = l, this.bulletsContainer.mask = this.bulletsMask), this.positionBullets();
            }
          }, Object.defineProperty(e.prototype, "startX", {
            get: function get() {
              return this.getPropertyValue("startX");
            },
            set: function set(t) {
              this.setPropertyValue("startX", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "endX", {
            get: function get() {
              return this.getPropertyValue("endX");
            },
            set: function set(t) {
              this.setPropertyValue("endX", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "startY", {
            get: function get() {
              return this.getPropertyValue("startY");
            },
            set: function set(t) {
              this.setPropertyValue("startY", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "endY", {
            get: function get() {
              return this.getPropertyValue("endY");
            },
            set: function set(t) {
              this.setPropertyValue("endY", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "linkWidth", {
            get: function get() {
              return this.getPropertyValue("linkWidth");
            },
            set: function set(t) {
              this.setPropertyValue("linkWidth", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "controlPointDistance", {
            get: function get() {
              return this.getPropertyValue("controlPointDistance");
            },
            set: function set(t) {
              this.setPropertyValue("controlPointDistance", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "tension", {
            get: function get() {
              return this.getPropertyValue("tension");
            },
            set: function set(t) {
              this.setPropertyValue("tension", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(zh);

        Fs.registeredClasses.SankeyLink = qh;

        var $h = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "SankeyDiagramDataItem", e.applyTheme(), e;
          }

          return n(e, t), e;
        }(Uh),
            Jh = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "SankeyDiagram", e.orientation = "horizontal", e.nodeAlign = "middle", e.nodesContainer.width = h(100), e.nodesContainer.height = h(100), e.linksContainer.width = h(100), e.linksContainer.height = h(100), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.validateData = function () {
            var e = this;
            t.prototype.validateData.call(this), this._levelCount = 0, this.nodes.each(function (t, e) {
              e.level = void 0;
            }), this.nodes.each(function (t, i) {
              i.level = e.getNodeLevel(i, 0), e._levelCount = W(e._levelCount, i.level);
            });
          }, e.prototype.getNodeLevel = function (t, e) {
            var i = this,
                n = [e];
            return pe(t.incomingDataItems.iterator(), function (t) {
              t.fromNode && (A(t.fromNode.level) ? n.push(t.fromNode.level + 1) : n.push(i.getNodeLevel(t.fromNode, e + 1)));
            }), Math.max.apply(Math, l(n));
          }, e.prototype.calculateValueHeight = function () {
            var t = this;
            this._levelSum = {}, this._levelNodesCount = {}, this.maxSum = 0;
            var e,
                i,
                n = this.dataItem.values.value.sum;
            pe(this._sorted, function (e) {
              var i = e[1];
              t.getNodeValue(i);
            }), this.nodes.each(function (e, i) {
              var r = i.level,
                  s = Math.max(i.totalIncoming, i.totalOutgoing);
              s / n < t.minNodeSize && (s = n * t.minNodeSize), A(t._levelSum[r]) ? t._levelSum[r] += s : t._levelSum[r] = s, A(t._levelNodesCount[r]) ? t._levelNodesCount[r]++ : t._levelNodesCount[r] = 1;
            }), e = "horizontal" == this.orientation ? this.chartContainer.maxHeight - 1 : this.chartContainer.maxWidth - 1, Qt(this._levelSum, function (n, r) {
              var s = r;
              r = r * e / (e - (t._levelNodesCount[n] - 1) * t.nodePadding), t.maxSum < r && (t.maxSum = s, i = w(n));
            }), this._maxSumLevel = i;
            var r = this._levelNodesCount[this._maxSumLevel],
                s = (e - (r - 1) * this.nodePadding) / this.maxSum;

            if (A(this.valueHeight)) {
              var o = void 0;

              try {
                o = this._heightAnimation.animationOptions[0].to;
              } catch (t) {}

              if (o != s) {
                var a = this.interpolationDuration;

                try {
                  a = this.nodes.template.states.getKey("active").transitionDuration;
                } catch (t) {}

                this._heightAnimation = new Io(this, {
                  property: "valueHeight",
                  from: this.valueHeight,
                  to: s
                }, a, this.interpolationEasing).start(), this._disposers.push(this._heightAnimation);
              }
            } else this.valueHeight = s;
          }, e.prototype.validate = function () {
            var e = this;
            t.prototype.validate.call(this), this.calculateValueHeight();
            var i = this.nodesContainer,
                n = {},
                r = this._levelNodesCount[this._maxSumLevel],
                s = this.dataItem.values.value.sum;
            pe(this._sorted, function (t) {
              var o,
                  a,
                  l,
                  h = t[1],
                  u = h.level,
                  p = 0,
                  c = e._levelNodesCount[u];

              switch (e.nodeAlign) {
                case "bottom":
                  p = (e.maxSum - e._levelSum[u]) * e.valueHeight - (c - r) * e.nodePadding;
                  break;

                case "middle":
                  p = (e.maxSum - e._levelSum[u]) * e.valueHeight / 2 - (c - r) * e.nodePadding / 2;
              }

              h.parent = i;
              var d = Math.max(h.totalIncoming, h.totalOutgoing);

              if (d / s < e.minNodeSize && (d = s * e.minNodeSize), "horizontal" == e.orientation) {
                a = (o = (e.innerWidth - h.pixelWidth) / e._levelCount) * h.level, l = n[u] || p;
                var f = d * e.valueHeight;
                h.height = f, h.minX = a, h.maxX = a, n[u] = l + f + e.nodePadding;
              } else {
                o = (e.innerHeight - h.pixelHeight) / e._levelCount, a = n[u] || p, l = o * h.level;
                var g = d * e.valueHeight;
                h.width = g, h.minY = l, h.maxY = l, n[u] = a + g + e.nodePadding;
              }

              h.x = a, h.y = l;
            });
          }, e.prototype.showReal = function (e) {
            var i = this;

            if (this.interpolationDuration > 0) {
              var n = this.nodesContainer,
                  r = 0;
              pe(this.links.iterator(), function (t) {
                t.hide(0);
              }), pe(this._sorted, function (t) {
                var e,
                    s = t[1];
                "horizontal" == i.orientation ? (s.dx = -(n.pixelWidth - s.pixelWidth) / i._levelCount, e = "dx") : (s.dy = -(n.pixelHeight - s.pixelHeight) / i._levelCount, e = "dy");
                var o = 0,
                    a = i.interpolationDuration;
                i.sequencedInterpolation && (o = i.sequencedInterpolationDelay * r + a * r / le(i.nodes.iterator())), s.opacity = 0, s.invalidateLinks(), s.animate([{
                  property: "opacity",
                  from: 0,
                  to: 1
                }, {
                  property: e,
                  to: 0
                }], i.interpolationDuration, i.interpolationEasing).delay(o), pe(s.outgoingDataItems.iterator(), function (t) {
                  var e = t.link.show(i.interpolationDuration);
                  e && !e.isFinished() && e.delay(o);
                }), pe(s.incomingDataItems.iterator(), function (t) {
                  if (!t.fromNode) {
                    var e = t.link.show(i.interpolationDuration);
                    e && !e.isFinished() && e.delay(o);
                  }
                }), r++;
              });
            }

            return t.prototype.showReal.call(this);
          }, e.prototype.changeSorting = function () {
            var t = this;
            this.sortNodes();
            var e = {};
            pe(this._sorted, function (i) {
              var n,
                  r,
                  s = i[1],
                  o = s.level,
                  a = (t.maxSum - t._levelSum[o]) * t.valueHeight / 2;
              "horizontal" == t.orientation ? (n = "y", r = s.pixelHeight) : (n = "x", r = s.pixelWidth), s.animate({
                property: n,
                to: e[o] || a
              }, t.interpolationDuration, t.interpolationEasing), e[o] = (e[o] || a) + r + t.nodePadding, s.invalidateLinks();
            });
          }, e.prototype.applyInternalDefaults = function () {
            t.prototype.applyInternalDefaults.call(this), S(this.readerTitle) || (this.readerTitle = this.language.translate("Sankey diagram"));
          }, e.prototype.createDataItem = function () {
            return new $h();
          }, Object.defineProperty(e.prototype, "nodeAlign", {
            get: function get() {
              return this.getPropertyValue("nodeAlign");
            },
            set: function set(t) {
              this.setPropertyValue("nodeAlign", t), this.changeSorting();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "orientation", {
            get: function get() {
              return this.getPropertyValue("orientation");
            },
            set: function set(t) {
              this.setPropertyValue("orientation", t, !0);
              var e = this.nodes.template.nameLabel;
              "vertical" == t ? (this.nodes.template.width = void 0, e.label.horizontalCenter = "middle", e.locationX = .5) : (this.nodes.template.height = void 0, e.label.horizontalCenter = "left", e.locationX = 1);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.createNode = function () {
            var t = new Zh();
            return this._disposers.push(t), t;
          }, e.prototype.createLink = function () {
            var t = new qh();
            return this._disposers.push(t), t;
          }, Object.defineProperty(e.prototype, "valueHeight", {
            get: function get() {
              return this._valueHeight;
            },
            set: function set(t) {
              t != this._valueHeight && (this._valueHeight = t, this.invalidate());
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.disposeData = function () {
            t.prototype.disposeData.call(this), this._sorted = this.nodes.iterator();
          }, e;
        }(Gh);

        Fs.registeredClasses.SankeyDiagram = Jh;

        var Qh = function (t) {
          function e() {
            var e = t.call(this) || this;
            e.className = "ChordNode";
            var i = e.createChild(_h);
            i.location = .5, i.radius = 5, i.text = "{name}", i.zIndex = 1, i.shouldClone = !1, e.label = i, e.layout = "none", e.events.on("positionchanged", e.updateRotation, e, !1), e.isMeasured = !1, e.slice = e.createChild(Ka), e.slice.isMeasured = !1;
            var n = e.hiddenState;
            return n.properties.fill = new ta().getFor("disabledBackground"), n.properties.opacity = .5, n.properties.visible = !0, e.setStateOnChildren = !1, e.slice.hiddenState.properties.visible = !0, e.adapter.add("tooltipX", function (t, e) {
              return e.slice.ix * (e.slice.radius - (e.slice.radius - e.slice.pixelInnerRadius) / 2);
            }), e.adapter.add("tooltipY", function (t, e) {
              return e.slice.iy * (e.slice.radius - (e.slice.radius - e.slice.pixelInnerRadius) / 2);
            }), e;
          }

          return n(e, t), e.prototype.invalidateLinks = function () {
            var e = this;
            t.prototype.invalidateLinks.call(this);
            var i = this.label,
                n = this.slice,
                r = this.chart;

            if (r && n) {
              var s = this.total,
                  o = n.arc,
                  a = n.startAngle;
              this.children.each(function (t) {
                if (t instanceof Vl) {
                  var e = t.locationX;
                  A(e) || (e = .5);
                  var i = t.locationY;
                  A(i) || (i = 1);
                  var r = a + o * e,
                      s = i * n.radius;
                  t.x = s * H(r), t.y = s * B(r);
                }
              });
              var l = a + o * i.location,
                  h = a + (1 - s / this.adjustedTotal) * o * .5;
              p(h) && (h = a), i.fixPosition(l, n.radius), this.nextAngle = h, this._outgoingSorted && pe(this._outgoingSorted, function (t) {
                var i = t.link;
                i.parent = e.chart.linksContainer;
                var s = t.getWorkingValue("value");

                if (A(s)) {
                  if (r.nonRibbon) {
                    var l = i.percentWidth;
                    A(l) || (l = 5), l /= 100, i.startAngle = a + o / 2 - o / 2 * l, i.arc = o * l;
                  } else i.arc = s * r.valueAngle, i.startAngle = e.nextAngle, e.nextAngle += i.arc;

                  t.toNode || (i.endAngle = i.startAngle), i.radius = n.pixelInnerRadius;
                }
              }), this._incomingSorted && pe(this._incomingSorted, function (t) {
                var i = t.link;

                if (i.radius = n.pixelInnerRadius, r.nonRibbon) {
                  var s = i.percentWidth;
                  A(s) || (s = 5), s /= 100, i.endAngle = a + o / 2 - o / 2 * s, i.arc = o * s;
                } else {
                  i.endAngle = e.nextAngle;
                  var l = t.getWorkingValue("value");
                  A(l) && (i.arc = l * r.valueAngle, e.nextAngle += i.arc);
                }

                t.fromNode || (i.startAngle = i.endAngle);
              });
            }
          }, e.prototype.updateRotation = function () {
            var t = this.slice,
                e = this.trueStartAngle + t.arc / 2,
                i = t.radius,
                n = i * H(e),
                r = i * B(e),
                s = Q({
              x: n + this.pixelX,
              y: r + this.pixelY
            });
            t.startAngle = this.trueStartAngle + (s - e), this.dx = -this.pixelX, this.dy = -this.pixelY;
          }, e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), this.label.copyFrom(e.label), this.slice.copyFrom(e.slice);
          }, e;
        }(Yh);

        Fs.registeredClasses.ChordNode = Qh;

        var tu = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "QuadraticCurve", e.element = e.paper.add("path"), e.pixelPerfect = !1, e.fill = Je(), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.draw = function () {
            if (A(this.x1 + this.x2 + this.y1 + this.y2 + this.cpx + this.cpy)) {
              var t = {
                x: this.x1,
                y: this.y1
              },
                  e = {
                x: this.x2,
                y: this.y2
              },
                  i = {
                x: this.cpx,
                y: this.cpy
              },
                  n = xr(t) + Pr(e, i);
              this.path = n;
            }
          }, Object.defineProperty(e.prototype, "cpx", {
            get: function get() {
              return this.getPropertyValue("cpx");
            },
            set: function set(t) {
              this.setPropertyValue("cpx", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "cpy", {
            get: function get() {
              return this.getPropertyValue("cpy");
            },
            set: function set(t) {
              this.setPropertyValue("cpy", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.positionToPoint = function (t) {
            var e = {
              x: this.x1,
              y: this.y1
            },
                i = {
              x: this.cpx,
              y: this.cpy
            },
                n = {
              x: this.x2,
              y: this.y2
            },
                r = nt(e, n, i, t),
                s = nt(e, n, i, t + .001);
            return {
              x: r.x,
              y: r.y,
              angle: Q(r, s)
            };
          }, e;
        }(Na),
            eu = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "ChordLink", e.middleLine = e.createChild(tu), e.middleLine.shouldClone = !1, e.middleLine.strokeOpacity = 0, e.applyTheme(), e;
          }

          return n(e, t), e.prototype.validate = function () {
            if (t.prototype.validate.call(this), !this.isTemplate) {
              var e = this.startAngle,
                  i = this.endAngle,
                  n = this.arc,
                  r = this.radius,
                  s = this.dataItem.fromNode,
                  o = this.dataItem.toNode,
                  a = 0,
                  l = 0;
              s && (a = s.pixelX + s.dx, l = s.pixelY + s.dy);
              var h = 0,
                  u = 0;

              if (o && (h = o.pixelX + o.dx, u = o.pixelY + o.dy), r > 0) {
                var p = r * H(e) + a,
                    c = r * B(e) + l,
                    d = r * H(i) + h,
                    f = r * B(i) + u,
                    g = {
                  x: 0,
                  y: 0
                },
                    y = xr({
                  x: p,
                  y: c
                });
                y += Or(e, n, r), y += Pr({
                  x: d,
                  y: f
                }, g), y += Or(i, n, r), y += Pr({
                  x: p,
                  y: c
                }, g), this.link.path = n > 0 ? y : "", this.maskBullets && (this.bulletsMask.path = y, this.bulletsContainer.mask = this.bulletsMask);
                var m = e + n / 2,
                    v = i + n / 2,
                    b = this.middleLine;
                b.x1 = r * H(m) + a, b.y1 = r * B(m) + l, b.x2 = r * H(v) + h, b.y2 = r * B(v) + u, b.cpx = 0, b.cpy = 0, b.stroke = this.fill, this.positionBullets();
              }
            }
          }, Object.defineProperty(e.prototype, "radius", {
            get: function get() {
              return this.getPropertyValue("radius");
            },
            set: function set(t) {
              this.setPropertyValue("radius", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "arc", {
            get: function get() {
              return this.getPropertyValue("arc");
            },
            set: function set(t) {
              this.setPropertyValue("arc", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(zh);

        Fs.registeredClasses.ChordLink = eu;

        var iu = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "ChordDiagramDataItem", e.applyTheme(), e;
          }

          return n(e, t), e;
        }(Uh),
            nu = function (t) {
          function e() {
            var e = t.call(this) || this;
            e.valueAngle = 0, e.className = "ChordDiagram", e.startAngle = -90, e.endAngle = 270, e.radius = h(80), e.innerRadius = -15, e.nodePadding = 5;
            var i = e.chartContainer.createChild(_a);
            return i.align = "center", i.valign = "middle", i.shouldClone = !1, i.layout = "absolute", e.chordContainer = i, e.nodesContainer.parent = i, e.linksContainer.parent = i, e.chartContainer.events.on("maxsizechanged", e.invalidate, e, !1), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.validate = function () {
            var e = this,
                i = this.chartContainer,
                n = this.endAngle,
                r = this.startAngle + this.nodePadding / 2,
                s = ut(this.startAngle, this.endAngle, 1);
            s = it([s, {
              x: 0,
              y: 0,
              width: 0,
              height: 0
            }]);
            var o = Math.min(i.innerWidth / s.width, i.innerHeight / s.height);
            A(o) || (o = 0);
            var a = ui(this.radius, o),
                l = ui(this.innerRadius, a, !0),
                h = this.dataItem.values.value.sum,
                u = 0,
                p = 0;
            pe(this._sorted, function (t) {
              var i = t[1];
              e.getNodeValue(i), u++;
              var n = i.total;
              i.total / h < e.minNodeSize && (n = h * e.minNodeSize), p += n;
            }), this.valueAngle = (n - this.startAngle - this.nodePadding * u) / p, pe(this._sorted, function (t) {
              var i = t[1],
                  s = i.slice;
              s.radius = a, s.innerRadius = l;
              var o,
                  p = i.total;
              i.total / h < e.minNodeSize && (p = h * e.minNodeSize), i.adjustedTotal = p, o = e.nonRibbon ? (n - e.startAngle) / u - e.nodePadding : e.valueAngle * p, s.arc = o, s.startAngle = r, i.trueStartAngle = r, i.parent = e.nodesContainer, i.validate(), r += o + e.nodePadding;
            }), this.chordContainer.definedBBox = {
              x: a * s.x,
              y: a * s.y,
              width: a * s.width,
              height: a * s.height
            }, this.chordContainer.invalidateLayout(), t.prototype.validate.call(this);
          }, e.prototype.applyInternalDefaults = function () {
            t.prototype.applyInternalDefaults.call(this), S(this.readerTitle) || (this.readerTitle = this.language.translate("Chord diagram"));
          }, e.prototype.createDataItem = function () {
            return new iu();
          }, Object.defineProperty(e.prototype, "startAngle", {
            get: function get() {
              return this.getPropertyValue("startAngle");
            },
            set: function set(t) {
              this.setPropertyValue("startAngle", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "endAngle", {
            get: function get() {
              return this.getPropertyValue("endAngle");
            },
            set: function set(t) {
              this.setPropertyValue("endAngle", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "radius", {
            get: function get() {
              return this.getPropertyValue("radius");
            },
            set: function set(t) {
              this.setPercentProperty("radius", t, !0, !1, 10, !1);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "innerRadius", {
            get: function get() {
              return this.getPropertyValue("innerRadius");
            },
            set: function set(t) {
              this.setPercentProperty("innerRadius", t, !0, !1, 10, !1);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "nonRibbon", {
            get: function get() {
              return this.getPropertyValue("nonRibbon");
            },
            set: function set(t) {
              this.setPropertyValue("nonRibbon", t, !0), this.links.template.middleLine.strokeOpacity = 1, this.links.template.link.fillOpacity = 0;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.createNode = function () {
            var t = new Qh();
            return this._disposers.push(t), t;
          }, e.prototype.createLink = function () {
            var t = new eu();
            return this._disposers.push(t), t;
          }, e;
        }(Gh);

        Fs.registeredClasses.ChordDiagram = nu;

        var ru = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "Column", e.width = h(80), e.height = h(80), e.events.disableType("transformed"), e.applyOnClones = !0, e.strokeOpacity = 1, e.layout = "none", e.createAssets(), e.events.on("childadded", e.handleKidAdded, e, !1), e;
          }

          return n(e, t), e.prototype.handleKidAdded = function () {
            "none" == this.layout && (this.layout = "absolute");
          }, e.prototype.createAssets = function () {
            this.column = this.createChild(ja), this.column.shouldClone = !1, this.column.isMeasured = !1, this.column.cornerRadius(0, 0, 0, 0), this._disposers.push(this.column);
          }, e.prototype.validate = function () {
            t.prototype.validate.call(this);
            var e = this.column;
            e && (e.width = X(this.pixelWidth, this.maxWidth), e.height = X(this.pixelHeight, this.maxHeight), e.invalid && e.validate());
          }, e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), this.column && this.column.copyFrom(e.column);
          }, Object.defineProperty(e.prototype, "bbox", {
            get: function get() {
              return this.definedBBox ? this.definedBBox : this.column ? {
                x: 0,
                y: 0,
                width: this.column.measuredWidth,
                height: this.column.measuredHeight
              } : {
                x: 0,
                y: 0,
                width: X(this.pixelWidth, this.maxWidth),
                height: X(this.pixelHeight, this.maxHeight)
              };
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(_a);

        Fs.registeredClasses.Column = ru;

        var su = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "ColumnSeriesDataItem", e.locations.dateX = .5, e.locations.dateY = .5, e.locations.categoryX = .5, e.locations.categoryY = .5, e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "column", {
            get: function get() {
              return this._column;
            },
            set: function set(t) {
              this.setColumn(t);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.setColumn = function (t) {
            var e = this;

            if (this._column && t != this._column && St(this.sprites, this._column), this._column = t, t) {
              var i = t.dataItem;
              i && i != this && (i.column = void 0), this.addSprite(t), this._disposers.push(new fs(function () {
                e.component && e.component.columns.removeValue(t);
              }));
            }
          }, Object.defineProperty(e.prototype, "rangesColumns", {
            get: function get() {
              return this._rangesColumns || (this._rangesColumns = new Ds()), this._rangesColumns;
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(hh),
            ou = function (t) {
          function e() {
            var e = t.call(this) || this;
            e._startLocation = 0, e._endLocation = 1, e.className = "ColumnSeries", e.width = h(100), e.height = h(100), e.strokeOpacity = 0, e.fillOpacity = 1, e.clustered = !0;
            var i = e.mainContainer.createChild(_a);
            return i.shouldClone = !1, i.isMeasured = !1, i.layout = "none", e._columnsContainer = i, e.columns.template.pixelPerfect = !1, e.tooltipColorSource = e.columns.template, e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "columnsContainer", {
            get: function get() {
              return this._columnsContainer;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.applyInternalDefaults = function () {
            t.prototype.applyInternalDefaults.call(this), S(this.readerTitle) || (this.readerTitle = this.language.translate("Column Series"));
          }, e.prototype.createDataItem = function () {
            return new su();
          }, e.prototype.validate = function () {
            var i = this,
                n = this.chart.series,
                r = 0,
                s = 0;
            pe(n.iterator(), function (t) {
              t instanceof e && i.baseAxis == t.baseAxis && ((!t.stacked && t.clustered || 0 === r) && r++, t == i && (s = r - 1));
            });
            var o = this.baseAxis.renderer,
                a = o.cellStartLocation,
                l = o.cellEndLocation;
            this._startLocation = a + s / r * (l - a), this._endLocation = a + (s + 1) / r * (l - a), t.prototype.validate.call(this);

            for (var h = 0; h < this.startIndex; h++) {
              var u = this.dataItems.getIndex(h);
              this.disableUnusedColumns(u);
            }

            for (h = this.dataItems.length - 1; h > this.endIndex; h--) u = this.dataItems.getIndex(h), this.disableUnusedColumns(u);
          }, e.prototype.validateDataElement = function (e) {
            this.validateDataElementReal(e), t.prototype.validateDataElement.call(this, e);
          }, e.prototype.getStartLocation = function (t) {
            var e = this._startLocation;
            return this.baseAxis == this.xAxis ? e += t.locations[this.xOpenField] - .5 : e += t.locations[this.yOpenField] - .5, e;
          }, e.prototype.handleDataItemWorkingValueChange = function (e, i) {
            this.simplifiedProcessing ? this.validateDataElement(e) : t.prototype.handleDataItemWorkingValueChange.call(this, e, i);
          }, e.prototype.getEndLocation = function (t) {
            var e = this._endLocation;
            return this.baseAxis == this.xAxis ? e += t.locations[this.xField] - .5 : e += t.locations[this.yField] - .5, e;
          }, e.prototype.validateDataElementReal = function (t) {
            var e,
                i,
                n,
                r,
                s = this,
                o = this.getStartLocation(t),
                a = this.getEndLocation(t),
                l = this.xField,
                h = this.xOpenField,
                u = this.yField,
                c = this.yOpenField,
                d = this.columns.template,
                f = d.percentWidth,
                g = d.percentHeight,
                y = d.pixelWidth,
                m = d.pixelHeight,
                v = d.maxWidth,
                b = d.maxHeight,
                x = d.pixelPaddingLeft,
                _ = d.pixelPaddingRight,
                P = d.pixelPaddingTop,
                w = d.pixelPaddingBottom,
                C = !1;

            if (this.xAxis instanceof lh && this.yAxis instanceof lh) {
              if (!t.hasValue(this._xValueFields) || !t.hasValue(this._yValueFields)) return;
              o = 0, a = 1, p(f) || (o += D = j((a - o) * (1 - f / 100) / 2, 5), a -= D), e = this.xAxis.getX(t, h, o), i = this.xAxis.getX(t, l, a), p(f) && (e += D = (i - e - y) / 2, i -= D), !p(v) && v < Math.abs(i - e) && (e += D = (i - e - v) / 2, i -= D), o = 0, a = 1, p(g) || (o += D = j((1 - g / 100) / 2, 5), a -= D), n = this.yAxis.getY(t, c, o), r = this.yAxis.getY(t, u, a), p(g) && (r += D = (r - n - m) / 2, n -= D), !p(b) && b < Math.abs(r - n) && (r += D = (r - n - b) / 2, n -= D), i = this.fixHorizontalCoordinate(i), e = this.fixHorizontalCoordinate(e), n = this.fixVerticalCoordinate(n), r = this.fixVerticalCoordinate(r);
            } else if (this.baseAxis == this.xAxis) {
              if (!t.hasValue(this._yValueFields)) return;
              p(f) || (o += D = j((a - o) * (1 - f / 100) / 2, 5), a -= D), e = this.xAxis.getX(t, h, o), i = this.xAxis.getX(t, l, a), p(f) && (e += D = (i - e - y) / 2, i -= D), !p(v) && v < Math.abs(i - e) && (e += D = (i - e - v) / 2, i -= D);
              var O = t.locations[c],
                  S = t.locations[u];
              this.yAxis instanceof eh && this.dataFields[this.yField] != this.dataFields[this.yOpenField] && (O = 0, S = 0), r = this.yAxis.getY(t, c, O), n = this.yAxis.getY(t, u, S);
              var I = Math.ceil(this.yAxis.axisLength);
              (n < 0 && r < 0 || n > I && r > I) && (C = !0), n = this.fixVerticalCoordinate(n), r = this.fixVerticalCoordinate(r), Math.abs(i - e) - x - _ == 0 && (C = !0);
            } else {
              if (!t.hasValue(this._xValueFields)) return;
              var D;
              p(g) || (o += D = j((a - o) * (1 - g / 100) / 2, 5), a -= D), n = this.yAxis.getY(t, c, o), r = this.yAxis.getY(t, u, a), p(g) && (r -= D = (r - n - m) / 2, n += D), !p(b) && b < Math.abs(r - n) && (r -= D = (r - n - b) / 2, n += D);
              var k = t.locations[l],
                  T = t.locations[h];
              this.xAxis instanceof eh && this.dataFields[this.xField] != this.dataFields[this.xOpenField] && (k = 0, T = 0), i = this.xAxis.getX(t, l, k), e = this.xAxis.getX(t, h, T), I = Math.ceil(this.xAxis.axisLength), (i < 0 && e < 0 || i > I && e > I) && (C = !0), i = this.fixHorizontalCoordinate(i), e = this.fixHorizontalCoordinate(e), Math.abs(n - r) - P - w == 0 && (C = !0);
            }

            var A,
                V = Math.abs(i - e),
                F = Math.abs(r - n),
                M = Math.min(e, i),
                L = Math.min(n, r);
            C ? this.disableUnusedColumns(t) : (t.column ? A = t.column : (ne(this, A = this.columns.create(), va), ne(this.columns.template, A, va), t.addSprite(A), t.column = A, A.paper = this.paper, this.itemsFocusable() ? (A.role = "menuitem", A.focusable = !0) : (A.role = "listitem", A.focusable = !1), A.focusable && (A.events.on("focus", function (e) {
              A.readerTitle = s.populateString(s.itemReaderText, t);
            }, void 0, !1), A.events.on("blur", function (t) {
              A.readerTitle = "";
            }, void 0, !1)), A.hoverable && (A.events.on("over", function (e) {
              A.readerTitle = s.populateString(s.itemReaderText, t);
            }, void 0, !1), A.events.on("out", function (t) {
              A.readerTitle = "";
            }, void 0, !1))), A.width = V, A.height = F, A.x = M, A.y = L, A.realX = e, A.realY = n, A.realWidth = i - e, A.realHeight = r - n, A.parent = this.columnsContainer, A.virtualParent = this, this.setColumnStates(A), A.invalid && A.validate(), A.__disabled = !1, pe(this.axisRanges.iterator(), function (e) {
              var i = t.rangesColumns.getKey(e.uid);
              i || (i = s.columns.create(), ne(e.contents, i, va), t.addSprite(i), t.rangesColumns.setKey(e.uid, i), i.paper = s.paper), i.parent = e.contents, i.width = V, i.height = F, i.x = M, i.y = L, s.setColumnStates(i), i.invalid && i.validate(), i.__disabled = !1;
            })), t.itemWidth = V, t.itemHeight = F;
          }, e.prototype.disableUnusedColumns = function (t) {
            t && (t.column && (t.column.width = 0, t.column.height = 0, t.column.__disabled = !0), pe(this.axisRanges.iterator(), function (e) {
              var i = t.rangesColumns.getKey(e.uid);
              i && (i.width = 0, i.height = 0, i.__disabled = !0);
            }));
          }, e.prototype.setColumnStates = function (t) {
            if (this._dropFromOpenState || this._dropFromPreviousState || this._riseFromOpenState || this._riseFromPreviousState) {
              var e = t.dataItem;

              if (this.xAxis instanceof eh || this.yAxis instanceof eh) {
                var i,
                    n = void 0,
                    r = void 0;
                this.baseAxis == this.yAxis ? this.xOpenField && this.xField && this.xAxis instanceof eh && (i = e.getValue(this.xOpenField), n = e.getValue(this.xField), r = e.getValue(this.xAxis.axisFieldName + "X", "previousChange")) : this.yOpenField && this.yField && this.yAxis instanceof eh && (i = e.getValue(this.yOpenField), n = e.getValue(this.yField), r = e.getValue(this.yAxis.axisFieldName + "Y", "previousChange")), n < i ? (e.droppedFromOpen = !0, t.defaultState.copyFrom(this._dropFromOpenState), t.setState(this._dropFromOpenState, 0)) : (e.droppedFromOpen = !1, t.defaultState.copyFrom(this._riseFromOpenState), t.setState(this._riseFromOpenState, 0)), r < 0 ? (e.droppedFromPrevious = !0, t.defaultState.copyFrom(this._dropFromPreviousState), t.setState(this._dropFromPreviousState, 0)) : (e.droppedFromPrevious = !1, t.defaultState.copyFrom(this._riseFromPreviousState), t.setState(this._riseFromPreviousState, 0));
              }
            }
          }, Object.defineProperty(e.prototype, "columns", {
            get: function get() {
              return this._columns || (this._columns = new Hs(this.createColumnTemplate()), this._disposers.push(new Bs(this._columns)), this._disposers.push(this._columns.template)), this._columns;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.createColumnTemplate = function () {
            return new ru();
          }, Object.defineProperty(e.prototype, "clustered", {
            get: function get() {
              return this.getPropertyValue("clustered");
            },
            set: function set(t) {
              this.setPropertyValue("clustered", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "dropFromOpenState", {
            get: function get() {
              return this._dropFromOpenState || (this._dropFromOpenState = this.states.create("dropFromOpenState")), this._dropFromOpenState;
            },
            set: function set(t) {
              this._dropFromOpenState = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "dropFromPreviousState", {
            get: function get() {
              return this._dropFromPreviousState || (this._dropFromPreviousState = this.states.create("dropFromPreviousState")), this._dropFromPreviousState;
            },
            set: function set(t) {
              this._dropFromPreviousState = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "riseFromOpenState", {
            get: function get() {
              return this._riseFromOpenState || (this._riseFromOpenState = this.states.create("riseFromOpenState")), this._riseFromOpenState;
            },
            set: function set(t) {
              this._riseFromOpenState = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "riseFromPreviousState", {
            get: function get() {
              return this._riseFromPreviousState || (this._riseFromPreviousState = this.states.create("riseFromPreviousState")), this._riseFromPreviousState;
            },
            set: function set(t) {
              this._riseFromPreviousState = t;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.updateLegendValue = function (e, i) {
            var n = this;

            if (t.prototype.updateLegendValue.call(this, e, i), this.legendDataItem) {
              var r,
                  s,
                  o = this.legendDataItem.marker;
              e && (r = e.droppedFromOpen ? this._dropFromOpenState : this._riseFromOpenState, s = e.droppedFromPrevious ? this._dropFromPreviousState : this._riseFromPreviousState), pe(o.children.iterator(), function (t) {
                e ? (t.setState(s), t.setState(r)) : (t.setState(n._riseFromPreviousState), t.setState(n._riseFromOpenState));
              });
            }
          }, e.prototype.createLegendMarker = function (t) {
            var e = t.pixelWidth,
                i = t.pixelHeight;
            t.removeChildren();
            var n = t.createChild(ja);
            n.shouldClone = !1, ne(this, n, va), n.copyFrom(this.columns.template), n.padding(0, 0, 0, 0), n.width = e, n.height = i;
            var r = t.dataItem;
            r.color = this.fill, r.colorOrig = this.fill;
          }, e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), this.columns.template.copyFrom(e.columns.template);
          }, e.prototype.getBulletLocationX = function (e, i) {
            if (this.baseAxis == this.xAxis) {
              var n = e.locationX;
              A(n) || (n = .5);
              var r = this.getEndLocation(e.dataItem);
              return r - (r - this.getStartLocation(e.dataItem)) * n;
            }

            return t.prototype.getBulletLocationX.call(this, e, i);
          }, e.prototype.getBulletLocationY = function (e, i) {
            if (this.baseAxis == this.yAxis) {
              var n = e.locationY;
              A(n) || (n = .5);
              var r = this.getEndLocation(e.dataItem);
              return r - (r - this.getStartLocation(e.dataItem)) * n;
            }

            return t.prototype.getBulletLocationY.call(this, e, i);
          }, e.prototype.getAdjustedXLocation = function (e, i) {
            if (this.baseAxis == this.xAxis) {
              var n = .5;
              return e && (n = e.locations[i]), A(n) || (n = .5), this._endLocation - (this._endLocation - this._startLocation) * n;
            }

            return t.prototype.getAdjustedXLocation.call(this, e, i);
          }, e.prototype.getAdjustedYLocation = function (e, i) {
            if (this.baseAxis == this.yAxis) {
              var n = .5;
              return e && (n = e.locations[i]), A(n) || (n = .5), this._endLocation - (this._endLocation - this._startLocation) * n;
            }

            return t.prototype.getAdjustedXLocation.call(this, e, i);
          }, e.prototype.fixVerticalCoordinate = function (t) {
            var e = this.columns.template.pixelPaddingBottom;
            return R(t, -this.columns.template.pixelPaddingTop, this.yAxis.axisLength + e);
          }, e.prototype.fixHorizontalCoordinate = function (t) {
            var e = this.columns.template.pixelPaddingLeft,
                i = this.columns.template.pixelPaddingRight;
            return R(t, -e, this.xAxis.axisLength + i);
          }, e.prototype.disposeData = function () {
            t.prototype.disposeData.call(this), this.columns.clear();
          }, e;
        }(uh);

        Fs.registeredClasses.ColumnSeries = ou, Fs.registeredClasses.ColumnSeriesDataItem = su;

        var au = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "TreeMapSeriesDataItem", e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "parentName", {
            get: function get() {
              var t = this.treeMapDataItem;
              if (t && t.parent) return t.parent.name;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "value", {
            get: function get() {
              var t = this.treeMapDataItem;
              if (t) return t.value;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "treeMapDataItem", {
            get: function get() {
              return this._dataContext;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.hide = function (e, i, n, r) {
            var s = this.treeMapDataItem;
            return s && s.hide(e), t.prototype.hide.call(this, e, i, n, r);
          }, e.prototype.show = function (e, i, n) {
            var r = this.treeMapDataItem;
            return r && r.show(e, i, n), t.prototype.show.call(this, e, i, n);
          }, e;
        }(su),
            lu = function (t) {
          function e() {
            var e = t.call(this) || this;
            e.className = "TreeMapSeries", e.applyTheme(), e.fillOpacity = 1, e.strokeOpacity = 1, e.minBulletDistance = 0, e.columns.template.tooltipText = "{parentName} {name}: {value}", e.columns.template.configField = "config";
            var i = new ta();
            return e.stroke = i.getFor("background"), e.dataFields.openValueX = "x0", e.dataFields.valueX = "x1", e.dataFields.openValueY = "y0", e.dataFields.valueY = "y1", e.sequencedInterpolation = !1, e.showOnInit = !1, e.columns.template.pixelPerfect = !1, e;
          }

          return n(e, t), e.prototype.processDataItem = function (e, i) {
            i.seriesDataItem = e, t.prototype.processDataItem.call(this, e, i);
          }, e.prototype.createDataItem = function () {
            return new au();
          }, e.prototype.show = function (e) {
            var i = this.defaultState.transitionDuration;
            return A(e) && (i = e), this.dataItems.each(function (t) {
              t.show(e);
            }), t.prototype.showReal.call(this, i);
          }, e.prototype.hide = function (e) {
            var i = this.defaultState.transitionDuration;
            A(e) && (i = e);
            var n = t.prototype.hideReal.call(this, i);
            return this.dataItems.each(function (t) {
              t.hide(e);
            }), n;
          }, e.prototype.processValues = function () {}, e.prototype.getStartLocation = function (t) {
            return 0;
          }, e.prototype.getEndLocation = function (t) {
            return 1;
          }, e.prototype.dataChangeUpdate = function () {}, e.prototype.processConfig = function (e) {
            e && (S(e.dataFields) && V(e.dataFields) || (e.dataFields = {})), t.prototype.processConfig.call(this, e);
          }, e.prototype.createLegendMarker = function (t) {
            var e = t.pixelWidth,
                i = t.pixelHeight;
            t.removeChildren();
            var n = t.createChild(ja);
            n.shouldClone = !1, ne(this, n, va), n.padding(0, 0, 0, 0), n.width = e, n.height = i;
            var r = t.dataItem;
            r.color = n.fill, r.colorOrig = n.fill;
          }, e;
        }(ou);

        Fs.registeredClasses.TreeMapSeries = lu, Fs.registeredClasses.TreeMapSeriesDataItem = au;

        var hu = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.rows = [], e.className = "TreeMapDataItem", e.values.value = {}, e.values.x0 = {}, e.values.y0 = {}, e.values.x1 = {}, e.values.y1 = {}, e.hasChildren.children = !0, e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "legendDataItem", {
            get: function get() {
              return this._legendDataItem;
            },
            set: function set(t) {
              this._legendDataItem = t, t.label && (t.label.dataItem = this), t.valueLabel && (t.valueLabel.dataItem = this);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.getDuration = function () {
            return 0;
          }, Object.defineProperty(e.prototype, "value", {
            get: function get() {
              var t = 0;
              return this.children && 0 != this.children.length ? pe(this.children.iterator(), function (e) {
                var i = e.value;
                A(i) && (t += i);
              }) : t = this.values.value.workingValue, t;
            },
            set: function set(t) {
              this.setValue("value", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "percent", {
            get: function get() {
              return this.parent ? this.value / this.parent.value * 100 : 100;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "x0", {
            get: function get() {
              return this.values.x0.value;
            },
            set: function set(t) {
              this.setValue("x0", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "x1", {
            get: function get() {
              return this.values.x1.value;
            },
            set: function set(t) {
              this.setValue("x1", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "y0", {
            get: function get() {
              return this.values.y0.value;
            },
            set: function set(t) {
              this.setValue("y0", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "y1", {
            get: function get() {
              return this.values.y1.value;
            },
            set: function set(t) {
              this.setValue("y1", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "name", {
            get: function get() {
              return this.properties.name;
            },
            set: function set(t) {
              this.setProperty("name", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "children", {
            get: function get() {
              return this.properties.children;
            },
            set: function set(t) {
              this.setProperty("children", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "level", {
            get: function get() {
              return this.parent ? this.parent.level + 1 : 0;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "color", {
            get: function get() {
              var t = this.properties.color;
              return null == t && this.parent && (t = this.parent.color), null == t && this.component && (t = this.component.colors.getIndex(this.component.colors.step * this.index)), t;
            },
            set: function set(t) {
              this.setProperty("color", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "fill", {
            get: function get() {
              return this.color;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "series", {
            get: function get() {
              return this._series;
            },
            set: function set(t) {
              t != this._series && (this._series && (this.component.series.removeValue(this._series), this._series.dispose()), this._series = t, this._disposers.push(t));
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.hide = function (e, i, n, r) {
            return this.setWorkingValue("value", 0), this.children && this.children.each(function (t) {
              t.hide(e, i, n, r);
            }), t.prototype.hide.call(this, e, i, n, r);
          }, e.prototype.show = function (e, i, n) {
            return this.setWorkingValue("value", this.values.value.value), this.children && this.children.each(function (t) {
              t.show(e, i, n);
            }), t.prototype.show.call(this, e, i, n);
          }, e;
        }(ch),
            uu = function (t) {
          function e() {
            var e = t.call(this) || this;
            e.layoutAlgorithm = e.squarify, e.zoomable = !0, e.className = "TreeMap", e._usesData = !0, e.maxLevels = 2, e.currentLevel = 0, e.colors = new Sl(), e.sorting = "descending";
            var i = e.xAxes.push(new eh());
            i.title.disabled = !0, i.strictMinMax = !0;
            var n = i.renderer;
            n.inside = !0, n.labels.template.disabled = !0, n.ticks.template.disabled = !0, n.grid.template.disabled = !0, n.axisFills.template.disabled = !0, n.minGridDistance = 100, n.line.disabled = !0, n.baseGrid.disabled = !0;
            var r = e.yAxes.push(new eh());
            r.title.disabled = !0, r.strictMinMax = !0;
            var s = r.renderer;
            s.inside = !0, s.labels.template.disabled = !0, s.ticks.template.disabled = !0, s.grid.template.disabled = !0, s.axisFills.template.disabled = !0, s.minGridDistance = 100, s.line.disabled = !0, s.baseGrid.disabled = !0, s.inversed = !0, e.xAxis = i, e.yAxis = r;
            var o = new lu();
            return e.seriesTemplates = new ks(o), o.virtualParent = e, e._disposers.push(new Is(e.seriesTemplates)), e._disposers.push(o), e.zoomOutButton.events.on("hit", function () {
              e.zoomToChartDataItem(e._homeDataItem);
            }, void 0, !1), e.seriesTemplates.events.on("insertKey", function (t) {
              t.newValue.isTemplate = !0;
            }, void 0, !1), e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "navigationBar", {
            get: function get() {
              return this._navigationBar;
            },
            set: function set(t) {
              var e = this;
              this._navigationBar != t && (this._navigationBar = t, t.parent = this, t.toBack(), t.links.template.events.on("hit", function (t) {
                var i = t.target.dataItem.dataContext;
                i.isDisposed() || (e.zoomToChartDataItem(i), e.createTreeSeries(i));
              }, void 0, !0), this._disposers.push(t));
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.validateData = function () {
            this.series.clear(), this._tempSeries = [], t.prototype.validateData.call(this), this._homeDataItem && this._homeDataItem.dispose();
            var e = this.dataItems.template.clone();
            this._homeDataItem = e, pe(this.dataItems.iterator(), function (t) {
              t.parent = e;
            }), e.children = this.dataItems, e.x0 = 0, e.y0 = 0, e.name = this._homeText;
            var i = 10 * Math.round(1e3 * this.pixelHeight / this.pixelWidth / 10) || 1e3;
            e.x1 = 1e3, e.y1 = i, this.xAxis.min = 0, this.xAxis.max = 1e3, this.xAxis.getMinMax(), this.yAxis.min = 0, this.yAxis.max = i, this.yAxis.getMinMax(), this.layoutItems(e), this.createTreeSeries(e);
          }, e.prototype.layoutItems = function (t, e) {
            if (t) {
              var i = t.children;
              e || (e = this.sorting), "ascending" == e && i.values.sort(function (t, e) {
                return t.value - e.value;
              }), "descending" == e && i.values.sort(function (t, e) {
                return e.value - t.value;
              }), this._updateDataItemIndexes(0), this.layoutAlgorithm(t);

              for (var n = 0, r = i.length; n < r; n++) {
                var s = i.getIndex(n);
                s.children && this.layoutItems(s);
              }
            }
          }, e.prototype.createTreeSeries = function (t) {
            var e = this;
            this._tempSeries = [];

            for (var i = [t], n = t.parent; null != n;) this.initSeries(n), i.push(n), n = n.parent;

            i.reverse(), this.navigationBar && (this.navigationBar.data = i), this.createTreeSeriesReal(t), mt(this._tempSeries, function (t) {
              -1 == e.series.indexOf(t) && e.series.push(t), t.zIndex = t.level;
            });
          }, e.prototype.createTreeSeriesReal = function (t) {
            if (t.children && t.level < this.currentLevel + this.maxLevels) {
              this.initSeries(t);

              for (var e = 0; e < t.children.length; e++) {
                var i = t.children.getIndex(e);
                i.children && this.createTreeSeriesReal(i);
              }
            }
          }, e.prototype.setData = function (e) {
            this.currentLevel = 0, this.currentlyZoomed = void 0, this.xAxis.start = 0, this.xAxis.end = 1, this.yAxis.start = 0, this.yAxis.end = 1, t.prototype.setData.call(this, e);
          }, e.prototype.seriesAppeared = function () {
            return !0;
          }, e.prototype.initSeries = function (t) {
            var e = this;

            if (!t.series) {
              var i = void 0,
                  n = this.seriesTemplates.getKey(t.level.toString());
              (i = n ? n.clone() : this.series.create()).dataItem.dataContext = t, i.name = t.name, i.parentDataItem = t, t.series = i;
              var r = t.level;
              i.level = r;
              var s = t.dataContext;
              s && (i.config = s.config), this.dataUsers.removeValue(i), i.data = t.children.values, i.fill = t.color, i.columnsContainer.hide(0), i.bulletsContainer.hide(0), i.columns.template.adapter.add("fill", function (t, e) {
                var i = e.dataItem;

                if (i) {
                  var n = i.treeMapDataItem;
                  if (n) return e.fill = n.color, e.adapter.remove("fill"), n.color;
                }
              }), this.zoomable && (t.level > this.currentLevel || t.children && t.children.length > 0) && (i.columns.template.cursorOverStyle = sa.pointer, this.zoomable && i.columns.template.events.on("hit", function (i) {
                var n = i.target.dataItem;
                t.level > e.currentLevel ? e.zoomToChartDataItem(n.treeMapDataItem.parent) : e.zoomToSeriesDataItem(n);
              }, this, void 0));
            }

            this._tempSeries.push(t.series);
          }, e.prototype.toggleBullets = function (t) {
            var e = this;
            pe(this.series.iterator(), function (i) {
              -1 == e._tempSeries.indexOf(i) ? (i.columnsContainer.hide(), i.bulletsContainer.hide(t)) : (i.columnsContainer.show(), i.bulletsContainer.show(t), i.dataItems.each(function (t) {
                t.bullets.each(function (t, e) {
                  e.show();
                });
              }), i.level < e.currentLevel ? i.bulletsContainer.hide(t) : i.level == e.currentLevel && e.maxLevels > 1 && i.dataItems.each(function (t) {
                t.treeMapDataItem.children && t.bullets.each(function (t, e) {
                  e.hide();
                });
              }));
            });
          }, e.prototype.zoomToSeriesDataItem = function (t) {
            this.zoomToChartDataItem(t.treeMapDataItem);
          }, e.prototype.zoomToChartDataItem = function (t) {
            var e = this,
                i = this.zoomOutButton;

            if (i && (t != this._homeDataItem ? i.show() : i.hide()), t && t.children) {
              this.xAxis.zoomToValues(t.x0, t.x1), this.yAxis.zoomToValues(t.y0, t.y1), this.currentLevel = t.level, this.currentlyZoomed = t, this.createTreeSeries(t);
              var n = this.xAxis.rangeChangeAnimation || this.yAxis.rangeChangeAnimation;
              !n || n.isDisposed() || n.isFinished() ? this.toggleBullets() : (this._dataDisposers.push(n), n.events.once("animationended", function () {
                e.toggleBullets();
              }));
            }
          }, e.prototype.applyInternalDefaults = function () {
            t.prototype.applyInternalDefaults.call(this), S(this.readerTitle) || (this.readerTitle = this.language.translate("TreeMap chart"));
          }, e.prototype.createDataItem = function () {
            return new hu();
          }, Object.defineProperty(e.prototype, "maxLevels", {
            get: function get() {
              return this.getPropertyValue("maxLevels");
            },
            set: function set(t) {
              this.setPropertyValue("maxLevels", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "currentLevel", {
            get: function get() {
              return this.getPropertyValue("currentLevel");
            },
            set: function set(t) {
              this.setPropertyValue("currentLevel", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "sorting", {
            get: function get() {
              return this.getPropertyValue("sorting");
            },
            set: function set(t) {
              this.setPropertyValue("sorting", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.createSeries = function () {
            return new lu();
          }, Object.defineProperty(e.prototype, "homeText", {
            get: function get() {
              return this._homeText;
            },
            set: function set(t) {
              this._homeText = t, this._homeDataItem && (this._homeDataItem.name = this._homeText);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.processConfig = function (e) {
            if (e) {
              if (S(e.layoutAlgorithm) && T(e.layoutAlgorithm)) switch (e.layoutAlgorithm) {
                case "squarify":
                  e.layoutAlgorithm = this.squarify;
                  break;

                case "binaryTree":
                  e.layoutAlgorithm = this.binaryTree;
                  break;

                case "slice":
                  e.layoutAlgorithm = this.slice;
                  break;

                case "dice":
                  e.layoutAlgorithm = this.dice;
                  break;

                case "sliceDice":
                  e.layoutAlgorithm = this.sliceDice;
                  break;

                default:
                  delete e.layoutAlgorithm;
              }
              S(e.navigationBar) && !S(e.navigationBar.type) && (e.navigationBar.type = "NavigationBar"), t.prototype.processConfig.call(this, e);
            }
          }, e.prototype.validateLayout = function () {
            t.prototype.validateLayout.call(this), this.layoutItems(this.currentlyZoomed);
          }, e.prototype.validateDataItems = function () {
            t.prototype.validateDataItems.call(this), this.layoutItems(this._homeDataItem), pe(this.series.iterator(), function (t) {
              t.validateRawData();
            }), this.zoomToChartDataItem(this._homeDataItem);
          }, e.prototype.binaryTree = function (t) {
            var e,
                i,
                n = t.children,
                r = n.length,
                s = new Array(r + 1);

            for (s[0] = i = e = 0; e < r; ++e) s[e + 1] = i += n.getIndex(e).value;

            !function t(e, i, r, o, a, l, h) {
              if (e >= i - 1) {
                var u = n.getIndex(e);
                return u.x0 = o, u.y0 = a, u.x1 = l, void (u.y1 = h);
              }

              for (var p = s[e], c = r / 2 + p, d = e + 1, f = i - 1; d < f;) {
                var g = d + f >>> 1;
                s[g] < c ? d = g + 1 : f = g;
              }

              c - s[d - 1] < s[d] - c && e + 1 < d && --d;
              var y = s[d] - p,
                  m = r - y;

              if (l - o > h - a) {
                var v = (o * m + l * y) / r;
                t(e, d, y, o, a, v, h), t(d, i, m, v, a, l, h);
              } else {
                var b = (a * m + h * y) / r;
                t(e, d, y, o, a, l, b), t(d, i, m, o, b, l, h);
              }
            }(0, r, t.value, t.x0, t.y0, t.x1, t.y1);
          }, e.prototype.slice = function (t) {
            for (var e, i = t.x0, n = t.x1, r = t.y0, s = t.y1, o = t.children, a = -1, l = o.length, h = t.value && (s - r) / t.value; ++a < l;) (e = o.getIndex(a)).x0 = i, e.x1 = n, e.y0 = r, r += e.value * h, e.y1 = r;
          }, e.prototype.dice = function (t) {
            for (var e, i = t.x0, n = t.x1, r = t.y0, s = t.y1, o = t.children, a = -1, l = o.length, h = t.value && (n - i) / t.value; ++a < l;) (e = o.getIndex(a)).y0 = r, e.y1 = s, e.x0 = i, i += e.value * h, e.x1 = i;
          }, e.prototype.sliceDice = function (t) {
            1 & t.level ? this.slice(t) : this.dice(t);
          }, e.prototype.squarify = function (t) {
            for (var e, i, n, r, s, o, a, l, h, u, p = (1 + Math.sqrt(5)) / 2, c = t.x0, d = t.x1, f = t.y0, g = t.y1, y = t.children, m = 0, v = 0, b = y.length, x = t.value; m < b;) {
              i = d - c, n = g - f;

              do {
                r = y.getIndex(v++).value;
              } while (!r && v < b);

              for (s = o = r, u = r * r * (h = Math.max(n / i, i / n) / (x * p)), l = Math.max(o / u, u / s); v < b; ++v) {
                if (r += e = y.getIndex(v).value, e < s && (s = e), e > o && (o = e), u = r * r * h, (a = Math.max(o / u, u / s)) > l) {
                  r -= e;
                  break;
                }

                l = a;
              }

              var _ = this.dataItems.template.clone();

              _.value = r, _.dice = i < n, _.children = y.slice(m, v), _.x0 = c, _.y0 = f, _.x1 = d, _.y1 = g, _.dice ? (_.y1 = x ? f += n * r / x : g, this.dice(_)) : (_.x1 = x ? c += i * r / x : d, this.slice(_)), x -= r, m = v;
            }
          }, e.prototype.handleSeriesAdded2 = function () {}, e.prototype.handleDataItemValueChange = function (t, e) {
            "value" == e && this.invalidateDataItems();
          }, e.prototype.handleDataItemWorkingValueChange = function (t, e) {
            "value" == e && this.invalidateDataItems();
          }, e.prototype.getLegendLevel = function (t) {
            if (t && t.children) return t.children.length > 1 ? t : 1 == t.children.length ? this.getLegendLevel(t.children.getIndex(0)) : t;
          }, e.prototype.feedLegend = function () {
            var t = this.legend;

            if (t) {
              t.dataFields.name = "name";
              var e = this.getLegendLevel(this._homeDataItem);

              if (e) {
                var i = [];
                e.children.each(function (t) {
                  i.push(t);
                }), t.data = i;
              }
            }
          }, e.prototype.disposeData = function () {
            t.prototype.disposeData.call(this), this._homeDataItem = void 0, this.series.clear(), this.navigationBar && this.navigationBar.disposeData(), this.xAxis.disposeData(), this.yAxis.disposeData();
          }, e.prototype.getExporting = function () {
            var e = this,
                i = t.prototype.getExporting.call(this);
            return i.adapter.add("formatDataFields", function (t) {
              return "csv" != t.format && "xlsx" != t.format || S(e.dataFields.children) && delete t.dataFields[e.dataFields.children], t;
            }), i;
          }, e;
        }(dh);

        Fs.registeredClasses.TreeMap = uu;

        var pu = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e._chart = new ys(), e.className = "AxisRendererX3D", e._disposers.push(e._chart), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.updateGridElement = function (t, e, i) {
            e += (i - e) * t.location;
            var n = this.positionToPoint(e);

            if (t.element) {
              var r = this.chart.dx3D || 0,
                  s = this.chart.dy3D || 0,
                  o = this.getHeight();
              t.path = xr({
                x: r,
                y: s
              }) + _r({
                x: r,
                y: o + s
              }) + _r({
                x: 0,
                y: o
              });
            }

            this.positionItem(t, n), this.toggleVisibility(t, e, 0, 1);
          }, e.prototype.updateBaseGridElement = function () {
            t.prototype.updateBaseGridElement.call(this);
            var e = this.getHeight(),
                i = this.chart.dx3D || 0,
                n = this.chart.dy3D || 0;
            this.baseGrid.path = xr({
              x: i,
              y: n
            }) + _r({
              x: 0,
              y: 0
            }) + _r({
              x: 0,
              y: e
            });
          }, Object.defineProperty(e.prototype, "chart", {
            get: function get() {
              return this._chart.get();
            },
            set: function set(t) {
              t && this._chart.set(t, t.events.on("propertychanged", this.handle3DChanged, this, !1));
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.handle3DChanged = function (t) {
            "depth" != t.property && "angle" != t.property || this.invalidate();
          }, e;
        }(sh);

        Fs.registeredClasses.AxisRendererX3D = pu;

        var cu = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e._chart = new ys(), e.className = "AxisRendererY3D", e._disposers.push(e._chart), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.updateGridElement = function (t, e, i) {
            e += (i - e) * t.location;
            var n = this.positionToPoint(e);

            if (t.element) {
              var r = this.chart.dx3D || 0,
                  s = this.chart.dy3D || 0,
                  o = this.getWidth();
              t.path = xr({
                x: 0,
                y: 0
              }) + _r({
                x: r,
                y: s
              }) + _r({
                x: o + r,
                y: s
              });
            }

            this.positionItem(t, n), this.toggleVisibility(t, e, 0, 1);
          }, e.prototype.updateBaseGridElement = function () {
            t.prototype.updateBaseGridElement.call(this);
            var e = this.chart.dx3D || 0,
                i = this.chart.dy3D || 0,
                n = this.getWidth();
            this.baseGrid.path = xr({
              x: 0,
              y: 0
            }) + _r({
              x: n,
              y: 0
            }) + _r({
              x: n + e,
              y: i
            });
          }, Object.defineProperty(e.prototype, "chart", {
            get: function get() {
              return this._chart.get();
            },
            set: function set(t) {
              t && this._chart.set(t, t.events.on("propertychanged", this.handle3DChanged, this, !1));
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.handle3DChanged = function (t) {
            "depth" != t.property && "angle" != t.property || this.invalidate();
          }, e;
        }(Jl),
            du = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "Column3D", e;
          }

          return n(e, t), e.prototype.createAssets = function () {
            this.column3D = this.createChild(ml), this.column3D.shouldClone = !1, this.column3D.strokeOpacity = 0, this.column = this.column3D;
          }, e.prototype.validate = function () {
            t.prototype.validate.call(this), this.column3D && (this.column3D.width = this.pixelWidth, this.column3D.height = this.pixelHeight, this.column3D.invalid && this.column3D.validate());
          }, e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), this.column3D && this.column3D.copyFrom(e.column3D);
          }, e.prototype.setFill = function (e) {
            t.prototype.setFill.call(this, e), this.column.fill = e;
          }, e;
        }(ru);

        Fs.registeredClasses.Column3D = du;

        var fu = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "ColumnSeries3DDataItem", e.applyTheme(), e;
          }

          return n(e, t), e;
        }(su),
            gu = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "ColumnSeries3D", e.columns.template.column3D.applyOnClones = !0, e.columns.template.hiddenState.properties.visible = !0, e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "columnsContainer", {
            get: function get() {
              return this.chart && this.chart.columnsContainer ? this.chart.columnsContainer : this._columnsContainer;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.validateDataElementReal = function (e) {
            t.prototype.validateDataElementReal.call(this, e), e.column && (e.column.dx = this.dx, e.column.dy = this.dy);
          }, e.prototype.validateDataElements = function () {
            t.prototype.validateDataElements.call(this), this.chart && this.chart.invalidateLayout();
          }, e.prototype.createColumnTemplate = function () {
            return new du();
          }, Object.defineProperty(e.prototype, "depth", {
            get: function get() {
              return this.getPropertyValue("depth");
            },
            set: function set(t) {
              this.setPropertyValue("depth", t, !0), this.columns.template.column3D.depth = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "angle", {
            get: function get() {
              return this.getPropertyValue("angle");
            },
            set: function set(t) {
              this.setPropertyValue("angle", t), this.columns.template.column3D.angle = t;
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(ou);

        Fs.registeredClasses.ColumnSeries3D = gu, Fs.registeredClasses.ColumnSeries3DDataItem = fu;

        var yu = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "XYChart3DDataItem", e.applyTheme(), e;
          }

          return n(e, t), e;
        }(ch),
            mu = function (t) {
          function e() {
            var e = t.call(this) || this;
            e._axisRendererX = pu, e._axisRendererY = cu, e.className = "XYChart3D", e.depth = 30, e.angle = 30;
            var i = e.seriesContainer.createChild(_a);
            return i.shouldClone = !1, i.isMeasured = !1, i.layout = "none", e.columnsContainer = i, e.columnsContainer.mask = e.createChild(ba), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.updateSeriesMasks = function () {
            if (t.prototype.updateSeriesMasks.call(this), rn()) {
              var e = this.columnsContainer,
                  i = e.mask;
              e.mask = void 0, e.mask = i;
            }
          }, Object.defineProperty(e.prototype, "depth", {
            get: function get() {
              return this.getPropertyValue("depth");
            },
            set: function set(t) {
              this.setPropertyValue("depth", t), this.fixLayout(), this.invalidateDataUsers();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "angle", {
            get: function get() {
              return this.getPropertyValue("angle");
            },
            set: function set(t) {
              this.setPropertyValue("angle", t), this.fixLayout(), this.invalidateDataUsers();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "dx3D", {
            get: function get() {
              return H(this.angle) * this.depth;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "dy3D", {
            get: function get() {
              return -B(this.angle) * this.depth;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.validateLayout = function () {
            t.prototype.validateLayout.call(this), this.fixColumns();
          }, e.prototype.fixLayout = function () {
            this.chartContainer.marginTop = -this.dy3D, this.chartContainer.paddingRight = this.dx3D, this.scrollbarX && (this.scrollbarX.dy = this.dy3D, this.scrollbarX.dx = this.dx3D), this.scrollbarY && (this.scrollbarY.dy = this.dy3D, this.scrollbarY.dx = this.dx3D), this.fixColumns(), t.prototype.fixLayout.call(this);
          }, e.prototype.fixColumns = function () {
            var t = this,
                e = 1,
                i = 0;
            pe(this.series.iterator(), function (t) {
              t instanceof gu && (!t.clustered && i > 0 && e++, t.depthIndex = e - 1, i++);
            });
            var n = 0;
            pe(this.series.iterator(), function (i) {
              if (i instanceof gu) {
                i.depth = t.depth / e, i.angle = t.angle, i.dx = t.depth / e * H(t.angle) * i.depthIndex, i.dy = -t.depth / e * B(t.angle) * i.depthIndex;
                var r = !1;
                (i.baseAxis == i.xAxis && i.xAxis.renderer.inversed || i.baseAxis == i.yAxis && i.yAxis.renderer.inversed) && (r = !0);
                var s = 1;
                i.columns.each(function (t) {
                  t.zIndex = r ? 1e3 * (1e3 - s) + n - 100 * i.depthIndex : 1e3 * s + n - 100 * i.depthIndex, s++;
                }), r ? n-- : n++;
              }
            }), this.maskColumns();
          }, e.prototype.processConfig = function (e) {
            if (e && S(e.series) && F(e.series)) for (var i = 0, n = e.series.length; i < n; i++) e.series[i].type = e.series[i].type || "ColumnSeries3D";
            t.prototype.processConfig.call(this, e);
          }, e.prototype.maskColumns = function () {
            var t = this.plotContainer.pixelWidth,
                e = this.plotContainer.pixelHeight,
                i = this.dx3D,
                n = this.dy3D,
                r = xr({
              x: 0,
              y: 0
            }) + _r({
              x: i,
              y: n
            }) + _r({
              x: t + i,
              y: n
            }) + _r({
              x: t + i,
              y: e + n
            }) + _r({
              x: t,
              y: e
            }) + _r({
              x: t,
              y: e
            }) + _r({
              x: 0,
              y: e
            }) + " Z",
                s = this.columnsContainer;
            s && s.mask && (s.mask.path = r);
          }, e;
        }(dh);

        Fs.registeredClasses.XYChart3D = mu;

        var vu = function (t) {
          function e() {
            var e = t.call(this) || this;
            e.className = "HeatLegend", e.markerContainer = e.createChild(_a), e.markerContainer.shouldClone = !1, e.markerCount = 1;
            var i = new ja();
            return i.minHeight = 20, i.minWidth = 20, i.interactionsEnabled = !1, i.fillOpacity = 1, i.cornerRadius(0, 0, 0, 0), e.markerContainer.minHeight = 20, e.markerContainer.minWidth = 20, e.orientation = "horizontal", e.markers = new Hs(i), e._disposers.push(new Bs(e.markers)), e._disposers.push(e.markers.template), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.getMinFromRules = function (t) {
            var e,
                i = this.series;
            if (i) return ue(i.heatRules.iterator(), function (i) {
              return i.property != t || (e = i.min, !1);
            }), e;
          }, e.prototype.getMaxFromRules = function (t) {
            var e,
                i = this.series;
            if (i) return pe(i.heatRules.iterator(), function (i) {
              return i.property != t || (e = i.max, !1);
            }), e;
          }, e.prototype.validate = function () {
            t.prototype.validate.call(this);
            var e = this.series,
                i = this.minColor,
                n = this.maxColor;

            if (S(i) || (i = ei(this.getMinFromRules("fill"))), S(n) || (n = ei(this.getMaxFromRules("fill"))), e) {
              var r = e.fill;
              !S(i) && r instanceof qs && (i = r), !S(n) && r instanceof qs && (n = r);
            }

            S(n) || (n = ei(this.getMaxFromRules("fill")));
            var s = w(this.getMinFromRules("fillOpacity"));
            A(s) || (s = 1);
            var o = w(this.getMaxFromRules("fillOpacity"));
            A(o) || (o = 1);
            var a = w(this.getMinFromRules("strokeOpacity"));
            A(a) || (a = 1);
            var l = w(this.getMaxFromRules("strokeOpacity"));
            A(l) || (l = 1);

            for (var u = ei(this.getMinFromRules("stroke")), p = ei(this.getMaxFromRules("stroke")), c = 0; c < this.markerCount; c++) {
              var d = this.markers.getIndex(c);

              if (d || ((d = this.markers.create()).parent = this.markerContainer, d.height = h(100), d.width = h(100)), 1 == this.markerCount) {
                var f = new ia();

                if (f.addColor(i, s), f.addColor(n, o), "vertical" == this.orientation && (f.rotation = -90), d.fill = f, S(u) && S(p)) {
                  var g = new ia();
                  g.addColor(u, a), g.addColor(p, l), "vertical" == this.orientation && (g.rotation = -90), d.stroke = g;
                }
              } else {
                var y = new qs(He(i.rgb, n.rgb, c / this.markerCount));
                d.fill = y;
                var m = s + (o - s) * c / this.markerCount;

                if (d.fillOpacity = m, S(u) && S(p)) {
                  var v = new qs(He(u.rgb, p.rgb, c / this.markerCount));
                  d.stroke = v;
                  var b = a + (l - a) * c / this.markerCount;
                  d.strokeOpacity = b;
                }
              }
            }

            var x = this.valueAxis.renderer;
            this.markerCount > 1 && ("horizontal" == this.orientation ? x.minGridDistance = this.measuredWidth / this.markerCount : x.minGridDistance = this.measuredHeight / this.markerCount), this.valueAxis.invalidate(), c = this.markerCount;

            for (var _ = this.markers.length; c < _; c++) this.markers.getIndex(c).parent = void 0;
          }, Object.defineProperty(e.prototype, "minColor", {
            get: function get() {
              return this.getPropertyValue("minColor");
            },
            set: function set(t) {
              t instanceof qs || (t = ei(t)), this.setColorProperty("minColor", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "maxColor", {
            get: function get() {
              return this.getPropertyValue("maxColor");
            },
            set: function set(t) {
              V(t) || (t = ei(t)), this.setColorProperty("maxColor", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "markerCount", {
            get: function get() {
              return this.getPropertyValue("markerCount");
            },
            set: function set(t) {
              this.setPropertyValue("markerCount", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "minValue", {
            get: function get() {
              return this.getPropertyValue("minValue");
            },
            set: function set(t) {
              this.setPropertyValue("minValue", t), this.valueAxis.min = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "maxValue", {
            get: function get() {
              return this.getPropertyValue("maxValue");
            },
            set: function set(t) {
              this.setPropertyValue("maxValue", t), this.valueAxis.max = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "orientation", {
            get: function get() {
              return this.getPropertyValue("orientation");
            },
            set: function set(t) {
              this.setPropertyValue("orientation", t, !0);
              var e = this.markerContainer,
                  i = this.valueAxis;
              "horizontal" == t ? (S(this.width) || (this.width = 200), this.height = void 0, i.width = h(100), i.height = void 0, i.tooltip.pointerOrientation = "vertical", this.layout = "vertical", e.width = h(100), e.height = void 0, i.renderer instanceof sh || (i.renderer = new sh())) : (S(this.height) || (this.height = 200), this.width = void 0, this.layout = "horizontal", e.width = void 0, e.height = h(100), i.height = h(100), i.width = void 0, i.tooltip.pointerOrientation = "horizontal", i.renderer instanceof Jl || (i.renderer = new Jl()), i.renderer.inside = !0, i.renderer.labels.template.inside = !0, this.markerContainer.reverseOrder = !0);
              var n = i.renderer;
              n.grid.template.disabled = !0, n.axisFills.template.disabled = !0, n.baseGrid.disabled = !0, n.labels.template.padding(2, 3, 2, 3), n.minHeight = void 0, n.minWidth = void 0, this.markerContainer.layout = t;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "valueAxis", {
            get: function get() {
              return this._valueAxis || (this.valueAxis = this.createChild(eh), this.valueAxis.shouldClone = !1), this._valueAxis;
            },
            set: function set(t) {
              this._valueAxis = t, t.parent = this, t.strictMinMax = !0, this.orientation = this.orientation;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "series", {
            get: function get() {
              return this._series;
            },
            set: function set(t) {
              var e = this;
              this._series = t;
              var i = "value";

              try {
                var n = t.heatRules.getIndex(0).dataField;
                n && (i = n);
              } catch (t) {}

              this.updateMinMax(t.dataItem.values[i].low, t.dataItem.values[i].high), t.dataItem.events.on("calculatedvaluechanged", function (n) {
                e.updateMinMax(t.dataItem.values[i].low, t.dataItem.values[i].high);
              }, void 0, !1), t.heatRules.events.on("inserted", this.invalidate, this, !1), t.heatRules.events.on("removed", this.invalidate, this, !1);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.updateMinMax = function (t, e) {
            var i = this.valueAxis;
            A(this.minValue) || (i.min = t, i.invalidate()), A(this.maxValue) || (i.max = e, i.invalidate());
          }, e.prototype.processConfig = function (e) {
            if (e && S(e.series) && T(e.series) && T(e.series)) if (this.map.hasKey(e.series)) e.series = this.map.getKey(e.series);else {
              var i = e.series,
                  n = this.map.events.on("insertKey", function (t) {
                t.key == i && (this.series = t.newValue, n.dispose());
              }, this);
              this._disposers.push(n), delete e.series;
            }
            t.prototype.processConfig.call(this, e);
          }, e;
        }(_a);

        Fs.registeredClasses.HeatLegend = vu;

        var bu = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "Candlestick", e.layout = "none", e;
          }

          return n(e, t), e.prototype.createAssets = function () {
            t.prototype.createAssets.call(this), this.lowLine = this.createChild(Na), this.lowLine.shouldClone = !1, this.highLine = this.createChild(Na), this.highLine.shouldClone = !1;
          }, e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), this.lowLine && this.lowLine.copyFrom(e.lowLine), this.highLine && this.highLine.copyFrom(e.highLine);
          }, e;
        }(ru);

        Fs.registeredClasses.Candlestick = bu;

        var xu = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.values.lowValueX = {}, e.values.lowValueY = {}, e.values.highValueX = {}, e.values.highValueY = {}, e.className = "CandlestickSeriesDataItem", e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "lowValueX", {
            get: function get() {
              return this.values.lowValueX.value;
            },
            set: function set(t) {
              this.setValue("lowValueX", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "lowValueY", {
            get: function get() {
              return this.values.lowValueY.value;
            },
            set: function set(t) {
              this.setValue("lowValueY", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "highValueX", {
            get: function get() {
              return this.values.highValueX.value;
            },
            set: function set(t) {
              this.setValue("highValueX", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "highValueY", {
            get: function get() {
              return this.values.highValueY.value;
            },
            set: function set(t) {
              this.setValue("highValueY", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "closeValueX", {
            get: function get() {
              return this.values.valueX.value;
            },
            set: function set(t) {
              this.setValue("valueX", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "closeValueY", {
            get: function get() {
              return this.values.valueY.value;
            },
            set: function set(t) {
              this.setValue("valueY", t);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(su),
            _u = function (t) {
          function e() {
            var e = t.call(this) || this;
            e.className = "CandlestickSeries", e.groupFields.lowValueX = "low", e.groupFields.lowValueY = "low", e.groupFields.highValueX = "high", e.groupFields.highValueY = "high", e.strokeOpacity = 1;
            var i = new ta(),
                n = i.getFor("positive"),
                r = i.getFor("negative");
            return e.dropFromOpenState.properties.fill = r, e.dropFromOpenState.properties.stroke = r, e.riseFromOpenState.properties.fill = n, e.riseFromOpenState.properties.stroke = n, e.applyTheme(), e;
          }

          return n(e, t), e.prototype.applyInternalDefaults = function () {
            t.prototype.applyInternalDefaults.call(this), S(this.readerTitle) || (this.readerTitle = this.language.translate("Candlestick Series"));
          }, e.prototype.createDataItem = function () {
            return new xu();
          }, e.prototype.validateDataElementReal = function (e) {
            t.prototype.validateDataElementReal.call(this, e), this.validateCandlestick(e);
          }, e.prototype.validateCandlestick = function (t) {
            var e = t.column;

            if (e) {
              var i = e.lowLine,
                  n = e.highLine;

              if (this.baseAxis == this.xAxis) {
                var r = e.pixelWidth / 2;
                i.x = r, n.x = r;
                var s = t.getWorkingValue(this.yOpenField),
                    o = t.getWorkingValue(this.yField),
                    a = this.yAxis.getY(t, this.yOpenField),
                    l = this.yAxis.getY(t, this.yField),
                    h = this.yAxis.getY(t, this.yLowField),
                    u = this.yAxis.getY(t, this.yHighField),
                    p = e.pixelY;
                i.y1 = h - p, n.y1 = u - p, s < o ? (i.y2 = a - p, n.y2 = l - p) : (i.y2 = l - p, n.y2 = a - p);
              }

              if (this.baseAxis == this.yAxis) {
                var c = e.pixelHeight / 2;
                i.y = c, n.y = c;
                var d = t.getWorkingValue(this.xOpenField),
                    f = t.getWorkingValue(this.xField),
                    g = this.xAxis.getX(t, this.xOpenField),
                    y = this.xAxis.getX(t, this.xField),
                    m = this.xAxis.getX(t, this.xLowField),
                    v = this.xAxis.getX(t, this.xHighField),
                    b = e.pixelX;
                i.x1 = m - b, n.x1 = v - b, d < f ? (i.x2 = g - b, n.x2 = y - b) : (i.x2 = y - b, n.x2 = g - b);
              }

              pe(this.axisRanges.iterator(), function (e) {
                var r = t.rangesColumns.getKey(e.uid);

                if (r) {
                  var s = r.lowLine;
                  s.x = i.x, s.y = i.y, s.x1 = i.x1, s.x2 = i.x2, s.y1 = i.y1, s.y2 = i.y2;
                  var o = r.highLine;
                  o.x = n.x, o.y = n.y, o.x1 = n.x1, o.x2 = n.x2, o.y1 = n.y1, o.y2 = n.y2;
                }
              });
            }
          }, Object.defineProperty(e.prototype, "xLowField", {
            get: function get() {
              return this._xLowField;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "yLowField", {
            get: function get() {
              return this._yLowField;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "xHighField", {
            get: function get() {
              return this._xHighField;
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "yHighField", {
            get: function get() {
              return this._yHighField;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.defineFields = function () {
            if (t.prototype.defineFields.call(this), this.baseAxis == this.xAxis) {
              var e = fi(this.yAxis.axisFieldName);
              this._yLowField = "low" + e + "Y", this._yHighField = "high" + e + "Y";
            }

            if (this.baseAxis == this.yAxis) {
              var i = fi(this.xAxis.axisFieldName);
              this._xLowField = "low" + i + "X", this._xHighField = "high" + i + "X";
            }

            this.addValueField(this.xAxis, this._xValueFields, this._xLowField), this.addValueField(this.xAxis, this._xValueFields, this._xHighField), this.addValueField(this.yAxis, this._yValueFields, this._yLowField), this.addValueField(this.yAxis, this._yValueFields, this._yHighField);
          }, e.prototype.createLegendMarker = function (t) {
            var e = t.pixelWidth,
                i = t.pixelHeight;
            t.removeChildren();
            var n,
                r,
                s = t.createChild(bu);
            s.shouldClone = !1, s.copyFrom(this.columns.template);
            var o = s.lowLine,
                a = s.highLine;
            this.baseAxis == this.yAxis ? (n = e / 3, r = i, o.y = i / 2, a.y = i / 2, o.x2 = e / 3, a.x2 = e / 3, a.x = e / 3 * 2, s.column.x = e / 3) : (n = e, r = i / 3, o.x = e / 2, a.x = e / 2, o.y2 = i / 3, a.y2 = i / 3, a.y = i / 3 * 2, s.column.y = i / 3), s.width = n, s.height = r, ne(this, t, va), ne(this.columns.template, s, va), s.stroke = this.riseFromOpenState.properties.stroke, s.fill = s.stroke;
            var l = t.dataItem;
            l.color = s.fill, l.colorOrig = s.fill;
          }, e.prototype.createColumnTemplate = function () {
            return new bu();
          }, e;
        }(ou);

        Fs.registeredClasses.CandlestickSeries = _u, Fs.registeredClasses.CandlestickSeriesDataItem = xu;

        var Pu = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "OHLC", e.layout = "none", e;
          }

          return n(e, t), e.prototype.createAssets = function () {
            this.openLine = this.createChild(Na), this.openLine.shouldClone = !1, this.highLowLine = this.createChild(Na), this.highLowLine.shouldClone = !1, this.closeLine = this.createChild(Na), this.closeLine.shouldClone = !1;
          }, e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), this.openLine && this.openLine.copyFrom(e.openLine), this.highLowLine && this.highLowLine.copyFrom(e.highLowLine), this.closeLine && this.closeLine.copyFrom(e.closeLine);
          }, e;
        }(bu);

        Fs.registeredClasses.OHLC = Pu;

        var wu = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "OHLCSeriesDataItem", e.applyTheme(), e;
          }

          return n(e, t), e;
        }(xu),
            Cu = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "OHLCSeries", e.applyTheme(), e;
          }

          return n(e, t), e.prototype.applyInternalDefaults = function () {
            t.prototype.applyInternalDefaults.call(this), S(this.readerTitle) || (this.readerTitle = this.language.translate("OHLC Series"));
          }, e.prototype.createDataItem = function () {
            return new wu();
          }, e.prototype.validateCandlestick = function (t) {
            var e = t.column;

            if (e) {
              var i = e.openLine,
                  n = e.highLowLine,
                  r = e.closeLine;

              if (this.baseAxis == this.xAxis) {
                var s = e.pixelWidth / 2;
                n.x = s, t.getWorkingValue(this.yOpenField), t.getWorkingValue(this.yField);
                var o = this.yAxis.getY(t, this.yOpenField),
                    a = this.yAxis.getY(t, this.yField),
                    l = this.yAxis.getY(t, this.yLowField),
                    h = this.yAxis.getY(t, this.yHighField),
                    u = e.pixelY;
                i.y1 = o - u, i.y2 = o - u, i.x1 = 0, i.x2 = s, r.y1 = a - u, r.y2 = a - u, r.x1 = s, r.x2 = 2 * s, n.y1 = h - u, n.y2 = l - u;
              }

              if (this.baseAxis == this.yAxis) {
                var p = e.pixelHeight / 2;
                n.y = p, t.getWorkingValue(this.xOpenField), t.getWorkingValue(this.xField);
                var c = this.xAxis.getX(t, this.xOpenField),
                    d = this.xAxis.getX(t, this.xField),
                    f = this.xAxis.getX(t, this.xLowField),
                    g = this.xAxis.getX(t, this.xHighField),
                    y = e.pixelX;
                i.x1 = c - y, i.x2 = c - y, i.y1 = p, i.y2 = 2 * p, r.x1 = d - y, r.x2 = d - y, r.y1 = 0, r.y2 = p, n.x1 = g - y, n.x2 = f - y;
              }

              pe(this.axisRanges.iterator(), function (e) {
                var s = t.rangesColumns.getKey(e.uid);

                if (s) {
                  var o = s.openLine;
                  o.x = i.x, o.y = i.y, o.x1 = i.x1, o.x2 = i.x2, o.y1 = i.y1, o.y2 = i.y2;
                  var a = s.closeLine;
                  a.x = r.x, a.y = r.y, a.x1 = r.x1, a.x2 = r.x2, a.y1 = r.y1, a.y2 = r.y2;
                  var l = s.highLowLine;
                  l.x = n.x, l.y = n.y, l.x1 = n.x1, l.x2 = n.x2, l.y1 = n.y1, l.y2 = n.y2;
                }
              });
            }
          }, e.prototype.createLegendMarker = function (t) {
            var e = t.pixelWidth,
                i = t.pixelHeight;
            t.removeChildren();
            var n,
                r,
                s = t.createChild(Pu);
            s.shouldClone = !1, s.copyFrom(this.columns.template);
            var o = s.openLine,
                a = s.closeLine,
                l = s.highLowLine;
            this.baseAxis == this.yAxis ? (n = e / 3, r = i, l.y = i / 2, l.x2 = e, o.x = e / 3 * 2, o.y2 = i / 2, a.x = e / 3, a.y2 = i, a.y1 = i / 2) : (n = e, r = i / 3, l.x = e / 2, l.y2 = i, o.y = i / 3 * 2, o.x2 = e / 2, a.y = i / 3, a.x2 = e, a.x1 = e / 2), s.width = n, s.height = r, ne(this, t, va), ne(this.columns.template, s, va), s.stroke = this.riseFromOpenState.properties.stroke;
            var h = t.dataItem;
            h.color = s.stroke, h.colorOrig = s.stroke;
          }, e.prototype.createColumnTemplate = function () {
            return new Pu();
          }, e;
        }(_u);

        Fs.registeredClasses.OHLCSeries = Cu, Fs.registeredClasses.OHLCSeriesDataItem = wu;

        var Ou = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "StepLineSeriesSegment", e;
          }

          return n(e, t), e.prototype.drawSegment = function (t, e, i, n, r, s) {
            if (t.length > 0 && e.length > 0) if (r) {
              var o = xr(t[0]);
              if (t.length > 0) for (var a = 1; a < t.length; a++) {
                var l = t[a];
                a / 2 == Math.round(a / 2) ? o += xr(l) : o += _r(l);
              }
              this.strokeSprite.path = o, (this.fillOpacity > 0 || this.fillSprite.fillOpacity > 0) && (o = xr(t[0]) + br(t), o += _r(e[0]) + br(e), o += _r(t[0]), o += " Z", this.fillSprite.path = o);
            } else o = xr(t[0]) + br(t), this.strokeSprite.path = o, (this.fillOpacity > 0 || this.fillSprite.fillOpacity > 0) && (o += _r(e[0]) + br(e), o += _r(t[0]), o += " Z", this.fillSprite.path = o);
          }, e;
        }(fh);

        Fs.registeredClasses.StepLineSeriesSegment = Ou;

        var Su = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "StepLineSeriesDataItem", e.applyTheme(), e;
          }

          return n(e, t), e;
        }(gh),
            Iu = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "StepLineSeries", e.applyTheme(), e.startLocation = 0, e.endLocation = 1, e;
          }

          return n(e, t), e.prototype.createDataItem = function () {
            return new Su();
          }, e.prototype.addPoints = function (t, e, i, n, r) {
            var s, o, a, l;
            this.baseAxis == this.xAxis && (s = this.startLocation, o = this.endLocation, a = this.getAdjustedXLocation(e, this.yOpenField), l = this.getAdjustedXLocation(e, this.yField)), this.baseAxis == this.yAxis && (a = this.startLocation, l = this.endLocation, s = this.getAdjustedXLocation(e, this.xOpenField), o = this.getAdjustedXLocation(e, this.xField));
            var h = this.xAxis.getX(e, i, s),
                u = this.yAxis.getY(e, n, a),
                p = this.xAxis.getX(e, i, o),
                c = this.yAxis.getY(e, n, l);

            if (h = R(h, -1e5, 1e5), u = R(u, -1e5, 1e5), p = R(p, -1e5, 1e5), c = R(c, -1e5, 1e5), !this.noRisers && t.length > 1) {
              var d = t[t.length - 1];
              this.baseAxis == this.xAxis && (r ? t.push({
                x: d.x,
                y: c
              }) : t.push({
                x: h,
                y: d.y
              })), this.baseAxis == this.yAxis && (r ? t.push({
                x: p,
                y: d.y
              }) : t.push({
                x: d.x,
                y: u
              }));
            }

            var f = {
              x: h,
              y: u
            },
                g = {
              x: p,
              y: c
            };
            r ? t.push(g, f) : t.push(f, g);
          }, e.prototype.drawSegment = function (t, e, i) {
            var n = !1;
            this.yAxis == this.baseAxis && (n = !0), t.drawSegment(e, i, this.tensionX, this.tensionY, this.noRisers, n);
          }, e.prototype.createSegment = function () {
            return new Ou();
          }, Object.defineProperty(e.prototype, "noRisers", {
            get: function get() {
              return this.getPropertyValue("noRisers");
            },
            set: function set(t) {
              this.setPropertyValue("noRisers", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "startLocation", {
            get: function get() {
              return this.getPropertyValue("startLocation");
            },
            set: function set(t) {
              this.setPropertyValue("startLocation", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "endLocation", {
            get: function get() {
              return this.getPropertyValue("endLocation");
            },
            set: function set(t) {
              this.setPropertyValue("endLocation", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(yh);

        Fs.registeredClasses.StepLineSeries = Iu, Fs.registeredClasses.StepLineSeriesDataItem = Su;

        var Du = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "RadarColumn", e;
          }

          return n(e, t), e.prototype.createAssets = function () {
            this.radarColumn = this.createChild(Ka), this.radarColumn.shouldClone = !1, this.radarColumn.strokeOpacity = void 0, this.column = this.radarColumn;
          }, e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), this.radarColumn && this.radarColumn.copyFrom(e.radarColumn);
          }, e.prototype.getTooltipX = function () {
            var t = this.getPropertyValue("tooltipX");
            return A(t) || (t = this.radarColumn.tooltipX), t;
          }, e.prototype.getTooltipY = function () {
            var t = this.getPropertyValue("tooltipX");
            return A(t) || (t = this.radarColumn.tooltipY), t;
          }, e;
        }(ru);

        Fs.registeredClasses.RadarColumn = Du;

        var ku = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "ColumnSeriesDataItem", e.applyTheme(), e;
          }

          return n(e, t), e;
        }(su),
            Tu = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "RadarColumnSeries", e.applyTheme(), e;
          }

          return n(e, t), e.prototype.createColumnTemplate = function () {
            return new Du();
          }, e.prototype.validate = function () {
            this.chart.invalid && this.chart.validate(), t.prototype.validate.call(this);
          }, e.prototype.validateDataElementReal = function (t) {
            var e,
                i,
                n,
                r,
                s = this,
                o = this.chart.startAngle,
                a = this.chart.endAngle,
                l = this.yField,
                h = this.yOpenField,
                u = this.xField,
                c = this.xOpenField,
                d = this.getStartLocation(t),
                f = this.getEndLocation(t),
                g = (a - o) / (this.dataItems.length * (this.end - this.start)),
                y = this.columns.template.percentWidth;
            p(y) && (y = 100);
            var m = j((f - d) * (1 - y / 100) / 2, 5);

            if (d += m, f -= m, this.baseAxis == this.xAxis ? (n = K({
              x: this.yAxis.getX(t, l, t.locations[l], "valueY"),
              y: this.yAxis.getY(t, l, t.locations[l], "valueY")
            }), r = K({
              x: this.yAxis.getX(t, h, t.locations[h], "valueY"),
              y: this.yAxis.getY(t, h, t.locations[h], "valueY")
            }), e = this.xAxis.getAngle(t, c, d, "valueX"), i = this.xAxis.getAngle(t, u, f, "valueX"), o += d * g, a -= (1 - f) * g) : (n = K({
              x: this.yAxis.getX(t, l, d, "valueY"),
              y: this.yAxis.getY(t, l, d, "valueY")
            }), r = K({
              x: this.yAxis.getX(t, h, f, "valueY"),
              y: this.yAxis.getY(t, h, f, "valueY")
            }), e = this.xAxis.getAngle(t, u, t.locations[u], "valueX"), i = this.xAxis.getAngle(t, c, t.locations[c], "valueX")), i < e) {
              var v = i;
              i = e, e = v;
            }

            e = R(e, o, a), i = R(i, o, a);
            var b = t.column;
            b || (b = this.columns.create(), t.column = b, se(this.columns.template, b, va), t.addSprite(b), b.paper = this.paper, this.setColumnStates(b));
            var x = b.radarColumn;
            x.startAngle = e;

            var _ = i - e;

            _ > 0 ? (x.arc = _, x.radius = n, x.innerRadius = r, b.__disabled = !1, b.parent = this.columnsContainer, pe(this.axisRanges.iterator(), function (i) {
              var o = t.rangesColumns.getKey(i.uid);
              o || (o = s.columns.create(), se(s.columns.template, o, va), ne(i.contents, o, va), o.dataItem && St(o.dataItem.sprites, o), t.addSprite(o), o.paper = s.paper, s.setColumnStates(o), t.rangesColumns.setKey(i.uid, o));
              var a = o.radarColumn;
              a.startAngle = e, a.arc = _, a.radius = n, a.innerRadius = r, a.invalid && (a.paper = s.paper, a.validate()), o.__disabled = !1, o.parent = i.contents;
            })) : this.disableUnusedColumns(t);
          }, e.prototype.getPoint = function (t, e, i, n, r, s, o) {
            s || (s = "valueX"), o || (o = "valueY");
            var a = K({
              x: this.yAxis.getX(t, i, r, o),
              y: this.yAxis.getY(t, i, r, o)
            });
            0 == a && (a = 1e-5);
            var l = this.xAxis.getAngle(t, e, n, s);
            return {
              x: a * H(l),
              y: a * B(l)
            };
          }, e.prototype.getMaskPath = function () {
            var t = this.yAxis.renderer;
            return Sr(t.startAngle, t.endAngle - t.startAngle, t.pixelRadius, t.pixelInnerRadius);
          }, e.prototype.positionBulletReal = function (t, e, i) {
            var n = this.xAxis,
                r = this.yAxis;
            (e < n.start || e > n.end || i < r.start || i > r.end) && (t.visible = !1), t.moveTo(this.xAxis.renderer.positionToPoint(e, i));
          }, e;
        }(ou);

        Fs.registeredClasses.RadarColumnSeries = Tu, Fs.registeredClasses.RadarColumnSeriesDataItem = ku;

        var Au = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.slice = e.createChild(ba), e.slice.shouldClone = !1, e.slice.setElement(e.paper.add("path")), e.slice.isMeasured = !1, e.orientation = "vertical", e.bottomWidth = h(100), e.topWidth = h(100), e.isMeasured = !1, e.width = 10, e.height = 10, e.expandDistance = 0, e.className = "FunnelSlice", e.applyTheme(), e;
          }

          return n(e, t), e.prototype.draw = function () {
            t.prototype.draw.call(this);
            var e = this.pixelPaddingTop,
                i = this.pixelPaddingBottom,
                n = this.pixelPaddingRight,
                r = this.pixelPaddingLeft,
                s = this.pixelWidth - n - r,
                o = this.pixelHeight - e - i,
                a = this.expandDistance,
                l = "";

            if ("vertical" == this.orientation) {
              var h = {
                x: (s - (m = hi(this.topWidth, s))) / 2 + r,
                y: e
              },
                  u = {
                x: (s + m) / 2 + r,
                y: e
              },
                  p = {
                x: (s + (v = hi(this.bottomWidth, s))) / 2 + r,
                y: e + o
              },
                  c = {
                x: (s - v) / 2 + r,
                y: e + o
              },
                  d = {
                x: u.x + (p.x - u.x) / 2 + a * o,
                y: u.y + .5 * o
              },
                  f = {
                x: h.x + (c.x - h.x) / 2 - a * o,
                y: h.y + .5 * o
              },
                  g = _r(p),
                  y = "";

              0 != a && (g = Pr(p, d), y = Pr(h, f)), l = xr(h) + _r(u) + g + _r(c) + y, this.tickPoint = {
                x: u.x + (p.x - u.x) / 2,
                y: u.y + (p.y - u.y) / 2
              };
            } else {
              var m,
                  v,
                  b = {
                x: r,
                y: (o - (m = hi(this.topWidth, o))) / 2 + e
              },
                  x = {
                x: r,
                y: (o + m) / 2 + e
              },
                  _ = {
                x: r + s,
                y: (o - (v = hi(this.bottomWidth, o))) / 2 + e
              },
                  P = {
                x: r + s,
                y: (o + v) / 2 + e
              };
              d = {
                y: b.y + (_.y - b.y) / 2 - a * s,
                x: b.x + .5 * s
              }, f = {
                y: x.y + (P.y - x.y) / 2 + a * s,
                x: x.x + .5 * s
              }, g = _r(_), y = "", 0 != a && (g = Pr(_, d), y = Pr(x, f)), l = xr(x) + _r(b) + g + _r(P) + y, this.tickPoint = {
                y: x.y + (P.y - x.y) / 2,
                x: x.x + (P.x - x.x) / 2
              };
            }

            this.slice.path = l, this.invalidateLayout();
          }, e.prototype.getPoint = function (t, e) {
            var i = this.pixelPaddingTop,
                n = this.pixelPaddingBottom,
                r = this.pixelPaddingRight,
                s = this.pixelPaddingLeft,
                o = this.pixelWidth - r - s,
                a = this.pixelHeight - i - n;

            if ("vertical" == this.orientation) {
              var l = {
                x: (o - (c = hi(this.topWidth, o))) / 2 + s,
                y: i
              },
                  h = {
                x: (o + c) / 2 + s,
                y: i
              },
                  u = {
                x: (o + (d = hi(this.bottomWidth, o))) / 2 + s,
                y: i + a
              },
                  p = l.x + ({
                x: (o - d) / 2 + s,
                y: i + a
              }.x - l.x) * e;
              return {
                x: p + (h.x + (u.x - h.x) * e - p) * t,
                y: h.y + (u.y - h.y) * e
              };
            }

            var c,
                d,
                f = {
              x: s,
              y: (a - (c = hi(this.topWidth, a))) / 2 + i
            },
                g = {
              x: s,
              y: (a + c) / 2 + i
            },
                y = {
              x: s + o,
              y: (a - (d = hi(this.bottomWidth, a))) / 2 + i
            },
                m = f.y + (y.y - f.y) * t;
            return {
              y: m + (g.y + ({
                x: s + o,
                y: (a + d) / 2 + i
              }.y - g.y) * t - m) * e,
              x: f.x + (y.x - f.x) * t
            };
          }, Object.defineProperty(e.prototype, "bottomWidth", {
            get: function get() {
              return this.getPropertyValue("bottomWidth");
            },
            set: function set(t) {
              this.setPercentProperty("bottomWidth", t, !0, !1, 10, !1);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "topWidth", {
            get: function get() {
              return this.getPropertyValue("topWidth");
            },
            set: function set(t) {
              this.setPercentProperty("topWidth", t, !0, !1, 10, !1);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "orientation", {
            get: function get() {
              return this.getPropertyValue("orientation");
            },
            set: function set(t) {
              this.setPropertyValue("orientation", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "expandDistance", {
            get: function get() {
              return this.getPropertyValue("expandDistance");
            },
            set: function set(t) {
              this.setPropertyValue("expandDistance", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), this.slice && this.slice.copyFrom(e.slice);
          }, e;
        }(_a);

        Fs.registeredClasses.FunnelSlice = Au;

        var Vu = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e._label = new ys(), e._slice = new ys(), e.className = "FunnelTick", e.element = e.paper.add("path"), e._disposers.push(e._label), e._disposers.push(e._slice), e.setPropertyValue("locationX", 0), e.setPropertyValue("locationY", 0), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.draw = function () {
            t.prototype.draw.call(this);
            var e = this.slice,
                i = e.getPoint(this.locationX, this.locationY);

            if (i) {
              var n = this.label,
                  r = e.dataItem.component;

              if ("vertical" == r.orientation) {
                var s = n.pixelX,
                    o = n.pixelY;
                r.labelsOpposite || (s += n.maxRight);
                var a = Xi(i, e, this.parent),
                    l = Xi({
                  x: s,
                  y: o
                }, n.parent, this.parent);
                this.path = xr(a) + _r(l);
              } else s = n.pixelX, o = n.pixelY, r.labelsOpposite || (o += n.maxBottom), a = Xi(i, e, this.parent), l = Xi({
                x: s,
                y: o
              }, n.parent, this.parent), this.path = xr(a) + _r(l);
            }
          }, Object.defineProperty(e.prototype, "slice", {
            get: function get() {
              return this._slice.get();
            },
            set: function set(t) {
              this._slice.set(t, new gs([t.events.on("transformed", this.invalidate, this, !1), t.events.on("validated", this.invalidate, this, !1)]));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "label", {
            get: function get() {
              return this._label.get();
            },
            set: function set(t) {
              this._label.set(t, t.events.on("transformed", this.invalidate, this, !1));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "locationX", {
            get: function get() {
              return this.getPropertyValue("locationX");
            },
            set: function set(t) {
              this.setPropertyValue("locationX", t, !1, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "locationY", {
            get: function get() {
              return this.getPropertyValue("locationY");
            },
            set: function set(t) {
              this.setPropertyValue("locationY", t, !1, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(Kl);

        Fs.registeredClasses.FunnelTick = Vu;

        var Fu = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "FunnelSeriesDataItem", e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "sliceLink", {
            get: function get() {
              var t = this;

              if (!this._sliceLink) {
                var e = this.component.sliceLinks.create();
                this._sliceLink = e, this._disposers.push(e), e.parent = this.component.slicesContainer, this._disposers.push(new fs(function () {
                  t.component && t.component.sliceLinks.removeValue(e);
                })), this.addSprite(e), e.visible = this.visible;
              }

              return this._sliceLink;
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(kh),
            Mu = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e._nextY = 0, e.className = "FunnelSeries", e.orientation = "vertical", e.width = h(100), e.height = h(100), e.slicesContainer.width = h(100), e.slicesContainer.height = h(100), e._disposers.push(e.slicesContainer.events.on("maxsizechanged", e.invalidateDataItems, e, !1)), e.labelsOpposite = !0, e.labelsContainer.layout = "absolute", e.bottomRatio = 0, e.applyTheme(), e;
          }

          return n(e, t), e.prototype.createSlice = function () {
            return new Au();
          }, e.prototype.createTick = function () {
            return new Vu();
          }, e.prototype.applyInternalDefaults = function () {
            t.prototype.applyInternalDefaults.call(this), S(this.readerTitle) || (this.readerTitle = this.language.translate("Funnel Series"));
          }, e.prototype.createDataItem = function () {
            return new Fu();
          }, e.prototype.initSlice = function (t) {
            t.isMeasured = !1, t.defaultState.properties.scale = 1, t.observe("scale", this.handleSliceScale, this), t.observe(["dx", "dy", "x", "y"], this.handleSliceMove, this), t.tooltipText = "{category}: {value.percent.formatNumber('#.#')}% ({value.value})", t.states.create("hover").properties.expandDistance = .2;
          }, e.prototype.initLabel = function (e) {
            t.prototype.initLabel.call(this, e), e.verticalCenter = "middle", e.horizontalCenter = "middle", e.isMeasured = !0, e.padding(5, 5, 5, 5);
          }, e.prototype.validate = function () {
            t.prototype.validate.call(this), this._nextY = 0;
          }, e.prototype.validateDataElements = function () {
            var e = this.slicesContainer,
                i = this.labelsContainer,
                n = this.labels.template;
            this.alignLabels ? (n.interactionsEnabled = !0, e.isMeasured = !0, i.isMeasured = !0) : (n.interactionsEnabled = !1, e.isMeasured = !1, i.isMeasured = !1);
            var r = 0,
                s = 0;
            this.dataItems.each(function (t) {
              S(t.value) && (s++, t.value > 0 ? r += t.getWorkingValue("value") / t.value : r += 1);
            }), this._total = 1 / s * r, this._count = s, t.prototype.validateDataElements.call(this), this.arrangeLabels();
          }, e.prototype.getNextValue = function (t) {
            var e = t.index,
                i = t.getWorkingValue("value");

            if (e < this.dataItems.length - 1) {
              var n = this.dataItems.getIndex(e + 1);
              if (i = n.getWorkingValue("value"), !n.visible || n.isHiding) return this.getNextValue(n);
            }

            return i;
          }, e.prototype.formDataElement = function () {}, e.prototype.validateDataElement = function (e) {
            if (S(e.value)) {
              var i = e.slice;
              i.orientation = this.orientation;
              var n = e.sliceLink;
              n.orientation = this.orientation;
              var r = e.tick,
                  s = e.label;
              r.slice = i, r.label = s, this.decorateSlice(e), n.fill = i.fill, e.index == this.dataItems.length - 1 && (n.disabled = !0), t.prototype.validateDataElement.call(this, e);
            }
          }, e.prototype.decorateSlice = function (t) {
            var e = t.slice,
                i = t.sliceLink,
                n = t.label,
                r = t.tick,
                s = this.slicesContainer.innerWidth,
                o = this.slicesContainer.innerHeight,
                a = this.getNextValue(t),
                l = t.getWorkingValue("value"),
                h = this.bottomRatio,
                u = 1;

            if (t.value > 0 && (u = l / t.value), "vertical" == this.orientation) {
              var p = i.pixelHeight * u;
              o += p, e.topWidth = l / this.dataItem.values.value.high * s, e.bottomWidth = (l - (l - a) * h) / this.dataItem.values.value.high * s, i.topWidth = e.bottomWidth, i.bottomWidth = (l - (l - a)) / this.dataItem.values.value.high * s, e.y = this._nextY, e.height = W(0, o / this._count * u / this._total - p), e.x = s / 2, this.alignLabels ? n.x = void 0 : n.x = e.x, n.y = e.pixelY + e.pixelHeight * r.locationY, this._nextY += e.pixelHeight + p, i.y = this._nextY - p, i.x = e.x;
            } else {
              var c = i.pixelWidth * u;
              s += c, e.topWidth = l / this.dataItem.values.value.high * o, e.bottomWidth = (l - (l - a) * h) / this.dataItem.values.value.high * o, i.topWidth = e.bottomWidth, i.bottomWidth = (l - (l - a)) / this.dataItem.values.value.high * o, e.x = this._nextY, e.width = s / this._count * u * 1 / this._total - c, e.y = o / 2, this.alignLabels ? n.y = this.labelsContainer.measuredHeight : n.y = e.y, n.x = e.pixelX + e.pixelWidth * r.locationX, this._nextY += e.pixelWidth + c, i.x = this._nextY - c, i.y = e.y;
            }
          }, e.prototype.arrangeLabels = function () {
            if (this.alignLabels) {
              var t = this.labels.length;

              if (t > 1) {
                var e = this.labels.getIndex(t - 1),
                    i = e.pixelY,
                    n = e.pixelX;

                if (t > 1) {
                  for (var r = t - 2; r >= 0; r--) (s = this.labels.getIndex(r)).visible && (s.invalid && s.validate(), "vertical" == this.orientation ? s.pixelY + s.measuredHeight > i && (s.y = i - s.measuredHeight) : s.pixelX + s.measuredWidth > n && (s.x = n - s.measuredWidth), i = s.pixelY, n = s.pixelX);

                  for (i = 0, n = 0, r = 0; r < t; r++) {
                    var s;
                    (s = this.labels.getIndex(r)).visible && (s.invalid && s.validate(), "vertical" == this.orientation ? s.pixelY < i && (s.y = i) : s.pixelX < n && (s.x = n), i += s.measuredHeight, n += s.measuredWidth);
                  }
                }
              }
            }
          }, e.prototype.positionBullet = function (e) {
            t.prototype.positionBullet.call(this, e);
            var i = e.dataItem.slice,
                n = e.locationX;
            A(n) || (n = .5);
            var r = e.locationY;
            A(r) || (r = 1), e.x = i.pixelX + i.measuredWidth * n, e.y = i.pixelY + i.measuredHeight * r;
          }, Object.defineProperty(e.prototype, "orientation", {
            get: function get() {
              return this.getPropertyValue("orientation");
            },
            set: function set(t) {
              this.setPropertyValue("orientation", t) && (this.labelsOpposite = this.labelsOpposite, this.invalidate(), "vertical" == t ? (this.ticks.template.locationX = 1, this.ticks.template.locationY = .5, this.labels.template.rotation = 0, this.layout = "horizontal") : (this.ticks.template.locationX = .5, this.ticks.template.locationY = 1, this.labels.template.rotation = -90, this.layout = "vertical"));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "bottomRatio", {
            get: function get() {
              return this.getPropertyValue("bottomRatio");
            },
            set: function set(t) {
              this.setPropertyValue("bottomRatio", t) && this.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "sliceLinks", {
            get: function get() {
              if (!this._sliceLinks) {
                var t = new Au();
                t.applyOnClones = !0, t.fillOpacity = .5, t.expandDistance = -.3, t.hiddenState.properties.opacity = 0, this._disposers.push(t), this._sliceLinks = new Hs(t), this._disposers.push(new Bs(this._sliceLinks));
              }

              return this._sliceLinks;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.show = function (e) {
            var i = this,
                n = this.startIndex,
                r = this.endIndex,
                s = this.defaultState.transitionDuration;
            A(e) && (s = e);
            var o = 0;
            return pe(me(this.dataItems.iterator()), function (t) {
              var e = t[0],
                  a = t[1];
              i.sequencedInterpolation && (o = i.sequencedInterpolationDelay * e + s * (e - n) / (r - n)), a.show(s, o, ["value"]);
            }), t.prototype.show.call(this, e);
          }, e.prototype.hide = function (e) {
            var i = this,
                n = ["value"],
                r = this.startIndex,
                s = this.endIndex,
                o = 0,
                a = this.hiddenState.transitionDuration;
            A(e) && (a = e), pe(me(this.dataItems.iterator()), function (t) {
              var e = t[0],
                  l = t[1];
              i.sequencedInterpolation && (o = i.sequencedInterpolationDelay * e + a * (e - r) / (s - r)), l.hide(a, o, 0, n);
            });
            var l = t.prototype.hide.call(this, e);
            return l && !l.isFinished() && l.delay(o), l;
          }, e.prototype.setAlignLabels = function (e) {
            t.prototype.setAlignLabels.call(this, e), this.ticks.template.disabled = !e;
            var i = this.labelsContainer;
            i && (e ? (i.height = void 0, i.width = void 0, i.margin(10, 10, 10, 10)) : (i.width = h(100), i.height = h(100))), this.labelsOpposite = this.labelsOpposite;
          }, Object.defineProperty(e.prototype, "labelsOpposite", {
            get: function get() {
              return this.getPropertyValue("labelsOpposite");
            },
            set: function set(t) {
              this.setPropertyValue("labelsOpposite", t);
              var e = this.labels.template,
                  i = "none",
                  n = "none";
              this.alignLabels ? t ? (this.labelsContainer.toFront(), "vertical" == this.orientation ? (this.ticks.template.locationX = 1, e.horizontalCenter = "left", i = "right") : (this.ticks.template.locationY = 1, e.horizontalCenter = "right", n = "bottom")) : (this.labelsContainer.toBack(), "vertical" == this.orientation ? (this.ticks.template.locationX = 0, i = "left") : (n = "top", this.ticks.template.locationY = 0)) : "vertical" == this.orientation ? i = "center" : n = "middle", e.align = i, e.valign = n, this.validateLayout(), this.ticks.each(function (t) {
                t.invalidate();
              }), this.invalidateDataItems();
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(Th);

        Fs.registeredClasses.FunnelSeries = Mu, Fs.registeredClasses.FunnelSeriesDataItem = Fu;

        var ju = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "PyramidSeriesDataItem", e.applyTheme(), e;
          }

          return n(e, t), e;
        }(Fu),
            Lu = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "PyramidSeries", e.topWidth = h(0), e.bottomWidth = h(100), e.pyramidHeight = h(100), e.valueIs = "area", e.sliceLinks.template.width = 0, e.sliceLinks.template.height = 0, e.applyTheme(), e;
          }

          return n(e, t), e.prototype.applyInternalDefaults = function () {
            t.prototype.applyInternalDefaults.call(this), S(this.readerTitle) || (this.readerTitle = this.language.translate("Pyramid Series"));
          }, e.prototype.createDataItem = function () {
            return new ju();
          }, e.prototype.validate = function () {
            t.prototype.validate.call(this), this._nextWidth = void 0;
          }, e.prototype.getNextValue = function (t) {
            var e = t.index,
                i = t.getWorkingValue("value");
            return e < this.dataItems.length - 1 && (i = this.dataItems.getIndex(e + 1).getWorkingValue("value")), 0 == i && (i = 1e-6), i;
          }, e.prototype.validateDataElements = function () {
            var e = this,
                i = this.slicesContainer.innerWidth,
                n = this.slicesContainer.innerHeight;

            if (this.dataItems.each(function (t) {
              var r = t.getWorkingValue("value") / t.value,
                  s = t.sliceLink;
              "vertical" == e.orientation ? n -= s.pixelHeight * r : i -= s.pixelWidth * r;
            }), this._pyramidHeight = hi(this.pyramidHeight, n), this._pyramidWidth = hi(this.pyramidHeight, i), "vertical" == this.orientation) {
              var r = (n - this._pyramidHeight) / 2;
              this.slicesContainer.y = r, this.labelsContainer.y = r, this.ticksContainer.y = r;
            } else {
              var s = (i - this._pyramidWidth) / 2;
              this.slicesContainer.x = s, this.labelsContainer.x = s, this.ticksContainer.x = s;
            }

            t.prototype.validateDataElements.call(this);
          }, e.prototype.decorateSlice = function (t) {
            var e = this.dataItem.values.value.sum;

            if (0 != e) {
              var i = t.slice,
                  n = t.sliceLink,
                  r = t.label,
                  s = t.tick;
              this.getNextValue(t);
              var o = t.getWorkingValue("value");
              0 == o && (o = 1e-6);
              var a = this._pyramidWidth,
                  l = this._pyramidHeight,
                  h = this.slicesContainer.innerWidth,
                  u = this.slicesContainer.innerHeight,
                  p = n.pixelWidth,
                  c = n.pixelHeight;

              if ("vertical" == this.orientation) {
                var d = hi(this.topWidth, h);
                A(this._nextWidth) || (this._nextWidth = d);
                var f = hi(this.bottomWidth, h),
                    g = this._nextWidth,
                    y = Math.atan2(l, d - f);
                0 == (_ = Math.tan(Math.PI / 2 - y)) && (_ = 1e-8);
                var m = void 0,
                    v = void 0;

                if ("area" == this.valueIs) {
                  var b = (d + f) / 2 * l * o / e,
                      x = Math.abs(g * g - 2 * b * _);
                  v = (2 * b - (m = (g - Math.sqrt(x)) / _) * g) / m;
                } else v = g - (m = l * o / this.dataItem.values.value.sum) * _;

                i.height = m, i.width = h, i.bottomWidth = v, i.topWidth = g, n.topWidth = i.bottomWidth, n.bottomWidth = i.bottomWidth, i.y = this._nextY, this.alignLabels ? r.x = 0 : r.x = h / 2, r.y = i.pixelY + i.pixelHeight * s.locationY + i.dy, this._nextY += i.pixelHeight + c * o / t.value, n.y = this._nextY - c, n.x = h / 2;
              } else {
                d = hi(this.topWidth, u), A(this._nextWidth) || (this._nextWidth = d);

                var _;

                f = hi(this.bottomWidth, u), g = this._nextWidth, y = Math.atan2(a, d - f), 0 == (_ = Math.tan(Math.PI / 2 - y)) && (_ = 1e-8);
                var P = void 0;
                v = void 0, v = "area" == this.valueIs ? (2 * (b = (d + f) / 2 * a * o / this.dataItem.values.value.sum) - (P = (g - Math.sqrt(g * g - 2 * b * _)) / _) * g) / P : g - (P = a * o / this.dataItem.values.value.sum) * _, i.width = P, i.height = u, i.bottomWidth = v, i.topWidth = g, n.topWidth = i.bottomWidth, n.bottomWidth = i.bottomWidth, i.x = this._nextY, this.alignLabels ? r.y = this.labelsContainer.measuredHeight : r.y = u / 2, r.x = i.pixelX + i.pixelWidth * s.locationX + i.dx, this._nextY += i.pixelWidth + p * o / t.value, n.x = this._nextY - p, n.y = u / 2;
              }

              this._nextWidth = i.bottomWidth;
            }
          }, Object.defineProperty(e.prototype, "topWidth", {
            get: function get() {
              return this.getPropertyValue("topWidth");
            },
            set: function set(t) {
              this.setPercentProperty("topWidth", t, !1, !1, 10, !1) && this.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "pyramidHeight", {
            get: function get() {
              return this.getPropertyValue("pyramidHeight");
            },
            set: function set(t) {
              this.setPercentProperty("pyramidHeight", t, !1, !1, 10, !1) && this.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "bottomWidth", {
            get: function get() {
              return this.getPropertyValue("bottomWidth");
            },
            set: function set(t) {
              this.setPercentProperty("bottomWidth", t, !1, !1, 10, !1) && this.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "valueIs", {
            get: function get() {
              return this.getPropertyValue("valueIs");
            },
            set: function set(t) {
              this.setPropertyValue("valueIs", t) && this.invalidate();
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(Mu);

        Fs.registeredClasses.PyramidSeries = Lu, Fs.registeredClasses.PyramidSeriesDataItem = ju;

        var Eu = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "PictorialStackedSeriesDataItem", e.applyTheme(), e;
          }

          return n(e, t), e;
        }(ju),
            Ru = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "PictorialStackedSeries", e.topWidth = h(100), e.bottomWidth = h(100), e.valueIs = "height", e.applyTheme(), e.startLocation = 0, e.endLocation = 1, e._maskSprite = e.slicesContainer.createChild(ba), e._maskSprite.visible = !1, e._maskSprite.zIndex = 100, e._maskSprite.shouldClone = !1, e;
          }

          return n(e, t), e.prototype.validateDataElements = function () {
            var e = this.slicesContainer.maxWidth,
                i = this.slicesContainer.maxHeight,
                n = this._maskSprite,
                r = n.measuredWidth / n.scale,
                s = n.measuredHeight / n.scale,
                o = X(i / s, e / r);
            o == 1 / 0 && (o = 1), o = W(.001, o);
            var a = this.startLocation,
                l = this.endLocation,
                h = X(e, r * o),
                u = X(i, s * o);

            if (n.scale = o, "vertical" == this.orientation ? (this.topWidth = h + 4, this.bottomWidth = h + 4, this.pyramidHeight = u * (l - a), n.x = e / 2, n.y = u / 2) : (this.topWidth = u + 4, this.bottomWidth = u + 4, this.pyramidHeight = h * (l - a), n.valign = "middle", n.x = h / 2, n.y = i / 2), n.verticalCenter = "middle", n.horizontalCenter = "middle", t.prototype.validateDataElements.call(this), "vertical" == this.orientation) {
              var p = (i - u) / 2;
              this.slicesContainer.y = p, this.labelsContainer.y = p, this.ticksContainer.y = p, this.slices.template.dy = a * u;
            } else {
              var c = (e - h) / 2;
              this.slicesContainer.x = c, this.labelsContainer.x = c, this.ticksContainer.x = c, this.slices.template.dx = a * h;
            }

            h > 0 && u > 0 && (this.slicesContainer.mask = this._maskSprite);
          }, e.prototype.applyInternalDefaults = function () {
            t.prototype.applyInternalDefaults.call(this), S(this.readerTitle) || (this.readerTitle = this.language.translate("Pyramid Series"));
          }, e.prototype.createDataItem = function () {
            return new Eu();
          }, Object.defineProperty(e.prototype, "maskSprite", {
            get: function get() {
              return this._maskSprite;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.initSlice = function (e) {
            t.prototype.initSlice.call(this, e);
            var i = e.states.getKey("hover");
            i && (i.properties.expandDistance = 0);
          }, Object.defineProperty(e.prototype, "startLocation", {
            get: function get() {
              return this.getPropertyValue("startLocation");
            },
            set: function set(t) {
              this.setPropertyValue("startLocation", t) && this.invalidateDataItems();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "endLocation", {
            get: function get() {
              return this.getPropertyValue("endLocation");
            },
            set: function set(t) {
              this.setPropertyValue("endLocation", t) && this.invalidateDataItems();
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(Lu);

        Fs.registeredClasses.PictorialStackedSeries = Ru, Fs.registeredClasses.PictorialStackedSeriesDataItem = Eu;

        var Bu = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "ConeColumn", e;
          }

          return n(e, t), e.prototype.createAssets = function () {
            this.coneColumn = this.createChild(gl), this.coneColumn.shouldClone = !1, this.column = this.coneColumn;
          }, e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), this.coneColumn && this.coneColumn.copyFrom(e.coneColumn);
          }, e;
        }(ru);

        Fs.registeredClasses.ConeColumn = Bu;

        var Nu = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "ConeSeriesDataItem", e.applyTheme(), e;
          }

          return n(e, t), e;
        }(su),
            Hu = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "ConeSeries", e.applyTheme(), e;
          }

          return n(e, t), e.prototype.createColumnTemplate = function () {
            return new Bu();
          }, e.prototype.getMaskPath = function () {
            var t = 0,
                e = 0,
                i = this.columns.getIndex(0);
            if (i) return this.baseAxis == this.xAxis ? e = i.coneColumn.bottom.radiusY + 1 : t = i.coneColumn.bottom.radiusY + 1, kr({
              x: -t,
              y: 0,
              width: this.xAxis.axisLength + t,
              height: this.yAxis.axisLength + e
            });
          }, e.prototype.validateDataElementReal = function (e) {
            if (t.prototype.validateDataElementReal.call(this, e), e.column) {
              var i = e.column.coneColumn;
              i.fill = e.column.fill, this.baseAxis == this.yAxis ? i.orientation = "horizontal" : i.orientation = "vertical";
            }
          }, e;
        }(ou);

        Fs.registeredClasses.ConeSeries = Hu, Fs.registeredClasses.ConeSeriesDataItem = Nu;

        var Wu = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "CurvedColumn", e;
          }

          return n(e, t), e.prototype.createAssets = function () {
            this.curvedColumn = this.createChild(ba), this.curvedColumn.shouldClone = !1, this.setPropertyValue("tension", .7), this.width = h(120), this.height = h(120), this.column = this.curvedColumn;
          }, e.prototype.draw = function () {
            t.prototype.draw.call(this);
            var e,
                i = this.realWidth,
                n = this.realHeight,
                r = this.realX - this.pixelX,
                s = this.realY - this.pixelY;
            this.width;
            var o = 1,
                a = 1;
            "vertical" == this.orientation ? (o = this.tension, e = [{
              x: 0,
              y: n + s
            }, {
              x: i / 2,
              y: s
            }, {
              x: i,
              y: n + s
            }]) : (a = this.tension, e = [{
              x: r,
              y: 0
            }, {
              x: r + i,
              y: n / 2
            }, {
              x: r,
              y: n
            }]);
            var l = xr(e[0]) + new sl(o, a).smooth(e);
            this.column.path = l;
          }, e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), this.curvedColumn && this.curvedColumn.copyFrom(e.curvedColumn);
          }, Object.defineProperty(e.prototype, "tension", {
            get: function get() {
              return this.getPropertyValue("tension");
            },
            set: function set(t) {
              this.setPropertyValue("tension", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "orientation", {
            get: function get() {
              return this.getPropertyValue("orientation");
            },
            set: function set(t) {
              this.setPropertyValue("orientation", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(ru);

        Fs.registeredClasses.CurvedColumn = Wu;

        var Xu = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "CurvedColumnSeriesDataItem", e.applyTheme(), e;
          }

          return n(e, t), e;
        }(su),
            Yu = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "CurvedColumnSeries", e.applyTheme(), e;
          }

          return n(e, t), e.prototype.createColumnTemplate = function () {
            return new Wu();
          }, e.prototype.validateDataElementReal = function (e) {
            t.prototype.validateDataElementReal.call(this, e);
            var i = e.column;
            (i = e.column) && (e.column.curvedColumn.fill = e.column.fill, this.baseAxis == this.yAxis ? i.orientation = "horizontal" : i.orientation = "vertical");
          }, e;
        }(ou);

        Fs.registeredClasses.CurvedColumnSeries = Yu, Fs.registeredClasses.CurvedColumnSeriesDataItem = Xu;

        var zu = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "DurationAxisDataItem", e.applyTheme(), e;
          }

          return n(e, t), e;
        }(th),
            Uu = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e._baseUnit = "second", e.className = "DurationAxis", e.setPropertyValue("maxZoomFactor", 1e6), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.formatLabel = function (t, e) {
            return this.durationFormatter.format(t, e || this.axisDurationFormat);
          }, e.prototype.adjustMinMax = function (e, i, n, r, s) {
            var a,
                l,
                h,
                u = this.baseUnit;

            if (this.setPropertyValue("maxPrecision", 0), "millisecond" == u || "second" == u || "minute" == u || "hour" == u) {
              r <= 1 && (r = 1), r = Math.round(r);
              var p = e,
                  c = i;
              0 === n && (n = Math.abs(i));
              var d,
                  f = [60, 30, 20, 15, 10, 2, 1],
                  g = 1;
              "hour" == u && (f = [24, 12, 6, 4, 2, 1]);

              try {
                for (var y = o(f), m = y.next(); !m.done; m = y.next()) {
                  var v = m.value;

                  if (n / v > r) {
                    g = v;
                    break;
                  }
                }
              } catch (t) {
                l = {
                  error: t
                };
              } finally {
                try {
                  m && !m.done && (h = y["return"]) && h.call(y);
                } finally {
                  if (l) throw l.error;
                }
              }

              var b = Math.ceil((i - e) / g / r),
                  x = Math.log(Math.abs(b)) * Math.LOG10E,
                  _ = Math.pow(10, Math.floor(x)) / 10;

              d = g * (b = Y(f, b / _) * _), this.durationFormatter.getValueUnit(d, this.baseUnit), e = Math.floor(e / d) * d, i = Math.ceil(i / d) * d, s && ((e -= d) < 0 && p >= 0 && (e = 0), (i += d) > 0 && c <= 0 && (i = 0)), a = {
                min: e,
                max: i,
                step: d
              };
            } else a = t.prototype.adjustMinMax.call(this, e, i, n, r, s);

            return this.axisDurationFormat = this.durationFormatter.getFormat(a.step, a.max, this.baseUnit), a;
          }, Object.defineProperty(e.prototype, "tooltipDurationFormat", {
            get: function get() {
              return this._tooltipDurationFormat;
            },
            set: function set(t) {
              this._tooltipDurationFormat = t;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.getTooltipText = function (t) {
            var e = j(this.positionToValue(t), this._stepDecimalPlaces),
                i = this.formatLabel(e, this.tooltipDurationFormat);
            return this._adapterO ? this._adapterO.apply("getTooltipText", i) : i;
          }, Object.defineProperty(e.prototype, "baseUnit", {
            get: function get() {
              return this._baseUnit;
            },
            set: function set(t) {
              this._baseUnit != t && (this._baseUnit = t, this.durationFormatter.baseUnit = t, this.invalidate());
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), this.baseUnit = e.baseUnit;
          }, e;
        }(eh);

        Fs.registeredClasses.DurationAxis = Uu, Fs.registeredClasses.DurationAxisDataItem = zu;

        var Gu = function (t) {
          function e() {
            var e = t.call(this) || this;
            e.className = "CircleBullet";
            var i = e.createChild(Ea);
            return i.shouldClone = !1, i.radius = 5, i.isMeasured = !1, e.circle = i, e.applyTheme(), e;
          }

          return n(e, t), e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), this.circle.copyFrom(e.circle);
          }, e;
        }(Vl);

        Fs.registeredClasses.CircleBullet = Gu;

        var Ku = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "ErrorBullet", e.errorLine = e.createChild(ba), e.errorLine.shouldClone = !1, e.width = 20, e.height = 20, e.strokeOpacity = 1, e.isDynamic = !0, e;
          }

          return n(e, t), e.prototype.validatePosition = function () {
            t.prototype.validatePosition.call(this);
            var e = this.pixelWidth / 2,
                i = this.pixelHeight / 2;
            this.errorLine.path = xr({
              x: -e,
              y: -i
            }) + _r({
              x: e,
              y: -i
            }) + xr({
              x: 0,
              y: -i
            }) + _r({
              x: 0,
              y: i
            }) + xr({
              x: -e,
              y: i
            }) + _r({
              x: e,
              y: i
            });
          }, e.prototype.copyFrom = function (e) {
            t.prototype.copyFrom.call(this, e), this.errorLine.copyFrom(e.errorLine);
          }, e;
        }(Vl);

        Fs.registeredClasses.ErrorBullet = Ku;

        var Zu = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "NavigationBarDataItem", e.applyTheme(), e;
          }

          return n(e, t), Object.defineProperty(e.prototype, "name", {
            get: function get() {
              return this.properties.name;
            },
            set: function set(t) {
              this.setProperty("name", t);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(Va),
            qu = function (t) {
          function e() {
            var e = t.call(this) || this;
            e.className = "NavigationBar";
            var i = new ta(),
                n = new Qa();
            n.valign = "middle", n.paddingTop = 8, n.paddingBottom = 8, e.paddingBottom = 2, e.links = new Hs(n), e._disposers.push(new Bs(e.links)), e._disposers.push(n), e._linksIterator = new Ss(e.links, function () {
              return e.links.create();
            }), e._linksIterator.createNewItems = !0;
            var r = new rl();
            r.direction = "right", r.width = 8, r.height = 12, r.fill = i.getFor("alternativeBackground"), r.fillOpacity = .5, r.valign = "middle", r.marginLeft = 10, r.marginRight = 10, e.separators = new Hs(r), e._disposers.push(new Bs(e.separators)), e._disposers.push(r);
            var s = new Qa();
            return e.activeLink = s, s.copyFrom(n), s.valign = "middle", s.fontWeight = "bold", e.width = h(100), e.layout = "grid", e.dataFields.name = "name", e.applyTheme(), e;
          }

          return n(e, t), e.prototype.validateDataElements = function () {
            this.removeChildren(), this._linksIterator.reset(), t.prototype.validateDataElements.call(this);
          }, e.prototype.validateDataElement = function (e) {
            var i;

            if (t.prototype.validateDataElement.call(this, e), e.index < this.dataItems.length - 1) {
              (i = this._linksIterator.getLast()).parent = this;
              var n = this.separators.create();
              n.parent = this, n.valign = "middle";
            } else (i = this.activeLink).events.copyFrom(this.links.template.events), i.hide(0), i.show(), i.parent = this;

            i.dataItem = e, i.text = e.name, i.validate();
          }, e;
        }(Fa);

        Fs.registeredClasses.NavigationBar = qu, Fs.registeredClasses.NavigationBarDataItem = Zu;

        var $u = function (t) {
          function e() {
            var e = t.call(this) || this;
            e.point = {
              x: 0,
              y: 0
            }, e._stick = "none", e.className = "Cursor", e.width = h(100), e.height = h(100), e.shouldClone = !1, e.hide(0), e.trackable = !0, e.clickable = !0, e.isMeasured = !1;
            var i = pr();
            return e._disposers.push(i.body.events.on("down", e.handleCursorDown, e)), e._disposers.push(i.body.events.on("up", e.handleCursorUp, e)), e._disposers.push(i.body.events.on("track", e.handleCursorMove, e)), e.applyTheme(), e;
          }

          return n(e, t), e.prototype.handleCursorMove = function (t) {
            if (!(!this.interactionsEnabled || this.interactions.isTouchProtected && t.touch)) {
              if (("zoom" == this._generalBehavior || "pan" == this._generalBehavior) && this.downPoint || pr().isLocalElement(t.pointer, this.paper.svg, this.uid)) {
                var e = Ki(t.pointer.point, this);
                return "hard" == this._stick && this._stickPoint && (e = this._stickPoint), "soft" == this._stick && this._stickPoint && (this.fitsToBounds(e) || (e = this._stickPoint)), this.triggerMove(e), e;
              }

              this.isHidden && this.isHiding || this.hide();
            }
          }, e.prototype.hideReal = function (e) {
            if ("hard" != this._stick && "soft" != this._stick || !this._stickPoint) return t.prototype.hideReal.call(this, e);
          }, e.prototype.triggerMove = function (t, e) {
            t.x = j(t.x, 1), t.y = j(t.y, 1), e && (this._stick = e), "hard" != e && "soft" != e || (this._stickPoint = t), this.triggerMoveReal(t);
          }, e.prototype.triggerMoveReal = function (t) {
            this.point.x == t.x && this.point.y == t.y || (this.point = t, this.invalidatePosition(), this.fitsToBounds(t) ? this.show(0) : this.downPoint || this.hide(0), this.visible && (this.getPositions(), this.dispatch("cursorpositionchanged")));
          }, e.prototype.triggerDown = function (t) {
            this.triggerDownReal(t);
          }, e.prototype.triggerDownReal = function (t) {
            switch (this._generalBehavior) {
              case "zoom":
                this.dispatchImmediately("zoomstarted");
                break;

              case "select":
                this.dispatchImmediately("selectstarted");
                break;

              case "pan":
                this.dispatchImmediately("panstarted"), pr().setGlobalStyle(sa.grabbing);
            }
          }, e.prototype.triggerUp = function (t) {
            this.triggerUpReal(t);
          }, e.prototype.triggerUpReal = function (t) {
            Ls.requestFrame(), this.updatePoint(this.upPoint);
            var e = pr();

            if (K(this._upPointOrig, this._downPointOrig) > e.getHitOption(this.interactions, "hitTolerance")) {
              switch (this._generalBehavior) {
                case "zoom":
                  this.dispatch("zoomended");
                  break;

                case "select":
                  this.dispatch("selectended");
                  break;

                case "pan":
                  this.dispatch("panended"), e.setGlobalStyle(sa["default"]);
              }

              this.downPoint = void 0, this.updateSelection();
            } else "select" == this._generalBehavior && this.dispatchImmediately("selectended"), this.dispatchImmediately("behaviorcanceled"), e.setGlobalStyle(sa["default"]), this.downPoint = void 0;
          }, e.prototype.updateSelection = function () {}, e.prototype.getPositions = function () {
            this.xPosition = this.point.x / this.innerWidth, this.yPosition = 1 - this.point.y / this.innerHeight;
          }, e.prototype.handleCursorDown = function (t) {
            if (!(!this.interactionsEnabled || this.interactions.isTouchProtected && t.touch) && pr().isLocalElement(t.pointer, this.paper.svg, this.uid)) {
              var e = Ki(t.pointer.point, this);
              this._downPointOrig = {
                x: e.x,
                y: e.y
              }, t.event.cancelable && this.shouldPreventGestures(t.touch) && this.fitsToBounds(e) && t.event.preventDefault(), this.triggerMove(e), this.triggerDown(e);
            }
          }, e.prototype.shouldPreventGestures = function (t) {
            return !0;
          }, e.prototype.updatePoint = function (t) {}, e.prototype.handleCursorUp = function (t) {
            if (this.interactionsEnabled && (("zoom" == this._generalBehavior || "pan" == this._generalBehavior) && this.downPoint || pr().isLocalElement(t.pointer, this.paper.svg, this.uid))) {
              var e = Ki(t.pointer.point, this);
              this._upPointOrig = {
                x: e.x,
                y: e.y
              }, this.triggerMove(e), this.triggerUp(e);
            }
          }, Object.defineProperty(e.prototype, "chart", {
            get: function get() {
              return this._chart;
            },
            set: function set(t) {
              this._chart = t, S(this._chart.plotContainer) && pr().lockElement(this._chart.plotContainer.interactions);
            },
            enumerable: !0,
            configurable: !0
          }), e;
        }(_a);

        Fs.registeredClasses.Cursor = $u;

        var Ju = function (t) {
          function e() {
            var e = t.call(this) || this;
            e._lineX = new ys(), e._lineY = new ys(), e._xAxis = new ys(), e._yAxis = new ys(), e.className = "XYCursor", e.behavior = "zoomX", e.maxPanOut = .1;
            var i = new ta(),
                n = e.createChild(ba);
            n.shouldClone = !1, n.fillOpacity = .2, n.fill = i.getFor("alternativeBackground"), n.isMeasured = !1, n.visible = !1, n.interactionsEnabled = !1, e.selection = n, e._disposers.push(e.selection);
            var r = e.createChild(ba);
            r.shouldClone = !1, r.stroke = i.getFor("grid"), r.fill = Je(), r.strokeDasharray = "3,3", r.isMeasured = !1, r.strokeOpacity = .4, r.interactionsEnabled = !1, r.y = 0, e.lineX = r, e._disposers.push(e.lineX);
            var s = e.createChild(ba);
            return s.shouldClone = !1, s.stroke = i.getFor("grid"), s.fill = Je(), s.strokeDasharray = "3,3", s.isMeasured = !1, s.strokeOpacity = .4, s.interactionsEnabled = !1, s.x = 0, e.lineY = s, e._disposers.push(e.lineY), e.events.on("sizechanged", e.updateSize, e, !1), e._disposers.push(e._lineX), e._disposers.push(e._lineY), e._disposers.push(e._xAxis), e._disposers.push(e._yAxis), e.mask = e, e.hideSeriesTooltipsOnSelection = !0, e.applyTheme(), e;
          }

          return n(e, t), e.prototype.updateSize = function () {
            this.lineX && (this.lineX.path = xr({
              x: 0,
              y: 0
            }) + _r({
              x: 0,
              y: this.innerHeight
            })), this.lineY && (this.lineY.path = xr({
              x: 0,
              y: 0
            }) + _r({
              x: this.innerWidth,
              y: 0
            }));
          }, e.prototype.updateSelection = function () {
            if (this._usesSelection) {
              var t = this.downPoint,
                  e = this.behavior;

              if (t) {
                var i = this.point;
                this.lineX && (i.x = this.lineX.pixelX), this.lineY && (i.y = this.lineY.pixelY);
                var n = this.selection,
                    r = Math.min(i.x, t.x),
                    s = Math.min(i.y, t.y),
                    o = j(Math.abs(t.x - i.x), this._positionPrecision),
                    a = j(Math.abs(t.y - i.y), this._positionPrecision);

                switch (e) {
                  case "zoomX":
                    s = 0, a = this.pixelHeight;
                    break;

                  case "zoomY":
                    r = 0, o = this.pixelWidth;
                    break;

                  case "selectX":
                    s = 0, a = this.pixelHeight;
                    break;

                  case "selectY":
                    r = 0, o = this.pixelWidth;
                }

                n.x = r, n.y = s, n.path = Dr(o, a), n.validatePosition();
              } else "select" != this._generalBehavior && this.selection.hide();
            }
          }, e.prototype.fixPoint = function (t) {
            return t.x = Math.max(0, t.x), t.y = Math.max(0, t.y), t.x = Math.min(this.pixelWidth, t.x), t.y = Math.min(this.pixelHeight, t.y), t;
          }, e.prototype.triggerMoveReal = function (e) {
            t.prototype.triggerMoveReal.call(this, e), this.snapToSeries && !this.snapToSeries.isHidden || this.updateLinePositions(e), this.downPoint && K(this.downPoint, e) > 3 && "pan" == this._generalBehavior && (this.getPanningRanges(), this.dispatch("panning"));
          }, e.prototype.updateLinePositions = function (t) {
            t = this.fixPoint(this.point), this.lineX && this.lineX.visible && !this.xAxis && (this.lineX.x = t.x), this.lineY && this.lineY.visible && !this.yAxis && (this.lineY.y = t.y), this.updateSelection();
          }, e.prototype.triggerDownReal = function (e) {
            if (this.visible && !this.isHiding) {
              if ("select" == this._generalBehavior && (this.selection.parent = this.parent), this.fitsToBounds(e)) {
                this.downPoint = {
                  x: e.x,
                  y: e.y
                }, this.updatePoint(e), this.point.x = this.downPoint.x, this.point.y = this.downPoint.y;
                var i = this.selection,
                    n = this.downPoint.x,
                    r = this.downPoint.y;
                this._usesSelection && (i.x = n, i.y = r, i.path = "", i.show()), t.prototype.triggerDownReal.call(this, e);
              } else this.downPoint = void 0;
            } else this.downPoint = void 0;
          }, e.prototype.updatePoint = function (t) {
            this.lineX && (t.x = this.lineX.pixelX), this.lineY && (t.y = this.lineY.pixelY);
          }, e.prototype.triggerUpReal = function (e) {
            K(this._upPointOrig, this._downPointOrig) > pr().getHitOption(this.interactions, "hitTolerance") ? this.downPoint && (this.upPoint = e, this.updatePoint(this.upPoint), "pan" != this._generalBehavior && this.getRanges(), "select" != this._generalBehavior && this.selection.hide(), t.prototype.triggerUpReal.call(this, e)) : ("select" != this._generalBehavior && this.selection.hide(0), "pan" == this._generalBehavior && pr().setGlobalStyle(sa["default"])), this.downPoint = void 0, this.dispatch("cursorpositionchanged");
          }, e.prototype.getPanningRanges = function () {
            var t = j(this.downPoint.x / this.innerWidth, 5),
                e = j(this.downPoint.y / this.innerHeight, 5),
                i = t - j(this.point.x / this.innerWidth, 5),
                n = -e + j(this.point.y / this.innerHeight, 5);
            this.xRange = {
              start: i,
              end: 1 + i
            }, this.yRange = {
              start: n,
              end: 1 + n
            }, "panX" == this.behavior && (this.yRange.start = 0, this.yRange.end = 1), "panY" == this.behavior && (this.xRange.start = 0, this.xRange.end = 1);
          }, e.prototype.getRanges = function () {
            this.lineX && (this.upPoint.x = this.lineX.pixelX), this.lineY && (this.upPoint.y = this.lineY.pixelY), this.selection;
            var t = j(this.downPoint.x / this.innerWidth, 5),
                e = j(this.upPoint.x / this.innerWidth, 5),
                i = j(this.downPoint.y / this.innerHeight, 5),
                n = j(this.upPoint.y / this.innerHeight, 5);
            this.xRange = {
              start: X(t, e),
              end: W(t, e)
            }, this.yRange = {
              start: X(i, n),
              end: W(i, n)
            };
          }, Object.defineProperty(e.prototype, "behavior", {
            get: function get() {
              return this.getPropertyValue("behavior");
            },
            set: function set(t) {
              this.setPropertyValue("behavior", t, !0), this._usesSelection = !1, -1 != t.indexOf("zoom") && (this._generalBehavior = "zoom", this._usesSelection = !0), -1 != t.indexOf("select") && (this._generalBehavior = "select", this._usesSelection = !0), -1 != t.indexOf("pan") && (this._generalBehavior = "pan", this._usesSelection = !1);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.shouldPreventGestures = function (t) {
            return !(this.interactions.isTouchProtected && t || "none" == this.behavior);
          }, Object.defineProperty(e.prototype, "fullWidthLineX", {
            get: function get() {
              return this.getPropertyValue("fullWidthLineX");
            },
            set: function set(t) {
              this.setPropertyValue("fullWidthLineX", t), t || this.updateSize();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "fullWidthLineY", {
            get: function get() {
              return this.getPropertyValue("fullWidthLineY");
            },
            set: function set(t) {
              this.setPropertyValue("fullWidthLineY", t), t || this.updateSize();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "hideSeriesTooltipsOnSelection", {
            get: function get() {
              return this.getPropertyValue("hideSeriesTooltipsOnSelection");
            },
            set: function set(t) {
              this.setPropertyValue("hideSeriesTooltipsOnSelection", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "maxPanOut", {
            get: function get() {
              return this.getPropertyValue("maxPanOut");
            },
            set: function set(t) {
              this.setPropertyValue("maxPanOut", t);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "xAxis", {
            get: function get() {
              return this._xAxis.get();
            },
            set: function set(t) {
              this._xAxis.get() != t && this._xAxis.set(t, new gs([t.tooltip.events.on("positionchanged", this.handleXTooltipPosition, this, !1)]));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "yAxis", {
            get: function get() {
              return this._yAxis.get();
            },
            set: function set(t) {
              this._yAxis.get() != t && this._yAxis.set(t, new gs([t.tooltip.events.on("positionchanged", this.handleYTooltipPosition, this, !1)]));
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.handleXTooltipPosition = function (t) {
            var e = this.xAxis.tooltip,
                i = Hi({
              x: e.pixelX,
              y: e.pixelY
            }, this),
                n = i.x;

            if (i.y = 1, this.lineX && (this.lineX.x = n, this.fitsToBounds(i) || this.hide()), this.xAxis && this.fullWidthLineX) {
              var r = this.xAxis.currentItemStartPoint,
                  s = this.xAxis.currentItemEndPoint;

              if (r && s) {
                this.lineX.x = n;
                var o = s.x - r.x;
                this.lineX.path = Dr(o, this.innerHeight, -o / 2);
              }
            }
          }, e.prototype.handleYTooltipPosition = function (t) {
            var e = this.yAxis.tooltip,
                i = Hi({
              x: e.pixelX,
              y: e.pixelY
            }, this),
                n = i.y;

            if (i.x = 1, this.lineY && (this.lineY.y = n, this.fitsToBounds(i) || this.hide()), this.yAxis && this.fullWidthLineY) {
              var r = this.yAxis.currentItemStartPoint,
                  s = this.yAxis.currentItemEndPoint;

              if (r && s) {
                this.lineY.y = n;
                var o = s.y - r.y;
                this.lineY.path = Dr(this.innerWidth, o, 0, -o / 2);
              }
            }
          }, Object.defineProperty(e.prototype, "lineX", {
            get: function get() {
              return this._lineX.get();
            },
            set: function set(t) {
              t ? (t.setElement(this.paper.add("path")), this._lineX.set(t, t.events.on("positionchanged", this.updateSelection, this, !1)), t.interactionsEnabled = !1, t.parent = this) : this._lineX.reset();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "lineY", {
            get: function get() {
              return this._lineY.get();
            },
            set: function set(t) {
              t ? (t.setElement(this.paper.add("path")), this._lineY.set(t, t.events.on("positionchanged", this.updateSelection, this, !1)), t.parent = this, t.interactionsEnabled = !1) : this._lineY.reset();
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "selection", {
            get: function get() {
              return this._selection;
            },
            set: function set(t) {
              this._selection = t, t && (t.element = this.paper.add("path"), t.parent = this);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.processConfig = function (e) {
            e && (S(e.xAxis) && T(e.xAxis) && (this.map.hasKey(e.xAxis) ? e.xAxis = this.map.getKey(e.xAxis) : (this.processingErrors.push('[XYCursor] No axis with id "' + e.xAxis + '" found for `xAxis`'), delete e.xAxis)), S(e.yAxis) && T(e.yAxis) && (this.map.hasKey(e.yAxis) ? e.yAxis = this.map.getKey(e.yAxis) : (this.processingErrors.push('[XYCursor] No axis with id "' + e.yAxis + '" found for `yAxis`'), delete e.yAxis)), S(e.snapToSeries) && T(e.snapToSeries) && (this.map.hasKey(e.snapToSeries) ? e.snapToSeries = this.map.getKey(e.snapToSeries) : (this.processingErrors.push('[XYCursor] No series with id "' + e.snapToSeries + '" found for `series`'), delete e.snapToSeries))), t.prototype.processConfig.call(this, e);
          }, Object.defineProperty(e.prototype, "snapToSeries", {
            get: function get() {
              return this.getPropertyValue("snapToSeries");
            },
            set: function set(t) {
              this.setPropertyValue("snapToSeries", t) && (this._snapToDisposer && this._snapToDisposer.dispose(), t && (this._snapToDisposer = t.events.on("tooltipshownat", this.handleSnap, this, !1)));
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.handleSnap = function () {
            var t = this.snapToSeries,
                e = t.tooltipY,
                i = t.tooltipX;
            this.xAxis && this.xAxis.renderer.opposite && (e -= this.pixelHeight), this.point = {
              x: i,
              y: e
            }, this.getPositions();
            var n = i,
                r = e;
            i -= this.pixelWidth, this.yAxis && this.yAxis.renderer.opposite && (i += this.pixelWidth);
            var s = t.tooltip,
                o = s.animationDuration,
                a = s.animationEasing;
            t.baseAxis == t.xAxis && t.yAxis.showTooltipAtPosition(this.yPosition), t.baseAxis == t.yAxis && t.xAxis.showTooltipAtPosition(this.xPosition), this.lineX.animate([{
              property: "y",
              to: e
            }], o, a), this.lineY.animate([{
              property: "x",
              to: i
            }], o, a), this.xAxis || this.lineX.animate([{
              property: "x",
              to: n
            }], o, a), this.yAxis || this.lineY.animate([{
              property: "y",
              to: r
            }], o, a);
          }, e.prototype.dispose = function () {
            this.hide(0), t.prototype.dispose.call(this);
          }, e;
        }($u);

        Fs.registeredClasses.XYCursor = Ju;

        var Qu = function (t) {
          function e() {
            var e = t.call(this) || this;
            return e.className = "RadarCursor", e.radius = h(100), e.innerRadius = h(0), e.applyTheme(), e.mask = void 0, e;
          }

          return n(e, t), e.prototype.fitsToBounds = function (t) {
            var e = K(t);
            return e < this.truePixelRadius + 1 && e > this.pixelInnerRadius - 1;
          }, Object.defineProperty(e.prototype, "startAngle", {
            get: function get() {
              return this.getPropertyValue("startAngle");
            },
            set: function set(t) {
              this.setPropertyValue("startAngle", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "endAngle", {
            get: function get() {
              return this.getPropertyValue("endAngle");
            },
            set: function set(t) {
              this.setPropertyValue("endAngle", t, !0);
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.triggerMoveReal = function (e) {
            this.xAxis && (!this.xAxis || this.xAxis.cursorTooltipEnabled && !this.xAxis.tooltip.disabled) || this.updateLineX(this.point), this.yAxis && (!this.yAxis || this.yAxis.cursorTooltipEnabled && !this.yAxis.tooltip.disabled) || this.updateLineY(this.point), this.updateSelection(), t.prototype.triggerMoveReal.call(this, e);
          }, e.prototype.updateLineX = function (t) {
            var e = this.pixelRadius,
                i = this.startAngle,
                n = this.endAngle,
                r = this.pixelInnerRadius;

            if (e > 0 && A(i) && A(n) && A(r)) {
              var s = ht(Q(t), i, n),
                  o = void 0;

              if (this.lineX && this.lineX.visible) {
                if (this.lineX.moveTo({
                  x: 0,
                  y: 0
                }), this.xAxis && this.fullWidthLineX) {
                  var a = this.xAxis.currentItemStartPoint,
                      l = this.xAxis.currentItemEndPoint;

                  if (a && l) {
                    var h = ht(Q(a), i, n),
                        u = ht(Q(l), i, n) - h;
                    i < n ? u < 0 && (u += 360) : u > 0 && (u -= 360), o = xr({
                      x: r * H(s -= u / 2),
                      y: r * B(s)
                    }) + _r({
                      x: e * H(s),
                      y: e * B(s)
                    }) + Or(s, u, e) + _r({
                      x: r * H(s + u),
                      y: r * B(s + u)
                    }) + Or(s + u, -u, r);
                  }
                }

                o || (o = xr({
                  x: r * H(s),
                  y: r * B(s)
                }) + _r({
                  x: e * H(s),
                  y: e * B(s)
                })), this.lineX.path = o;
              }
            }
          }, e.prototype.updateLineY = function (t) {
            if (this.lineY && this.lineY.visible) {
              var e = this.startAngle,
                  i = this.endAngle,
                  n = this.truePixelRadius,
                  r = R(K(t), 0, this.truePixelRadius);

              if (A(r) && A(e)) {
                this.lineY.moveTo({
                  x: 0,
                  y: 0
                });
                var s = void 0,
                    o = i - e;

                if (this.yAxis && this.fullWidthLineY) {
                  var a = this.yAxis.currentItemStartPoint,
                      l = this.yAxis.currentItemEndPoint;

                  if (a && l) {
                    var h = R(K(a), 0, n);
                    s = xr({
                      x: (r = R(K(l), 0, n)) * H(e),
                      y: r * B(e)
                    }) + Or(e, o, r), s += xr({
                      x: h * H(i),
                      y: h * B(i)
                    }) + Or(i, -o, h);
                  }
                }

                s || (s = xr({
                  x: r * H(e),
                  y: r * B(e)
                }) + Or(e, i - e, r)), this.lineY.path = s;
              }
            }
          }, e.prototype.updateSelection = function () {
            if (this._usesSelection) {
              var t = this.downPoint;

              if (t) {
                var e = this.point,
                    i = this.pixelRadius,
                    n = this.truePixelRadius,
                    r = this.pixelInnerRadius,
                    s = Math.min(this.startAngle, this.endAngle),
                    o = Math.max(this.startAngle, this.endAngle),
                    a = ht(Q(t), s, o),
                    l = ht(Q(e), s, o),
                    h = K(t);

                if (h < n) {
                  var u = R(K(e), 0, n);
                  this._prevAngle = l;
                  var p = xr({
                    x: 0,
                    y: 0
                  }),
                      c = B(a),
                      d = H(a),
                      f = B(l),
                      g = H(l),
                      y = this.behavior;
                  "zoomX" == y || "selectX" == y ? p += _r({
                    x: i * d,
                    y: i * c
                  }) + Or(a, l - a, i) + _r({
                    x: r * g,
                    y: r * f
                  }) + Or(l, a - l, r) : "zoomY" == y || "selectY" == y ? p = xr({
                    x: u * H(s),
                    y: u * B(s)
                  }) + Or(s, o - s, u) + _r({
                    x: h * H(o),
                    y: h * B(o)
                  }) + Or(o, s - o, h) + " Z" : "zoomXY" == y && (p = xr({
                    x: u * H(a),
                    y: u * B(a)
                  }) + Or(a, l - a, u) + _r({
                    x: h * H(l),
                    y: h * B(l)
                  }) + Or(l, a - l, h) + " Z"), this.selection.path = p;
                }

                this.selection.moveTo({
                  x: 0,
                  y: 0
                });
              }
            }
          }, e.prototype.getPositions = function () {
            if (this.chart) {
              var t = this.pixelInnerRadius,
                  e = this.truePixelRadius - t,
                  i = this.startAngle,
                  n = this.endAngle,
                  r = (ht(Q(this.point), i, n) - i) / (n - i);
              this.xPosition = r, this.yPosition = R((K(this.point) - t) / e, 0, 1);
            }
          }, e.prototype.updatePoint = function (t) {}, e.prototype.handleXTooltipPosition = function (t) {
            if (this.xAxis.cursorTooltipEnabled) {
              var e = this.xAxis.tooltip;
              this.updateLineX(Hi({
                x: e.pixelX,
                y: e.pixelY
              }, this));
            }
          }, e.prototype.handleYTooltipPosition = function (t) {
            if (this.yAxis.cursorTooltipEnabled) {
              var e = this.yAxis.tooltip;
              this.updateLineY(Hi({
                x: e.pixelX,
                y: e.pixelY
              }, this));
            }
          }, e.prototype.updateLinePositions = function (t) {}, e.prototype.getRanges = function () {
            var t = this.downPoint;

            if (t) {
              var e = this.upPoint;

              if (this.chart) {
                var i = this.pixelRadius,
                    n = this.startAngle,
                    r = this.endAngle,
                    s = ht(Q(t), this.startAngle, this.endAngle),
                    o = ht(Q(e), this.startAngle, this.endAngle),
                    a = R(K(t), 0, i),
                    l = R(K(e), 0, i),
                    h = 0,
                    u = 1,
                    p = 0,
                    c = 1,
                    d = this.behavior;

                if ("zoomX" == d || "selectX" == d || "zoomXY" == d || "selectXY" == d) {
                  var f = r - n;
                  h = j((s - n) / f, 5), u = j((o - n) / f, 5);
                }

                "zoomY" != d && "selectY" != d && "zoomXY" != d && "selectXY" != d || (p = j(a / i, 5), c = j(l / i, 5)), this.xRange = {
                  start: Math.min(h, u),
                  end: Math.max(h, u)
                }, this.yRange = {
                  start: Math.min(p, c),
                  end: Math.max(p, c)
                }, "selectX" == this.behavior || "selectY" == this.behavior || "selectXY" == this.behavior || this.selection.hide();
              }
            }
          }, e.prototype.updateSize = function () {}, Object.defineProperty(e.prototype, "radius", {
            get: function get() {
              return this.getPropertyValue("radius");
            },
            set: function set(t) {
              this.setPercentProperty("radius", t, !1, !1, 10, !1);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "pixelRadius", {
            get: function get() {
              return ui(this.radius, this.truePixelRadius);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "truePixelRadius", {
            get: function get() {
              return hi(h(100), X(this.innerWidth / 2, this.innerHeight / 2));
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "innerRadius", {
            get: function get() {
              return this.getPropertyValue("innerRadius");
            },
            set: function set(t) {
              this.setPercentProperty("innerRadius", t, !1, !1, 10, !1);
            },
            enumerable: !0,
            configurable: !0
          }), Object.defineProperty(e.prototype, "pixelInnerRadius", {
            get: function get() {
              var t = this.innerRadius;
              return t instanceof hs && (t = h(100 * t.value * this.chart.innerRadiusModifyer)), ui(t, this.truePixelRadius) || 0;
            },
            enumerable: !0,
            configurable: !0
          }), e.prototype.fixPoint = function (t) {
            return t;
          }, e;
        }(Ju);

        Fs.registeredClasses.RadarCursor = Qu;

        var tp = function tp(t) {
          Ur(t, "SpriteState") && (t.transitionDuration = 400), Ur(t, "Component") && (t.rangeChangeDuration = 700, t.interpolationDuration = 700, t.sequencedInterpolation = !1, Ur(t, "SankeyDiagram") && (t.sequencedInterpolation = !0), Ur(t, "FunnelSeries") && (t.sequencedInterpolation = !0)), Ur(t, "Chart") && (t.defaultState.transitionDuration = 2e3, t.hiddenState.transitionDuration = 1e3), Ur(t, "Tooltip") && (t.animationDuration = 400, t.defaultState.transitionDuration = 400, t.hiddenState.transitionDuration = 400), Ur(t, "Scrollbar") && (t.animationDuration = 700), Ur(t, "Series") && (t.defaultState.transitionDuration = 1e3, t.hiddenState.transitionDuration = 700, t.hiddenState.properties.opacity = 1, t.showOnInit = !0), Ur(t, "MapSeries") && (t.hiddenState.properties.opacity = 0), Ur(t, "PercentSeries") && (t.hiddenState.properties.opacity = 0), Ur(t, "FunnelSlice") && (t.defaultState.transitionDuration = 800, t.hiddenState.transitionDuration = 1e3, t.hiddenState.properties.opacity = 1), Ur(t, "Slice") && (t.defaultState.transitionDuration = 700, t.hiddenState.transitionDuration = 1e3, t.hiddenState.properties.opacity = 1), Ur(t, "Preloader") && (t.hiddenState.transitionDuration = 2e3), Ur(t, "Column") && (t.defaultState.transitionDuration = 700, t.hiddenState.transitionDuration = 1e3, t.hiddenState.properties.opacity = 1), Ur(t, "Column3D") && (t.hiddenState.properties.opacity = 0);
        };

        i.d(e, "am4core", function () {
          return ss;
        }), i.d(e, "am4charts", function () {
          return os;
        }), i.d(e, "am4themes_animated", function () {
          return tp;
        }), Ms.commercialLicense = !0;
      }]);
    }.call(null, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  }
}]);
//# sourceMappingURL=95-es5.js.map