text: (function (q, f) {
      "object" === typeof exports ? f(exports) : "function" === typeof define && define.amd ? define(["exports"], f) : f(q)
  })(this, function (q) {
      function f(a) {
          this._targetElement = a;
          this._options = {
              nextLabel: "Next &rarr;",
              prevLabel: "&larr; Back",
              skipLabel: "Skip",
              doneLabel: "Done",
              tooltipPosition: "bottom",
              tooltipClass: "",
              exitOnEsc: !0,
              exitOnOverlayClick: !0,
              showStepNumbers: !0,
              keyboardNavigation: !0,
              showButtons: !0,
              showBullets: !0,
              scrollToElement: !0
          }
      }
  
      function s(a) {
          if (null == a || "object" != typeof a || "undefined" != typeof a.nodeType)return a;
          var b = {}, c;
          for (c in a)b[c] = s(a[c]);
          return b
      }
  
      function t() {
          this._direction = "forward";
          "undefined" === typeof this._currentStep ? this._currentStep = 0 : ++this._currentStep;
          if (this._introItems.length <= this._currentStep)"function" === typeof this._introCompleteCallback && this._introCompleteCallback.call(this), u.call(this, this._targetElement); else {
              var a = this._introItems[this._currentStep];
              "undefined" !== typeof this._introBeforeChangeCallback && this._introBeforeChangeCallback.call(this, a.element);
              A.call(this, a)
          }
      }
  
      function y() {
          this._direction =
              "backward";
          if (0 === this._currentStep)return !1;
          var a = this._introItems[--this._currentStep];
          "undefined" !== typeof this._introBeforeChangeCallback && this._introBeforeChangeCallback.call(this, a.element);
          A.call(this, a)
      }
  
      function u(a) {
          var b = a.querySelector(".introjs-overlay");
          if (null != b) {
              b.style.opacity = 0;
              setTimeout(function () {
                  b.parentNode && b.parentNode.removeChild(b)
              }, 500);
              (a = a.querySelector(".introjs-helperLayer")) && a.parentNode.removeChild(a);
              (a = document.querySelector(".introjsFloatingElement")) && a.parentNode.removeChild(a);
              if (a = document.querySelector(".introjs-showElement"))a.className = a.className.replace(/introjs-[a-zA-Z]+/g, "").replace(/^\s+|\s+$/g, "");
              if ((a = document.querySelectorAll(".introjs-fixParent")) && 0 < a.length)for (var c = a.length - 1; 0 <= c; c--)a[c].className = a[c].className.replace(/introjs-fixParent/g, "").replace(/^\s+|\s+$/g, "");
              window.removeEventListener ? window.removeEventListener("keydown", this._onKeyDown, !0) : document.detachEvent && document.detachEvent("onkeydown", this._onKeyDown);
              this._currentStep = void 0
          }
      }
  
      function B(a, b, c, d) {
          b.style.top = null;
          b.style.right = null;
          b.style.bottom = null;
          b.style.left = null;
          b.style.marginLeft = null;
          b.style.marginTop = null;
          c.style.display = "inherit";
          "undefined" != typeof d && null != d && (d.style.top = null, d.style.left = null);
          if (this._introItems[this._currentStep]) {
              var e = "", e = this._introItems[this._currentStep], e = "string" === typeof e.tooltipClass ? e.tooltipClass : this._options.tooltipClass;
              b.className = ("introjs-tooltip " + e).replace(/^\s+|\s+$/g, "");
              switch (this._introItems[this._currentStep].position) {
                  case "top":
                      b.style.left =
                          "15px";
                      b.style.top = "-" + (p(b).height + 10) + "px";
                      c.className = "introjs-arrow bottom";
                      break;
                  case "right":
                      b.style.left = p(a).width + 20 + "px";
                      c.className = "introjs-arrow left";
                      break;
                  case "left":
                      !0 == this._options.showStepNumbers && (b.style.top = "15px");
                      b.style.right = p(a).width + 20 + "px";
                      c.className = "introjs-arrow right";
                      break;
                  case "floating":
                      c.style.display = "none";
                      a = p(b);
                      b.style.left = "50%";
                      b.style.top = "50%";
                      b.style.marginLeft = "-" + a.width / 2 + "px";
                      b.style.marginTop = "-" + a.height / 2 + "px";
                      "undefined" != typeof d && null != d &&
                      (d.style.left = "-" + (a.width / 2 + 18) + "px", d.style.top = "-" + (a.height / 2 + 18) + "px");
                      break;
                  default:
                      b.style.bottom = "-" + (p(b).height + 10) + "px", c.className = "introjs-arrow top"
              }
          }
      }
  
      function w(a) {
          if (a && this._introItems[this._currentStep]) {
              var b = this._introItems[this._currentStep], c = p(b.element), d = 10;
              "floating" == b.position && (d = 0);
              a.setAttribute("style", "width: " + (c.width + d) + "px; height:" + (c.height + d) + "px; top:" + (c.top - 5) + "px;left: " + (c.left - 5) + "px;")
          }
      }
  
      function A(a) {
          var b;
          "undefined" !== typeof this._introChangeCallback &&
          this._introChangeCallback.call(this, a.element);
          var c = this, d = document.querySelector(".introjs-helperLayer");
          p(a.element);
          if (null != d) {
              var e = d.querySelector(".introjs-helperNumberLayer"), C = d.querySelector(".introjs-tooltiptext"), g = d.querySelector(".introjs-arrow"), n = d.querySelector(".introjs-tooltip"), j = d.querySelector(".introjs-skipbutton"), m = d.querySelector(".introjs-prevbutton"), k = d.querySelector(".introjs-nextbutton");
              n.style.opacity = 0;
              if (null != e && (b = this._introItems[0 <= a.step - 2 ? a.step - 2 : 0], null !=
                  b && "forward" == this._direction && "floating" == b.position || "backward" == this._direction && "floating" == a.position))e.style.opacity = 0;
              w.call(c, d);
              var l = document.querySelectorAll(".introjs-fixParent");
              if (l && 0 < l.length)for (b = l.length - 1; 0 <= b; b--)l[b].className = l[b].className.replace(/introjs-fixParent/g, "").replace(/^\s+|\s+$/g, "");
              b = document.querySelector(".introjs-showElement");
              b.className = b.className.replace(/introjs-[a-zA-Z]+/g, "").replace(/^\s+|\s+$/g, "");
              c._lastShowElementTimer && clearTimeout(c._lastShowElementTimer);
              c._lastShowElementTimer = setTimeout(function () {
                  null != e && (e.innerHTML = a.step);
                  C.innerHTML = a.intro;
                  B.call(c, a.element, n, g, e);
                  d.querySelector(".introjs-bullets li > a.active").className = "";
                  d.querySelector('.introjs-bullets li > a[data-stepnumber="' + a.step + '"]').className = "active";
                  n.style.opacity = 1;
                  e.style.opacity = 1
              }, 350)
          } else {
              var j = document.createElement("div"), l = document.createElement("div"), h = document.createElement("div"), m = document.createElement("div"), k = document.createElement("div"), f = document.createElement("div");
              j.className = "introjs-helperLayer";
              w.call(c, j);
              this._targetElement.appendChild(j);
              l.className = "introjs-arrow";
              m.className = "introjs-tooltiptext";
              m.innerHTML = a.intro;
              k.className = "introjs-bullets";
              !1 === this._options.showBullets && (k.style.display = "none");
              var q = document.createElement("ul");
              b = 0;
              for (var v = this._introItems.length; b < v; b++) {
                  var s = document.createElement("li"), r = document.createElement("a");
                  r.onclick = function () {
                      c.goToStep(this.getAttribute("data-stepnumber"))
                  };
                  0 === b && (r.className = "active");
                  r.href =
                      "javascript:void(0);";
                  r.innerHTML = "&nbsp;";
                  r.setAttribute("data-stepnumber", this._introItems[b].step);
                  s.appendChild(r);
                  q.appendChild(s)
              }
              k.appendChild(q);
              f.className = "introjs-tooltipbuttons";
              !1 === this._options.showButtons && (f.style.display = "none");
              h.className = "introjs-tooltip";
              h.appendChild(m);
              h.appendChild(k);
              if (!0 == this._options.showStepNumbers) {
                  var x = document.createElement("span");
                  x.className = "introjs-helperNumberLayer";
                  x.innerHTML = a.step;
                  j.appendChild(x)
              }
              h.appendChild(l);
              j.appendChild(h);
              k = document.createElement("a");
              k.onclick = function () {
                  c._introItems.length - 1 != c._currentStep && t.call(c)
              };
              k.href = "javascript:void(0);";
              k.innerHTML = this._options.nextLabel;
              m = document.createElement("a");
              m.onclick = function () {
                  0 != c._currentStep && y.call(c)
              };
              m.href = "javascript:void(0);";
              m.innerHTML = this._options.prevLabel;
              j = document.createElement("a");
              j.className = "introjs-button introjs-skipbutton";
              j.href = "javascript:void(0);";
              j.innerHTML = this._options.skipLabel;
              j.onclick = function () {
                  c._introItems.length - 1 == c._currentStep && "function" === typeof c._introCompleteCallback &&
                  c._introCompleteCallback.call(c);
                  c._introItems.length - 1 != c._currentStep && "function" === typeof c._introExitCallback && c._introExitCallback.call(c);
                  u.call(c, c._targetElement)
              };
              f.appendChild(j);
              1 < this._introItems.length && (f.appendChild(m), f.appendChild(k));
              h.appendChild(f);
              B.call(c, a.element, h, l, x)
          }
          0 == this._currentStep && 1 < this._introItems.length ? (m.className = "introjs-button introjs-prevbutton introjs-disabled", k.className = "introjs-button introjs-nextbutton", j.innerHTML = this._options.skipLabel) : this._introItems.length -
          1 == this._currentStep || 1 == this._introItems.length ? (j.innerHTML = this._options.doneLabel, m.className = "introjs-button introjs-prevbutton", k.className = "introjs-button introjs-nextbutton introjs-disabled") : (m.className = "introjs-button introjs-prevbutton", k.className = "introjs-button introjs-nextbutton", j.innerHTML = this._options.skipLabel);
          k.focus();
          a.element.className += " introjs-showElement";
          b = z(a.element, "position");
          "absolute" !== b && "relative" !== b && (a.element.className += " introjs-relativePosition");
          for (b =
                   a.element.parentNode; null != b && "body" !== b.tagName.toLowerCase();) {
              l = z(b, "z-index");
              h = parseFloat(z(b, "opacity"));
              if (/[0-9]+/.test(l) || 1 > h)b.className += " introjs-fixParent";
              b = b.parentNode
          }
          b = a.element.getBoundingClientRect();
          !(0 <= b.top && 0 <= b.left && b.bottom + 80 <= window.innerHeight && b.right <= window.innerWidth) && !0 === this._options.scrollToElement && (h = a.element.getBoundingClientRect(), b = void 0 != window.innerWidth ? window.innerHeight : document.documentElement.clientHeight, l = h.bottom - (h.bottom - h.top), h = h.bottom -
          b, 0 > l || a.element.clientHeight > b ? window.scrollBy(0, l - 30) : window.scrollBy(0, h + 100));
          "undefined" !== typeof this._introAfterChangeCallback && this._introAfterChangeCallback.call(this, a.element)
      }
  
      function z(a, b) {
          var c = "";
          a.currentStyle ? c = a.currentStyle[b] : document.defaultView && document.defaultView.getComputedStyle && (c = document.defaultView.getComputedStyle(a, null).getPropertyValue(b));
          return c && c.toLowerCase ? c.toLowerCase() : c
      }
  
      function D(a) {
          var b = document.createElement("div"), c = "", d = this;
          b.className = "introjs-overlay";
          if ("body" === a.tagName.toLowerCase())c += "top: 0;bottom: 0; left: 0;right: 0;position: fixed;", b.setAttribute("style", c); else {
              var e = p(a);
              e && (c += "width: " + e.width + "px; height:" + e.height + "px; top:" + e.top + "px;left: " + e.left + "px;", b.setAttribute("style", c))
          }
          a.appendChild(b);
          b.onclick = function () {
              !0 == d._options.exitOnOverlayClick && (u.call(d, a), void 0 != d._introExitCallback && d._introExitCallback.call(d))
          };
          setTimeout(function () {
              c += "opacity: .8;";
              b.setAttribute("style", c)
          }, 10);
          return !0
      }
  
      function p(a) {
          var b = {};
          b.width = a.offsetWidth;
          b.height = a.offsetHeight;
          for (var c = 0, d = 0; a && !isNaN(a.offsetLeft) && !isNaN(a.offsetTop);)c += a.offsetLeft, d += a.offsetTop, a = a.offsetParent;
          b.top = d;
          b.left = c;
          return b
      }
  
      var v = function (a) {
          if ("object" === typeof a)return new f(a);
          if ("string" === typeof a) {
              if (a = document.querySelector(a))return new f(a);
              throw Error("There is no element with given selector.");
          }
          return new f(document.body)
      };
      v.version = "0.8.0";
      v.fn = f.prototype = {
          clone: function () {
              return new f(this)
          }, setOption: function (a, b) {
              this._options[a] =
                  b;
              return this
          }, setOptions: function (a) {
              var b = this._options, c = {}, d;
              for (d in b)c[d] = b[d];
              for (d in a)c[d] = a[d];
              this._options = c;
              return this
          }, start: function () {
              a:{
                  var a = this._targetElement, b = [], c = this;
                  if (this._options.steps)for (var d = [], e = 0, d = this._options.steps.length; e < d; e++) {
                      var f = s(this._options.steps[e]);
                      f.step = b.length + 1;
                      "string" === typeof f.element && (f.element = document.querySelector(f.element));
                      if ("undefined" === typeof f.element || null == f.element) {
                          var g = document.querySelector(".introjsFloatingElement");
                          null == g && (g = document.createElement("div"), g.className = "introjsFloatingElement", document.body.appendChild(g));
                          f.element = g;
                          f.position = "floating"
                      }
                      null != f.element && b.push(f)
                  } else {
                      d = a.querySelectorAll("*[data-intro]");
                      if (1 > d.length)break a;
                      e = 0;
                      for (f = d.length; e < f; e++) {
                          var g = d[e], n = parseInt(g.getAttribute("data-step"), 10);
                          0 < n && (b[n - 1] = {
                              element: g,
                              intro: g.getAttribute("data-intro"),
                              step: parseInt(g.getAttribute("data-step"), 10),
                              tooltipClass: g.getAttribute("data-tooltipClass"),
                              position: g.getAttribute("data-position") ||
                              this._options.tooltipPosition
                          })
                      }
                      e = n = 0;
                      for (f = d.length; e < f; e++)if (g = d[e], null == g.getAttribute("data-step")) {
                          for (; "undefined" != typeof b[n];)n++;
                          b[n] = {
                              element: g,
                              intro: g.getAttribute("data-intro"),
                              step: n + 1,
                              tooltipClass: g.getAttribute("data-tooltipClass"),
                              position: g.getAttribute("data-position") || this._options.tooltipPosition
                          }
                      }
                  }
                  e = [];
                  for (d = 0; d < b.length; d++)b[d] && e.push(b[d]);
                  b = e;
                  b.sort(function (a, b) {
                      return a.step - b.step
                  });
                  c._introItems = b;
                  D.call(c, a) && (t.call(c), a.querySelector(".introjs-skipbutton"), a.querySelector(".introjs-nextbutton"),
                      c._onKeyDown = function (b) {
                          if (27 === b.keyCode && !0 == c._options.exitOnEsc)u.call(c, a), void 0 != c._introExitCallback && c._introExitCallback.call(c); else if (37 === b.keyCode)y.call(c); else if (39 === b.keyCode || 13 === b.keyCode)t.call(c), b.preventDefault ? b.preventDefault() : b.returnValue = !1
                      }, c._onResize = function () {
                      w.call(c, document.querySelector(".introjs-helperLayer"))
                  }, window.addEventListener ? (this._options.keyboardNavigation && window.addEventListener("keydown", c._onKeyDown, !0), window.addEventListener("resize", c._onResize,
                      !0)) : document.attachEvent && (this._options.keyboardNavigation && document.attachEvent("onkeydown", c._onKeyDown), document.attachEvent("onresize", c._onResize)))
              }
              return this
          }, goToStep: function (a) {
              this._currentStep = a - 2;
              "undefined" !== typeof this._introItems && t.call(this);
              return this
          }, nextStep: function () {
              t.call(this);
              return this
          }, previousStep: function () {
              y.call(this);
              return this
          }, exit: function () {
              u.call(this, this._targetElement)
          }, refresh: function () {
              w.call(this, document.querySelector(".introjs-helperLayer"));
              return this
          }, onbeforechange: function (a) {
              if ("function" === typeof a)this._introBeforeChangeCallback = a; else throw Error("Provided callback for onbeforechange was not a function");
              return this
          }, onchange: function (a) {
              if ("function" === typeof a)this._introChangeCallback = a; else throw Error("Provided callback for onchange was not a function.");
              return this
          }, onafterchange: function (a) {
              if ("function" === typeof a)this._introAfterChangeCallback = a; else throw Error("Provided callback for onafterchange was not a function");
              return this
          }, oncomplete: function (a) {
              if ("function" === typeof a)this._introCompleteCallback = a; else throw Error("Provided callback for oncomplete was not a function.");
              return this
          }, onexit: function (a) {
              if ("function" === typeof a)this._introExitCallback = a; else throw Error("Provided callback for onexit was not a function.");
              return this
          }
      };
      return q.introJs = v
  });
  