rstudio__py-shiny METASEP

shiny/www/shared/selectize/scss/plugins/remove_button.scss METASEP
.selectize-control.plugin-remove_button {
  [data-value] {
	position: relative;
	padding-right: 24px !important;
  }
  [data-value] .remove {
	z-index: 1; /* fixes ie bug (see #392) */
	position: absolute;
	top: 0;
	right: 0;
	bottom: 0;
	width: 17px;
	text-align: center;
	font-weight: bold;
	font-size: 12px;
	color: inherit;
	text-decoration: none;
	vertical-align: middle;
	display: inline-block;
	padding: $selectize-padding-item-y 0 0 0;
	border-left: 1px solid $selectize-color-item-border;
	@include selectize-border-radius(0 2px 2px 0);
	@include selectize-box-sizing(border-box);
  }
  [data-value] .remove:hover {
	background: rgba(0,0,0,0.05);
  }
  [data-value].active .remove {
	border-left-color: $selectize-color-item-active-border;
  }
  .disabled [data-value] .remove:hover {
	background: none;
  }
  .disabled [data-value] .remove {
	border-left-color: lighten(desaturate($selectize-color-item-border, 100%), $selectize-lighten-disabled-item-border);
  }
  .remove-single {
	position: absolute;
	right: 0;
	top: 0;
	font-size: 23px;
  }
}

shiny/www/shared/selectize/scss/plugins/optgroup_columns.scss METASEP
.selectize-dropdown.plugin-optgroup_columns {
  .optgroup {
	border-right: 1px solid #f2f2f2;
	border-top: 0 none;
	float: left;
	@include selectize-box-sizing(border-box);
  }
  .optgroup:last-child {
	border-right: 0 none;
  }
  .optgroup:before {
	display: none;
  }
  .optgroup-header {
	border-top: 0 none;
  }
}
shiny/www/shared/selectize/scss/plugins/dropdown_header.scss METASEP
.selectize-dropdown-header {
  position: relative;
  padding: $selectize-padding-dropdown-item-y $selectize-padding-dropdown-item-x;
  border-bottom: 1px solid $selectize-color-border;
  background: mix($selectize-color-dropdown, $selectize-color-border, 85%);
  @include selectize-border-radius($selectize-border-radius $selectize-border-radius 0 0);
}
.selectize-dropdown-header-close {
  position: absolute;
  right: $selectize-padding-dropdown-item-x;
  top: 50%;
  color: $selectize-color-text;
  opacity: 0.4;
  margin-top: -12px;
  line-height: 20px;
  font-size: 20px !important;
}
.selectize-dropdown-header-close:hover {
  color: darken($selectize-color-text, 25%);
}
shiny/www/shared/selectize/scss/plugins/drag_drop.scss METASEP
.selectize-control.plugin-drag_drop {
  &.multi > .selectize-input > div.ui-sortable-placeholder {
	visibility: visible !important;
	background: #f2f2f2 !important;
	background: rgba(0,0,0,0.06) !important;
	border: 0 none !important;
	@include selectize-box-shadow(inset 0 0 12px 4px #fff);
  }
  .ui-sortable-placeholder::after {
	content: '!';
	visibility: hidden;
  }
  .ui-sortable-helper {
	@include selectize-box-shadow(0 2px 5px rgba(0,0,0,0.2));
  }
}
shiny/www/shared/selectize/accessibility/js/selectize-plugin-a11y.min.js METASEP
Selectize.define("selectize-plugin-a11y",function(c){var t=this,l=13;typeof t.accessibility=="undefined"&&(t.accessibility={}),t.accessibility.helpers={randomId:function(e){for(var a="",s=e||10,r="abcdefghijklmnopqrstuvwxyz0123456789",n=r.length,o=0;o<s;o++)a+=r[Math.floor(n*Math.random())];return a}},t.accessibility.liveRegion={$region:"",speak:function(e){var a=$("<div></div>");a.text(e),this.$region.html(a)},domListener:function(){var e=new MutationObserver(function(a){a.forEach(function(s){var r=$(s.target);if(r.hasClass("items"))if(r.hasClass("dropdown-active")){t.$control_input.attr("aria-expanded","true");var n=t.$dropdown_content[0].children;for(i=0;i<n.length;i++){var o=n[i].attributes;o.role||n[i].setAttribute("role","option"),o.id||n[i].setAttribute("id",t.accessibility.helpers.randomId())}}else t.$control_input.attr("aria-expanded","false"),t.$control_input.removeAttr("aria-activedescendant");else r.hasClass("active")&&r.attr("data-value")&&(t.$control_input.attr("aria-activedescendant",r.attr("id")),t.accessibility.liveRegion.speak(r.text(),500))})});e.observe(t.$dropdown[0],{attributes:!0,attributeFilter:["class"],subtree:!0,attributeOldValue:!0}),e.observe(t.$control[0],{attributes:!0,attributeFilter:["class"]}),e.observe(t.$control_input[0],{attributes:!0,attributeFilter:["value"]})},setAttributes:function(){this.$region.attr({"aria-live":"assertive",role:"log","aria-relevant":"additions","aria-atomic":"true"})},setStyles:function(){this.$region.css({position:"absolute",width:"1px",height:"1px","margin-top":"-1px",clip:"rect(1px, 1px, 1px, 1px)",overflow:"hidden"})},init:function(){this.$region=$("<div>"),this.setAttributes(),this.setStyles(),$("body").append(this.$region),this.domListener()}},this.setup=function(){var e=t.setup;return function(){e.apply(this,arguments);var a=t.accessibility.helpers.randomId(),s=t.accessibility.helpers.randomId();t.$control.on("keydown",function(r){r.keyCode===l&&(t.settings.openOnFocus?(t.settings.openOnFocus=!1,t.focus(),setTimeout(function(){t.settings.openOnFocus=!0},0)):t.focus())}),t.$control_input.attr({role:"combobox","aria-expanded":"false",haspopup:"listbox","aria-owns":s,"aria-label":t.$wrapper.closest("[data-accessibility-selectize-label]").attr("data-accessibility-selectize-label")}),t.$dropdown_content.attr({role:"listbox",id:s}),t.accessibility.liveRegion.init()}}(),this.destroy=function(){var e=t.destroy;return function(){return t.accessibility.liveRegion.$region.remove(),e.apply(this,arguments)}}()});

shiny/www/shared/selectize/accessibility/js/selectize-plugin-a11y.js METASEP
/* global Selectize */
Selectize.define("selectize-plugin-a11y", function (options) {
  var self = this;
  var KEY_RETURN = 13;

  if (typeof self.accessibility === "undefined") {
    self.accessibility = {};
  }

  self.accessibility.helpers = {
    randomId: function (len) {
      var str = "",
        strLength = len || 10,
        base = "abcdefghijklmnopqrstuvwxyz0123456789",
        baseLength = base.length;

      for (var i = 0; i < strLength; i++) {
        str += base[Math.floor(baseLength * Math.random())];
      }

      return str;
    }
  };

  self.accessibility.liveRegion = {
    $region: "",
    speak: function (msg) {
      var $container = $("<div></div>");
      $container.text(msg);
      this.$region.html($container);
    },
    domListener: function () {
      var observer = new MutationObserver(function (mutations) {
        mutations.forEach(function (mutation) {
          var $target = $(mutation.target);
          if ($target.hasClass("items")) {
            if ($target.hasClass("dropdown-active")) {
              // open
              self.$control_input.attr("aria-expanded", "true");
              // Assign a unique ID for each item. This is necessary for
              // screen readers. In the selectize-plugin-a11y example, the
              // random IDs are assigned when .selectize() is called, but we're
              // doing it here to limit the scope of changes.
              var kids = self.$dropdown_content[0].children;
              for (i = 0; i < kids.length; i++) {
                var attrs = kids[i].attributes;
                if (!attrs.role) {
                  kids[i].setAttribute("role", "option");
                }
                if (!attrs.id) {
                  kids[i].setAttribute("id", self.accessibility.helpers.randomId());
                }
              }
            } else {
              // close
              self.$control_input.attr("aria-expanded", "false");
              self.$control_input.removeAttr("aria-activedescendant");
            }
          } else {
            // option change
            if ($target.hasClass("active")) {
              if (!!$target.attr("data-value")) { // eslint-disable-line no-extra-boolean-cast
                self.$control_input.attr(
                  "aria-activedescendant",
                  $target.attr("id")
                );
                self.accessibility.liveRegion.speak($target.text(), 500);
              }
            }
          }
        });
      });
      observer.observe(self.$dropdown[0], {
        attributes: true,
        attributeFilter: ["class"],
        subtree: true,
        attributeOldValue: true
      });

      observer.observe(self.$control[0], {
        attributes: true,
        attributeFilter: ["class"]
      });

      observer.observe(self.$control_input[0], {
        attributes: true,
        attributeFilter: ["value"]
      });
    },
    setAttributes: function () {
      this.$region.attr({
        "aria-live": "assertive",
        role: "log",
        "aria-relevant": "additions",
        "aria-atomic": "true"
      });
    },
    setStyles: function () {
      this.$region.css({
        position: "absolute",
        width: "1px",
        height: "1px",
        "margin-top": "-1px",
        clip: "rect(1px, 1px, 1px, 1px)",
        overflow: "hidden"
      });
    },
    init: function () {
      this.$region = $("<div>");
      this.setAttributes();
      this.setStyles();
      $("body").append(this.$region);
      this.domListener();
    }
  };

  this.setup = (function () {
    var original = self.setup;
    return function () {
      original.apply(this, arguments);
      var inputId = self.accessibility.helpers.randomId(),
        listboxId = self.accessibility.helpers.randomId();

      self.$control.on("keydown", function (e) {
        if (e.keyCode === KEY_RETURN) {

          if (self.settings.openOnFocus) {
            // This is the common case, where openOnFocus is true. When the user
            // presses Enter to select an item, the default behavior is to close
            // the dropdown and have the input lose focus. However, losing focus
            // is poor behavior for accessibility.
            //
            // If `.focus()` is called after a selection is made, the default
            // (when openOnFocus is true) is to show the dropdown, but this is
            // annoying for sighted users, because they would expect the
            // dropdown to not be visible after making a selection, and they
            // then need to press Esc to make it go away.
            //
            // This workaround sets openOnFocus to false, then calls `.focus()`,
            // then, after a delay, sets openOnFocus back to true. It seems that
            // the `setTimeout()` must be called after `.focus()` for it to work
            // reliably, even with a delay of up to 10. If it is called before
            // `.focus()`, then after pressing Enter, the dropdown still
            // appears. I think this is probably because `.focus()` in turn
            // calls `setTimeout(, 0)` to do things, calling the functions in
            // this order is necessary to ensure that the callbacks are invoked
            // in the same order.
            self.settings.openOnFocus = false;
            self.focus();
            setTimeout(function() { self.settings.openOnFocus = true; }, 0);
          } else {
            self.focus();
          }
        }
      });

      self.$control_input.attr({
        role: "combobox",
        "aria-expanded": "false",
        haspopup: "listbox",
        "aria-owns": listboxId,
        "aria-label": self.$wrapper
          .closest("[data-accessibility-selectize-label]")
          .attr("data-accessibility-selectize-label")
      });

      self.$dropdown_content.attr({
        role: "listbox",
        id: listboxId
      });
      self.accessibility.liveRegion.init();
    };
  })();

  this.destroy = (function () {
    var original = self.destroy;
    return function () {
      self.accessibility.liveRegion.$region.remove();
      return original.apply(this, arguments);
    };
  })();
});

shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.zh-TW.min.js METASEP
!function(a){a.fn.datepicker.dates["zh-TW"]={days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],daysShort:["週日","週一","週二","週三","週四","週五","週六"],daysMin:["日","一","二","三","四","五","六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今天",format:"yyyy年mm月dd日",weekStart:1,clear:"清除"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.zh-CN.min.js METASEP
!function(a){a.fn.datepicker.dates["zh-CN"]={days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],daysShort:["周日","周一","周二","周三","周四","周五","周六"],daysMin:["日","一","二","三","四","五","六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今天",monthsTitle:"选择月份",clear:"清除",format:"yyyy-mm-dd",titleFormat:"yyyy年mm月",weekStart:1}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.vi.min.js METASEP
!function(a){a.fn.datepicker.dates.vi={days:["Chủ nhật","Thứ hai","Thứ ba","Thứ tư","Thứ năm","Thứ sáu","Thứ bảy"],daysShort:["CN","Thứ 2","Thứ 3","Thứ 4","Thứ 5","Thứ 6","Thứ 7"],daysMin:["CN","T2","T3","T4","T5","T6","T7"],months:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],monthsShort:["Th1","Th2","Th3","Th4","Th5","Th6","Th7","Th8","Th9","Th10","Th11","Th12"],today:"Hôm nay",clear:"Xóa",format:"dd/mm/yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.uz-latn.min.js METASEP
!function(a){a.fn.datepicker.dates["uz-latn"]={days:["Yakshanba","Dushanba","Seshanba","Chorshanba","Payshanba","Juma","Shanba"],daysShort:["Yak","Du","Se","Chor","Pay","Ju","Sha"],daysMin:["Ya","Du","Se","Cho","Pa","Ju","Sha"],months:["Yanvar","Fevral","Mart","Aprel","May","Iyun","Iyul","Avgust","Sentabr","Oktabr","Noyabr","Dekabr"],monthsShort:["Yan","Fev","Mar","Apr","May","Iyn","Iyl","Avg","Sen","Okt","Noy","Dek"],today:"Bugun",clear:"O'chirish",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Oylar"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.uz-cyrl.min.js METASEP
!function(a){a.fn.datepicker.dates["uz-cyrl"]={days:["Якшанба","Душанба","Сешанба","Чоршанба","Пайшанба","Жума","Шанба"],daysShort:["Якш","Ду","Се","Чор","Пай","Жу","Ша"],daysMin:["Як","Ду","Се","Чо","Па","Жу","Ша"],months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Бугун",clear:"Ўчириш",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Ойлар"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.uk.min.js METASEP
!function(a){a.fn.datepicker.dates.uk={days:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота"],daysShort:["Нед","Пнд","Втр","Срд","Чтв","Птн","Суб"],daysMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Cічень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthsShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],today:"Сьогодні",clear:"Очистити",format:"dd.mm.yyyy",weekStart:1}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.tr.min.js METASEP
!function(a){a.fn.datepicker.dates.tr={days:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],daysShort:["Pz","Pzt","Sal","Çrş","Prş","Cu","Cts"],daysMin:["Pz","Pzt","Sa","Çr","Pr","Cu","Ct"],months:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthsShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],today:"Bugün",clear:"Temizle",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.tk.min.js METASEP
!function(a){a.fn.datepicker.dates.tk={days:["Ýekşenbe","Duşenbe","Sişenbe","Çarşenbe","Penşenbe","Anna","Şenbe"],daysShort:["Ýek","Duş","Siş","Çar","Pen","Ann","Şen"],daysMin:["Ýe","Du","Si","Ça","Pe","An","Şe"],months:["Ýanwar","Fewral","Mart","Aprel","Maý","Iýun","Iýul","Awgust","Sentýabr","Oktýabr","Noýabr","Dekabr"],monthsShort:["Ýan","Few","Mar","Apr","Maý","Iýn","Iýl","Awg","Sen","Okt","Noý","Dek"],today:"Bu gün",monthsTitle:"Aýlar",clear:"Aýyr",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.th.min.js METASEP
!function(a){a.fn.datepicker.dates.th={days:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัส","ศุกร์","เสาร์","อาทิตย์"],daysShort:["อา","จ","อ","พ","พฤ","ศ","ส","อา"],daysMin:["อา","จ","อ","พ","พฤ","ศ","ส","อา"],months:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthsShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],today:"วันนี้"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.tg.min.js METASEP
!function(a){a.fn.datepicker.dates.tg={days:["Якшанбе","Душанбе","Сешанбе","Чоршанбе","Панҷшанбе","Ҷумъа","Шанбе"],daysShort:["Яшб","Дшб","Сшб","Чшб","Пшб","Ҷум","Шнб"],daysMin:["Яш","Дш","Сш","Чш","Пш","Ҷм","Шб"],months:["Январ","Феврал","Март","Апрел","Май","Июн","Июл","Август","Сентябр","Октябр","Ноябр","Декабр"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Имрӯз",monthsTitle:"Моҳҳо",clear:"Тоза намудан",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.ta.min.js METASEP
!function(a){a.fn.datepicker.dates.ta={days:["ஞாயிறு","திங்கள்","செவ்வாய்","புதன்","வியாழன்","வெள்ளி","சனி"],daysShort:["ஞாயி","திங்","செவ்","புத","வியா","வெள்","சனி"],daysMin:["ஞா","தி","செ","பு","வி","வெ","ச"],months:["ஜனவரி","பிப்ரவரி","மார்ச்","ஏப்ரல்","மே","ஜூன்","ஜூலை","ஆகஸ்டு","செப்டம்பர்","அக்டோபர்","நவம்பர்","டிசம்பர்"],monthsShort:["ஜன","பிப்","மார்","ஏப்","மே","ஜூன்","ஜூலை","ஆக","செப்","அக்","நவ","டிச"],today:"இன்று",monthsTitle:"மாதங்கள்",clear:"நீக்கு",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.sw.min.js METASEP
!function(a){a.fn.datepicker.dates.sw={days:["Jumapili","Jumatatu","Jumanne","Jumatano","Alhamisi","Ijumaa","Jumamosi"],daysShort:["J2","J3","J4","J5","Alh","Ij","J1"],daysMin:["2","3","4","5","A","I","1"],months:["Januari","Februari","Machi","Aprili","Mei","Juni","Julai","Agosti","Septemba","Oktoba","Novemba","Desemba"],monthsShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ago","Sep","Okt","Nov","Des"],today:"Leo"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.sv.min.js METASEP
!function(a){a.fn.datepicker.dates.sv={days:["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],daysShort:["sön","mån","tis","ons","tor","fre","lör"],daysMin:["sö","må","ti","on","to","fr","lö"],months:["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],monthsShort:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],today:"Idag",format:"yyyy-mm-dd",weekStart:1,clear:"Rensa"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.sr.min.js METASEP
!function(a){a.fn.datepicker.dates.sr={days:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],daysShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],daysMin:["Н","По","У","Ср","Ч","Пе","Су"],months:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthsShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],today:"Данас",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.sr-latin.min.js METASEP
!function(a){a.fn.datepicker.dates["sr-latin"]={days:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],daysMin:["N","Po","U","Sr","Č","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.sq.min.js METASEP
!function(a){a.fn.datepicker.dates.sq={days:["E Diel","E Hënë","E Martē","E Mërkurë","E Enjte","E Premte","E Shtunë"],daysShort:["Die","Hën","Mar","Mër","Enj","Pre","Shtu"],daysMin:["Di","Hë","Ma","Më","En","Pr","Sht"],months:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],monthsShort:["Jan","Shk","Mar","Pri","Maj","Qer","Korr","Gu","Sht","Tet","Nën","Dhjet"],monthsTitle:"Muaj",today:"Sot",weekStart:1,format:"dd/mm/yyyy",clear:"Pastro"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.sl.min.js METASEP
!function(a){a.fn.datepicker.dates.sl={days:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],daysShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],daysMin:["Ne","Po","To","Sr","Če","Pe","So"],months:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danes",weekStart:1}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.sk.min.js METASEP
!function(a){a.fn.datepicker.dates.sk={days:["Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"],daysShort:["Ned","Pon","Uto","Str","Štv","Pia","Sob"],daysMin:["Ne","Po","Ut","St","Št","Pia","So"],months:["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],today:"Dnes",clear:"Vymazať",weekStart:1,format:"d.m.yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.si.min.js METASEP
!function(a){a.fn.datepicker.dates.si={days:["ඉරිදා","සඳුදා","අඟහරුවාදා","බදාදා","බ්‍රහස්පතින්දා","සිකුරාදා","සෙනසුරාදා"],daysShort:["ඉරි","සඳු","අඟ","බදා","බ්‍රහ","සිකු","සෙන"],daysMin:["ඉ","ස","අ","බ","බ්‍ර","සි","සෙ"],months:["ජනවාරි","පෙබරවාරි","මාර්තු","අප්‍රේල්","මැයි","ජුනි","ජූලි","අගෝස්තු","සැප්තැම්බර්","ඔක්තෝබර්","නොවැම්බර්","දෙසැම්බර්"],monthsShort:["ජන","පෙබ","මාර්","අප්‍රේ","මැයි","ජුනි","ජූලි","අගෝ","සැප්","ඔක්","නොවැ","දෙසැ"],today:"අද",monthsTitle:"මාස",clear:"මකන්න",weekStart:0,format:"yyyy-mm-dd"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.ru.min.js METASEP
!function(a){a.fn.datepicker.dates.ru={days:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],daysShort:["Вск","Пнд","Втр","Срд","Чтв","Птн","Суб"],daysMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Сегодня",clear:"Очистить",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Месяцы"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.rs.min.js METASEP
!function(a){a.fn.datepicker.dates.rs={days:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],daysShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],daysMin:["Н","По","У","Ср","Ч","Пе","Су"],months:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthsShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],today:"Данас",weekStart:1,format:"dd.mm.yyyy"},a.fn.datepicker.deprecated('This language code "rs" is deprecated (invalid serbian language code) and will be removed in 2.0. For Serbian support use "sr" instead.')}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.rs-latin.min.js METASEP
!function(a){a.fn.datepicker.dates["rs-latin"]={days:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],daysMin:["N","Po","U","Sr","Č","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"},a.fn.datepicker.deprecated('This language code "rs-latin" is deprecated (invalid serbian language code) and will be removed in 2.0. For Serbian latin support use "sr-latin" instead.')}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.ro.min.js METASEP
!function(a){a.fn.datepicker.dates.ro={days:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"],daysShort:["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],daysMin:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],months:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthsShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],today:"Astăzi",clear:"Șterge",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.pt.min.js METASEP
!function(a){a.fn.datepicker.dates.pt={days:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"],daysShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],daysMin:["Do","Se","Te","Qu","Qu","Se","Sa"],months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthsShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],today:"Hoje",monthsTitle:"Meses",clear:"Limpar",format:"dd/mm/yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.pt-BR.min.js METASEP
!function(a){a.fn.datepicker.dates["pt-BR"]={days:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"],daysShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],daysMin:["Do","Se","Te","Qu","Qu","Se","Sa"],months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthsShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],today:"Hoje",monthsTitle:"Meses",clear:"Limpar",format:"dd/mm/yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.pl.min.js METASEP
!function(a){a.fn.datepicker.dates.pl={days:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],daysShort:["Niedz.","Pon.","Wt.","Śr.","Czw.","Piąt.","Sob."],daysMin:["Ndz.","Pn.","Wt.","Śr.","Czw.","Pt.","Sob."],months:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],monthsShort:["Sty.","Lut.","Mar.","Kwi.","Maj","Cze.","Lip.","Sie.","Wrz.","Paź.","Lis.","Gru."],today:"Dzisiaj",weekStart:1,clear:"Wyczyść",format:"dd.mm.yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.oc.min.js METASEP
!function(a){a.fn.datepicker.dates.oc={days:["Dimenge","Diluns","Dimars","Dimècres","Dijòus","Divendres","Dissabte"],daysShort:["Dim","Dil","Dmr","Dmc","Dij","Div","Dis"],daysMin:["dg","dl","dr","dc","dj","dv","ds"],months:["Genièr","Febrièr","Març","Abrial","Mai","Junh","Julhet","Agost","Setembre","Octobre","Novembre","Decembre"],monthsShort:["Gen","Feb","Mar","Abr","Mai","Jun","Jul","Ago","Set","Oct","Nov","Dec"],today:"Uèi",monthsTitle:"Meses",clear:"Escafar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.no.min.js METASEP
!function(a){a.fn.datepicker.dates.no={days:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],daysShort:["søn","man","tir","ons","tor","fre","lør"],daysMin:["sø","ma","ti","on","to","fr","lø"],months:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthsShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],today:"i dag",monthsTitle:"Måneder",clear:"Nullstill",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.nl.min.js METASEP
!function(a){a.fn.datepicker.dates.nl={days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],daysShort:["zo","ma","di","wo","do","vr","za"],daysMin:["zo","ma","di","wo","do","vr","za"],months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthsShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],today:"Vandaag",monthsTitle:"Maanden",clear:"Wissen",weekStart:1,format:"dd-mm-yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.nl-BE.min.js METASEP
!function(a){a.fn.datepicker.dates["nl-BE"]={days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],daysShort:["zo","ma","di","wo","do","vr","za"],daysMin:["zo","ma","di","wo","do","vr","za"],months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthsShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],today:"Vandaag",monthsTitle:"Maanden",clear:"Leegmaken",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.ms.min.js METASEP
!function(a){a.fn.datepicker.dates.ms={days:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],daysShort:["Aha","Isn","Sel","Rab","Kha","Jum","Sab"],daysMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],months:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],today:"Hari Ini",clear:"Bersihkan"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.mn.min.js METASEP
!function(a){a.fn.datepicker.dates.mn={days:["Ням","Даваа","Мягмар","Лхагва","Пүрэв","Баасан","Бямба"],daysShort:["Ням","Дав","Мяг","Лха","Пүр","Баа","Бям"],daysMin:["Ня","Да","Мя","Лх","Пү","Ба","Бя"],months:["Хулгана","Үхэр","Бар","Туулай","Луу","Могой","Морь","Хонь","Бич","Тахиа","Нохой","Гахай"],monthsShort:["Хул","Үхэ","Бар","Туу","Луу","Мог","Мор","Хон","Бич","Тах","Нох","Гах"],today:"Өнөөдөр",clear:"Тодорхой",format:"yyyy.mm.dd",weekStart:1}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.mk.min.js METASEP
!function(a){a.fn.datepicker.dates.mk={days:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"],daysShort:["Нед","Пон","Вто","Сре","Чет","Пет","Саб"],daysMin:["Не","По","Вт","Ср","Че","Пе","Са"],months:["Јануари","Февруари","Март","Април","Мај","Јуни","Јули","Август","Септември","Октомври","Ноември","Декември"],monthsShort:["Јан","Фев","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Ное","Дек"],today:"Денес",format:"dd.mm.yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.me.min.js METASEP
!function(a){a.fn.datepicker.dates.me={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],daysMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,clear:"Izbriši",format:"dd.mm.yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.lv.min.js METASEP
!function(a){a.fn.datepicker.dates.lv={days:["Svētdiena","Pirmdiena","Otrdiena","Trešdiena","Ceturtdiena","Piektdiena","Sestdiena"],daysShort:["Sv","P","O","T","C","Pk","S"],daysMin:["Sv","Pr","Ot","Tr","Ce","Pk","Se"],months:["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],monthsShort:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],monthsTitle:"Mēneši",today:"Šodien",clear:"Nodzēst",weekStart:1}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.lt.min.js METASEP
!function(a){a.fn.datepicker.dates.lt={days:["Sekmadienis","Pirmadienis","Antradienis","Trečiadienis","Ketvirtadienis","Penktadienis","Šeštadienis"],daysShort:["S","Pr","A","T","K","Pn","Š"],daysMin:["Sk","Pr","An","Tr","Ke","Pn","Št"],months:["Sausis","Vasaris","Kovas","Balandis","Gegužė","Birželis","Liepa","Rugpjūtis","Rugsėjis","Spalis","Lapkritis","Gruodis"],monthsShort:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rugp","Rugs","Spa","Lap","Gru"],today:"Šiandien",monthsTitle:"Mėnesiai",clear:"Išvalyti",weekStart:1,format:"yyyy-mm-dd"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.kr.min.js METASEP
!function(a){a.fn.datepicker.dates.kr={days:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],daysShort:["일","월","화","수","목","금","토"],daysMin:["일","월","화","수","목","금","토"],months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthsShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"]},a.fn.datepicker.deprecated('The language code "kr" is deprecated and will be removed in 2.0. For korean support use "ko" instead.')}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.ko.min.js METASEP
!function(a){a.fn.datepicker.dates.ko={days:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],daysShort:["일","월","화","수","목","금","토"],daysMin:["일","월","화","수","목","금","토"],months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthsShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],today:"오늘",clear:"삭제",format:"yyyy-mm-dd",titleFormat:"yyyy년mm월",weekStart:0}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.km.min.js METASEP
!function(a){a.fn.datepicker.dates.km={days:["អាទិត្យ","ចន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍"],daysShort:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍"],daysMin:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍"],months:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],monthsShort:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],today:"ថ្ងៃនេះ",clear:"សំអាត"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.kk.min.js METASEP
!function(a){a.fn.datepicker.dates.kk={days:["Жексенбі","Дүйсенбі","Сейсенбі","Сәрсенбі","Бейсенбі","Жұма","Сенбі"],daysShort:["Жек","Дүй","Сей","Сәр","Бей","Жұм","Сен"],daysMin:["Жк","Дс","Сс","Ср","Бс","Жм","Сн"],months:["Қаңтар","Ақпан","Наурыз","Сәуір","Мамыр","Маусым","Шілде","Тамыз","Қыркүйек","Қазан","Қараша","Желтоқсан"],monthsShort:["Қаң","Ақп","Нау","Сәу","Мам","Мау","Шіл","Там","Қыр","Қаз","Қар","Жел"],today:"Бүгін",weekStart:1}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.kh.min.js METASEP
!function(a){a.fn.datepicker.dates.kh={days:["អាទិត្យ","ចន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍"],daysShort:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍"],daysMin:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍"],months:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],monthsShort:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],today:"ថ្ងៃនេះ",clear:"សំអាត"},a.fn.datepicker.deprecated('The language code "kh" is deprecated and will be removed in 2.0. For Khmer support use "km" instead.')}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.ka.min.js METASEP
!function(a){a.fn.datepicker.dates.ka={days:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"],daysShort:["კვი","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],daysMin:["კვ","ორ","სა","ოთ","ხუ","პა","შა"],months:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],monthsShort:["იან","თებ","მარ","აპრ","მაი","ივნ","ივლ","აგვ","სექ","ოქტ","ნოე","დეკ"],today:"დღეს",clear:"გასუფთავება",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.ja.min.js METASEP
!function(a){a.fn.datepicker.dates.ja={days:["日曜","月曜","火曜","水曜","木曜","金曜","土曜"],daysShort:["日","月","火","水","木","金","土"],daysMin:["日","月","火","水","木","金","土"],months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今日",format:"yyyy/mm/dd",titleFormat:"yyyy年mm月",clear:"クリア"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.it.min.js METASEP
!function(a){a.fn.datepicker.dates.it={days:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],daysShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],daysMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthsShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],today:"Oggi",monthsTitle:"Mesi",clear:"Cancella",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.it-CH.min.js METASEP
!function(a){a.fn.datepicker.dates.it={days:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],daysShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],daysMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthsShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],today:"Oggi",clear:"Cancella",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.is.min.js METASEP
!function(a){a.fn.datepicker.dates.is={days:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"],daysShort:["Sun","Mán","Þri","Mið","Fim","Fös","Lau"],daysMin:["Su","Má","Þr","Mi","Fi","Fö","La"],months:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Maí","Jún","Júl","Ágú","Sep","Okt","Nóv","Des"],today:"Í Dag"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.id.min.js METASEP
!function(a){a.fn.datepicker.dates.id={days:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],daysShort:["Mgu","Sen","Sel","Rab","Kam","Jum","Sab"],daysMin:["Mg","Sn","Sl","Ra","Ka","Ju","Sa"],months:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Ags","Sep","Okt","Nov","Des"],today:"Hari Ini",clear:"Kosongkan"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.hy.min.js METASEP
!function(a){a.fn.datepicker.dates.hy={days:["Կիրակի","Երկուշաբթի","Երեքշաբթի","Չորեքշաբթի","Հինգշաբթի","Ուրբաթ","Շաբաթ"],daysShort:["Կիր","Երկ","Երե","Չոր","Հին","Ուրբ","Շաբ"],daysMin:["Կի","Եկ","Եք","Չո","Հի","Ու","Շա"],months:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],monthsShort:["Հնվ","Փետ","Մար","Ապր","Մայ","Հուն","Հուլ","Օգս","Սեպ","Հոկ","Նոյ","Դեկ"],today:"Այսօր",clear:"Ջնջել",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Ամիսնէր"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.hu.min.js METASEP
!function(a){a.fn.datepicker.dates.hu={days:["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],daysShort:["vas","hét","ked","sze","csü","pén","szo"],daysMin:["V","H","K","Sze","Cs","P","Szo"],months:["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],monthsShort:["jan","feb","már","ápr","máj","jún","júl","aug","sze","okt","nov","dec"],today:"ma",weekStart:1,clear:"töröl",titleFormat:"yyyy. MM",format:"yyyy.mm.dd"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.hr.min.js METASEP
!function(a){a.fn.datepicker.dates.hr={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],daysMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],months:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],monthsShort:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],today:"Danas"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.hi.min.js METASEP
!function(a){a.fn.datepicker.dates.hi={days:["रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],daysShort:["सूर्य","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],daysMin:["र","सो","मं","बु","गु","शु","श"],months:["जनवरी","फ़रवरी","मार्च","अप्रैल","मई","जून","जुलाई","अगस्त","सितम्बर","अक्टूबर","नवंबर","दिसम्बर"],monthsShort:["जन","फ़रवरी","मार्च","अप्रैल","मई","जून","जुलाई","अगस्त","सितं","अक्टूबर","नवं","दिसम्बर"],today:"आज",monthsTitle:"महीने",clear:"साफ",weekStart:1,format:"dd / mm / yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.he.min.js METASEP
!function(a){a.fn.datepicker.dates.he={days:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת","ראשון"],daysShort:["א","ב","ג","ד","ה","ו","ש","א"],daysMin:["א","ב","ג","ד","ה","ו","ש","א"],months:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],monthsShort:["ינו","פבר","מרץ","אפר","מאי","יונ","יול","אוג","ספט","אוק","נוב","דצמ"],today:"היום",rtl:!0}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.gl.min.js METASEP
!function(a){a.fn.datepicker.dates.gl={days:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"],daysShort:["Dom","Lun","Mar","Mér","Xov","Ven","Sáb"],daysMin:["Do","Lu","Ma","Me","Xo","Ve","Sa"],months:["Xaneiro","Febreiro","Marzo","Abril","Maio","Xuño","Xullo","Agosto","Setembro","Outubro","Novembro","Decembro"],monthsShort:["Xan","Feb","Mar","Abr","Mai","Xun","Xul","Ago","Sep","Out","Nov","Dec"],today:"Hoxe",clear:"Limpar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.fr.min.js METASEP
!function(a){a.fn.datepicker.dates.fr={days:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],daysShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],daysMin:["d","l","ma","me","j","v","s"],months:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthsShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],today:"Aujourd'hui",monthsTitle:"Mois",clear:"Effacer",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.fr-CH.min.js METASEP
!function(a){a.fn.datepicker.dates.fr={days:["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],daysShort:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],daysMin:["D","L","Ma","Me","J","V","S"],months:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],monthsShort:["Jan","Fév","Mar","Avr","Mai","Jui","Jul","Aou","Sep","Oct","Nov","Déc"],today:"Aujourd'hui",monthsTitle:"Mois",clear:"Effacer",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.fo.min.js METASEP
!function(a){a.fn.datepicker.dates.fo={days:["Sunnudagur","Mánadagur","Týsdagur","Mikudagur","Hósdagur","Fríggjadagur","Leygardagur"],daysShort:["Sun","Mán","Týs","Mik","Hós","Frí","Ley"],daysMin:["Su","Má","Tý","Mi","Hó","Fr","Le"],months:["Januar","Februar","Marts","Apríl","Mei","Juni","Juli","August","Septembur","Oktobur","Novembur","Desembur"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],today:"Í Dag",clear:"Reinsa"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.fi.min.js METASEP
!function(a){a.fn.datepicker.dates.fi={days:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],daysShort:["sun","maa","tii","kes","tor","per","lau"],daysMin:["su","ma","ti","ke","to","pe","la"],months:["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],monthsShort:["tam","hel","maa","huh","tou","kes","hei","elo","syy","lok","mar","jou"],today:"tänään",clear:"Tyhjennä",weekStart:1,format:"d.m.yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.fa.min.js METASEP
!function(a){a.fn.datepicker.dates.fa={days:["یک‌شنبه","دوشنبه","سه‌شنبه","چهارشنبه","پنج‌شنبه","جمعه","شنبه","یک‌شنبه"],daysShort:["یک","دو","سه","چهار","پنج","جمعه","شنبه","یک"],daysMin:["ی","د","س","چ","پ","ج","ش","ی"],months:["ژانویه","فوریه","مارس","آوریل","مه","ژوئن","ژوئیه","اوت","سپتامبر","اکتبر","نوامبر","دسامبر"],monthsShort:["ژان","فور","مار","آور","مه","ژون","ژوی","اوت","سپت","اکت","نوا","دسا"],today:"امروز",clear:"پاک کن",weekStart:1,format:"yyyy/mm/dd"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.eu.min.js METASEP
!function(a){a.fn.datepicker.dates.eu={days:["Igandea","Astelehena","Asteartea","Asteazkena","Osteguna","Ostirala","Larunbata"],daysShort:["Ig","Al","Ar","Az","Og","Ol","Lr"],daysMin:["Ig","Al","Ar","Az","Og","Ol","Lr"],months:["Urtarrila","Otsaila","Martxoa","Apirila","Maiatza","Ekaina","Uztaila","Abuztua","Iraila","Urria","Azaroa","Abendua"],monthsShort:["Urt","Ots","Mar","Api","Mai","Eka","Uzt","Abu","Ira","Urr","Aza","Abe"],today:"Gaur",monthsTitle:"Hilabeteak",clear:"Ezabatu",weekStart:1,format:"yyyy/mm/dd"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.et.min.js METASEP
!function(a){a.fn.datepicker.dates.et={days:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev"],daysShort:["Pühap","Esmasp","Teisip","Kolmap","Neljap","Reede","Laup"],daysMin:["P","E","T","K","N","R","L"],months:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],monthsShort:["Jaan","Veebr","Märts","Apr","Mai","Juuni","Juuli","Aug","Sept","Okt","Nov","Dets"],today:"Täna",clear:"Tühjenda",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.es.min.js METASEP
!function(a){a.fn.datepicker.dates.es={days:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"],daysShort:["Dom","Lun","Mar","Mié","Jue","Vie","Sáb"],daysMin:["Do","Lu","Ma","Mi","Ju","Vi","Sa"],months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],monthsShort:["Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"],today:"Hoy",monthsTitle:"Meses",clear:"Borrar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.eo.min.js METASEP
!function(a){a.fn.datepicker.dates.eo={days:["dimanĉo","lundo","mardo","merkredo","ĵaŭdo","vendredo","sabato"],daysShort:["dim.","lun.","mar.","mer.","ĵaŭ.","ven.","sam."],daysMin:["d","l","ma","me","ĵ","v","s"],months:["januaro","februaro","marto","aprilo","majo","junio","julio","aŭgusto","septembro","oktobro","novembro","decembro"],monthsShort:["jan.","feb.","mar.","apr.","majo","jun.","jul.","aŭg.","sep.","okt.","nov.","dec."],today:"Hodiaŭ",clear:"Nuligi",weekStart:1,format:"yyyy-mm-dd"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.en-ZA.min.js METASEP
!function(a){a.fn.datepicker.dates["en-ZA"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"yyyy/mm/d"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.en-NZ.min.js METASEP
!function(a){a.fn.datepicker.dates["en-NZ"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"d/mm/yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.en-IE.min.js METASEP
!function(a){a.fn.datepicker.dates["en-IE"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.en-GB.min.js METASEP
!function(a){a.fn.datepicker.dates["en-GB"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.en-CA.min.js METASEP
!function(a){a.fn.datepicker.dates["en-CA"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:0,format:"yyyy-mm-dd"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.en-AU.min.js METASEP
!function(a){a.fn.datepicker.dates["en-AU"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"d/mm/yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.el.min.js METASEP
!function(a){a.fn.datepicker.dates.el={days:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],daysShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],daysMin:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σα"],months:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthsShort:["Ιαν","Φεβ","Μαρ","Απρ","Μάι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],today:"Σήμερα",clear:"Καθαρισμός",weekStart:1,format:"d/m/yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.de.min.js METASEP
!function(a){a.fn.datepicker.dates.de={days:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],daysShort:["Son","Mon","Die","Mit","Don","Fre","Sam"],daysMin:["So","Mo","Di","Mi","Do","Fr","Sa"],months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthsShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],today:"Heute",monthsTitle:"Monate",clear:"Löschen",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.da.min.js METASEP
!function(a){a.fn.datepicker.dates.da={days:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],daysShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],daysMin:["Sø","Ma","Ti","On","To","Fr","Lø"],months:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],today:"I Dag",weekStart:1,clear:"Nulstil",format:"dd/mm/yyyy",monthsTitle:"Måneder"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.cy.min.js METASEP
!function(a){a.fn.datepicker.dates.cy={days:["Sul","Llun","Mawrth","Mercher","Iau","Gwener","Sadwrn"],daysShort:["Sul","Llu","Maw","Mer","Iau","Gwe","Sad"],daysMin:["Su","Ll","Ma","Me","Ia","Gwe","Sa"],months:["Ionawr","Chewfror","Mawrth","Ebrill","Mai","Mehefin","Gorfennaf","Awst","Medi","Hydref","Tachwedd","Rhagfyr"],monthsShort:["Ion","Chw","Maw","Ebr","Mai","Meh","Gor","Aws","Med","Hyd","Tach","Rha"],today:"Heddiw"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.cs.min.js METASEP
!function(a){a.fn.datepicker.dates.cs={days:["Neděle","Pondělí","Úterý","Středa","Čtvrtek","Pátek","Sobota"],daysShort:["Ned","Pon","Úte","Stř","Čtv","Pát","Sob"],daysMin:["Ne","Po","Út","St","Čt","Pá","So"],months:["Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec"],monthsShort:["Led","Úno","Bře","Dub","Kvě","Čer","Čnc","Srp","Zář","Říj","Lis","Pro"],today:"Dnes",clear:"Vymazat",monthsTitle:"Měsíc",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.ca.min.js METASEP
!function(a){a.fn.datepicker.dates.ca={days:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"],daysShort:["Diu","Dil","Dmt","Dmc","Dij","Div","Dis"],daysMin:["dg","dl","dt","dc","dj","dv","ds"],months:["Gener","Febrer","Març","Abril","Maig","Juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"],monthsShort:["Gen","Feb","Mar","Abr","Mai","Jun","Jul","Ago","Set","Oct","Nov","Des"],today:"Avui",monthsTitle:"Mesos",clear:"Esborrar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.bs.min.js METASEP
!function(a){a.fn.datepicker.dates.bs={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],daysMin:["N","Po","U","Sr","Č","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Juni","Juli","August","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.br.min.js METASEP
!function(a){a.fn.datepicker.dates.br={days:["Sul","Lun","Meurzh","Merc'her","Yaou","Gwener","Sadorn"],daysShort:["Sul","Lun","Meu.","Mer.","Yao.","Gwe.","Sad."],daysMin:["Su","L","Meu","Mer","Y","G","Sa"],months:["Genver","C'hwevrer","Meurzh","Ebrel","Mae","Mezheven","Gouere","Eost","Gwengolo","Here","Du","Kerzu"],monthsShort:["Genv.","C'hw.","Meur.","Ebre.","Mae","Mezh.","Goue.","Eost","Gwen.","Here","Du","Kerz."],today:"Hiziv",monthsTitle:"Miz",clear:"Dilemel",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.bn.min.js METASEP
!function(a){a.fn.datepicker.dates.bn={days:["রবিবার","সোমবার","মঙ্গলবার","বুধবার","বৃহস্পতিবার","শুক্রবার","শনিবার"],daysShort:["রবিবার","সোমবার","মঙ্গলবার","বুধবার","বৃহস্পতিবার","শুক্রবার","শনিবার"],daysMin:["রবি","সোম","মঙ্গল","বুধ","বৃহস্পতি","শুক্র","শনি"],months:["জানুয়ারী","ফেব্রুয়ারি","মার্চ","এপ্রিল","মে","জুন","জুলাই","অগাস্ট","সেপ্টেম্বর","অক্টোবর","নভেম্বর","ডিসেম্বর"],monthsShort:["জানুয়ারী","ফেব্রুয়ারি","মার্চ","এপ্রিল","মে","জুন","জুলাই","অগাস্ট","সেপ্টেম্বর","অক্টোবর","নভেম্বর","ডিসেম্বর"],today:"আজ",monthsTitle:"মাস",clear:"পরিষ্কার",weekStart:0,format:"mm/dd/yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.bm.min.js METASEP
!function(a){a.fn.datepicker.dates.bm={days:["Kari","Ntɛnɛn","Tarata","Araba","Alamisa","Juma","Sibiri"],daysShort:["Kar","Ntɛ","Tar","Ara","Ala","Jum","Sib"],daysMin:["Ka","Nt","Ta","Ar","Al","Ju","Si"],months:["Zanwuyekalo","Fewuruyekalo","Marisikalo","Awirilikalo","Mɛkalo","Zuwɛnkalo","Zuluyekalo","Utikalo","Sɛtanburukalo","ɔkutɔburukalo","Nowanburukalo","Desanburukalo"],monthsShort:["Zan","Few","Mar","Awi","Mɛ","Zuw","Zul","Uti","Sɛt","ɔku","Now","Des"],today:"Bi",monthsTitle:"Kalo",clear:"Ka jɔsi",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.bg.min.js METASEP
!function(a){a.fn.datepicker.dates.bg={days:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"],daysShort:["Нед","Пон","Вто","Сря","Чет","Пет","Съб"],daysMin:["Н","П","В","С","Ч","П","С"],months:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],monthsShort:["Ян","Фев","Мар","Апр","Май","Юни","Юли","Авг","Сеп","Окт","Ное","Дек"],today:"днес"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.az.min.js METASEP
!function(a){a.fn.datepicker.dates.az={days:["Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə"],daysShort:["B.","B.e","Ç.a","Ç.","C.a","C.","Ş."],daysMin:["B.","B.e","Ç.a","Ç.","C.a","C.","Ş."],months:["Yanvar","Fevral","Mart","Aprel","May","İyun","İyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"],monthsShort:["Yan","Fev","Mar","Apr","May","İyun","İyul","Avq","Sen","Okt","Noy","Dek"],today:"Bu gün",weekStart:1,clear:"Təmizlə",monthsTitle:"Aylar"}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.ar.min.js METASEP
!function(a){a.fn.datepicker.dates.ar={days:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت","الأحد"],daysShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت","أحد"],daysMin:["ح","ن","ث","ع","خ","ج","س","ح"],months:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthsShort:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],today:"هذا اليوم",rtl:!0}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.ar-tn.min.js METASEP
!function(a){a.fn.datepicker.dates["ar-tn"]={days:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت","الأحد"],daysShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت","أحد"],daysMin:["ح","ن","ث","ع","خ","ج","س","ح"],months:["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويليه","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthsShort:["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويليه","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],today:"هذا اليوم",rtl:!0}}(jQuery);
shiny/www/shared/datepicker/js/locales/bootstrap-datepicker-en-CA.min.js METASEP
!function(a){a.fn.datepicker.dates["en-CA"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:0,format:"yyyy-mm-dd"},a.fn.datepicker.deprecated("This filename doesn't follow the convention, use bootstrap-datepicker.en-CA.js instead.")}(jQuery);
shiny/www/shared/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.woff2 METASEP

shiny/www/shared/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.woff METASEP

shiny/www/shared/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.ttf METASEP

shiny/www/shared/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.svg METASEP
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata></metadata>
<defs>
<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
<font-face units-per-em="1200" ascent="960" descent="-240" />
<missing-glyph horiz-adv-x="500" />
<glyph horiz-adv-x="0" />
<glyph horiz-adv-x="400" />
<glyph unicode=" " />
<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" />
<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xa0;" />
<glyph unicode="&#xa5;" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" />
<glyph unicode="&#x2000;" horiz-adv-x="650" />
<glyph unicode="&#x2001;" horiz-adv-x="1300" />
<glyph unicode="&#x2002;" horiz-adv-x="650" />
<glyph unicode="&#x2003;" horiz-adv-x="1300" />
<glyph unicode="&#x2004;" horiz-adv-x="433" />
<glyph unicode="&#x2005;" horiz-adv-x="325" />
<glyph unicode="&#x2006;" horiz-adv-x="216" />
<glyph unicode="&#x2007;" horiz-adv-x="216" />
<glyph unicode="&#x2008;" horiz-adv-x="162" />
<glyph unicode="&#x2009;" horiz-adv-x="260" />
<glyph unicode="&#x200a;" horiz-adv-x="72" />
<glyph unicode="&#x202f;" horiz-adv-x="260" />
<glyph unicode="&#x205f;" horiz-adv-x="325" />
<glyph unicode="&#x20ac;" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" />
<glyph unicode="&#x20bd;" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" />
<glyph unicode="&#x2212;" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#x231b;" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" />
<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
<glyph unicode="&#x2601;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" />
<glyph unicode="&#x26fa;" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " />
<glyph unicode="&#x2709;" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" />
<glyph unicode="&#x270f;" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" />
<glyph unicode="&#xe001;" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" />
<glyph unicode="&#xe002;" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" />
<glyph unicode="&#xe003;" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" />
<glyph unicode="&#xe005;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" />
<glyph unicode="&#xe006;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" />
<glyph unicode="&#xe007;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" />
<glyph unicode="&#xe008;" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" />
<glyph unicode="&#xe009;" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" />
<glyph unicode="&#xe010;" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe011;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" />
<glyph unicode="&#xe012;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe013;" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" />
<glyph unicode="&#xe014;" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" />
<glyph unicode="&#xe015;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe016;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe017;" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" />
<glyph unicode="&#xe018;" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe019;" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" />
<glyph unicode="&#xe020;" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" />
<glyph unicode="&#xe021;" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" />
<glyph unicode="&#xe022;" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" />
<glyph unicode="&#xe023;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe024;" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" />
<glyph unicode="&#xe025;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe026;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " />
<glyph unicode="&#xe027;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" />
<glyph unicode="&#xe028;" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" />
<glyph unicode="&#xe029;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
<glyph unicode="&#xe030;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" />
<glyph unicode="&#xe031;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" />
<glyph unicode="&#xe032;" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe033;" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" />
<glyph unicode="&#xe034;" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" />
<glyph unicode="&#xe035;" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" />
<glyph unicode="&#xe036;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" />
<glyph unicode="&#xe037;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" />
<glyph unicode="&#xe038;" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" />
<glyph unicode="&#xe039;" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" />
<glyph unicode="&#xe040;" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" />
<glyph unicode="&#xe041;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
<glyph unicode="&#xe042;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
<glyph unicode="&#xe043;" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" />
<glyph unicode="&#xe044;" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe045;" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" />
<glyph unicode="&#xe046;" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" />
<glyph unicode="&#xe047;" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" />
<glyph unicode="&#xe048;" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" />
<glyph unicode="&#xe049;" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" />
<glyph unicode="&#xe050;" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" />
<glyph unicode="&#xe051;" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" />
<glyph unicode="&#xe052;" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe053;" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe054;" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" />
<glyph unicode="&#xe055;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe056;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe057;" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe058;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe059;" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" />
<glyph unicode="&#xe060;" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" />
<glyph unicode="&#xe062;" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" />
<glyph unicode="&#xe063;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" />
<glyph unicode="&#xe064;" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" />
<glyph unicode="&#xe065;" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" />
<glyph unicode="&#xe066;" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" />
<glyph unicode="&#xe067;" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" />
<glyph unicode="&#xe068;" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" />
<glyph unicode="&#xe069;" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe070;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe071;" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" />
<glyph unicode="&#xe072;" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" />
<glyph unicode="&#xe073;" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe074;" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" />
<glyph unicode="&#xe075;" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" />
<glyph unicode="&#xe076;" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe077;" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe078;" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe079;" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" />
<glyph unicode="&#xe080;" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" />
<glyph unicode="&#xe081;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" />
<glyph unicode="&#xe082;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" />
<glyph unicode="&#xe083;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" />
<glyph unicode="&#xe084;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" />
<glyph unicode="&#xe085;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
<glyph unicode="&#xe086;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" />
<glyph unicode="&#xe087;" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" />
<glyph unicode="&#xe088;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" />
<glyph unicode="&#xe089;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" />
<glyph unicode="&#xe090;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" />
<glyph unicode="&#xe091;" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" />
<glyph unicode="&#xe092;" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" />
<glyph unicode="&#xe093;" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" />
<glyph unicode="&#xe094;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe095;" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" />
<glyph unicode="&#xe096;" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" />
<glyph unicode="&#xe097;" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" />
<glyph unicode="&#xe101;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
<glyph unicode="&#xe102;" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" />
<glyph unicode="&#xe103;" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" />
<glyph unicode="&#xe104;" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" />
<glyph unicode="&#xe105;" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
<glyph unicode="&#xe106;" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
<glyph unicode="&#xe107;" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" />
<glyph unicode="&#xe108;" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" />
<glyph unicode="&#xe109;" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" />
<glyph unicode="&#xe110;" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" />
<glyph unicode="&#xe111;" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
<glyph unicode="&#xe112;" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" />
<glyph unicode="&#xe113;" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" />
<glyph unicode="&#xe114;" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" />
<glyph unicode="&#xe115;" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
<glyph unicode="&#xe116;" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" />
<glyph unicode="&#xe117;" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
<glyph unicode="&#xe118;" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" />
<glyph unicode="&#xe119;" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
<glyph unicode="&#xe120;" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" />
<glyph unicode="&#xe121;" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" />
<glyph unicode="&#xe122;" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" />
<glyph unicode="&#xe123;" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" />
<glyph unicode="&#xe124;" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" />
<glyph unicode="&#xe125;" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe126;" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" />
<glyph unicode="&#xe127;" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe128;" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe129;" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe130;" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" />
<glyph unicode="&#xe131;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" />
<glyph unicode="&#xe132;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" />
<glyph unicode="&#xe133;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" />
<glyph unicode="&#xe134;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" />
<glyph unicode="&#xe135;" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" />
<glyph unicode="&#xe136;" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" />
<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
<glyph unicode="&#xe138;" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" />
<glyph unicode="&#xe139;" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
<glyph unicode="&#xe140;" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" />
<glyph unicode="&#xe141;" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" />
<glyph unicode="&#xe142;" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" />
<glyph unicode="&#xe143;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" />
<glyph unicode="&#xe144;" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" />
<glyph unicode="&#xe145;" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" />
<glyph unicode="&#xe146;" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" />
<glyph unicode="&#xe148;" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" />
<glyph unicode="&#xe149;" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" />
<glyph unicode="&#xe150;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
<glyph unicode="&#xe151;" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " />
<glyph unicode="&#xe152;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " />
<glyph unicode="&#xe153;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" />
<glyph unicode="&#xe154;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" />
<glyph unicode="&#xe155;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
<glyph unicode="&#xe156;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
<glyph unicode="&#xe157;" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" />
<glyph unicode="&#xe158;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
<glyph unicode="&#xe159;" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" />
<glyph unicode="&#xe160;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" />
<glyph unicode="&#xe161;" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
<glyph unicode="&#xe162;" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" />
<glyph unicode="&#xe163;" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
<glyph unicode="&#xe164;" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" />
<glyph unicode="&#xe165;" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
<glyph unicode="&#xe166;" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
<glyph unicode="&#xe167;" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
<glyph unicode="&#xe168;" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" />
<glyph unicode="&#xe169;" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
<glyph unicode="&#xe170;" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
<glyph unicode="&#xe171;" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" />
<glyph unicode="&#xe172;" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" />
<glyph unicode="&#xe173;" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" />
<glyph unicode="&#xe174;" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" />
<glyph unicode="&#xe175;" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe176;" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" />
<glyph unicode="&#xe177;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" />
<glyph unicode="&#xe178;" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" />
<glyph unicode="&#xe179;" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" />
<glyph unicode="&#xe180;" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" />
<glyph unicode="&#xe181;" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" />
<glyph unicode="&#xe182;" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" />
<glyph unicode="&#xe183;" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" />
<glyph unicode="&#xe184;" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe185;" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " />
<glyph unicode="&#xe186;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
<glyph unicode="&#xe187;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
<glyph unicode="&#xe188;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" />
<glyph unicode="&#xe189;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" />
<glyph unicode="&#xe190;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" />
<glyph unicode="&#xe191;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" />
<glyph unicode="&#xe192;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" />
<glyph unicode="&#xe193;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" />
<glyph unicode="&#xe194;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
<glyph unicode="&#xe195;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" />
<glyph unicode="&#xe197;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe198;" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" />
<glyph unicode="&#xe199;" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" />
<glyph unicode="&#xe200;" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" />
<glyph unicode="&#xe201;" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" />
<glyph unicode="&#xe202;" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" />
<glyph unicode="&#xe203;" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" />
<glyph unicode="&#xe204;" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" />
<glyph unicode="&#xe205;" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" />
<glyph unicode="&#xe206;" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" />
<glyph unicode="&#xe209;" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" />
<glyph unicode="&#xe210;" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe211;" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe212;" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe213;" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe214;" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe215;" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe216;" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" />
<glyph unicode="&#xe218;" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" />
<glyph unicode="&#xe219;" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" />
<glyph unicode="&#xe221;" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe223;" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" />
<glyph unicode="&#xe224;" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " />
<glyph unicode="&#xe225;" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" />
<glyph unicode="&#xe226;" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" />
<glyph unicode="&#xe227;" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" />
<glyph unicode="&#xe230;" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" />
<glyph unicode="&#xe231;" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
<glyph unicode="&#xe232;" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
<glyph unicode="&#xe233;" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" />
<glyph unicode="&#xe234;" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
<glyph unicode="&#xe235;" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
<glyph unicode="&#xe236;" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe237;" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" />
<glyph unicode="&#xe238;" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe239;" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" />
<glyph unicode="&#xe240;" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" />
<glyph unicode="&#xe241;" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" />
<glyph unicode="&#xe242;" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
<glyph unicode="&#xe243;" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" />
<glyph unicode="&#xe244;" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" />
<glyph unicode="&#xe245;" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" />
<glyph unicode="&#xe246;" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" />
<glyph unicode="&#xe247;" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe248;" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" />
<glyph unicode="&#xe249;" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe250;" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" />
<glyph unicode="&#xe251;" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" />
<glyph unicode="&#xe252;" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" />
<glyph unicode="&#xe253;" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" />
<glyph unicode="&#xe254;" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" />
<glyph unicode="&#xe255;" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" />
<glyph unicode="&#xe256;" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" />
<glyph unicode="&#xe257;" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" />
<glyph unicode="&#xe258;" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" />
<glyph unicode="&#xe259;" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" />
<glyph unicode="&#xe260;" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" />
<glyph unicode="&#xf8ff;" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" />
<glyph unicode="&#x1f511;" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
<glyph unicode="&#x1f6aa;" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
</font>
</defs></svg> 
shiny/www/shared/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.eot METASEP

shiny/www/shared/showdown/src/showdown.js METASEP
//
// showdown.js -- A javascript port of Markdown.
//
// Copyright (c) 2007 John Fraser.
//
// Original Markdown Copyright (c) 2004-2005 John Gruber
//   <http://daringfireball.net/projects/markdown/>
//
// Redistributable under a BSD-style open source license.
// See license.txt for more information.
//
// The full source distribution is at:
//
//				A A L
//				T C A
//				T K B
//
//   <http://www.attacklab.net/>
//

//
// Wherever possible, Showdown is a straight, line-by-line port
// of the Perl version of Markdown.
//
// This is not a normal parser design; it's basically just a
// series of string substitutions.  It's hard to read and
// maintain this way,  but keeping Showdown close to the original
// design makes it easier to port new features.
//
// More importantly, Showdown behaves like markdown.pl in most
// edge cases.  So web applications can do client-side preview
// in Javascript, and then build identical HTML on the server.
//
// This port needs the new RegExp functionality of ECMA 262,
// 3rd Edition (i.e. Javascript 1.5).  Most modern web browsers
// should do fine.  Even with the new regular expression features,
// We do a lot of work to emulate Perl's regex functionality.
// The tricky changes in this file mostly have the "attacklab:"
// label.  Major or self-explanatory changes don't.
//
// Smart diff tools like Araxis Merge will be able to match up
// this file with markdown.pl in a useful way.  A little tweaking
// helps: in a copy of markdown.pl, replace "#" with "//" and
// replace "$text" with "text".  Be sure to ignore whitespace
// and line endings.
//


//
// Showdown usage:
//
//   var text = "Markdown *rocks*.";
//
//   var converter = new Showdown.converter();
//   var html = converter.makeHtml(text);
//
//   alert(html);
//
// Note: move the sample code to the bottom of this
// file before uncommenting it.
//


//
// Showdown namespace
//
var Showdown = { extensions: {} };

//
// forEach
//
var forEach = Showdown.forEach = function(obj, callback) {
	if (typeof obj.forEach === 'function') {
		obj.forEach(callback);
	} else {
		var i, len = obj.length;
		for (i = 0; i < len; i++) {
			callback(obj[i], i, obj);
		}
	}
};

//
// Standard extension naming
//
var stdExtName = function(s) {
	return s.replace(/[_-]||\s/g, '').toLowerCase();
};

//
// converter
//
// Wraps all "globals" so that the only thing
// exposed is makeHtml().
//
Showdown.converter = function(converter_options) {

//
// Globals:
//

// Global hashes, used by various utility routines
var g_urls;
var g_titles;
var g_html_blocks;

// Used to track when we're inside an ordered or unordered list
// (see _ProcessListItems() for details):
var g_list_level = 0;

// Global extensions
var g_lang_extensions = [];
var g_output_modifiers = [];


//
// Automatic Extension Loading (node only):
//

if (typeof module !== 'undefind' && typeof exports !== 'undefined' && typeof require !== 'undefind') {
	var fs = require('fs');

	if (fs) {
		// Search extensions folder
		var extensions = fs.readdirSync((__dirname || '.')+'/extensions').filter(function(file){
			return ~file.indexOf('.js');
		}).map(function(file){
			return file.replace(/\.js$/, '');
		});
		// Load extensions into Showdown namespace
		Showdown.forEach(extensions, function(ext){
			var name = stdExtName(ext);
			Showdown.extensions[name] = require('./extensions/' + ext);
		});
	}
}

this.makeHtml = function(text) {
//
// Main function. The order in which other subs are called here is
// essential. Link and image substitutions need to happen before
// _EscapeSpecialCharsWithinTagAttributes(), so that any *'s or _'s in the <a>
// and <img> tags get encoded.
//

	// Clear the global hashes. If we don't clear these, you get conflicts
	// from other articles when generating a page which contains more than
	// one article (e.g. an index page that shows the N most recent
	// articles):
	g_urls = {};
	g_titles = {};
	g_html_blocks = [];

	// attacklab: Replace ~ with ~T
	// This lets us use tilde as an escape char to avoid md5 hashes
	// The choice of character is arbitray; anything that isn't
	// magic in Markdown will work.
	text = text.replace(/~/g,"~T");

	// attacklab: Replace $ with ~D
	// RegExp interprets $ as a special character
	// when it's in a replacement string
	text = text.replace(/\$/g,"~D");

	// Standardize line endings
	text = text.replace(/\r\n/g,"\n"); // DOS to Unix
	text = text.replace(/\r/g,"\n"); // Mac to Unix

	// Make sure text begins and ends with a couple of newlines:
	text = "\n\n" + text + "\n\n";

	// Convert all tabs to spaces.
	text = _Detab(text);

	// Strip any lines consisting only of spaces and tabs.
	// This makes subsequent regexen easier to write, because we can
	// match consecutive blank lines with /\n+/ instead of something
	// contorted like /[ \t]*\n+/ .
	text = text.replace(/^[ \t]+$/mg,"");

	// Run language extensions
	Showdown.forEach(g_lang_extensions, function(x){
		text = _ExecuteExtension(x, text);
	});

	// Handle github codeblocks prior to running HashHTML so that
	// HTML contained within the codeblock gets escaped propertly
	text = _DoGithubCodeBlocks(text);

	// Turn block-level HTML blocks into hash entries
	text = _HashHTMLBlocks(text);

	// Strip link definitions, store in hashes.
	text = _StripLinkDefinitions(text);

	text = _RunBlockGamut(text);

	text = _UnescapeSpecialChars(text);

	// attacklab: Restore dollar signs
	text = text.replace(/~D/g,"$$");

	// attacklab: Restore tildes
	text = text.replace(/~T/g,"~");

	// Run output modifiers
	Showdown.forEach(g_output_modifiers, function(x){
		text = _ExecuteExtension(x, text);
	});

	return text;
};
//
// Options:
//

// Parse extensions options into separate arrays
if (converter_options && converter_options.extensions) {

  var self = this;

	// Iterate over each plugin
	Showdown.forEach(converter_options.extensions, function(plugin){

		// Assume it's a bundled plugin if a string is given
		if (typeof plugin === 'string') {
			plugin = Showdown.extensions[stdExtName(plugin)];
		}

		if (typeof plugin === 'function') {
			// Iterate over each extension within that plugin
			Showdown.forEach(plugin(self), function(ext){
				// Sort extensions by type
				if (ext.type) {
					if (ext.type === 'language' || ext.type === 'lang') {
						g_lang_extensions.push(ext);
					} else if (ext.type === 'output' || ext.type === 'html') {
						g_output_modifiers.push(ext);
					}
				} else {
					// Assume language extension
					g_output_modifiers.push(ext);
				}
			});
		} else {
			throw "Extension '" + plugin + "' could not be loaded.  It was either not found or is not a valid extension.";
		}
	});
}


var _ExecuteExtension = function(ext, text) {
	if (ext.regex) {
		var re = new RegExp(ext.regex, 'g');
		return text.replace(re, ext.replace);
	} else if (ext.filter) {
		return ext.filter(text);
	}
};

var _StripLinkDefinitions = function(text) {
//
// Strips link definitions from text, stores the URLs and titles in
// hash references.
//

	// Link defs are in the form: ^[id]: url "optional title"

	/*
		var text = text.replace(/
				^[ ]{0,3}\[(.+)\]:  // id = $1  attacklab: g_tab_width - 1
				  [ \t]*
				  \n?				// maybe *one* newline
				  [ \t]*
				<?(\S+?)>?			// url = $2
				  [ \t]*
				  \n?				// maybe one newline
				  [ \t]*
				(?:
				  (\n*)				// any lines skipped = $3 attacklab: lookbehind removed
				  ["(]
				  (.+?)				// title = $4
				  [")]
				  [ \t]*
				)?					// title is optional
				(?:\n+|$)
			  /gm,
			  function(){...});
	*/

	// attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug
	text += "~0";

	text = text.replace(/^[ ]{0,3}\[(.+)\]:[ \t]*\n?[ \t]*<?(\S+?)>?[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|(?=~0))/gm,
		function (wholeMatch,m1,m2,m3,m4) {
			m1 = m1.toLowerCase();
			g_urls[m1] = _EncodeAmpsAndAngles(m2);  // Link IDs are case-insensitive
			if (m3) {
				// Oops, found blank lines, so it's not a title.
				// Put back the parenthetical statement we stole.
				return m3+m4;
			} else if (m4) {
				g_titles[m1] = m4.replace(/"/g,"&quot;");
			}

			// Completely remove the definition from the text
			return "";
		}
	);

	// attacklab: strip sentinel
	text = text.replace(/~0/,"");

	return text;
}


var _HashHTMLBlocks = function(text) {
	// attacklab: Double up blank lines to reduce lookaround
	text = text.replace(/\n/g,"\n\n");

	// Hashify HTML blocks:
	// We only want to do this for block-level HTML tags, such as headers,
	// lists, and tables. That's because we still want to wrap <p>s around
	// "paragraphs" that are wrapped in non-block-level tags, such as anchors,
	// phrase emphasis, and spans. The list of tags we're looking for is
	// hard-coded:
	var block_tags_a = "p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del|style|section|header|footer|nav|article|aside";
	var block_tags_b = "p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|style|section|header|footer|nav|article|aside";

	// First, look for nested blocks, e.g.:
	//   <div>
	//     <div>
	//     tags for inner block must be indented.
	//     </div>
	//   </div>
	//
	// The outermost tags must start at the left margin for this to match, and
	// the inner nested divs must be indented.
	// We need to do this before the next, more liberal match, because the next
	// match will start at the first `<div>` and stop at the first `</div>`.

	// attacklab: This regex can be expensive when it fails.
	/*
		var text = text.replace(/
		(						// save in $1
			^					// start of line  (with /m)
			<($block_tags_a)	// start tag = $2
			\b					// word break
								// attacklab: hack around khtml/pcre bug...
			[^\r]*?\n			// any number of lines, minimally matching
			</\2>				// the matching end tag
			[ \t]*				// trailing spaces/tabs
			(?=\n+)				// followed by a newline
		)						// attacklab: there are sentinel newlines at end of document
		/gm,function(){...}};
	*/
	text = text.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\b[^\r]*?\n<\/\2>[ \t]*(?=\n+))/gm,hashElement);

	//
	// Now match more liberally, simply from `\n<tag>` to `</tag>\n`
	//

	/*
		var text = text.replace(/
		(						// save in $1
			^					// start of line  (with /m)
			<($block_tags_b)	// start tag = $2
			\b					// word break
								// attacklab: hack around khtml/pcre bug...
			[^\r]*?				// any number of lines, minimally matching
			</\2>				// the matching end tag
			[ \t]*				// trailing spaces/tabs
			(?=\n+)				// followed by a newline
		)						// attacklab: there are sentinel newlines at end of document
		/gm,function(){...}};
	*/
	text = text.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|style|section|header|footer|nav|article|aside)\b[^\r]*?<\/\2>[ \t]*(?=\n+)\n)/gm,hashElement);

	// Special case just for <hr />. It was easier to make a special case than
	// to make the other regex more complicated.

	/*
		text = text.replace(/
		(						// save in $1
			\n\n				// Starting after a blank line
			[ ]{0,3}
			(<(hr)				// start tag = $2
			\b					// word break
			([^<>])*?			//
			\/?>)				// the matching end tag
			[ \t]*
			(?=\n{2,})			// followed by a blank line
		)
		/g,hashElement);
	*/
	text = text.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,hashElement);

	// Special case for standalone HTML comments:

	/*
		text = text.replace(/
		(						// save in $1
			\n\n				// Starting after a blank line
			[ ]{0,3}			// attacklab: g_tab_width - 1
			<!
			(--[^\r]*?--\s*)+
			>
			[ \t]*
			(?=\n{2,})			// followed by a blank line
		)
		/g,hashElement);
	*/
	text = text.replace(/(\n\n[ ]{0,3}<!(--[^\r]*?--\s*)+>[ \t]*(?=\n{2,}))/g,hashElement);

	// PHP and ASP-style processor instructions (<?...?> and <%...%>)

	/*
		text = text.replace(/
		(?:
			\n\n				// Starting after a blank line
		)
		(						// save in $1
			[ ]{0,3}			// attacklab: g_tab_width - 1
			(?:
				<([?%])			// $2
				[^\r]*?
				\2>
			)
			[ \t]*
			(?=\n{2,})			// followed by a blank line
		)
		/g,hashElement);
	*/
	text = text.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,hashElement);

	// attacklab: Undo double lines (see comment at top of this function)
	text = text.replace(/\n\n/g,"\n");
	return text;
}

var hashElement = function(wholeMatch,m1) {
	var blockText = m1;

	// Undo double lines
	blockText = blockText.replace(/\n\n/g,"\n");
	blockText = blockText.replace(/^\n/,"");

	// strip trailing blank lines
	blockText = blockText.replace(/\n+$/g,"");

	// Replace the element text with a marker ("~KxK" where x is its key)
	blockText = "\n\n~K" + (g_html_blocks.push(blockText)-1) + "K\n\n";

	return blockText;
};

var _RunBlockGamut = function(text) {
//
// These are all the transformations that form block-level
// tags like paragraphs, headers, and list items.
//
	text = _DoHeaders(text);

	// Do Horizontal Rules:
	var key = hashBlock("<hr />");
	text = text.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm,key);
	text = text.replace(/^[ ]{0,2}([ ]?\-[ ]?){3,}[ \t]*$/gm,key);
	text = text.replace(/^[ ]{0,2}([ ]?\_[ ]?){3,}[ \t]*$/gm,key);

	text = _DoLists(text);
	text = _DoCodeBlocks(text);
	text = _DoBlockQuotes(text);

	// We already ran _HashHTMLBlocks() before, in Markdown(), but that
	// was to escape raw HTML in the original Markdown source. This time,
	// we're escaping the markup we've just created, so that we don't wrap
	// <p> tags around block-level tags.
	text = _HashHTMLBlocks(text);
	text = _FormParagraphs(text);

	return text;
};


var _RunSpanGamut = function(text) {
//
// These are all the transformations that occur *within* block-level
// tags like paragraphs, headers, and list items.
//

	text = _DoCodeSpans(text);
	text = _EscapeSpecialCharsWithinTagAttributes(text);
	text = _EncodeBackslashEscapes(text);

	// Process anchor and image tags. Images must come first,
	// because ![foo][f] looks like an anchor.
	text = _DoImages(text);
	text = _DoAnchors(text);

	// Make links out of things like `<http://example.com/>`
	// Must come after _DoAnchors(), because you can use < and >
	// delimiters in inline links like [this](<url>).
	text = _DoAutoLinks(text);
	text = _EncodeAmpsAndAngles(text);
	text = _DoItalicsAndBold(text);

	// Do hard breaks:
	text = text.replace(/  +\n/g," <br />\n");

	return text;
}

var _EscapeSpecialCharsWithinTagAttributes = function(text) {
//
// Within tags -- meaning between < and > -- encode [\ ` * _] so they
// don't conflict with their use in Markdown for code, italics and strong.
//

	// Build a regex to find HTML tags and comments.  See Friedl's
	// "Mastering Regular Expressions", 2nd Ed., pp. 200-201.
	var regex = /(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|<!(--.*?--\s*)+>)/gi;

	text = text.replace(regex, function(wholeMatch) {
		var tag = wholeMatch.replace(/(.)<\/?code>(?=.)/g,"$1`");
		tag = escapeCharacters(tag,"\\`*_");
		return tag;
	});

	return text;
}

var _DoAnchors = function(text) {
//
// Turn Markdown link shortcuts into XHTML <a> tags.
//
	//
	// First, handle reference-style links: [link text] [id]
	//

	/*
		text = text.replace(/
		(							// wrap whole match in $1
			\[
			(
				(?:
					\[[^\]]*\]		// allow brackets nested one level
					|
					[^\[]			// or anything else
				)*
			)
			\]

			[ ]?					// one optional space
			(?:\n[ ]*)?				// one optional newline followed by spaces

			\[
			(.*?)					// id = $3
			\]
		)()()()()					// pad remaining backreferences
		/g,_DoAnchors_callback);
	*/
	text = text.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,writeAnchorTag);

	//
	// Next, inline-style links: [link text](url "optional title")
	//

	/*
		text = text.replace(/
			(						// wrap whole match in $1
				\[
				(
					(?:
						\[[^\]]*\]	// allow brackets nested one level
					|
					[^\[\]]			// or anything else
				)
			)
			\]
			\(						// literal paren
			[ \t]*
			()						// no id, so leave $3 empty
			<?(.*?)>?				// href = $4
			[ \t]*
			(						// $5
				(['"])				// quote char = $6
				(.*?)				// Title = $7
				\6					// matching quote
				[ \t]*				// ignore any spaces/tabs between closing quote and )
			)?						// title is optional
			\)
		)
		/g,writeAnchorTag);
	*/
	text = text.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()<?(.*?(?:\(.*?\).*?)?)>?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,writeAnchorTag);

	//
	// Last, handle reference-style shortcuts: [link text]
	// These must come last in case you've also got [link test][1]
	// or [link test](/foo)
	//

	/*
		text = text.replace(/
		(		 					// wrap whole match in $1
			\[
			([^\[\]]+)				// link text = $2; can't contain '[' or ']'
			\]
		)()()()()()					// pad rest of backreferences
		/g, writeAnchorTag);
	*/
	text = text.replace(/(\[([^\[\]]+)\])()()()()()/g, writeAnchorTag);

	return text;
}

var writeAnchorTag = function(wholeMatch,m1,m2,m3,m4,m5,m6,m7) {
	if (m7 == undefined) m7 = "";
	var whole_match = m1;
	var link_text   = m2;
	var link_id	 = m3.toLowerCase();
	var url		= m4;
	var title	= m7;

	if (url == "") {
		if (link_id == "") {
			// lower-case and turn embedded newlines into spaces
			link_id = link_text.toLowerCase().replace(/ ?\n/g," ");
		}
		url = "#"+link_id;

		if (g_urls[link_id] != undefined) {
			url = g_urls[link_id];
			if (g_titles[link_id] != undefined) {
				title = g_titles[link_id];
			}
		}
		else {
			if (whole_match.search(/\(\s*\)$/m)>-1) {
				// Special case for explicit empty url
				url = "";
			} else {
				return whole_match;
			}
		}
	}

	url = escapeCharacters(url,"*_");
	var result = "<a href=\"" + url + "\"";

	if (title != "") {
		title = title.replace(/"/g,"&quot;");
		title = escapeCharacters(title,"*_");
		result +=  " title=\"" + title + "\"";
	}

	result += ">" + link_text + "</a>";

	return result;
}


var _DoImages = function(text) {
//
// Turn Markdown image shortcuts into <img> tags.
//

	//
	// First, handle reference-style labeled images: ![alt text][id]
	//

	/*
		text = text.replace(/
		(						// wrap whole match in $1
			!\[
			(.*?)				// alt text = $2
			\]

			[ ]?				// one optional space
			(?:\n[ ]*)?			// one optional newline followed by spaces

			\[
			(.*?)				// id = $3
			\]
		)()()()()				// pad rest of backreferences
		/g,writeImageTag);
	*/
	text = text.replace(/(!\[(.*?)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,writeImageTag);

	//
	// Next, handle inline images:  ![alt text](url "optional title")
	// Don't forget: encode * and _

	/*
		text = text.replace(/
		(						// wrap whole match in $1
			!\[
			(.*?)				// alt text = $2
			\]
			\s?					// One optional whitespace character
			\(					// literal paren
			[ \t]*
			()					// no id, so leave $3 empty
			<?(\S+?)>?			// src url = $4
			[ \t]*
			(					// $5
				(['"])			// quote char = $6
				(.*?)			// title = $7
				\6				// matching quote
				[ \t]*
			)?					// title is optional
		\)
		)
		/g,writeImageTag);
	*/
	text = text.replace(/(!\[(.*?)\]\s?\([ \t]*()<?(\S+?)>?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,writeImageTag);

	return text;
}

var writeImageTag = function(wholeMatch,m1,m2,m3,m4,m5,m6,m7) {
	var whole_match = m1;
	var alt_text   = m2;
	var link_id	 = m3.toLowerCase();
	var url		= m4;
	var title	= m7;

	if (!title) title = "";

	if (url == "") {
		if (link_id == "") {
			// lower-case and turn embedded newlines into spaces
			link_id = alt_text.toLowerCase().replace(/ ?\n/g," ");
		}
		url = "#"+link_id;

		if (g_urls[link_id] != undefined) {
			url = g_urls[link_id];
			if (g_titles[link_id] != undefined) {
				title = g_titles[link_id];
			}
		}
		else {
			return whole_match;
		}
	}

	alt_text = alt_text.replace(/"/g,"&quot;");
	url = escapeCharacters(url,"*_");
	var result = "<img src=\"" + url + "\" alt=\"" + alt_text + "\"";

	// attacklab: Markdown.pl adds empty title attributes to images.
	// Replicate this bug.

	//if (title != "") {
		title = title.replace(/"/g,"&quot;");
		title = escapeCharacters(title,"*_");
		result +=  " title=\"" + title + "\"";
	//}

	result += " />";

	return result;
}


var _DoHeaders = function(text) {

	// Setext-style headers:
	//	Header 1
	//	========
	//
	//	Header 2
	//	--------
	//
	text = text.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm,
		function(wholeMatch,m1){return hashBlock('<h1 id="' + headerId(m1) + '">' + _RunSpanGamut(m1) + "</h1>");});

	text = text.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,
		function(matchFound,m1){return hashBlock('<h2 id="' + headerId(m1) + '">' + _RunSpanGamut(m1) + "</h2>");});

	// atx-style headers:
	//  # Header 1
	//  ## Header 2
	//  ## Header 2 with closing hashes ##
	//  ...
	//  ###### Header 6
	//

	/*
		text = text.replace(/
			^(\#{1,6})				// $1 = string of #'s
			[ \t]*
			(.+?)					// $2 = Header text
			[ \t]*
			\#*						// optional closing #'s (not counted)
			\n+
		/gm, function() {...});
	*/

	text = text.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm,
		function(wholeMatch,m1,m2) {
			var h_level = m1.length;
			return hashBlock("<h" + h_level + ' id="' + headerId(m2) + '">' + _RunSpanGamut(m2) + "</h" + h_level + ">");
		});

	function headerId(m) {
		return m.replace(/[^\w]/g, '').toLowerCase();
	}
	return text;
}

// This declaration keeps Dojo compressor from outputting garbage:
var _ProcessListItems;

var _DoLists = function(text) {
//
// Form HTML ordered (numbered) and unordered (bulleted) lists.
//

	// attacklab: add sentinel to hack around khtml/safari bug:
	// http://bugs.webkit.org/show_bug.cgi?id=11231
	text += "~0";

	// Re-usable pattern to match any entirel ul or ol list:

	/*
		var whole_list = /
		(									// $1 = whole list
			(								// $2
				[ ]{0,3}					// attacklab: g_tab_width - 1
				([*+-]|\d+[.])				// $3 = first list item marker
				[ \t]+
			)
			[^\r]+?
			(								// $4
				~0							// sentinel for workaround; should be $
			|
				\n{2,}
				(?=\S)
				(?!							// Negative lookahead for another list item marker
					[ \t]*
					(?:[*+-]|\d+[.])[ \t]+
				)
			)
		)/g
	*/
	var whole_list = /^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;

	if (g_list_level) {
		text = text.replace(whole_list,function(wholeMatch,m1,m2) {
			var list = m1;
			var list_type = (m2.search(/[*+-]/g)>-1) ? "ul" : "ol";

			// Turn double returns into triple returns, so that we can make a
			// paragraph for the last item in a list, if necessary:
			list = list.replace(/\n{2,}/g,"\n\n\n");;
			var result = _ProcessListItems(list);

			// Trim any trailing whitespace, to put the closing `</$list_type>`
			// up on the preceding line, to get it past the current stupid
			// HTML block parser. This is a hack to work around the terrible
			// hack that is the HTML block parser.
			result = result.replace(/\s+$/,"");
			result = "<"+list_type+">" + result + "</"+list_type+">\n";
			return result;
		});
	} else {
		whole_list = /(\n\n|^\n?)(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/g;
		text = text.replace(whole_list,function(wholeMatch,m1,m2,m3) {
			var runup = m1;
			var list = m2;

			var list_type = (m3.search(/[*+-]/g)>-1) ? "ul" : "ol";
			// Turn double returns into triple returns, so that we can make a
			// paragraph for the last item in a list, if necessary:
			var list = list.replace(/\n{2,}/g,"\n\n\n");;
			var result = _ProcessListItems(list);
			result = runup + "<"+list_type+">\n" + result + "</"+list_type+">\n";
			return result;
		});
	}

	// attacklab: strip sentinel
	text = text.replace(/~0/,"");

	return text;
}

_ProcessListItems = function(list_str) {
//
//  Process the contents of a single ordered or unordered list, splitting it
//  into individual list items.
//
	// The $g_list_level global keeps track of when we're inside a list.
	// Each time we enter a list, we increment it; when we leave a list,
	// we decrement. If it's zero, we're not in a list anymore.
	//
	// We do this because when we're not inside a list, we want to treat
	// something like this:
	//
	//    I recommend upgrading to version
	//    8. Oops, now this line is treated
	//    as a sub-list.
	//
	// As a single paragraph, despite the fact that the second line starts
	// with a digit-period-space sequence.
	//
	// Whereas when we're inside a list (or sub-list), that line will be
	// treated as the start of a sub-list. What a kludge, huh? This is
	// an aspect of Markdown's syntax that's hard to parse perfectly
	// without resorting to mind-reading. Perhaps the solution is to
	// change the syntax rules such that sub-lists must start with a
	// starting cardinal number; e.g. "1." or "a.".

	g_list_level++;

	// trim trailing blank lines:
	list_str = list_str.replace(/\n{2,}$/,"\n");

	// attacklab: add sentinel to emulate \z
	list_str += "~0";

	/*
		list_str = list_str.replace(/
			(\n)?							// leading line = $1
			(^[ \t]*)						// leading whitespace = $2
			([*+-]|\d+[.]) [ \t]+			// list marker = $3
			([^\r]+?						// list item text   = $4
			(\n{1,2}))
			(?= \n* (~0 | \2 ([*+-]|\d+[.]) [ \t]+))
		/gm, function(){...});
	*/
	list_str = list_str.replace(/(\n)?(^[ \t]*)([*+-]|\d+[.])[ \t]+([^\r]+?(\n{1,2}))(?=\n*(~0|\2([*+-]|\d+[.])[ \t]+))/gm,
		function(wholeMatch,m1,m2,m3,m4){
			var item = m4;
			var leading_line = m1;
			var leading_space = m2;

			if (leading_line || (item.search(/\n{2,}/)>-1)) {
				item = _RunBlockGamut(_Outdent(item));
			}
			else {
				// Recursion for sub-lists:
				item = _DoLists(_Outdent(item));
				item = item.replace(/\n$/,""); // chomp(item)
				item = _RunSpanGamut(item);
			}

			return  "<li>" + item + "</li>\n";
		}
	);

	// attacklab: strip sentinel
	list_str = list_str.replace(/~0/g,"");

	g_list_level--;
	return list_str;
}


var _DoCodeBlocks = function(text) {
//
//  Process Markdown `<pre><code>` blocks.
//

	/*
		text = text.replace(text,
			/(?:\n\n|^)
			(								// $1 = the code block -- one or more lines, starting with a space/tab
				(?:
					(?:[ ]{4}|\t)			// Lines must start with a tab or a tab-width of spaces - attacklab: g_tab_width
					.*\n+
				)+
			)
			(\n*[ ]{0,3}[^ \t\n]|(?=~0))	// attacklab: g_tab_width
		/g,function(){...});
	*/

	// attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug
	text += "~0";

	text = text.replace(/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g,
		function(wholeMatch,m1,m2) {
			var codeblock = m1;
			var nextChar = m2;

			codeblock = _EncodeCode( _Outdent(codeblock));
			codeblock = _Detab(codeblock);
			codeblock = codeblock.replace(/^\n+/g,""); // trim leading newlines
			codeblock = codeblock.replace(/\n+$/g,""); // trim trailing whitespace

			codeblock = "<pre><code>" + codeblock + "\n</code></pre>";

			return hashBlock(codeblock) + nextChar;
		}
	);

	// attacklab: strip sentinel
	text = text.replace(/~0/,"");

	return text;
};

var _DoGithubCodeBlocks = function(text) {
//
//  Process Github-style code blocks
//  Example:
//  ```ruby
//  def hello_world(x)
//    puts "Hello, #{x}"
//  end
//  ```
//


	// attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug
	text += "~0";

	text = text.replace(/(?:^|\n)```(.*)\n([\s\S]*?)\n```/g,
		function(wholeMatch,m1,m2) {
			var language = m1;
			var codeblock = m2;

			codeblock = _EncodeCode(codeblock);
			codeblock = _Detab(codeblock);
			codeblock = codeblock.replace(/^\n+/g,""); // trim leading newlines
			codeblock = codeblock.replace(/\n+$/g,""); // trim trailing whitespace

			codeblock = "<pre><code" + (language ? " class=\"" + language + '"' : "") + ">" + codeblock + "\n</code></pre>";

			return hashBlock(codeblock);
		}
	);

	// attacklab: strip sentinel
	text = text.replace(/~0/,"");

	return text;
}

var hashBlock = function(text) {
	text = text.replace(/(^\n+|\n+$)/g,"");
	return "\n\n~K" + (g_html_blocks.push(text)-1) + "K\n\n";
}

var _DoCodeSpans = function(text) {
//
//   *  Backtick quotes are used for <code></code> spans.
//
//   *  You can use multiple backticks as the delimiters if you want to
//	 include literal backticks in the code span. So, this input:
//
//		 Just type ``foo `bar` baz`` at the prompt.
//
//	   Will translate to:
//
//		 <p>Just type <code>foo `bar` baz</code> at the prompt.</p>
//
//	There's no arbitrary limit to the number of backticks you
//	can use as delimters. If you need three consecutive backticks
//	in your code, use four for delimiters, etc.
//
//  *  You can use spaces to get literal backticks at the edges:
//
//		 ... type `` `bar` `` ...
//
//	   Turns to:
//
//		 ... type <code>`bar`</code> ...
//

	/*
		text = text.replace(/
			(^|[^\\])					// Character before opening ` can't be a backslash
			(`+)						// $2 = Opening run of `
			(							// $3 = The code block
				[^\r]*?
				[^`]					// attacklab: work around lack of lookbehind
			)
			\2							// Matching closer
			(?!`)
		/gm, function(){...});
	*/

	text = text.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,
		function(wholeMatch,m1,m2,m3,m4) {
			var c = m3;
			c = c.replace(/^([ \t]*)/g,"");	// leading whitespace
			c = c.replace(/[ \t]*$/g,"");	// trailing whitespace
			c = _EncodeCode(c);
			return m1+"<code>"+c+"</code>";
		});

	return text;
}

var _EncodeCode = function(text) {
//
// Encode/escape certain characters inside Markdown code runs.
// The point is that in code, these characters are literals,
// and lose their special Markdown meanings.
//
	// Encode all ampersands; HTML entities are not
	// entities within a Markdown code span.
	text = text.replace(/&/g,"&amp;");

	// Do the angle bracket song and dance:
	text = text.replace(/</g,"&lt;");
	text = text.replace(/>/g,"&gt;");

	// Now, escape characters that are magic in Markdown:
	text = escapeCharacters(text,"\*_{}[]\\",false);

// jj the line above breaks this:
//---

//* Item

//   1. Subitem

//            special char: *
//---

	return text;
}


var _DoItalicsAndBold = function(text) {

	// <strong> must go first:
	text = text.replace(/(\*\*|__)(?=\S)([^\r]*?\S[*_]*)\1/g,
		"<strong>$2</strong>");

	text = text.replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g,
		"<em>$2</em>");

	return text;
}


var _DoBlockQuotes = function(text) {

	/*
		text = text.replace(/
		(								// Wrap whole match in $1
			(
				^[ \t]*>[ \t]?			// '>' at the start of a line
				.+\n					// rest of the first line
				(.+\n)*					// subsequent consecutive lines
				\n*						// blanks
			)+
		)
		/gm, function(){...});
	*/

	text = text.replace(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/gm,
		function(wholeMatch,m1) {
			var bq = m1;

			// attacklab: hack around Konqueror 3.5.4 bug:
			// "----------bug".replace(/^-/g,"") == "bug"

			bq = bq.replace(/^[ \t]*>[ \t]?/gm,"~0");	// trim one level of quoting

			// attacklab: clean up hack
			bq = bq.replace(/~0/g,"");

			bq = bq.replace(/^[ \t]+$/gm,"");		// trim whitespace-only lines
			bq = _RunBlockGamut(bq);				// recurse

			bq = bq.replace(/(^|\n)/g,"$1  ");
			// These leading spaces screw with <pre> content, so we need to fix that:
			bq = bq.replace(
					/(\s*<pre>[^\r]+?<\/pre>)/gm,
				function(wholeMatch,m1) {
					var pre = m1;
					// attacklab: hack around Konqueror 3.5.4 bug:
					pre = pre.replace(/^  /mg,"~0");
					pre = pre.replace(/~0/g,"");
					return pre;
				});

			return hashBlock("<blockquote>\n" + bq + "\n</blockquote>");
		});
	return text;
}


var _FormParagraphs = function(text) {
//
//  Params:
//    $text - string to process with html <p> tags
//

	// Strip leading and trailing lines:
	text = text.replace(/^\n+/g,"");
	text = text.replace(/\n+$/g,"");

	var grafs = text.split(/\n{2,}/g);
	var grafsOut = [];

	//
	// Wrap <p> tags.
	//
	var end = grafs.length;
	for (var i=0; i<end; i++) {
		var str = grafs[i];

		// if this is an HTML marker, copy it
		if (str.search(/~K(\d+)K/g) >= 0) {
			grafsOut.push(str);
		}
		else if (str.search(/\S/) >= 0) {
			str = _RunSpanGamut(str);
			str = str.replace(/^([ \t]*)/g,"<p>");
			str += "</p>"
			grafsOut.push(str);
		}

	}

	//
	// Unhashify HTML blocks
	//
	end = grafsOut.length;
	for (var i=0; i<end; i++) {
		// if this is a marker for an html block...
		while (grafsOut[i].search(/~K(\d+)K/) >= 0) {
			var blockText = g_html_blocks[RegExp.$1];
			blockText = blockText.replace(/\$/g,"$$$$"); // Escape any dollar signs
			grafsOut[i] = grafsOut[i].replace(/~K\d+K/,blockText);
		}
	}

	return grafsOut.join("\n\n");
}


var _EncodeAmpsAndAngles = function(text) {
// Smart processing for ampersands and angle brackets that need to be encoded.

	// Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin:
	//   http://bumppo.net/projects/amputator/
	text = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&amp;");

	// Encode naked <'s
	text = text.replace(/<(?![a-z\/?\$!])/gi,"&lt;");

	return text;
}


var _EncodeBackslashEscapes = function(text) {
//
//   Parameter:  String.
//   Returns:	The string, with after processing the following backslash
//			   escape sequences.
//

	// attacklab: The polite way to do this is with the new
	// escapeCharacters() function:
	//
	// 	text = escapeCharacters(text,"\\",true);
	// 	text = escapeCharacters(text,"`*_{}[]()>#+-.!",true);
	//
	// ...but we're sidestepping its use of the (slow) RegExp constructor
	// as an optimization for Firefox.  This function gets called a LOT.

	text = text.replace(/\\(\\)/g,escapeCharacters_callback);
	text = text.replace(/\\([`*_{}\[\]()>#+-.!])/g,escapeCharacters_callback);
	return text;
}


var _DoAutoLinks = function(text) {

	text = text.replace(/<((https?|ftp|dict):[^'">\s]+)>/gi,"<a href=\"$1\">$1</a>");

	// Email addresses: <address@domain.foo>

	/*
		text = text.replace(/
			<
			(?:mailto:)?
			(
				[-.\w]+
				\@
				[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+
			)
			>
		/gi, _DoAutoLinks_callback());
	*/
	text = text.replace(/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi,
		function(wholeMatch,m1) {
			return _EncodeEmailAddress( _UnescapeSpecialChars(m1) );
		}
	);

	return text;
}


var _EncodeEmailAddress = function(addr) {
//
//  Input: an email address, e.g. "foo@example.com"
//
//  Output: the email address as a mailto link, with each character
//	of the address encoded as either a decimal or hex entity, in
//	the hopes of foiling most address harvesting spam bots. E.g.:
//
//	<a href="&#x6D;&#97;&#105;&#108;&#x74;&#111;:&#102;&#111;&#111;&#64;&#101;
//	   x&#x61;&#109;&#x70;&#108;&#x65;&#x2E;&#99;&#111;&#109;">&#102;&#111;&#111;
//	   &#64;&#101;x&#x61;&#109;&#x70;&#108;&#x65;&#x2E;&#99;&#111;&#109;</a>
//
//  Based on a filter by Matthew Wickline, posted to the BBEdit-Talk
//  mailing list: <http://tinyurl.com/yu7ue>
//

	var encode = [
		function(ch){return "&#"+ch.charCodeAt(0)+";";},
		function(ch){return "&#x"+ch.charCodeAt(0).toString(16)+";";},
		function(ch){return ch;}
	];

	addr = "mailto:" + addr;

	addr = addr.replace(/./g, function(ch) {
		if (ch == "@") {
		   	// this *must* be encoded. I insist.
			ch = encode[Math.floor(Math.random()*2)](ch);
		} else if (ch !=":") {
			// leave ':' alone (to spot mailto: later)
			var r = Math.random();
			// roughly 10% raw, 45% hex, 45% dec
			ch =  (
					r > .9  ?	encode[2](ch)   :
					r > .45 ?	encode[1](ch)   :
								encode[0](ch)
				);
		}
		return ch;
	});

	addr = "<a href=\"" + addr + "\">" + addr + "</a>";
	addr = addr.replace(/">.+:/g,"\">"); // strip the mailto: from the visible part

	return addr;
}


var _UnescapeSpecialChars = function(text) {
//
// Swap back in all the special characters we've hidden.
//
	text = text.replace(/~E(\d+)E/g,
		function(wholeMatch,m1) {
			var charCodeToReplace = parseInt(m1);
			return String.fromCharCode(charCodeToReplace);
		}
	);
	return text;
}


var _Outdent = function(text) {
//
// Remove one level of line-leading tabs or spaces
//

	// attacklab: hack around Konqueror 3.5.4 bug:
	// "----------bug".replace(/^-/g,"") == "bug"

	text = text.replace(/^(\t|[ ]{1,4})/gm,"~0"); // attacklab: g_tab_width

	// attacklab: clean up hack
	text = text.replace(/~0/g,"")

	return text;
}

var _Detab = function(text) {
// attacklab: Detab's completely rewritten for speed.
// In perl we could fix it by anchoring the regexp with \G.
// In javascript we're less fortunate.

	// expand first n-1 tabs
	text = text.replace(/\t(?=\t)/g,"    "); // attacklab: g_tab_width

	// replace the nth with two sentinels
	text = text.replace(/\t/g,"~A~B");

	// use the sentinel to anchor our regex so it doesn't explode
	text = text.replace(/~B(.+?)~A/g,
		function(wholeMatch,m1,m2) {
			var leadingText = m1;
			var numSpaces = 4 - leadingText.length % 4;  // attacklab: g_tab_width

			// there *must* be a better way to do this:
			for (var i=0; i<numSpaces; i++) leadingText+=" ";

			return leadingText;
		}
	);

	// clean up sentinels
	text = text.replace(/~A/g,"    ");  // attacklab: g_tab_width
	text = text.replace(/~B/g,"");

	return text;
}


//
//  attacklab: Utility functions
//


var escapeCharacters = function(text, charsToEscape, afterBackslash) {
	// First we have to escape the escape characters so that
	// we can build a character class out of them
	var regexString = "([" + charsToEscape.replace(/([\[\]\\])/g,"\\$1") + "])";

	if (afterBackslash) {
		regexString = "\\\\" + regexString;
	}

	var regex = new RegExp(regexString,"g");
	text = text.replace(regex,escapeCharacters_callback);

	return text;
}


var escapeCharacters_callback = function(wholeMatch,m1) {
	var charCodeToEscape = m1.charCodeAt(0);
	return "~E"+charCodeToEscape+"E";
}

} // end of Showdown.converter


// export
if (typeof module !== 'undefined') module.exports = Showdown;

// stolen from AMD branch of underscore
// AMD define happens at the end for compatibility with AMD loaders
// that don't enforce next-turn semantics on modules.
if (typeof define === 'function' && define.amd) {
    define('showdown', function() {
        return Showdown;
    });
}

shiny/www/shared/showdown/compressed/showdown.js METASEP
var Showdown={extensions:{}},forEach=Showdown.forEach=function(a,b){if(typeof a.forEach=="function")a.forEach(b);else{var c,d=a.length;for(c=0;c<d;c++)b(a[c],c,a)}},stdExtName=function(a){return a.replace(/[_-]||\s/g,"").toLowerCase()};Showdown.converter=function(a){var b,c,d,e=0,f=[],g=[];if(typeof module!="undefind"&&typeof exports!="undefined"&&typeof require!="undefind"){var h=require("fs");if(h){var i=h.readdirSync((__dirname||".")+"/extensions").filter(function(a){return~a.indexOf(".js")}).map(function(a){return a.replace(/\.js$/,"")});Showdown.forEach(i,function(a){var b=stdExtName(a);Showdown.extensions[b]=require("./extensions/"+a)})}}a&&a.extensions&&Showdown.forEach(a.extensions,function(a){typeof a=="string"&&(a=Showdown.extensions[stdExtName(a)]);if(typeof a!="function")throw"Extension '"+a+"' could not be loaded.  It was either not found or is not a valid extension.";Showdown.forEach(a(this),function(a){a.type?a.type==="language"||a.type==="lang"?f.push(a):(a.type==="output"||a.type==="html")&&g.push(a):g.push(a)})}),this.makeHtml=function(a){return b={},c={},d=[],a=a.replace(/~/g,"~T"),a=a.replace(/\$/g,"~D"),a=a.replace(/\r\n/g,"\n"),a=a.replace(/\r/g,"\n"),a="\n\n"+a+"\n\n",a=L(a),a=a.replace(/^[ \t]+$/mg,""),Showdown.forEach(f,function(b){a=j(b,a)}),a=y(a),a=l(a),a=k(a),a=n(a),a=J(a),a=a.replace(/~D/g,"$$"),a=a.replace(/~T/g,"~"),Showdown.forEach(g,function(b){a=j(b,a)}),a};var j=function(a,b){if(a.regex){var c=new RegExp(a.regex,"g");return b.replace(c,a.replace)}if(a.filter)return a.filter(b)},k=function(a){return a+="~0",a=a.replace(/^[ ]{0,3}\[(.+)\]:[ \t]*\n?[ \t]*<?(\S+?)>?[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|(?=~0))/gm,function(a,d,e,f,g){return d=d.toLowerCase(),b[d]=F(e),f?f+g:(g&&(c[d]=g.replace(/"/g,"&quot;")),"")}),a=a.replace(/~0/,""),a},l=function(a){a=a.replace(/\n/g,"\n\n");var b="p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del|style|section|header|footer|nav|article|aside",c="p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|style|section|header|footer|nav|article|aside";return a=a.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\b[^\r]*?\n<\/\2>[ \t]*(?=\n+))/gm,m),a=a.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|style|section|header|footer|nav|article|aside)\b[^\r]*?<\/\2>[ \t]*(?=\n+)\n)/gm,m),a=a.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,m),a=a.replace(/(\n\n[ ]{0,3}<!(--[^\r]*?--\s*)+>[ \t]*(?=\n{2,}))/g,m),a=a.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,m),a=a.replace(/\n\n/g,"\n"),a},m=function(a,b){var c=b;return c=c.replace(/\n\n/g,"\n"),c=c.replace(/^\n/,""),c=c.replace(/\n+$/g,""),c="\n\n~K"+(d.push(c)-1)+"K\n\n",c},n=function(a){a=u(a);var b=z("<hr />");return a=a.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm,b),a=a.replace(/^[ ]{0,2}([ ]?\-[ ]?){3,}[ \t]*$/gm,b),a=a.replace(/^[ ]{0,2}([ ]?\_[ ]?){3,}[ \t]*$/gm,b),a=w(a),a=x(a),a=D(a),a=l(a),a=E(a),a},o=function(a){return a=A(a),a=p(a),a=G(a),a=s(a),a=q(a),a=H(a),a=F(a),a=C(a),a=a.replace(/  +\n/g," <br />\n"),a},p=function(a){var b=/(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|<!(--.*?--\s*)+>)/gi;return a=a.replace(b,function(a){var b=a.replace(/(.)<\/?code>(?=.)/g,"$1`");return b=M(b,"\\`*_"),b}),a},q=function(a){return a=a.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,r),a=a.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()<?(.*?(?:\(.*?\).*?)?)>?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,r),a=a.replace(/(\[([^\[\]]+)\])()()()()()/g,r),a},r=function(a,d,e,f,g,h,i,j){j==undefined&&(j="");var k=d,l=e,m=f.toLowerCase(),n=g,o=j;if(n==""){m==""&&(m=l.toLowerCase().replace(/ ?\n/g," ")),n="#"+m;if(b[m]!=undefined)n=b[m],c[m]!=undefined&&(o=c[m]);else{if(!(k.search(/\(\s*\)$/m)>-1))return k;n=""}}n=M(n,"*_");var p='<a href="'+n+'"';return o!=""&&(o=o.replace(/"/g,"&quot;"),o=M(o,"*_"),p+=' title="'+o+'"'),p+=">"+l+"</a>",p},s=function(a){return a=a.replace(/(!\[(.*?)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,t),a=a.replace(/(!\[(.*?)\]\s?\([ \t]*()<?(\S+?)>?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,t),a},t=function(a,d,e,f,g,h,i,j){var k=d,l=e,m=f.toLowerCase(),n=g,o=j;o||(o="");if(n==""){m==""&&(m=l.toLowerCase().replace(/ ?\n/g," ")),n="#"+m;if(b[m]==undefined)return k;n=b[m],c[m]!=undefined&&(o=c[m])}l=l.replace(/"/g,"&quot;"),n=M(n,"*_");var p='<img src="'+n+'" alt="'+l+'"';return o=o.replace(/"/g,"&quot;"),o=M(o,"*_"),p+=' title="'+o+'"',p+=" />",p},u=function(a){function b(a){return a.replace(/[^\w]/g,"").toLowerCase()}return a=a.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm,function(a,c){return z('<h1 id="'+b(c)+'">'+o(c)+"</h1>")}),a=a.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,function(a,c){return z('<h2 id="'+b(c)+'">'+o(c)+"</h2>")}),a=a.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm,function(a,c,d){var e=c.length;return z("<h"+e+' id="'+b(d)+'">'+o(d)+"</h"+e+">")}),a},v,w=function(a){a+="~0";var b=/^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;return e?a=a.replace(b,function(a,b,c){var d=b,e=c.search(/[*+-]/g)>-1?"ul":"ol";d=d.replace(/\n{2,}/g,"\n\n\n");var f=v(d);return f=f.replace(/\s+$/,""),f="<"+e+">"+f+"</"+e+">\n",f}):(b=/(\n\n|^\n?)(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/g,a=a.replace(b,function(a,b,c,d){var e=b,f=c,g=d.search(/[*+-]/g)>-1?"ul":"ol",f=f.replace(/\n{2,}/g,"\n\n\n"),h=v(f);return h=e+"<"+g+">\n"+h+"</"+g+">\n",h})),a=a.replace(/~0/,""),a};v=function(a){return e++,a=a.replace(/\n{2,}$/,"\n"),a+="~0",a=a.replace(/(\n)?(^[ \t]*)([*+-]|\d+[.])[ \t]+([^\r]+?(\n{1,2}))(?=\n*(~0|\2([*+-]|\d+[.])[ \t]+))/gm,function(a,b,c,d,e){var f=e,g=b,h=c;return g||f.search(/\n{2,}/)>-1?f=n(K(f)):(f=w(K(f)),f=f.replace(/\n$/,""),f=o(f)),"<li>"+f+"</li>\n"}),a=a.replace(/~0/g,""),e--,a};var x=function(a){return a+="~0",a=a.replace(/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g,function(a,b,c){var d=b,e=c;return d=B(K(d)),d=L(d),d=d.replace(/^\n+/g,""),d=d.replace(/\n+$/g,""),d="<pre><code>"+d+"\n</code></pre>",z(d)+e}),a=a.replace(/~0/,""),a},y=function(a){return a+="~0",a=a.replace(/(?:^|\n)```(.*)\n([\s\S]*?)\n```/g,function(a,b,c){var d=b,e=c;return e=B(e),e=L(e),e=e.replace(/^\n+/g,""),e=e.replace(/\n+$/g,""),e="<pre><code"+(d?' class="'+d+'"':"")+">"+e+"\n</code></pre>",z(e)}),a=a.replace(/~0/,""),a},z=function(a){return a=a.replace(/(^\n+|\n+$)/g,""),"\n\n~K"+(d.push(a)-1)+"K\n\n"},A=function(a){return a=a.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(a,b,c,d,e){var f=d;return f=f.replace(/^([ \t]*)/g,""),f=f.replace(/[ \t]*$/g,""),f=B(f),b+"<code>"+f+"</code>"}),a},B=function(a){return a=a.replace(/&/g,"&amp;"),a=a.replace(/</g,"&lt;"),a=a.replace(/>/g,"&gt;"),a=M(a,"*_{}[]\\",!1),a},C=function(a){return a=a.replace(/(\*\*|__)(?=\S)([^\r]*?\S[*_]*)\1/g,"<strong>$2</strong>"),a=a.replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g,"<em>$2</em>"),a},D=function(a){return a=a.replace(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/gm,function(a,b){var c=b;return c=c.replace(/^[ \t]*>[ \t]?/gm,"~0"),c=c.replace(/~0/g,""),c=c.replace(/^[ \t]+$/gm,""),c=n(c),c=c.replace(/(^|\n)/g,"$1  "),c=c.replace(/(\s*<pre>[^\r]+?<\/pre>)/gm,function(a,b){var c=b;return c=c.replace(/^  /mg,"~0"),c=c.replace(/~0/g,""),c}),z("<blockquote>\n"+c+"\n</blockquote>")}),a},E=function(a){a=a.replace(/^\n+/g,""),a=a.replace(/\n+$/g,"");var b=a.split(/\n{2,}/g),c=[],e=b.length;for(var f=0;f<e;f++){var g=b[f];g.search(/~K(\d+)K/g)>=0?c.push(g):g.search(/\S/)>=0&&(g=o(g),g=g.replace(/^([ \t]*)/g,"<p>"),g+="</p>",c.push(g))}e=c.length;for(var f=0;f<e;f++)while(c[f].search(/~K(\d+)K/)>=0){var h=d[RegExp.$1];h=h.replace(/\$/g,"$$$$"),c[f]=c[f].replace(/~K\d+K/,h)}return c.join("\n\n")},F=function(a){return a=a.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&amp;"),a=a.replace(/<(?![a-z\/?\$!])/gi,"&lt;"),a},G=function(a){return a=a.replace(/\\(\\)/g,N),a=a.replace(/\\([`*_{}\[\]()>#+-.!])/g,N),a},H=function(a){return a=a.replace(/<((https?|ftp|dict):[^'">\s]+)>/gi,'<a href="$1">$1</a>'),a=a.replace(/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi,function(a,b){return I(J(b))}),a},I=function(a){var b=[function(a){return"&#"+a.charCodeAt(0)+";"},function(a){return"&#x"+a.charCodeAt(0).toString(16)+";"},function(a){return a}];return a="mailto:"+a,a=a.replace(/./g,function(a){if(a=="@")a=b[Math.floor(Math.random()*2)](a);else if(a!=":"){var c=Math.random();a=c>.9?b[2](a):c>.45?b[1](a):b[0](a)}return a}),a='<a href="'+a+'">'+a+"</a>",a=a.replace(/">.+:/g,'">'),a},J=function(a){return a=a.replace(/~E(\d+)E/g,function(a,b){var c=parseInt(b);return String.fromCharCode(c)}),a},K=function(a){return a=a.replace(/^(\t|[ ]{1,4})/gm,"~0"),a=a.replace(/~0/g,""),a},L=function(a){return a=a.replace(/\t(?=\t)/g,"    "),a=a.replace(/\t/g,"~A~B"),a=a.replace(/~B(.+?)~A/g,function(a,b,c){var d=b,e=4-d.length%4;for(var f=0;f<e;f++)d+=" ";return d}),a=a.replace(/~A/g,"    "),a=a.replace(/~B/g,""),a},M=function(a,b,c){var d="(["+b.replace(/([\[\]\\])/g,"\\$1")+"])";c&&(d="\\\\"+d);var e=new RegExp(d,"g");return a=a.replace(e,N),a},N=function(a,b){var c=b.charCodeAt(0);return"~E"+c+"E"}},typeof module!="undefined"&&(module.exports=Showdown),typeof define=="function"&&define.amd&&define("showdown",function(){return Showdown});

shiny/www/shared/selectize/scss/selectize.scss METASEP
// base styles

$selectize-font-family: inherit !default;
$selectize-font-smoothing: inherit !default;
$selectize-font-size: 13px !default;
$selectize-line-height: 18px !default;

$selectize-color-text: #303030 !default;
$selectize-color-border: #d0d0d0 !default;
$selectize-color-highlight: rgba(125,168,208,0.2) !default;
$selectize-color-input: #fff !default;
$selectize-color-input-full: $selectize-color-input !default;
$selectize-color-disabled: #fafafa !default;
$selectize-color-item: #f2f2f2 !default;
$selectize-color-item-text: $selectize-color-text !default;
$selectize-color-item-border: #d0d0d0 !default;
$selectize-color-item-active: #e8e8e8 !default;
$selectize-color-item-active-text: $selectize-color-text !default;
$selectize-color-item-active-border: #cacaca !default;
$selectize-color-dropdown: #fff !default;
$selectize-color-dropdown-border: $selectize-color-border !default;
$selectize-color-dropdown-border-top: #f0f0f0 !default;
$selectize-color-dropdown-item-active: #f5fafd !default;
$selectize-color-dropdown-item-active-text: #495c68 !default;
$selectize-color-dropdown-item-create-text: rgba(red($selectize-color-text), green($selectize-color-text), blue($selectize-color-text), 0.5) !default;
$selectize-color-dropdown-item-create-active-text: $selectize-color-dropdown-item-active-text !default;
$selectize-color-optgroup: $selectize-color-dropdown !default;
$selectize-color-optgroup-text: $selectize-color-text !default;
$selectize-lighten-disabled-item: 30% !default;
$selectize-lighten-disabled-item-text: 30% !default;
$selectize-lighten-disabled-item-border: 30% !default;
$selectize-opacity-disabled: 0.5 !default;

$selectize-shadow-input: inset 0 1px 1px rgba(0,0,0,0.1) !default;
$selectize-shadow-input-focus: inset 0 1px 2px rgba(0,0,0,0.15) !default;
$selectize-border: 1px solid $selectize-color-border !default;
$selectize-dropdown-border: 1px solid $selectize-color-dropdown-border !default;
$selectize-border-radius: 3px !default;

$selectize-width-item-border: 0 !default;
$selectize-max-height-dropdown: 200px !default;

$selectize-padding-x: 8px !default;
$selectize-padding-y: 8px !default;
$selectize-padding-item-x: 6px !default;
$selectize-padding-item-y: 2px !default;
$selectize-padding-dropdown-item-x: $selectize-padding-x !default;
$selectize-padding-dropdown-item-y: 5px !default;
$selectize-margin-item-x: 3px !default;
$selectize-margin-item-y: 3px !default;

$selectize-arrow-size: 5px !default;
$selectize-arrow-color: #808080 !default;
$selectize-arrow-offset: 15px !default;

$selectize-caret-margin: 0 2px 0 0 !default;
$selectize-caret-margin-rtl: 0 4px 0 -2px !default;

@mixin selectize-border-radius($radii){
  @if mixin-exists("border-radius") {
    @include border-radius($radii)
  } @else {
    border-radius: $radii;
  }
}
@mixin selectize-unselectable(){
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
@mixin selectize-box-shadow($shadow){
  -webkit-box-shadow: $shadow;
  box-shadow: $shadow;
}
@mixin selectize-box-sizing($type: border-box){
  -webkit-box-sizing: $type;
  -moz-box-sizing: $type;
  box-sizing: $type;
}
@mixin selectize-vertical-gradient($color-top, $color-bottom){
  background-color: mix($color-top, $color-bottom, 60%);
  background-image: -moz-linear-gradient(top, $color-top, $color-bottom); // FF 3.6+
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from($color-top), to($color-bottom)); // Safari 4+, Chrome 2+
  background-image: -webkit-linear-gradient(top, $color-top, $color-bottom); // Safari 5.1+, Chrome 10+
  background-image: -o-linear-gradient(top, $color-top, $color-bottom); // Opera 11.10
  background-image: linear-gradient(to bottom, $color-top, $color-bottom); // Standard, IE10
  background-repeat: repeat-x;
  //filter: e(%("progid:DXImageTransform.Microsoft@include gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb($color-top),argb($color-bottom))); // IE9 and down
}

.selectize-control {
  position: relative;
}

.selectize-dropdown, .selectize-input, .selectize-input input {
  color: $selectize-color-text;
  font-family: $selectize-font-family;
  font-size: $selectize-font-size;
  line-height: $selectize-line-height;
  -webkit-font-smoothing: $selectize-font-smoothing;
}

.selectize-input, .selectize-control.single .selectize-input.input-active {
  background: $selectize-color-input;
  cursor: text;
  display: inline-block;
}

.selectize-input {
  border: $selectize-border;
  padding: $selectize-padding-y $selectize-padding-x;
  display: inline-block;
  width: 100%;
  overflow: hidden;
  position: relative;
  z-index: 1;
  @include selectize-box-sizing(border-box);
  @include selectize-box-shadow($selectize-shadow-input);
  @include selectize-border-radius($selectize-border-radius);

  .selectize-control.multi &.has-items {
	$padding-x: $selectize-padding-x;
	$padding-top: calc(#{$selectize-padding-y} - #{$selectize-padding-item-y} - #{$selectize-width-item-border});
	$padding-bottom: calc(#{$selectize-padding-y} - #{$selectize-padding-item-y} - #{$selectize-margin-item-y} - #{$selectize-width-item-border});
	padding: $padding-top $padding-x $padding-bottom;
  }

  &.full {
	background-color: $selectize-color-input-full;
  }
  &.disabled, &.disabled * {
	cursor: default !important;
  }
  &.focus {
	@include selectize-box-shadow($selectize-shadow-input-focus);
  }
  &.dropdown-active {
	@include selectize-border-radius($selectize-border-radius $selectize-border-radius 0 0);
  }

  > * {
	vertical-align: baseline;
	display: -moz-inline-stack;
	display: inline-block;
	zoom: 1;
	*display: inline;
  }
  .selectize-control.multi & > div {
	cursor: pointer;
	margin: 0 $selectize-margin-item-x $selectize-margin-item-y 0;
	padding: $selectize-padding-item-y $selectize-padding-item-x;
	background: $selectize-color-item;
	color: $selectize-color-item-text;
	border: $selectize-width-item-border solid $selectize-color-item-border;

	&.active {
	  background: $selectize-color-item-active;
	  color: $selectize-color-item-active-text;
	  border: $selectize-width-item-border solid $selectize-color-item-active-border;
	}
  }
  .selectize-control.multi &.disabled > div {
	&, &.active {
	  color: lighten(desaturate($selectize-color-item-text, 100%), $selectize-lighten-disabled-item-text);
	  background: lighten(desaturate($selectize-color-item, 100%), $selectize-lighten-disabled-item);
	  border: $selectize-width-item-border solid lighten(desaturate($selectize-color-item-border, 100%), $selectize-lighten-disabled-item-border);
	}
  }
  > input {
	&::-ms-clear {
	  display: none;
	}
	display: inline-block !important;
	padding: 0 !important;
	min-height: 0 !important;
	max-height: none !important;
	max-width: 100% !important;
	margin: $selectize-caret-margin !important;
	text-indent: 0 !important;
	border: 0 none !important;
	background: none !important;
	line-height: inherit !important;
	-webkit-user-select: auto !important;
	@include selectize-box-shadow(none);
	&:focus { outline: none !important; }
  }
}

.selectize-input::after {
  content: ' ';
  display: block;
  clear: left;
}

.selectize-input.dropdown-active::before {
  content: ' ';
  display: block;
  position: absolute;
  background: $selectize-color-dropdown-border-top;
  height: 1px;
  bottom: 0;
  left: 0;
  right: 0;
}

.selectize-dropdown {
  position: absolute;
  z-index: 10;
  border: $selectize-dropdown-border;
  background: $selectize-color-dropdown;
  margin: -1px 0 0 0;
  border-top: 0 none;
  @include selectize-box-sizing(border-box);
  @include selectize-box-shadow(0 1px 3px rgba(0,0,0,0.1));
  @include selectize-border-radius(0 0 $selectize-border-radius $selectize-border-radius);

  [data-selectable] {
	cursor: pointer;
	overflow: hidden;
	.highlight {
	  background: $selectize-color-highlight;
	  @include selectize-border-radius(1px);
	}
  }
  .option, .optgroup-header {
	padding: $selectize-padding-dropdown-item-y $selectize-padding-dropdown-item-x;
  }
  .option, [data-disabled], [data-disabled] [data-selectable].option {
	cursor: inherit;
	opacity: 0.5;
  }
  [data-selectable].option {
	opacity: 1;
  }
  .optgroup:first-child .optgroup-header {
	border-top: 0 none;
  }
  .optgroup-header {
	color: $selectize-color-optgroup-text;
	background: $selectize-color-optgroup;
	cursor: default;
  }
  .active {
	background-color: $selectize-color-dropdown-item-active;
	color: $selectize-color-dropdown-item-active-text;
	&.create {
	  color: $selectize-color-dropdown-item-create-active-text;
	}
  }
  .create {
	color: $selectize-color-dropdown-item-create-text;
  }
}

.selectize-dropdown-content {
  overflow-y: auto;
  overflow-x: hidden;
  max-height: $selectize-max-height-dropdown;
  -webkit-overflow-scrolling: touch;
}

.selectize-control.single .selectize-input {
  &, input { cursor: pointer; }
  &.input-active, &.input-active input { cursor: text; }

  &:after {
	content: ' ';
	display: block;
	position: absolute;
	top: 50%;
	right: $selectize-arrow-offset;
	margin-top: round((-1 * $selectize-arrow-size / 2));
	width: 0;
	height: 0;
	border-style: solid;
	border-width: $selectize-arrow-size $selectize-arrow-size 0 $selectize-arrow-size;
	border-color: $selectize-arrow-color transparent transparent transparent;
  }
  &.dropdown-active:after {
	margin-top: $selectize-arrow-size * -0.8;
	border-width: 0 $selectize-arrow-size $selectize-arrow-size $selectize-arrow-size;
	border-color: transparent transparent $selectize-arrow-color transparent;
  }
}

.selectize-control.rtl {
  &.single .selectize-input:after {
	left: $selectize-arrow-offset;
	right: auto;
  }
  .selectize-input > input {
	margin: $selectize-caret-margin-rtl !important;
  }
}

.selectize-control .selectize-input.disabled {
  opacity: $selectize-opacity-disabled;
  background-color: $selectize-color-disabled;
}

shiny/www/shared/selectize/scss/selectize.default.scss METASEP
/**
 * selectize.default.css (v$$version) - Default Theme
 * Copyright (c) 2013–2015 Brian Reavis & contributors
 *
 * 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
 *
 * Unless required by applicable law or agreed to in writing, software distributed under
 * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
 * ANY KIND, either express or implied. See the License for the specific language
 * governing permissions and limitations under the License.
 *
 * $author Brian Reavis <brian$thirdroute.com>
 */

@import "selectize";

$selectize-color-item: #1da7ee;
$selectize-color-item-text: #fff;
$selectize-color-item-active-text: #fff;
$selectize-color-item-border: #0073bb;
$selectize-color-item-active: #92c836;
$selectize-color-item-active-border: #00578d;
$selectize-width-item-border: 1px;
$selectize-caret-margin: 0 1px;

.selectize-control {
  &.multi {
	.selectize-input {
	  &.has-items {
		$padding-x: $selectize-padding-x - 3px;
		padding-left: $padding-x;
		padding-right: $padding-x;
	  }
	  &.disabled [data-value] {
		color: #999;
		text-shadow: none;
		background: none;
		@include selectize-box-shadow(none);

		&, .remove {
		  border-color: #e6e6e6;
		}
		.remove {
		  background: none;
		}
	  }
	  [data-value] {
		text-shadow: 0 1px 0 rgba(0,51,83,0.3);
		@include selectize-border-radius(3px);
		@include selectize-vertical-gradient(#1da7ee, #178ee9);
		@include selectize-box-shadow(#{"0 1px 0 rgba(0,0,0,0.2),inset 0 1px rgba(255,255,255,0.03)"});
		&.active {
		  @include selectize-vertical-gradient(#008fd8, #0075cf);
		}
	  }
	}
  }
  &.single {
	.selectize-input {
	  @include selectize-box-shadow(#{"0 1px 0 rgba(0,0,0,0.05), inset 0 1px 0 rgba(255,255,255,0.8)"});
	  @include selectize-vertical-gradient(#fefefe, #f2f2f2);
	}
  }
}

.selectize-control.single .selectize-input, .selectize-dropdown.single {
  border-color: #b8b8b8;
}

.selectize-dropdown {
  .optgroup-header {
	padding-top: $selectize-padding-dropdown-item-y + 2px;
	font-weight: bold;
	font-size: 0.85em;
  }
  .optgroup {
	border-top: 1px solid $selectize-color-dropdown-border-top;
	&:first-child {
	  border-top: 0 none;
	}
  }
}
shiny/www/shared/selectize/scss/selectize.bootstrap5.scss METASEP
$input-line-height-sm: $form-select-line-height !default;
@import 'selectize.bootstrap4';
.selectize-control{padding:0;}

shiny/www/shared/selectize/scss/selectize.bootstrap4.scss METASEP
/**
 * Selectize bootstrap 4
 */

//Import Boostrap 4 functions and variables

$enable-shadows: true !default;
$selectize-font-family: inherit !default;
$selectize-font-size: inherit !default;
$selectize-line-height: $input-btn-line-height !default; //formerly line-height-computed

$selectize-color-text: $input-color !default;
$selectize-color-highlight: rgba(255,237,40,0.4) !default;
$selectize-color-input: $input-bg !default;
$selectize-color-input-full: $input-bg !default;
$selectize-color-input-error: $danger !default;
$selectize-color-input-error-focus: darken($selectize-color-input-error, 10%) !default;
$selectize-color-disabled: $input-bg !default;
$selectize-color-item: mix($selectize-color-input, $selectize-color-text, 90%) !default;
$selectize-color-item-border: $input-border-color !default;
$selectize-color-item-active: $component-active-bg !default;
$selectize-color-item-active-text: color-contrast($selectize-color-item-active) !default;
$selectize-color-item-active-border: rgba(0,0,0,0) !default;
$selectize-color-optgroup: $dropdown-bg !default;
$selectize-color-optgroup-text: $dropdown-header-color !default;
$selectize-color-optgroup-border: $dropdown-divider-bg !default;
$selectize-color-dropdown: $dropdown-bg !default;
$selectize-color-dropdown-text: $dropdown-link-color !default;
$selectize-color-dropdown-border-top: mix($input-border-color, $input-bg, 0.8) !default;
$selectize-color-dropdown-item-active: $dropdown-link-hover-bg !default;
$selectize-color-dropdown-item-active-text: $dropdown-link-hover-color !default;
$selectize-color-dropdown-item-create-active-text: $dropdown-link-hover-color !default;
$selectize-opacity-disabled: 0.5 !default;
$selectize-shadow-input: none !default;
$selectize-shadow-input-focus: inset 0 1px 2px rgba(0,0,0,0.15) !default;
$selectize-shadow-input-error: inset 0 1px 1px rgba(0, 0, 0, .075) !default;
$selectize-shadow-input-error-focus: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px lighten($selectize-color-input-error, 20%) !default;
$selectize-border: 1px solid $input-border-color !default;
$selectize-border-radius: $input-border-radius !default;

$selectize-width-item-border: 0px !default;
$selectize-padding-x: $input-btn-padding-x !default;
$selectize-padding-y: $input-btn-padding-y !default;
$selectize-padding-dropdown-item-x: $input-btn-padding-x !default;
$selectize-padding-dropdown-item-y: 3px !default;
$selectize-padding-item-x: 3px !default;
$selectize-padding-item-y: 1px !default;
$selectize-margin-item-x: 3px !default;
$selectize-margin-item-y: 3px !default;
$selectize-caret-margin: 0 !default;

$selectize-arrow-size: 5px !default;
$selectize-arrow-color: $selectize-color-text !default;
$selectize-arrow-offset: calc(#{$selectize-padding-x} + 5px) !default;


@import "selectize";

//Import Plugins
@import "plugins/drag_drop";
@import "plugins/dropdown_header";
@import "plugins/optgroup_columns";
@import "plugins/remove_button";

.selectize-dropdown, .selectize-dropdown.form-control {
  height: auto;
  padding: 0;
  margin: 2px 0 0 0;
  z-index: $zindex-dropdown;
  background: $selectize-color-dropdown;
  color: $selectize-color-dropdown-text;
  border: 1px solid $dropdown-border-color; //$dropdown-fallback-border
  @include selectize-border-radius($border-radius);
  @include selectize-box-shadow(0 6px 12px rgba(0,0,0,.175));
}

.selectize-dropdown {
  .optgroup-header {
	font-size: $font-size-sm;
	line-height: $line-height-base;
  }
  .optgroup:first-child:before {
	display: none;
  }
  .optgroup:before {
	content: ' ';
	display: block;
	height: 0;
	margin: $dropdown-divider-margin-y 0;
	overflow: hidden;
	border-top: 1px solid $dropdown-divider-bg;
	margin-left: $selectize-padding-dropdown-item-x * -1;
	margin-right: $selectize-padding-dropdown-item-x * -1;
  }

  .create {
	padding-left: $selectize-padding-dropdown-item-x;
  }
}

.selectize-dropdown-content {
  padding: 5px 0;
}

.selectize-dropdown-header {
  padding: $selectize-padding-dropdown-item-y * 2 $selectize-padding-dropdown-item-x;
}

.selectize-input {
  min-height: $input-height;
  @include box-shadow($input-box-shadow);
  @include transition($input-transition);

  &.dropdown-active {
    @include selectize-border-radius($selectize-border-radius);
  }
  &.dropdown-active::before {
    display: none;
  }
  &.focus {
    border-color: $input-focus-border-color;
    outline: 0;
    @if $enable-shadows {
      box-shadow: $input-box-shadow, $input-focus-box-shadow;
    } @else {
      box-shadow: $input-focus-box-shadow;
    }
  }
}

.is-invalid .selectize-input {
  border-color: $selectize-color-input-error;
  @include selectize-box-shadow($selectize-shadow-input-error);

  &:focus {
	border-color: $selectize-color-input-error-focus;
	// @include selectize-box-shadow(none)
	@include selectize-box-shadow($selectize-shadow-input-error-focus);
  }
}

.selectize-control {
  &.form-control-sm{
    .selectize-input.has-items{
      min-height: $input-height-sm !important;
      height: $input-height-sm !important;
      padding: $input-padding-y-sm $input-padding-x-sm !important;
      font-size: $input-font-size-sm;
      line-height: $input-line-height-sm;
    }
  }

  &.multi {
	.selectize-input.has-items {
	  padding-left: calc(#{$selectize-padding-x} - #{$selectize-padding-item-x});
	  padding-right: calc(#{$selectize-padding-x} - #{$selectize-padding-item-x});
	}
	.selectize-input > div {
	  @include selectize-border-radius(calc(#{$selectize-border-radius} - 1px));
	}
  }
}

.form-control.selectize-control {
  padding: 0;
  height: auto;
  border: none;
  background: none;
  @include selectize-box-shadow(none);
  @include selectize-border-radius(0);
}

.input-group .selectize-input {
	overflow: unset;
	@include selectize-border-radius(0 $selectize-border-radius $selectize-border-radius 0);
}

shiny/www/shared/selectize/scss/selectize.bootstrap3.scss METASEP
/**
 * selectize.bootstrap3.css (v0.12.3) - Bootstrap 3 Theme
 * Copyright (c) 2013–2015 Brian Reavis & contributors
 *
 * 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
 *
 * Unless required by applicable law or agreed to in writing, software distributed under
 * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
 * ANY KIND, either express or implied. See the License for the specific language
 * governing permissions and limitations under the License.
 *
 * @author Brian Reavis <brian@thirdroute.com>
 */

$selectize-font-family: inherit !default;
$selectize-font-size: inherit !default;
$selectize-line-height: $line-height-computed !default;

$selectize-color-text: $input-color !default;
$selectize-color-highlight: rgba(255,237,40,0.4) !default;
$selectize-color-input: $input-bg !default;
$selectize-color-input-full: $input-bg !default;
$selectize-color-input-error: $state-danger-text !default;
$selectize-color-input-error-focus: darken($selectize-color-input-error, 10%) !default;
$selectize-color-disabled: $input-bg !default;
$selectize-color-item: mix($selectize-color-input, $selectize-color-text, 90%) !default;
$selectize-color-item-border: rgba(black, 0) !default;
$selectize-color-item-active: $component-active-bg !default;
$selectize-color-item-active-text: color-contrast($selectize-color-item-active) !default;
$selectize-color-item-active-border: rgba(black, 0) !default;
$selectize-color-optgroup: $dropdown-bg !default;
$selectize-color-optgroup-text: $dropdown-header-color !default;
$selectize-color-optgroup-border: $dropdown-divider-bg !default;
$selectize-color-dropdown: $dropdown-bg !default;
$selectize-color-dropdown-text: $dropdown-link-color !default;
$selectize-color-dropdown-border-top: mix($input-border, $input-bg, 0.8) !default;
$selectize-color-dropdown-item-active: $dropdown-link-hover-bg !default;
$selectize-color-dropdown-item-active-text: $dropdown-link-hover-color !default;
$selectize-color-dropdown-item-create-active-text: $dropdown-link-hover-color !default;
$selectize-opacity-disabled: 0.5 !default;
$selectize-shadow-input: none !default;
$selectize-shadow-input-focus: inset 0 1px 2px rgba(black, 0.15) !default;
$selectize-shadow-input-error: inset 0 1px 1px rgba(black, .075) !default;
$selectize-shadow-input-error-focus: inset 0 1px 1px rgba(black, .075), 0 0 6px lighten($selectize-color-input-error, 20%) !default;
$selectize-border: 1px solid $input-border !default;
$selectize-border-radius: $input-border-radius !default;

$selectize-width-item-border: 0 !default;
$selectize-padding-x: $padding-base-horizontal !default;
$selectize-padding-y: $padding-base-vertical !default;
$selectize-padding-dropdown-item-x: $padding-base-horizontal !default;
$selectize-padding-dropdown-item-y: 3px !default;
$selectize-padding-item-x: 3px !default;
$selectize-padding-item-y: 1px !default;
$selectize-margin-item-x: 3px !default;
$selectize-margin-item-y: 3px !default;
$selectize-caret-margin: 0 !default;

$selectize-arrow-size: 5px !default;
$selectize-arrow-color: $selectize-color-text !default;
$selectize-arrow-offset: $selectize-padding-x + 5px !default;

@import "selectize";

//Import Plugins
@import "plugins/drag_drop";
@import "plugins/dropdown_header";
@import "plugins/optgroup_columns";
@import "plugins/remove_button";

.selectize-dropdown, .selectize-dropdown.form-control {
    height: auto;
    padding: 0;
    margin: 2px 0 0 0;
    z-index: $zindex-dropdown;
    background: $selectize-color-dropdown;
    color: $selectize-color-dropdown-text;
    border: 1px solid $dropdown-fallback-border;
    border: 1px solid $dropdown-border;
    @include selectize-border-radius ($border-radius-base);
    @include selectize-box-shadow (0 6px 12px rgba(black, .175));
}

.selectize-dropdown {
    .optgroup-header {
        font-size: $font-size-small;
        line-height: $line-height-base;
    }
    .optgroup:first-child:before {
        display: none;
    }
    .optgroup:before {
        content: ' ';
        display: block;
        @include nav-divider;
        margin-left: $selectize-padding-dropdown-item-x * -1;
        margin-right: $selectize-padding-dropdown-item-x * -1;
    }
}

.selectize-dropdown-content {
    padding: 5px 0;
}

.selectize-dropdown-header {
    padding: $selectize-padding-dropdown-item-y * 2 $selectize-padding-dropdown-item-x;
}

.selectize-input {
    min-height: $input-height-base;

    &.dropdown-active {
        @include selectize-border-radius ($selectize-border-radius);
    }
    &.dropdown-active::before {
        display: none;
    }
    &.focus {
        $color: $input-border-focus;
        $color-rgba: rgba(red($color), green($color), blue($color), .6);
        border-color: $color;
        outline: 0;
        @include selectize-box-shadow ("inset 0 1px 1px rgba(black, .075), 0 0 8px #{$color-rgba}");
    }
}

.has-error .selectize-input {
    border-color: $selectize-color-input-error;
    @include selectize-box-shadow ($selectize-shadow-input-error);

    &:focus {
        border-color: $selectize-color-input-error-focus;
        @include selectize-box-shadow ($selectize-shadow-input-error-focus);
    }
}

.selectize-control {
    &.multi {
        .selectize-input.has-items {
            padding-left: $selectize-padding-x - $selectize-padding-item-x;
            padding-right: $selectize-padding-x - $selectize-padding-item-x;
        }
        .selectize-input > div {
            @include selectize-border-radius ($selectize-border-radius - 1px);
        }
    }
}

.form-control.selectize-control {
    padding: 0;
    height: auto;
    border: none;
    background: none;
    @include selectize-box-shadow (none);
    @include selectize-border-radius (0);
}

shiny/www/shared/selectize/js/selectize.min.js METASEP
/*! selectize.js - v0.12.4 | https://github.com/selectize/selectize.js | Apache License (v2) */
!function(a,b){"function"==typeof define&&define.amd?define("sifter",b):"object"==typeof exports?module.exports=b():a.Sifter=b()}(this,function(){var a=function(a,b){this.items=a,this.settings=b||{diacritics:!0}};a.prototype.tokenize=function(a){if(a=e(String(a||"").toLowerCase()),!a||!a.length)return[];var b,c,d,g,i=[],j=a.split(/ +/);for(b=0,c=j.length;b<c;b++){if(d=f(j[b]),this.settings.diacritics)for(g in h)h.hasOwnProperty(g)&&(d=d.replace(new RegExp(g,"g"),h[g]));i.push({string:j[b],regex:new RegExp(d,"i")})}return i},a.prototype.iterator=function(a,b){var c;c=g(a)?Array.prototype.forEach||function(a){for(var b=0,c=this.length;b<c;b++)a(this[b],b,this)}:function(a){for(var b in this)this.hasOwnProperty(b)&&a(this[b],b,this)},c.apply(a,[b])},a.prototype.getScoreFunction=function(a,b){var c,e,f,g,h;c=this,a=c.prepareSearch(a,b),f=a.tokens,e=a.options.fields,g=f.length,h=a.options.nesting;var i=function(a,b){var c,d;return a?(a=String(a||""),d=a.search(b.regex),d===-1?0:(c=b.string.length/a.length,0===d&&(c+=.5),c)):0},j=function(){var a=e.length;return a?1===a?function(a,b){return i(d(b,e[0],h),a)}:function(b,c){for(var f=0,g=0;f<a;f++)g+=i(d(c,e[f],h),b);return g/a}:function(){return 0}}();return g?1===g?function(a){return j(f[0],a)}:"and"===a.options.conjunction?function(a){for(var b,c=0,d=0;c<g;c++){if(b=j(f[c],a),b<=0)return 0;d+=b}return d/g}:function(a){for(var b=0,c=0;b<g;b++)c+=j(f[b],a);return c/g}:function(){return 0}},a.prototype.getSortFunction=function(a,c){var e,f,g,h,i,j,k,l,m,n,o;if(g=this,a=g.prepareSearch(a,c),o=!a.query&&c.sort_empty||c.sort,m=function(a,b){return"$score"===a?b.score:d(g.items[b.id],a,c.nesting)},i=[],o)for(e=0,f=o.length;e<f;e++)(a.query||"$score"!==o[e].field)&&i.push(o[e]);if(a.query){for(n=!0,e=0,f=i.length;e<f;e++)if("$score"===i[e].field){n=!1;break}n&&i.unshift({field:"$score",direction:"desc"})}else for(e=0,f=i.length;e<f;e++)if("$score"===i[e].field){i.splice(e,1);break}for(l=[],e=0,f=i.length;e<f;e++)l.push("desc"===i[e].direction?-1:1);return j=i.length,j?1===j?(h=i[0].field,k=l[0],function(a,c){return k*b(m(h,a),m(h,c))}):function(a,c){var d,e,f;for(d=0;d<j;d++)if(f=i[d].field,e=l[d]*b(m(f,a),m(f,c)))return e;return 0}:null},a.prototype.prepareSearch=function(a,b){if("object"==typeof a)return a;b=c({},b);var d=b.fields,e=b.sort,f=b.sort_empty;return d&&!g(d)&&(b.fields=[d]),e&&!g(e)&&(b.sort=[e]),f&&!g(f)&&(b.sort_empty=[f]),{options:b,query:String(a||"").toLowerCase(),tokens:this.tokenize(a),total:0,items:[]}},a.prototype.search=function(a,b){var c,d,e,f,g=this;return d=this.prepareSearch(a,b),b=d.options,a=d.query,f=b.score||g.getScoreFunction(d),a.length?g.iterator(g.items,function(a,e){c=f(a),(b.filter===!1||c>0)&&d.items.push({score:c,id:e})}):g.iterator(g.items,function(a,b){d.items.push({score:1,id:b})}),e=g.getSortFunction(d,b),e&&d.items.sort(e),d.total=d.items.length,"number"==typeof b.limit&&(d.items=d.items.slice(0,b.limit)),d};var b=function(a,b){return"number"==typeof a&&"number"==typeof b?a>b?1:a<b?-1:0:(a=i(String(a||"")),b=i(String(b||"")),a>b?1:b>a?-1:0)},c=function(a,b){var c,d,e,f;for(c=1,d=arguments.length;c<d;c++)if(f=arguments[c])for(e in f)f.hasOwnProperty(e)&&(a[e]=f[e]);return a},d=function(a,b,c){if(a&&b){if(!c)return a[b];for(var d=b.split(".");d.length&&(a=a[d.shift()]););return a}},e=function(a){return(a+"").replace(/^\s+|\s+$|/g,"")},f=function(a){return(a+"").replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")},g=Array.isArray||"undefined"!=typeof $&&$.isArray||function(a){return"[object Array]"===Object.prototype.toString.call(a)},h={a:"[aḀḁĂăÂâǍǎȺⱥȦȧẠạÄäÀàÁáĀāÃãÅåąĄÃąĄ]",b:"[b␢βΒB฿𐌁ᛒ]",c:"[cĆćĈĉČčĊċC̄c̄ÇçḈḉȻȼƇƈɕᴄＣｃ]",d:"[dĎďḊḋḐḑḌḍḒḓḎḏĐđD̦d̦ƉɖƊɗƋƌᵭᶁᶑȡᴅＤｄð]",e:"[eÉéÈèÊêḘḙĚěĔĕẼẽḚḛẺẻĖėËëĒēȨȩĘęᶒɆɇȄȅẾếỀềỄễỂểḜḝḖḗḔḕȆȇẸẹỆệⱸᴇＥｅɘǝƏƐε]",f:"[fƑƒḞḟ]",g:"[gɢ₲ǤǥĜĝĞğĢģƓɠĠġ]",h:"[hĤĥĦħḨḩẖẖḤḥḢḣɦʰǶƕ]",i:"[iÍíÌìĬĭÎîǏǐÏïḮḯĨĩĮįĪīỈỉȈȉȊȋỊịḬḭƗɨɨ̆ᵻᶖİiIıɪＩｉ]",j:"[jȷĴĵɈɉʝɟʲ]",k:"[kƘƙꝀꝁḰḱǨǩḲḳḴḵκϰ₭]",l:"[lŁłĽľĻļĹĺḶḷḸḹḼḽḺḻĿŀȽƚⱠⱡⱢɫɬᶅɭȴʟＬｌ]",n:"[nŃńǸǹŇňÑñṄṅŅņṆṇṊṋṈṉN̈n̈ƝɲȠƞᵰᶇɳȵɴＮｎŊŋ]",o:"[oØøÖöÓóÒòÔôǑǒŐőŎŏȮȯỌọƟɵƠơỎỏŌōÕõǪǫȌȍՕօ]",p:"[pṔṕṖṗⱣᵽƤƥᵱ]",q:"[qꝖꝗʠɊɋꝘꝙq̃]",r:"[rŔŕɌɍŘřŖŗṘṙȐȑȒȓṚṛⱤɽ]",s:"[sŚśṠṡṢṣꞨꞩŜŝŠšŞşȘșS̈s̈]",t:"[tŤťṪṫŢţṬṭƮʈȚțṰṱṮṯƬƭ]",u:"[uŬŭɄʉỤụÜüÚúÙùÛûǓǔŰűŬŭƯưỦủŪūŨũŲųȔȕ∪]",v:"[vṼṽṾṿƲʋꝞꝟⱱʋ]",w:"[wẂẃẀẁŴŵẄẅẆẇẈẉ]",x:"[xẌẍẊẋχ]",y:"[yÝýỲỳŶŷŸÿỸỹẎẏỴỵɎɏƳƴ]",z:"[zŹźẐẑŽžŻżẒẓẔẕƵƶ]"},i=function(){var a,b,c,d,e="",f={};for(c in h)if(h.hasOwnProperty(c))for(d=h[c].substring(2,h[c].length-1),e+=d,a=0,b=d.length;a<b;a++)f[d.charAt(a)]=c;var g=new RegExp("["+e+"]","g");return function(a){return a.replace(g,function(a){return f[a]}).toLowerCase()}}();return a}),function(a,b){"function"==typeof define&&define.amd?define("microplugin",b):"object"==typeof exports?module.exports=b():a.MicroPlugin=b()}(this,function(){var a={};a.mixin=function(a){a.plugins={},a.prototype.initializePlugins=function(a){var c,d,e,f=this,g=[];if(f.plugins={names:[],settings:{},requested:{},loaded:{}},b.isArray(a))for(c=0,d=a.length;c<d;c++)"string"==typeof a[c]?g.push(a[c]):(f.plugins.settings[a[c].name]=a[c].options,g.push(a[c].name));else if(a)for(e in a)a.hasOwnProperty(e)&&(f.plugins.settings[e]=a[e],g.push(e));for(;g.length;)f.require(g.shift())},a.prototype.loadPlugin=function(b){var c=this,d=c.plugins,e=a.plugins[b];if(!a.plugins.hasOwnProperty(b))throw new Error('Unable to find "'+b+'" plugin');d.requested[b]=!0,d.loaded[b]=e.fn.apply(c,[c.plugins.settings[b]||{}]),d.names.push(b)},a.prototype.require=function(a){var b=this,c=b.plugins;if(!b.plugins.loaded.hasOwnProperty(a)){if(c.requested[a])throw new Error('Plugin has circular dependency ("'+a+'")');b.loadPlugin(a)}return c.loaded[a]},a.define=function(b,c){a.plugins[b]={name:b,fn:c}}};var b={isArray:Array.isArray||function(a){return"[object Array]"===Object.prototype.toString.call(a)}};return a}),function(a,b){"function"==typeof define&&define.amd?define("selectize",["jquery","sifter","microplugin"],b):"object"==typeof exports?module.exports=b(require("jquery"),require("sifter"),require("microplugin")):a.Selectize=b(a.jQuery,a.Sifter,a.MicroPlugin)}(this,function(a,b,c){"use strict";var d=function(a,b){if("string"!=typeof b||b.length){var c="string"==typeof b?new RegExp(b,"i"):b,d=function(a){var b=0;if(3===a.nodeType){var e=a.data.search(c);if(e>=0&&a.data.length>0){var f=a.data.match(c),g=document.createElement("span");g.className="highlight";var h=a.splitText(e),i=(h.splitText(f[0].length),h.cloneNode(!0));g.appendChild(i),h.parentNode.replaceChild(g,h),b=1}}else if(1===a.nodeType&&a.childNodes&&!/(script|style)/i.test(a.tagName))for(var j=0;j<a.childNodes.length;++j)j+=d(a.childNodes[j]);return b};return a.each(function(){d(this)})}};a.fn.removeHighlight=function(){return this.find("span.highlight").each(function(){this.parentNode.firstChild.nodeName;var a=this.parentNode;a.replaceChild(this.firstChild,this),a.normalize()}).end()};var e=function(){};e.prototype={on:function(a,b){this._events=this._events||{},this._events[a]=this._events[a]||[],this._events[a].push(b)},off:function(a,b){var c=arguments.length;return 0===c?delete this._events:1===c?delete this._events[a]:(this._events=this._events||{},void(a in this._events!=!1&&this._events[a].splice(this._events[a].indexOf(b),1)))},trigger:function(a){if(this._events=this._events||{},a in this._events!=!1)for(var b=0;b<this._events[a].length;b++)this._events[a][b].apply(this,Array.prototype.slice.call(arguments,1))}},e.mixin=function(a){for(var b=["on","off","trigger"],c=0;c<b.length;c++)a.prototype[b[c]]=e.prototype[b[c]]};var f=/Mac/.test(navigator.userAgent),g=65,h=13,i=27,j=37,k=38,l=80,m=39,n=40,o=78,p=8,q=46,r=16,s=f?91:17,t=f?18:17,u=9,v=1,w=2,x=!/android/i.test(window.navigator.userAgent)&&!!document.createElement("input").validity,y=function(a){return"undefined"!=typeof a},z=function(a){return"undefined"==typeof a||null===a?null:"boolean"==typeof a?a?"1":"0":a+""},A=function(a){return(a+"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")},B={};B.before=function(a,b,c){var d=a[b];a[b]=function(){return c.apply(a,arguments),d.apply(a,arguments)}},B.after=function(a,b,c){var d=a[b];a[b]=function(){var b=d.apply(a,arguments);return c.apply(a,arguments),b}};var C=function(a){var b=!1;return function(){b||(b=!0,a.apply(this,arguments))}},D=function(a,b){var c;return function(){var d=this,e=arguments;window.clearTimeout(c),c=window.setTimeout(function(){a.apply(d,e)},b)}},E=function(a,b,c){var d,e=a.trigger,f={};a.trigger=function(){var c=arguments[0];return b.indexOf(c)===-1?e.apply(a,arguments):void(f[c]=arguments)},c.apply(a,[]),a.trigger=e;for(d in f)f.hasOwnProperty(d)&&e.apply(a,f[d])},F=function(a,b,c,d){a.on(b,c,function(b){for(var c=b.target;c&&c.parentNode!==a[0];)c=c.parentNode;return b.currentTarget=c,d.apply(this,[b])})},G=function(a){var b={};if("selectionStart"in a)b.start=a.selectionStart,b.length=a.selectionEnd-b.start;else if(document.selection){a.focus();var c=document.selection.createRange(),d=document.selection.createRange().text.length;c.moveStart("character",-a.value.length),b.start=c.text.length-d,b.length=d}return b},H=function(a,b,c){var d,e,f={};if(c)for(d=0,e=c.length;d<e;d++)f[c[d]]=a.css(c[d]);else f=a.css();b.css(f)},I=function(b,c){if(!b)return 0;var d=a("<test>").css({position:"absolute",top:-99999,left:-99999,width:"auto",padding:0,whiteSpace:"pre"}).text(b).appendTo("body");H(c,d,["letterSpacing","fontSize","fontFamily","fontWeight","textTransform"]);var e=d.width();return d.remove(),e},J=function(a){var b=null,c=function(c,d){var e,f,g,h,i,j,k,l;c=c||window.event||{},d=d||{},c.metaKey||c.altKey||(d.force||a.data("grow")!==!1)&&(e=a.val(),c.type&&"keydown"===c.type.toLowerCase()&&(f=c.keyCode,g=f>=97&&f<=122||f>=65&&f<=90||f>=48&&f<=57||32===f,f===q||f===p?(l=G(a[0]),l.length?e=e.substring(0,l.start)+e.substring(l.start+l.length):f===p&&l.start?e=e.substring(0,l.start-1)+e.substring(l.start+1):f===q&&"undefined"!=typeof l.start&&(e=e.substring(0,l.start)+e.substring(l.start+1))):g&&(j=c.shiftKey,k=String.fromCharCode(c.keyCode),k=j?k.toUpperCase():k.toLowerCase(),e+=k)),h=a.attr("placeholder"),!e&&h&&(e=h),i=I(e,a)+4,i!==b&&(b=i,a.width(i),a.triggerHandler("resize")))};a.on("keydown keyup update blur",c),c()},K=function(a){var b=document.createElement("div");return b.appendChild(a.cloneNode(!0)),b.innerHTML},L=function(a,b){b||(b={});var c="Selectize";console.error(c+": "+a),b.explanation&&(console.group&&console.group(),console.error(b.explanation),console.group&&console.groupEnd())},M=function(c,d){var e,f,g,h,i=this;h=c[0],h.selectize=i;var j=window.getComputedStyle&&window.getComputedStyle(h,null);if(g=j?j.getPropertyValue("direction"):h.currentStyle&&h.currentStyle.direction,g=g||c.parents("[dir]:first").attr("dir")||"",a.extend(i,{order:0,settings:d,$input:c,tabIndex:c.attr("tabindex")||"",tagType:"select"===h.tagName.toLowerCase()?v:w,rtl:/rtl/i.test(g),eventNS:".selectize"+ ++M.count,highlightedValue:null,isOpen:!1,isDisabled:!1,isRequired:c.is("[required]"),isInvalid:!1,isLocked:!1,isFocused:!1,isInputHidden:!1,isSetup:!1,isShiftDown:!1,isCmdDown:!1,isCtrlDown:!1,ignoreFocus:!1,ignoreBlur:!1,ignoreHover:!1,hasOptions:!1,currentResults:null,lastValue:"",caretPos:0,loading:0,loadedSearches:{},$activeOption:null,$activeItems:[],optgroups:{},options:{},userOptions:{},items:[],renderCache:{},onSearchChange:null===d.loadThrottle?i.onSearchChange:D(i.onSearchChange,d.loadThrottle)}),i.sifter=new b(this.options,{diacritics:d.diacritics}),i.settings.options){for(e=0,f=i.settings.options.length;e<f;e++)i.registerOption(i.settings.options[e]);delete i.settings.options}if(i.settings.optgroups){for(e=0,f=i.settings.optgroups.length;e<f;e++)i.registerOptionGroup(i.settings.optgroups[e]);delete i.settings.optgroups}i.settings.mode=i.settings.mode||(1===i.settings.maxItems?"single":"multi"),"boolean"!=typeof i.settings.hideSelected&&(i.settings.hideSelected="multi"===i.settings.mode),i.initializePlugins(i.settings.plugins),i.setupCallbacks(),i.setupTemplates(),i.setup()};return e.mixin(M),"undefined"!=typeof c?c.mixin(M):L("Dependency MicroPlugin is missing",{explanation:'Make sure you either: (1) are using the "standalone" version of Selectize, or (2) require MicroPlugin before you load Selectize.'}),a.extend(M.prototype,{setup:function(){var b,c,d,e,g,h,i,j,k,l,m=this,n=m.settings,o=m.eventNS,p=a(window),q=a(document),u=m.$input;if(i=m.settings.mode,j=u.attr("class")||"",b=a("<div>").addClass(n.wrapperClass).addClass(j).addClass(i),c=a("<div>").addClass(n.inputClass).addClass("items").appendTo(b),d=a('<input type="text" autocomplete="off" />').appendTo(c).attr("tabindex",u.is(":disabled")?"-1":m.tabIndex),h=a(n.dropdownParent||b),e=a("<div>").addClass(n.dropdownClass).addClass(i).hide().appendTo(h),g=a("<div>").addClass(n.dropdownContentClass).appendTo(e),(l=u.attr("id"))&&(d.attr("id",l+"-selectized"),a("label[for='"+l+"']").attr("for",l+"-selectized")),m.settings.copyClassesToDropdown&&e.addClass(j),b.css({width:u[0].style.width}),m.plugins.names.length&&(k="plugin-"+m.plugins.names.join(" plugin-"),b.addClass(k),e.addClass(k)),(null===n.maxItems||n.maxItems>1)&&m.tagType===v&&u.attr("multiple","multiple"),m.settings.placeholder&&d.attr("placeholder",n.placeholder),!m.settings.splitOn&&m.settings.delimiter){var w=m.settings.delimiter.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&");m.settings.splitOn=new RegExp("\\s*"+w+"+\\s*")}u.attr("autocorrect")&&d.attr("autocorrect",u.attr("autocorrect")),u.attr("autocapitalize")&&d.attr("autocapitalize",u.attr("autocapitalize")),m.$wrapper=b,m.$control=c,m.$control_input=d,m.$dropdown=e,m.$dropdown_content=g,e.on("mouseenter","[data-selectable]",function(){return m.onOptionHover.apply(m,arguments)}),e.on("mousedown click","[data-selectable]",function(){return m.onOptionSelect.apply(m,arguments)}),F(c,"mousedown","*:not(input)",function(){return m.onItemSelect.apply(m,arguments)}),J(d),c.on({mousedown:function(){return m.onMouseDown.apply(m,arguments)},click:function(){return m.onClick.apply(m,arguments)}}),d.on({mousedown:function(a){a.stopPropagation()},keydown:function(){return m.onKeyDown.apply(m,arguments)},keyup:function(){return m.onKeyUp.apply(m,arguments)},keypress:function(){return m.onKeyPress.apply(m,arguments)},resize:function(){m.positionDropdown.apply(m,[])},blur:function(){return m.onBlur.apply(m,arguments)},focus:function(){return m.ignoreBlur=!1,m.onFocus.apply(m,arguments)},paste:function(){return m.onPaste.apply(m,arguments)}}),q.on("keydown"+o,function(a){m.isCmdDown=a[f?"metaKey":"ctrlKey"],m.isCtrlDown=a[f?"altKey":"ctrlKey"],m.isShiftDown=a.shiftKey}),q.on("keyup"+o,function(a){a.keyCode===t&&(m.isCtrlDown=!1),a.keyCode===r&&(m.isShiftDown=!1),a.keyCode===s&&(m.isCmdDown=!1)}),q.on("mousedown"+o,function(a){if(m.isFocused){if(a.target===m.$dropdown[0]||a.target.parentNode===m.$dropdown[0])return!1;m.$control.has(a.target).length||a.target===m.$control[0]||m.blur(a.target)}}),p.on(["scroll"+o,"resize"+o].join(" "),function(){m.isOpen&&m.positionDropdown.apply(m,arguments)}),p.on("mousemove"+o,function(){m.ignoreHover=!1}),this.revertSettings={$children:u.children().detach(),tabindex:u.attr("tabindex")},u.attr("tabindex",-1).hide().after(m.$wrapper),a.isArray(n.items)&&(m.setValue(n.items),delete n.items),x&&u.on("invalid"+o,function(a){a.preventDefault(),m.isInvalid=!0,m.refreshState()}),m.updateOriginalInput(),m.refreshItems(),m.refreshState(),m.updatePlaceholder(),m.isSetup=!0,u.is(":disabled")&&m.disable(),m.on("change",this.onChange),u.data("selectize",m),u.addClass("selectized"),m.trigger("initialize"),n.preload===!0&&m.onSearchChange("")},setupTemplates:function(){var b=this,c=b.settings.labelField,d=b.settings.optgroupLabelField,e={optgroup:function(a){return'<div class="optgroup">'+a.html+"</div>"},optgroup_header:function(a,b){return'<div class="optgroup-header">'+b(a[d])+"</div>"},option:function(a,b){return'<div class="option">'+b(a[c])+"</div>"},item:function(a,b){return'<div class="item">'+b(a[c])+"</div>"},option_create:function(a,b){return'<div class="create">Add <strong>'+b(a.input)+"</strong>&hellip;</div>"}};b.settings.render=a.extend({},e,b.settings.render)},setupCallbacks:function(){var a,b,c={initialize:"onInitialize",change:"onChange",item_add:"onItemAdd",item_remove:"onItemRemove",clear:"onClear",option_add:"onOptionAdd",option_remove:"onOptionRemove",option_clear:"onOptionClear",optgroup_add:"onOptionGroupAdd",optgroup_remove:"onOptionGroupRemove",optgroup_clear:"onOptionGroupClear",dropdown_open:"onDropdownOpen",dropdown_close:"onDropdownClose",type:"onType",load:"onLoad",focus:"onFocus",blur:"onBlur"};for(a in c)c.hasOwnProperty(a)&&(b=this.settings[c[a]],b&&this.on(a,b))},onClick:function(a){var b=this;b.isFocused||(b.focus(),a.preventDefault())},onMouseDown:function(b){var c=this,d=b.isDefaultPrevented();a(b.target);if(c.isFocused){if(b.target!==c.$control_input[0])return"single"===c.settings.mode?c.isOpen?c.close():c.open():d||c.setActiveItem(null),!1}else d||window.setTimeout(function(){c.focus()},0)},onChange:function(){this.$input.trigger("change")},onPaste:function(b){var c=this;return c.isFull()||c.isInputHidden||c.isLocked?void b.preventDefault():void(c.settings.splitOn&&setTimeout(function(){var b=c.$control_input.val();if(b.match(c.settings.splitOn))for(var d=a.trim(b).split(c.settings.splitOn),e=0,f=d.length;e<f;e++)c.createItem(d[e])},0))},onKeyPress:function(a){if(this.isLocked)return a&&a.preventDefault();var b=String.fromCharCode(a.keyCode||a.which);return this.settings.create&&"multi"===this.settings.mode&&b===this.settings.delimiter?(this.createItem(),a.preventDefault(),!1):void 0},onKeyDown:function(a){var b=(a.target===this.$control_input[0],this);if(b.isLocked)return void(a.keyCode!==u&&a.preventDefault());switch(a.keyCode){case g:if(b.isCmdDown)return void b.selectAll();break;case i:return void(b.isOpen&&(a.preventDefault(),a.stopPropagation(),b.close()));case o:if(!a.ctrlKey||a.altKey)break;case n:if(!b.isOpen&&b.hasOptions)b.open();else if(b.$activeOption){b.ignoreHover=!0;var c=b.getAdjacentOption(b.$activeOption,1);c.length&&b.setActiveOption(c,!0,!0)}return void a.preventDefault();case l:if(!a.ctrlKey||a.altKey)break;case k:if(b.$activeOption){b.ignoreHover=!0;var d=b.getAdjacentOption(b.$activeOption,-1);d.length&&b.setActiveOption(d,!0,!0)}return void a.preventDefault();case h:return void(b.isOpen&&b.$activeOption&&(b.onOptionSelect({currentTarget:b.$activeOption}),a.preventDefault()));case j:return void b.advanceSelection(-1,a);case m:return void b.advanceSelection(1,a);case u:return b.settings.selectOnTab&&b.isOpen&&b.$activeOption&&(b.onOptionSelect({currentTarget:b.$activeOption}),b.isFull()||a.preventDefault()),void(b.settings.create&&b.createItem()&&a.preventDefault());case p:case q:return void b.deleteSelection(a)}return!b.isFull()&&!b.isInputHidden||(f?a.metaKey:a.ctrlKey)?void 0:void a.preventDefault()},onKeyUp:function(a){var b=this;if(b.isLocked)return a&&a.preventDefault();var c=b.$control_input.val()||"";b.lastValue!==c&&(b.lastValue=c,b.onSearchChange(c),b.refreshOptions(),b.trigger("type",c))},onSearchChange:function(a){var b=this,c=b.settings.load;c&&(b.loadedSearches.hasOwnProperty(a)||(b.loadedSearches[a]=!0,b.load(function(d){c.apply(b,[a,d])})))},onFocus:function(a){var b=this,c=b.isFocused;return b.isDisabled?(b.blur(),a&&a.preventDefault(),!1):void(b.ignoreFocus||(b.isFocused=!0,"focus"===b.settings.preload&&b.onSearchChange(""),c||b.trigger("focus"),b.$activeItems.length||(b.showInput(),b.setActiveItem(null),b.refreshOptions(!!b.settings.openOnFocus)),b.refreshState()))},onBlur:function(a,b){var c=this;if(c.isFocused&&(c.isFocused=!1,!c.ignoreFocus)){if(!c.ignoreBlur&&document.activeElement===c.$dropdown_content[0])return c.ignoreBlur=!0,void c.onFocus(a);var d=function(){c.close(),c.setTextboxValue(""),c.setActiveItem(null),c.setActiveOption(null),c.setCaret(c.items.length),c.refreshState(),b&&b.focus&&b.focus(),c.ignoreFocus=!1,c.trigger("blur")};c.ignoreFocus=!0,c.settings.create&&c.settings.createOnBlur?c.createItem(null,!1,d):d()}},onOptionHover:function(a){this.ignoreHover||this.setActiveOption(a.currentTarget,!1)},onOptionSelect:function(b){var c,d,e=this;b.preventDefault&&(b.preventDefault(),b.stopPropagation()),d=a(b.currentTarget),d.hasClass("create")?e.createItem(null,function(){e.settings.closeAfterSelect&&e.close()}):(c=d.attr("data-value"),"undefined"!=typeof c&&(e.lastQuery=null,e.setTextboxValue(""),e.addItem(c),e.settings.closeAfterSelect?e.close():!e.settings.hideSelected&&b.type&&/mouse/.test(b.type)&&e.setActiveOption(e.getOption(c))))},onItemSelect:function(a){var b=this;b.isLocked||"multi"===b.settings.mode&&(a.preventDefault(),b.setActiveItem(a.currentTarget,a))},load:function(a){var b=this,c=b.$wrapper.addClass(b.settings.loadingClass);b.loading++,a.apply(b,[function(a){b.loading=Math.max(b.loading-1,0),a&&a.length&&(b.addOption(a),b.refreshOptions(b.isFocused&&!b.isInputHidden)),b.loading||c.removeClass(b.settings.loadingClass),b.trigger("load",a)}])},setTextboxValue:function(a){var b=this.$control_input,c=b.val()!==a;c&&(b.val(a).triggerHandler("update"),this.lastValue=a)},getValue:function(){return this.tagType===v&&this.$input.attr("multiple")?this.items:this.items.join(this.settings.delimiter)},setValue:function(a,b){var c=b?[]:["change"];E(this,c,function(){this.clear(b),this.addItems(a,b)})},setActiveItem:function(b,c){var d,e,f,g,h,i,j,k,l=this;if("single"!==l.settings.mode){if(b=a(b),!b.length)return a(l.$activeItems).removeClass("active"),l.$activeItems=[],void(l.isFocused&&l.showInput());if(d=c&&c.type.toLowerCase(),"mousedown"===d&&l.isShiftDown&&l.$activeItems.length){for(k=l.$control.children(".active:last"),g=Array.prototype.indexOf.apply(l.$control[0].childNodes,[k[0]]),h=Array.prototype.indexOf.apply(l.$control[0].childNodes,[b[0]]),g>h&&(j=g,g=h,h=j),e=g;e<=h;e++)i=l.$control[0].childNodes[e],l.$activeItems.indexOf(i)===-1&&(a(i).addClass("active"),l.$activeItems.push(i));c.preventDefault()}else"mousedown"===d&&l.isCtrlDown||"keydown"===d&&this.isShiftDown?b.hasClass("active")?(f=l.$activeItems.indexOf(b[0]),l.$activeItems.splice(f,1),b.removeClass("active")):l.$activeItems.push(b.addClass("active")[0]):(a(l.$activeItems).removeClass("active"),l.$activeItems=[b.addClass("active")[0]]);l.hideInput(),this.isFocused||l.focus()}},setActiveOption:function(b,c,d){var e,f,g,h,i,j=this;j.$activeOption&&j.$activeOption.removeClass("active"),j.$activeOption=null,b=a(b),b.length&&(j.$activeOption=b.addClass("active"),!c&&y(c)||(e=j.$dropdown_content.height(),f=j.$activeOption.outerHeight(!0),c=j.$dropdown_content.scrollTop()||0,g=j.$activeOption.offset().top-j.$dropdown_content.offset().top+c,h=g,i=g-e+f,g+f>e+c?j.$dropdown_content.stop().animate({scrollTop:i},d?j.settings.scrollDuration:0):g<c&&j.$dropdown_content.stop().animate({scrollTop:h},d?j.settings.scrollDuration:0)))},selectAll:function(){var a=this;"single"!==a.settings.mode&&(a.$activeItems=Array.prototype.slice.apply(a.$control.children(":not(input)").addClass("active")),a.$activeItems.length&&(a.hideInput(),a.close()),a.focus())},hideInput:function(){var a=this;a.setTextboxValue(""),a.$control_input.css({opacity:0,position:"absolute",left:a.rtl?1e4:-1e4}),a.isInputHidden=!0},showInput:function(){this.$control_input.css({opacity:1,position:"relative",left:0}),this.isInputHidden=!1},focus:function(){var a=this;a.isDisabled||(a.ignoreFocus=!0,a.$control_input[0].focus(),window.setTimeout(function(){a.ignoreFocus=!1,a.onFocus()},0))},blur:function(a){this.$control_input[0].blur(),this.onBlur(null,a)},getScoreFunction:function(a){return this.sifter.getScoreFunction(a,this.getSearchOptions())},getSearchOptions:function(){var a=this.settings,b=a.sortField;return"string"==typeof b&&(b=[{field:b}]),{fields:a.searchField,conjunction:a.searchConjunction,sort:b}},search:function(b){var c,d,e,f=this,g=f.settings,h=this.getSearchOptions();if(g.score&&(e=f.settings.score.apply(this,[b]),"function"!=typeof e))throw new Error('Selectize "score" setting must be a function that returns a function');if(b!==f.lastQuery?(f.lastQuery=b,d=f.sifter.search(b,a.extend(h,{score:e})),f.currentResults=d):d=a.extend(!0,{},f.currentResults),g.hideSelected)for(c=d.items.length-1;c>=0;c--)f.items.indexOf(z(d.items[c].id))!==-1&&d.items.splice(c,1);return d},refreshOptions:function(b){var c,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;"undefined"==typeof b&&(b=!0);var t=this,u=a.trim(t.$control_input.val()),v=t.search(u),w=t.$dropdown_content,x=t.$activeOption&&z(t.$activeOption.attr("data-value"));for(g=v.items.length,"number"==typeof t.settings.maxOptions&&(g=Math.min(g,t.settings.maxOptions)),h={},i=[],c=0;c<g;c++)for(j=t.options[v.items[c].id],k=t.render("option",j),l=j[t.settings.optgroupField]||"",m=a.isArray(l)?l:[l],e=0,f=m&&m.length;e<f;e++)l=m[e],t.optgroups.hasOwnProperty(l)||(l=""),h.hasOwnProperty(l)||(h[l]=document.createDocumentFragment(),i.push(l)),h[l].appendChild(k);for(this.settings.lockOptgroupOrder&&i.sort(function(a,b){var c=t.optgroups[a].$order||0,d=t.optgroups[b].$order||0;return c-d}),n=document.createDocumentFragment(),c=0,g=i.length;c<g;c++)l=i[c],t.optgroups.hasOwnProperty(l)&&h[l].childNodes.length?(o=document.createDocumentFragment(),o.appendChild(t.render("optgroup_header",t.optgroups[l])),o.appendChild(h[l]),n.appendChild(t.render("optgroup",a.extend({},t.optgroups[l],{html:K(o),dom:o})))):n.appendChild(h[l]);if(w.html(n),t.settings.highlight&&v.query.length&&v.tokens.length)for(w.removeHighlight(),c=0,g=v.tokens.length;c<g;c++)d(w,v.tokens[c].regex);if(!t.settings.hideSelected)for(c=0,g=t.items.length;c<g;c++)t.getOption(t.items[c]).addClass("selected");p=t.canCreate(u),p&&(w.prepend(t.render("option_create",{input:u})),s=a(w[0].childNodes[0])),t.hasOptions=v.items.length>0||p,t.hasOptions?(v.items.length>0?(r=x&&t.getOption(x),r&&r.length?q=r:"single"===t.settings.mode&&t.items.length&&(q=t.getOption(t.items[0])),q&&q.length||(q=s&&!t.settings.addPrecedence?t.getAdjacentOption(s,1):w.find("[data-selectable]:first"))):q=s,t.setActiveOption(q),b&&!t.isOpen&&t.open()):(t.setActiveOption(null),b&&t.isOpen&&t.close())},addOption:function(b){var c,d,e,f=this;if(a.isArray(b))for(c=0,d=b.length;c<d;c++)f.addOption(b[c]);else(e=f.registerOption(b))&&(f.userOptions[e]=!0,f.lastQuery=null,f.trigger("option_add",e,b))},registerOption:function(a){var b=z(a[this.settings.valueField]);return"undefined"!=typeof b&&null!==b&&!this.options.hasOwnProperty(b)&&(a.$order=a.$order||++this.order,this.options[b]=a,b)},registerOptionGroup:function(a){var b=z(a[this.settings.optgroupValueField]);return!!b&&(a.$order=a.$order||++this.order,this.optgroups[b]=a,b)},addOptionGroup:function(a,b){b[this.settings.optgroupValueField]=a,(a=this.registerOptionGroup(b))&&this.trigger("optgroup_add",a,b)},removeOptionGroup:function(a){this.optgroups.hasOwnProperty(a)&&(delete this.optgroups[a],this.renderCache={},this.trigger("optgroup_remove",a))},clearOptionGroups:function(){this.optgroups={},this.renderCache={},this.trigger("optgroup_clear")},updateOption:function(b,c){var d,e,f,g,h,i,j,k=this;if(b=z(b),f=z(c[k.settings.valueField]),null!==b&&k.options.hasOwnProperty(b)){if("string"!=typeof f)throw new Error("Value must be set in option data");j=k.options[b].$order,f!==b&&(delete k.options[b],g=k.items.indexOf(b),g!==-1&&k.items.splice(g,1,f)),c.$order=c.$order||j,k.options[f]=c,h=k.renderCache.item,i=k.renderCache.option,h&&(delete h[b],delete h[f]),i&&(delete i[b],delete i[f]),k.items.indexOf(f)!==-1&&(d=k.getItem(b),e=a(k.render("item",c)),d.hasClass("active")&&e.addClass("active"),d.replaceWith(e)),k.lastQuery=null,k.isOpen&&k.refreshOptions(!1)}},removeOption:function(a,b){var c=this;a=z(a);var d=c.renderCache.item,e=c.renderCache.option;d&&delete d[a],e&&delete e[a],delete c.userOptions[a],delete c.options[a],c.lastQuery=null,c.trigger("option_remove",a),c.removeItem(a,b)},clearOptions:function(){var a=this;a.loadedSearches={},a.userOptions={},a.renderCache={},a.options=a.sifter.items={},a.lastQuery=null,a.trigger("option_clear"),a.clear()},getOption:function(a){return this.getElementWithValue(a,this.$dropdown_content.find("[data-selectable]"))},getAdjacentOption:function(b,c){var d=this.$dropdown.find("[data-selectable]"),e=d.index(b)+c;return e>=0&&e<d.length?d.eq(e):a()},getElementWithValue:function(b,c){if(b=z(b),"undefined"!=typeof b&&null!==b)for(var d=0,e=c.length;d<e;d++)if(c[d].getAttribute("data-value")===b)return a(c[d]);return a()},getItem:function(a){return this.getElementWithValue(a,this.$control.children())},addItems:function(b,c){for(var d=a.isArray(b)?b:[b],e=0,f=d.length;e<f;e++)this.isPending=e<f-1,this.addItem(d[e],c)},addItem:function(b,c){var d=c?[]:["change"];E(this,d,function(){var d,e,f,g,h,i=this,j=i.settings.mode;return b=z(b),i.items.indexOf(b)!==-1?void("single"===j&&i.close()):void(i.options.hasOwnProperty(b)&&("single"===j&&i.clear(c),"multi"===j&&i.isFull()||(d=a(i.render("item",i.options[b])),h=i.isFull(),i.items.splice(i.caretPos,0,b),i.insertAtCaret(d),(!i.isPending||!h&&i.isFull())&&i.refreshState(),i.isSetup&&(f=i.$dropdown_content.find("[data-selectable]"),i.isPending||(e=i.getOption(b),g=i.getAdjacentOption(e,1).attr("data-value"),i.refreshOptions(i.isFocused&&"single"!==j),g&&i.setActiveOption(i.getOption(g))),!f.length||i.isFull()?i.close():i.positionDropdown(),i.updatePlaceholder(),i.trigger("item_add",b,d),i.updateOriginalInput({silent:c})))))})},removeItem:function(b,c){var d,e,f,g=this;d=b instanceof a?b:g.getItem(b),b=z(d.attr("data-value")),e=g.items.indexOf(b),e!==-1&&(d.remove(),d.hasClass("active")&&(f=g.$activeItems.indexOf(d[0]),g.$activeItems.splice(f,1)),g.items.splice(e,1),g.lastQuery=null,!g.settings.persist&&g.userOptions.hasOwnProperty(b)&&g.removeOption(b,c),e<g.caretPos&&g.setCaret(g.caretPos-1),g.refreshState(),g.updatePlaceholder(),g.updateOriginalInput({silent:c}),g.positionDropdown(),g.trigger("item_remove",b,d))},createItem:function(b,c){var d=this,e=d.caretPos;b=b||a.trim(d.$control_input.val()||"");var f=arguments[arguments.length-1];if("function"!=typeof f&&(f=function(){}),"boolean"!=typeof c&&(c=!0),!d.canCreate(b))return f(),!1;d.lock();var g="function"==typeof d.settings.create?this.settings.create:function(a){var b={};return b[d.settings.labelField]=a,b[d.settings.valueField]=a,b},h=C(function(a){if(d.unlock(),!a||"object"!=typeof a)return f();var b=z(a[d.settings.valueField]);return"string"!=typeof b?f():(d.setTextboxValue(""),d.addOption(a),d.setCaret(e),d.addItem(b),d.refreshOptions(c&&"single"!==d.settings.mode),void f(a))}),i=g.apply(this,[b,h]);return"undefined"!=typeof i&&h(i),!0},refreshItems:function(){this.lastQuery=null,this.isSetup&&this.addItem(this.items),this.refreshState(),this.updateOriginalInput()},refreshState:function(){this.refreshValidityState(),this.refreshClasses()},refreshValidityState:function(){if(!this.isRequired)return!1;var a=!this.items.length;this.isInvalid=a,this.$control_input.prop("required",a),this.$input.prop("required",!a)},refreshClasses:function(){var b=this,c=b.isFull(),d=b.isLocked;b.$wrapper.toggleClass("rtl",b.rtl),b.$control.toggleClass("focus",b.isFocused).toggleClass("disabled",b.isDisabled).toggleClass("required",b.isRequired).toggleClass("invalid",b.isInvalid).toggleClass("locked",d).toggleClass("full",c).toggleClass("not-full",!c).toggleClass("input-active",b.isFocused&&!b.isInputHidden).toggleClass("dropdown-active",b.isOpen).toggleClass("has-options",!a.isEmptyObject(b.options)).toggleClass("has-items",b.items.length>0),b.$control_input.data("grow",!c&&!d)},isFull:function(){return null!==this.settings.maxItems&&this.items.length>=this.settings.maxItems},updateOriginalInput:function(a){var b,c,d,e,f=this;if(a=a||{},f.tagType===v){for(d=[],b=0,c=f.items.length;b<c;b++)e=f.options[f.items[b]][f.settings.labelField]||"",d.push('<option value="'+A(f.items[b])+'" selected="selected">'+A(e)+"</option>");d.length||this.$input.attr("multiple")||d.push('<option value="" selected="selected"></option>'),
f.$input.html(d.join(""))}else f.$input.val(f.getValue()),f.$input.attr("value",f.$input.val());f.isSetup&&(a.silent||f.trigger("change",f.$input.val()))},updatePlaceholder:function(){if(this.settings.placeholder){var a=this.$control_input;this.items.length?a.removeAttr("placeholder"):a.attr("placeholder",this.settings.placeholder),a.triggerHandler("update",{force:!0})}},open:function(){var a=this;a.isLocked||a.isOpen||"multi"===a.settings.mode&&a.isFull()||(a.focus(),a.isOpen=!0,a.refreshState(),a.$dropdown.css({visibility:"hidden",display:"block"}),a.positionDropdown(),a.$dropdown.css({visibility:"visible"}),a.trigger("dropdown_open",a.$dropdown))},close:function(){var a=this,b=a.isOpen;"single"===a.settings.mode&&a.items.length&&(a.hideInput(),a.$control_input.blur()),a.isOpen=!1,a.$dropdown.hide(),a.setActiveOption(null),a.refreshState(),b&&a.trigger("dropdown_close",a.$dropdown)},positionDropdown:function(){var a=this.$control,b="body"===this.settings.dropdownParent?a.offset():a.position();b.top+=a.outerHeight(!0),this.$dropdown.css({width:a.outerWidth(),top:b.top,left:b.left})},clear:function(a){var b=this;b.items.length&&(b.$control.children(":not(input)").remove(),b.items=[],b.lastQuery=null,b.setCaret(0),b.setActiveItem(null),b.updatePlaceholder(),b.updateOriginalInput({silent:a}),b.refreshState(),b.showInput(),b.trigger("clear"))},insertAtCaret:function(b){var c=Math.min(this.caretPos,this.items.length);0===c?this.$control.prepend(b):a(this.$control[0].childNodes[c]).before(b),this.setCaret(c+1)},deleteSelection:function(b){var c,d,e,f,g,h,i,j,k,l=this;if(e=b&&b.keyCode===p?-1:1,f=G(l.$control_input[0]),l.$activeOption&&!l.settings.hideSelected&&(i=l.getAdjacentOption(l.$activeOption,-1).attr("data-value")),g=[],l.$activeItems.length){for(k=l.$control.children(".active:"+(e>0?"last":"first")),h=l.$control.children(":not(input)").index(k),e>0&&h++,c=0,d=l.$activeItems.length;c<d;c++)g.push(a(l.$activeItems[c]).attr("data-value"));b&&(b.preventDefault(),b.stopPropagation())}else(l.isFocused||"single"===l.settings.mode)&&l.items.length&&(e<0&&0===f.start&&0===f.length?g.push(l.items[l.caretPos-1]):e>0&&f.start===l.$control_input.val().length&&g.push(l.items[l.caretPos]));if(!g.length||"function"==typeof l.settings.onDelete&&l.settings.onDelete.apply(l,[g])===!1)return!1;for("undefined"!=typeof h&&l.setCaret(h);g.length;)l.removeItem(g.pop());return l.showInput(),l.positionDropdown(),l.refreshOptions(!0),i&&(j=l.getOption(i),j.length&&l.setActiveOption(j)),!0},advanceSelection:function(a,b){var c,d,e,f,g,h,i=this;0!==a&&(i.rtl&&(a*=-1),c=a>0?"last":"first",d=G(i.$control_input[0]),i.isFocused&&!i.isInputHidden?(f=i.$control_input.val().length,g=a<0?0===d.start&&0===d.length:d.start===f,g&&!f&&i.advanceCaret(a,b)):(h=i.$control.children(".active:"+c),h.length&&(e=i.$control.children(":not(input)").index(h),i.setActiveItem(null),i.setCaret(a>0?e+1:e))))},advanceCaret:function(a,b){var c,d,e=this;0!==a&&(c=a>0?"next":"prev",e.isShiftDown?(d=e.$control_input[c](),d.length&&(e.hideInput(),e.setActiveItem(d),b&&b.preventDefault())):e.setCaret(e.caretPos+a))},setCaret:function(b){var c=this;if(b="single"===c.settings.mode?c.items.length:Math.max(0,Math.min(c.items.length,b)),!c.isPending){var d,e,f,g;for(f=c.$control.children(":not(input)"),d=0,e=f.length;d<e;d++)g=a(f[d]).detach(),d<b?c.$control_input.before(g):c.$control.append(g)}c.caretPos=b},lock:function(){this.close(),this.isLocked=!0,this.refreshState()},unlock:function(){this.isLocked=!1,this.refreshState()},disable:function(){var a=this;a.$input.prop("disabled",!0),a.$control_input.prop("disabled",!0).prop("tabindex",-1),a.isDisabled=!0,a.lock()},enable:function(){var a=this;a.$input.prop("disabled",!1),a.$control_input.prop("disabled",!1).prop("tabindex",a.tabIndex),a.isDisabled=!1,a.unlock()},destroy:function(){var b=this,c=b.eventNS,d=b.revertSettings;b.trigger("destroy"),b.off(),b.$wrapper.remove(),b.$dropdown.remove(),b.$input.html("").append(d.$children).removeAttr("tabindex").removeClass("selectized").attr({tabindex:d.tabindex}).show(),b.$control_input.removeData("grow"),b.$input.removeData("selectize"),a(window).off(c),a(document).off(c),a(document.body).off(c),delete b.$input[0].selectize},render:function(b,c){var d,e,f="",g=!1,h=this;return"option"!==b&&"item"!==b||(d=z(c[h.settings.valueField]),g=!!d),g&&(y(h.renderCache[b])||(h.renderCache[b]={}),h.renderCache[b].hasOwnProperty(d))?h.renderCache[b][d]:(f=a(h.settings.render[b].apply(this,[c,A])),"option"===b||"option_create"===b?f.attr("data-selectable",""):"optgroup"===b&&(e=c[h.settings.optgroupValueField]||"",f.attr("data-group",e)),"option"!==b&&"item"!==b||f.attr("data-value",d||""),g&&(h.renderCache[b][d]=f[0]),f[0])},clearCache:function(a){var b=this;"undefined"==typeof a?b.renderCache={}:delete b.renderCache[a]},canCreate:function(a){var b=this;if(!b.settings.create)return!1;var c=b.settings.createFilter;return a.length&&("function"!=typeof c||c.apply(b,[a]))&&("string"!=typeof c||new RegExp(c).test(a))&&(!(c instanceof RegExp)||c.test(a))}}),M.count=0,M.defaults={options:[],optgroups:[],plugins:[],delimiter:",",splitOn:null,persist:!0,diacritics:!0,create:!1,createOnBlur:!1,createFilter:null,highlight:!0,openOnFocus:!0,maxOptions:1e3,maxItems:null,hideSelected:null,addPrecedence:!1,selectOnTab:!1,preload:!1,allowEmptyOption:!1,closeAfterSelect:!1,scrollDuration:60,loadThrottle:300,loadingClass:"loading",dataAttr:"data-data",optgroupField:"optgroup",valueField:"value",labelField:"text",optgroupLabelField:"label",optgroupValueField:"value",lockOptgroupOrder:!1,sortField:"$order",searchField:["text"],searchConjunction:"and",mode:null,wrapperClass:"selectize-control",inputClass:"selectize-input",dropdownClass:"selectize-dropdown",dropdownContentClass:"selectize-dropdown-content",dropdownParent:null,copyClassesToDropdown:!0,render:{}},a.fn.selectize=function(b){var c=a.fn.selectize.defaults,d=a.extend({},c,b),e=d.dataAttr,f=d.labelField,g=d.valueField,h=d.optgroupField,i=d.optgroupLabelField,j=d.optgroupValueField,k=function(b,c){var h,i,j,k,l=b.attr(e);if(l)for(c.options=JSON.parse(l),h=0,i=c.options.length;h<i;h++)c.items.push(c.options[h][g]);else{var m=a.trim(b.val()||"");if(!d.allowEmptyOption&&!m.length)return;for(j=m.split(d.delimiter),h=0,i=j.length;h<i;h++)k={},k[f]=j[h],k[g]=j[h],c.options.push(k);c.items=j}},l=function(b,c){var k,l,m,n,o=c.options,p={},q=function(a){var b=e&&a.attr(e);return"string"==typeof b&&b.length?JSON.parse(b):null},r=function(b,e){b=a(b);var i=z(b.val());if(i||d.allowEmptyOption)if(p.hasOwnProperty(i)){if(e){var j=p[i][h];j?a.isArray(j)?j.push(e):p[i][h]=[j,e]:p[i][h]=e}}else{var k=q(b)||{};k[f]=k[f]||b.text(),k[g]=k[g]||i,k[h]=k[h]||e,p[i]=k,o.push(k),b.is(":selected")&&c.items.push(i)}},s=function(b){var d,e,f,g,h;for(b=a(b),f=b.attr("label"),f&&(g=q(b)||{},g[i]=f,g[j]=f,c.optgroups.push(g)),h=a("option",b),d=0,e=h.length;d<e;d++)r(h[d],f)};for(c.maxItems=b.attr("multiple")?null:1,n=b.children(),k=0,l=n.length;k<l;k++)m=n[k].tagName.toLowerCase(),"optgroup"===m?s(n[k]):"option"===m&&r(n[k])};return this.each(function(){if(!this.selectize){var e,f=a(this),g=this.tagName.toLowerCase(),h=f.attr("placeholder")||f.attr("data-placeholder");h||d.allowEmptyOption||(h=f.children('option[value=""]').text());var i={placeholder:h,options:[],optgroups:[],items:[]};"select"===g?l(f,i):k(f,i),e=new M(f,a.extend(!0,{},c,i,b))}})},a.fn.selectize.defaults=M.defaults,a.fn.selectize.support={validity:x},M.define("drag_drop",function(b){if(!a.fn.sortable)throw new Error('The "drag_drop" plugin requires jQuery UI "sortable".');if("multi"===this.settings.mode){var c=this;c.lock=function(){var a=c.lock;return function(){var b=c.$control.data("sortable");return b&&b.disable(),a.apply(c,arguments)}}(),c.unlock=function(){var a=c.unlock;return function(){var b=c.$control.data("sortable");return b&&b.enable(),a.apply(c,arguments)}}(),c.setup=function(){var b=c.setup;return function(){b.apply(this,arguments);var d=c.$control.sortable({items:"[data-value]",forcePlaceholderSize:!0,disabled:c.isLocked,start:function(a,b){b.placeholder.css("width",b.helper.css("width")),d.css({overflow:"visible"})},stop:function(){d.css({overflow:"hidden"});var b=c.$activeItems?c.$activeItems.slice():null,e=[];d.children("[data-value]").each(function(){e.push(a(this).attr("data-value"))}),c.setValue(e),c.setActiveItem(b)}})}}()}}),M.define("dropdown_header",function(b){var c=this;b=a.extend({title:"Untitled",headerClass:"selectize-dropdown-header",titleRowClass:"selectize-dropdown-header-title",labelClass:"selectize-dropdown-header-label",closeClass:"selectize-dropdown-header-close",html:function(a){return'<div class="'+a.headerClass+'"><div class="'+a.titleRowClass+'"><span class="'+a.labelClass+'">'+a.title+'</span><a href="javascript:void(0)" class="'+a.closeClass+'">&times;</a></div></div>'}},b),c.setup=function(){var d=c.setup;return function(){d.apply(c,arguments),c.$dropdown_header=a(b.html(b)),c.$dropdown.prepend(c.$dropdown_header)}}()}),M.define("optgroup_columns",function(b){var c=this;b=a.extend({equalizeWidth:!0,equalizeHeight:!0},b),this.getAdjacentOption=function(b,c){var d=b.closest("[data-group]").find("[data-selectable]"),e=d.index(b)+c;return e>=0&&e<d.length?d.eq(e):a()},this.onKeyDown=function(){var a=c.onKeyDown;return function(b){var d,e,f,g;return!this.isOpen||b.keyCode!==j&&b.keyCode!==m?a.apply(this,arguments):(c.ignoreHover=!0,g=this.$activeOption.closest("[data-group]"),d=g.find("[data-selectable]").index(this.$activeOption),g=b.keyCode===j?g.prev("[data-group]"):g.next("[data-group]"),f=g.find("[data-selectable]"),e=f.eq(Math.min(f.length-1,d)),void(e.length&&this.setActiveOption(e)))}}();var d=function(){var a,b=d.width,c=document;return"undefined"==typeof b&&(a=c.createElement("div"),a.innerHTML='<div style="width:50px;height:50px;position:absolute;left:-50px;top:-50px;overflow:auto;"><div style="width:1px;height:100px;"></div></div>',a=a.firstChild,c.body.appendChild(a),b=d.width=a.offsetWidth-a.clientWidth,c.body.removeChild(a)),b},e=function(){var e,f,g,h,i,j,k;if(k=a("[data-group]",c.$dropdown_content),f=k.length,f&&c.$dropdown_content.width()){if(b.equalizeHeight){for(g=0,e=0;e<f;e++)g=Math.max(g,k.eq(e).height());k.css({height:g})}b.equalizeWidth&&(j=c.$dropdown_content.innerWidth()-d(),h=Math.round(j/f),k.css({width:h}),f>1&&(i=j-h*(f-1),k.eq(f-1).css({width:i})))}};(b.equalizeHeight||b.equalizeWidth)&&(B.after(this,"positionDropdown",e),B.after(this,"refreshOptions",e))}),M.define("remove_button",function(b){b=a.extend({label:"&times;",title:"Remove",className:"remove",append:!0},b);var c=function(b,c){c.className="remove-single";var d=b,e='<a href="javascript:void(0)" class="'+c.className+'" tabindex="-1" title="'+A(c.title)+'">'+c.label+"</a>",f=function(a,b){return a+b};b.setup=function(){var g=d.setup;return function(){if(c.append){var h=a(d.$input.context).attr("id"),i=(a("#"+h),d.settings.render.item);d.settings.render.item=function(a){return f(i.apply(b,arguments),e)}}g.apply(b,arguments),b.$control.on("click","."+c.className,function(a){a.preventDefault(),d.isLocked||d.clear()})}}()},d=function(b,c){var d=b,e='<a href="javascript:void(0)" class="'+c.className+'" tabindex="-1" title="'+A(c.title)+'">'+c.label+"</a>",f=function(a,b){var c=a.search(/(<\/[^>]+>\s*)$/);return a.substring(0,c)+b+a.substring(c)};b.setup=function(){var g=d.setup;return function(){if(c.append){var h=d.settings.render.item;d.settings.render.item=function(a){return f(h.apply(b,arguments),e)}}g.apply(b,arguments),b.$control.on("click","."+c.className,function(b){if(b.preventDefault(),!d.isLocked){var c=a(b.currentTarget).parent();d.setActiveItem(c),d.deleteSelection()&&d.setCaret(d.items.length)}})}}()};return"single"===this.settings.mode?void c(this,b):void d(this,b)}),M.define("restore_on_backspace",function(a){var b=this;a.text=a.text||function(a){return a[this.settings.labelField]},this.onKeyDown=function(){var c=b.onKeyDown;return function(b){var d,e;return b.keyCode===p&&""===this.$control_input.val()&&!this.$activeItems.length&&(d=this.caretPos-1,d>=0&&d<this.items.length)?(e=this.options[this.items[d]],this.deleteSelection(b)&&(this.setTextboxValue(a.text.apply(this,[e])),this.refreshOptions(!0)),void b.preventDefault()):c.apply(this,arguments)}}()}),M});
shiny/www/shared/selectize/css/selectize.bootstrap3.css METASEP
/**
 * selectize.bootstrap3.css (v0.12.4) - Bootstrap 3 Theme
 * Copyright (c) 2013–2015 Brian Reavis & contributors
 *
 * 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
 *
 * Unless required by applicable law or agreed to in writing, software distributed under
 * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
 * ANY KIND, either express or implied. See the License for the specific language
 * governing permissions and limitations under the License.
 *
 * @author Brian Reavis <brian@thirdroute.com>
 */
.selectize-control.plugin-drag_drop.multi > .selectize-input > div.ui-sortable-placeholder {
  visibility: visible !important;
  background: #f2f2f2 !important;
  background: rgba(0, 0, 0, 0.06) !important;
  border: 0 none !important;
  -webkit-box-shadow: inset 0 0 12px 4px #ffffff;
  box-shadow: inset 0 0 12px 4px #ffffff;
}
.selectize-control.plugin-drag_drop .ui-sortable-placeholder::after {
  content: '!';
  visibility: hidden;
}
.selectize-control.plugin-drag_drop .ui-sortable-helper {
  -webkit-box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
}
.selectize-dropdown-header {
  position: relative;
  padding: 3px 12px;
  border-bottom: 1px solid #d0d0d0;
  background: #f8f8f8;
  -webkit-border-radius: 4px 4px 0 0;
  -moz-border-radius: 4px 4px 0 0;
  border-radius: 4px 4px 0 0;
}
.selectize-dropdown-header-close {
  position: absolute;
  right: 12px;
  top: 50%;
  color: #333333;
  opacity: 0.4;
  margin-top: -12px;
  line-height: 20px;
  font-size: 20px !important;
}
.selectize-dropdown-header-close:hover {
  color: #000000;
}
.selectize-dropdown.plugin-optgroup_columns .optgroup {
  border-right: 1px solid #f2f2f2;
  border-top: 0 none;
  float: left;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
.selectize-dropdown.plugin-optgroup_columns .optgroup:last-child {
  border-right: 0 none;
}
.selectize-dropdown.plugin-optgroup_columns .optgroup:before {
  display: none;
}
.selectize-dropdown.plugin-optgroup_columns .optgroup-header {
  border-top: 0 none;
}
.selectize-control.plugin-remove_button [data-value] {
  position: relative;
  padding-right: 24px !important;
}
.selectize-control.plugin-remove_button [data-value] .remove {
  z-index: 1;
  /* fixes ie bug (see #392) */
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  width: 17px;
  text-align: center;
  font-weight: bold;
  font-size: 12px;
  color: inherit;
  text-decoration: none;
  vertical-align: middle;
  display: inline-block;
  padding: 1px 0 0 0;
  border-left: 1px solid rgba(0, 0, 0, 0);
  -webkit-border-radius: 0 2px 2px 0;
  -moz-border-radius: 0 2px 2px 0;
  border-radius: 0 2px 2px 0;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
.selectize-control.plugin-remove_button [data-value] .remove:hover {
  background: rgba(0, 0, 0, 0.05);
}
.selectize-control.plugin-remove_button [data-value].active .remove {
  border-left-color: rgba(0, 0, 0, 0);
}
.selectize-control.plugin-remove_button .disabled [data-value] .remove:hover {
  background: none;
}
.selectize-control.plugin-remove_button .disabled [data-value] .remove {
  border-left-color: rgba(77, 77, 77, 0);
}
.selectize-control.plugin-remove_button .remove-single {
  position: absolute;
  right: 28px;
  top: 6px;
  font-size: 23px;
}
.selectize-control {
  position: relative;
}
.selectize-dropdown,
.selectize-input,
.selectize-input input {
  color: #333333;
  font-family: inherit;
  font-size: inherit;
  line-height: 20px;
  -webkit-font-smoothing: inherit;
}
.selectize-input,
.selectize-control.single .selectize-input.input-active {
  background: #ffffff;
  cursor: text;
  display: inline-block;
}
.selectize-input {
  border: 1px solid #cccccc;
  padding: 6px 12px;
  display: inline-block;
  width: 100%;
  overflow: hidden;
  position: relative;
  z-index: 1;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  -webkit-box-shadow: none;
  box-shadow: none;
  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
  border-radius: 4px;
}
.selectize-control.multi .selectize-input.has-items {
  padding: 5px 12px 2px;
}
.selectize-input.full {
  background-color: #ffffff;
}
.selectize-input.disabled,
.selectize-input.disabled * {
  cursor: default !important;
}
.selectize-input.focus {
  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.15);
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.15);
}
.selectize-input.dropdown-active {
  -webkit-border-radius: 4px 4px 0 0;
  -moz-border-radius: 4px 4px 0 0;
  border-radius: 4px 4px 0 0;
}
.selectize-input > * {
  vertical-align: baseline;
  display: -moz-inline-stack;
  display: inline-block;
  zoom: 1;
  *display: inline;
}
.selectize-control.multi .selectize-input > div {
  cursor: pointer;
  margin: 0 3px 3px 0;
  padding: 1px 3px;
  background: #efefef;
  color: #333333;
  border: 0 solid rgba(0, 0, 0, 0);
}
.selectize-control.multi .selectize-input > div.active {
  background: #428bca;
  color: #ffffff;
  border: 0 solid rgba(0, 0, 0, 0);
}
.selectize-control.multi .selectize-input.disabled > div,
.selectize-control.multi .selectize-input.disabled > div.active {
  color: #808080;
  background: #ffffff;
  border: 0 solid rgba(77, 77, 77, 0);
}
.selectize-input > input {
  display: inline-block !important;
  padding: 0 !important;
  min-height: 0 !important;
  max-height: none !important;
  max-width: 100% !important;
  margin: 0 !important;
  text-indent: 0 !important;
  border: 0 none !important;
  background: none !important;
  line-height: inherit !important;
  -webkit-user-select: auto !important;
  -webkit-box-shadow: none !important;
  box-shadow: none !important;
}
.selectize-input > input::-ms-clear {
  display: none;
}
.selectize-input > input:focus {
  outline: none !important;
}
.selectize-input::after {
  content: ' ';
  display: block;
  clear: left;
}
.selectize-input.dropdown-active::before {
  content: ' ';
  display: block;
  position: absolute;
  background: #ffffff;
  height: 1px;
  bottom: 0;
  left: 0;
  right: 0;
}
.selectize-dropdown {
  position: absolute;
  z-index: 10;
  border: 1px solid #d0d0d0;
  background: #ffffff;
  margin: -1px 0 0 0;
  border-top: 0 none;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
  -webkit-border-radius: 0 0 4px 4px;
  -moz-border-radius: 0 0 4px 4px;
  border-radius: 0 0 4px 4px;
}
.selectize-dropdown [data-selectable] {
  cursor: pointer;
  overflow: hidden;
}
.selectize-dropdown [data-selectable] .highlight {
  background: rgba(255, 237, 40, 0.4);
  -webkit-border-radius: 1px;
  -moz-border-radius: 1px;
  border-radius: 1px;
}
.selectize-dropdown [data-selectable],
.selectize-dropdown .optgroup-header {
  padding: 3px 12px;
}
.selectize-dropdown .optgroup:first-child .optgroup-header {
  border-top: 0 none;
}
.selectize-dropdown .optgroup-header {
  color: #777777;
  background: #ffffff;
  cursor: default;
}
.selectize-dropdown .active {
  background-color: #f5f5f5;
  color: #262626;
}
.selectize-dropdown .active.create {
  color: #262626;
}
.selectize-dropdown .create {
  color: rgba(51, 51, 51, 0.5);
}
.selectize-dropdown-content {
  overflow-y: auto;
  overflow-x: hidden;
  max-height: 200px;
  -webkit-overflow-scrolling: touch;
}
.selectize-control.single .selectize-input,
.selectize-control.single .selectize-input input {
  cursor: pointer;
}
.selectize-control.single .selectize-input.input-active,
.selectize-control.single .selectize-input.input-active input {
  cursor: text;
}
.selectize-control.single .selectize-input:after {
  content: ' ';
  display: block;
  position: absolute;
  top: 50%;
  right: 17px;
  margin-top: -3px;
  width: 0;
  height: 0;
  border-style: solid;
  border-width: 5px 5px 0 5px;
  border-color: #333333 transparent transparent transparent;
}
.selectize-control.single .selectize-input.dropdown-active:after {
  margin-top: -4px;
  border-width: 0 5px 5px 5px;
  border-color: transparent transparent #333333 transparent;
}
.selectize-control.rtl.single .selectize-input:after {
  left: 17px;
  right: auto;
}
.selectize-control.rtl .selectize-input > input {
  margin: 0 4px 0 -2px !important;
}
.selectize-control .selectize-input.disabled {
  opacity: 0.5;
  background-color: #ffffff;
}
.selectize-dropdown,
.selectize-dropdown.form-control {
  height: auto;
  padding: 0;
  margin: 2px 0 0 0;
  z-index: 1000;
  background: #ffffff;
  border: 1px solid #cccccc;
  border: 1px solid rgba(0, 0, 0, 0.15);
  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
  border-radius: 4px;
  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
}
.selectize-dropdown .optgroup-header {
  font-size: 12px;
  line-height: 1.42857143;
}
.selectize-dropdown .optgroup:first-child:before {
  display: none;
}
.selectize-dropdown .optgroup:before {
  content: ' ';
  display: block;
  height: 1px;
  margin: 9px 0;
  overflow: hidden;
  background-color: #e5e5e5;
  margin-left: -12px;
  margin-right: -12px;
}
.selectize-dropdown-content {
  padding: 5px 0;
}
.selectize-dropdown-header {
  padding: 6px 12px;
}
.selectize-input {
  min-height: 34px;
}
.selectize-input.dropdown-active {
  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
  border-radius: 4px;
}
.selectize-input.dropdown-active::before {
  display: none;
}
.selectize-input.focus {
  border-color: #66afe9;
  outline: 0;
  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
.has-error .selectize-input {
  border-color: #a94442;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-error .selectize-input:focus {
  border-color: #843534;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
}
.selectize-control.multi .selectize-input.has-items {
  padding-left: 9px;
  padding-right: 9px;
}
.selectize-control.multi .selectize-input > div {
  -webkit-border-radius: 3px;
  -moz-border-radius: 3px;
  border-radius: 3px;
}
.form-control.selectize-control {
  padding: 0;
  height: auto;
  border: none;
  background: none;
  -webkit-box-shadow: none;
  box-shadow: none;
  -webkit-border-radius: 0;
  -moz-border-radius: 0;
  border-radius: 0;
}

shiny/www/shared/jqueryui/images/ui-icons_ffffff_256x240.png METASEP

shiny/www/shared/jqueryui/images/ui-icons_cc0000_256x240.png METASEP

shiny/www/shared/jqueryui/images/ui-icons_777777_256x240.png METASEP

shiny/www/shared/jqueryui/images/ui-icons_777620_256x240.png METASEP

shiny/www/shared/jqueryui/images/ui-icons_555555_256x240.png METASEP

shiny/www/shared/jqueryui/images/ui-icons_444444_256x240.png METASEP

shiny/www/shared/ionrangeslider/scss/shiny.scss METASEP
/* 'shiny' skin for Ion.RangeSlider, largely based on the 'big' skin, but with smaller dimensions, grayscale grid text, and without gradients
© RStudio, Inc, 2014
© Denis Ineshin, 2014  https://github.com/IonDen
© guybowden, 2014  https://github.com/guybowden
*/

@import "_base";

// Both BS3 and BS4 define a border radius mixin, but just in case
// we're trying to compile this without bootstrapSass
@mixin border-radius-shim($radius) {
  @if mixin-exists("border-radius") {
    @include border-radius($radius);
  } @else {
    border-radius: $radius;
  }
}


////////////////////////////////////////////////////////////////////////////

$font-family: $font-family-base !default;
.irs {
  font-family: $font-family;
}

.irs--shiny {
  $name: irs !default;

  // Sizing controls
  $top:           25px !default;
  $line_height:   8px !default;
  $handle_width:  22px !default;
  $handle_height: 22px !default;
  $custom_radius: 3px !default;

  // "High-level" coloring
  $bg:     $body-bg !default;
  $fg:     color-contrast($body-bg) !default;
  $accent: #428bca !default;

  // "Low-level" coloring, borders, and fonts
  $line_bg:            linear-gradient(to bottom, mix($bg, $fg, 87%) -50%, $bg 150%) !default;
  $line_bg_color:      mix($bg, $fg, 93%) !default;
  $line_border:        1px solid mix($bg, $fg, 80%) !default;

  $bar_color:          $accent !default;

  $handle_color:       mix($bg, $fg, 87%) !default;
  $handle_color_hover: $bg !default;
  $handle_border:      1px solid mix($bg, $fg, 67%) !default;
  $handle_box_shadow:  1px 1px 3px rgba($bg, 0.3) !default;

  $minmax_text_color:  null !default;
  $minmax_bg_color:    rgba($fg, 0.1) !default;
  $minmax_font_size:   10px !default;
  $minmax_line_height: 1.333 !default;

  $fromto_bg_color:    $accent !default;
  $fromto_color:       color-contrast($fromto_bg_color) !default;
  $fromto_font_size:   11px !default;
  $fromto_line_height: 1.333 !default;

  $grid_major_color:  $fg !default;
  $grid_minor_color:  mix($bg, $fg, 60%) !default;
  $grid_text_color:   null !default;


  height: 40px;

  &.irs-with-grid {
    height: 60px;
  }

  .#{$name}-line {
    top: $top;
    height: $line_height;
    background: $line_bg;
    background-color: $line_bg_color;
    border: $line_border;
    @include border-radius-shim($line_height);
  }

  .#{$name}-bar {
    top: $top;
    height: $line_height;
    border-top: 1px solid $bar_color;
    border-bottom: 1px solid $bar_color;
    background: $bar_color;

    &--single {
      @include border-radius-shim($line_height 0 0 $line_height);
    }
  }

  // sliderInput() doesn't currently support from_min/from_max, so this isn't relevant
  .#{$name}-shadow {
    top: 38px;
    height: 2px;
    background: rgba($fg, 0.3);
    @include border-radius-shim(5px);
  }
  .lt-ie9 .#{$name}-shadow {
    filter: alpha(opacity=30);
  }

  // .irs-slider changed to .irs-handle in v2.3.0
  // https://github.com/IonDen/ion.rangeSlider/commit/c98c10d3d360aa52e997bb8e4fd371c958f78e4b#diff-91cc6fde25fe380ac2a7ac58e1538dceR140
  .#{$name}-handle {
    top: 17px;
    width: $handle_width;
    height: $handle_height;
    border: $handle_border;
    background-color: $handle_color;
    box-shadow: $handle_box_shadow;
    border-radius: $handle_width;

    &.state_hover,
    &:hover {
      background: $handle_color_hover;
    }
  }

  .#{$name}-min,
  .#{$name}-max {
    top: 0;
    padding: 1px 3px;
    color: $minmax_text_color;
    text-shadow: none;
    background-color: $minmax_bg_color;
    @include border-radius-shim($custom_radius);
    font-size: $minmax_font_size;
    line-height: $minmax_line_height;
  }

  .lt-ie9 .#{$name}-min,
  .lt-ie9 .#{$name}-max {
    background: mix($bg, $fg, 80%);
  }

  .#{$name}-from,
  .#{$name}-to,
  .#{$name}-single {
    color: $fromto_color;
    text-shadow: none;
    padding: 1px 3px;
    background-color: $fromto_bg_color;
    @include border-radius-shim($custom_radius);
    font-size: $fromto_font_size;
    line-height: $fromto_line_height;
  }

  .lt-ie9 .#{$name}-from,
  .lt-ie9 .#{$name}-to,
  .lt-ie9 .#{$name}-single {
    background: mix($bg, $fg, 60%);
  }

  .#{$name}-grid {
    height: 27px;
    &-pol {
      background-color: $grid_major_color;
    }
    &-text {
      bottom: 5px;
      color: $grid_text_color;
    }
    &-pol.small {
      background-color: $grid_minor_color;
    }
  }

}

shiny/www/shared/ionrangeslider/scss/_mixins.scss METASEP
@mixin no-click() {
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

@mixin pos-r() {
    position: relative;
    display: block;
}

@mixin pos-a() {
    position: absolute;
    display: block;
}

shiny/www/shared/ionrangeslider/scss/_base.scss METASEP
@import "_mixins";

.irs {
    @include pos-r();
    -webkit-touch-callout: none;
    @include no-click();
    /* https://github.com/rstudio/shiny/issues/3443 */
    /* https://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/ */
    box-sizing: border-box;
    *, *:before, *:after {
      box-sizing: inherit;
    }

    &-line {
        @include pos-r();
        overflow: hidden;
        outline: none !important;
    }

    &-bar {
        @include pos-a();
        left: 0;
        width: 0;
    }

    &-shadow {
        position: absolute;
        display: none;
        left: 0;
        width: 0;
    }

    &-handle {
        @include pos-a();
        box-sizing: border-box;
        cursor: pointer;
        z-index: 1;

        &.single,
        &.from,
        &.to {}

        &.type_last {
            z-index: 2;
        }
    }

    &-min,
    &-max {
        @include pos-a();
        cursor: default;
    }

    &-min {
        left: 0;
    }

    &-max {
        right: 0;
    }

    &-from,
    &-to,
    &-single {
        @include pos-a();
        top: 0;
        left: 0;
        cursor: default;
        white-space: nowrap;
    }

    &-grid {
        position: absolute;
        display: none;
        bottom: 0;
        left: 0;
        width: 100%;
        height: 20px;

        .irs-with-grid & {
            display: block;
        }

        &-pol {
            position: absolute;
            top: 0;
            left: 0;
            width: 1px;
            height: 8px;

            &.small {
                height: 4px;
            }
        }

        &-text {
            position: absolute;
            bottom: 0;
            left: 0;
            white-space: nowrap;
            text-align: center;
            font-size: 9px;
            line-height: 9px;
            padding: 0 3px;
        }
    }

    &-disable-mask {
        @include pos-a();
        top: 0;
        left: -1%;
        width: 102%;
        height: 100%;
        cursor: default;
        background: rgba(0,0,0,0.0);
        z-index: 2;

        .lt-ie9 & {
            background: #000;
            filter: alpha(opacity=0);
            cursor: not-allowed;
        }
    }

    &-disabled {
        opacity: 0.4;
    }

    &-hidden-input {
        position: absolute !important;
        display: block !important;
        top: 0 !important;
        left: 0 !important;
        width: 0 !important;
        height: 0 !important;
        font-size: 0 !important;
        line-height: 0 !important;
        padding: 0 !important;
        margin: 0 !important;
        overflow: hidden;
        outline: none !important;
        z-index: -9999 !important;
        background: none !important;
        border-style: solid !important;
        border-color: transparent !important;
    }
}

shiny/www/shared/ionrangeslider/js/ion.rangeSlider.min.js METASEP
(function(_){(typeof jQuery=="undefined"||!jQuery)&&typeof define=="function"&&define.amd?define(["jquery"],function(m){return _(m,document,window,navigator)}):(typeof jQuery=="undefined"||!jQuery)&&typeof exports=="object"?_(require("jquery"),document,window,navigator):_(jQuery,document,window,navigator)})(function(_,m,f,v,g){"use strict";var x=0,d=function(){var t=v.userAgent,i=/msie\s\d+/i,e;return t.search(i)>0&&(e=i.exec(t).toString(),e=e.split(" ")[1],e<9)?(_("html").addClass("lt-ie9"),!0):!1}();Function.prototype.bind||(Function.prototype.bind=function(i){var e=this,s=[].slice;if(typeof e!="function")throw new TypeError;var o=s.call(arguments,1),r=function(){if(this instanceof r){var h=function(){};h.prototype=e.prototype;var a=new h,n=e.apply(a,o.concat(s.call(arguments)));return Object(n)===n?n:a}else return e.apply(i,o.concat(s.call(arguments)))};return r}),Array.prototype.indexOf||(Array.prototype.indexOf=function(t,i){var e;if(this==null)throw new TypeError('"this" is null or not defined');var s=Object(this),o=s.length>>>0;if(o===0)return-1;var r=+i||0;if(Math.abs(r)===Infinity&&(r=0),r>=o)return-1;for(e=Math.max(r>=0?r:o-Math.abs(r),0);e<o;){if(e in s&&s[e]===t)return e;e++}return-1});var y='<span class="irs"><span class="irs-line" tabindex="0"></span><span class="irs-min">0</span><span class="irs-max">1</span><span class="irs-from">0</span><span class="irs-to">0</span><span class="irs-single">0</span></span><span class="irs-grid"></span>',$='<span class="irs-bar irs-bar--single"></span><span class="irs-shadow shadow-single"></span><span class="irs-handle single"><i></i><i></i><i></i></span>',k='<span class="irs-bar"></span><span class="irs-shadow shadow-from"></span><span class="irs-shadow shadow-to"></span><span class="irs-handle from"><i></i><i></i><i></i></span><span class="irs-handle to"><i></i><i></i><i></i></span>',w='<span class="irs-disable-mask"></span>',b=function(t,i,e){this.VERSION="2.3.1",this.input=t,this.plugin_count=e,this.current_plugin=0,this.calc_count=0,this.update_tm=0,this.old_from=0,this.old_to=0,this.old_min_interval=null,this.raf_id=null,this.dragging=!1,this.force_redraw=!1,this.no_diapason=!1,this.has_tab_index=!0,this.is_key=!1,this.is_update=!1,this.is_start=!0,this.is_finish=!1,this.is_active=!1,this.is_resize=!1,this.is_click=!1,i=i||{},this.$cache={win:_(f),body:_(m.body),input:_(t),cont:null,rs:null,min:null,max:null,from:null,to:null,single:null,bar:null,line:null,s_single:null,s_from:null,s_to:null,shad_single:null,shad_from:null,shad_to:null,edge:null,grid:null,grid_labels:[]},this.coords={x_gap:0,x_pointer:0,w_rs:0,w_rs_old:0,w_handle:0,p_gap:0,p_gap_left:0,p_gap_right:0,p_step:0,p_pointer:0,p_handle:0,p_single_fake:0,p_single_real:0,p_from_fake:0,p_from_real:0,p_to_fake:0,p_to_real:0,p_bar_x:0,p_bar_w:0,grid_gap:0,big_num:0,big:[],big_w:[],big_p:[],big_x:[]},this.labels={w_min:0,w_max:0,w_from:0,w_to:0,w_single:0,p_min:0,p_max:0,p_from_fake:0,p_from_left:0,p_to_fake:0,p_to_left:0,p_single_fake:0,p_single_left:0};var s=this.$cache.input,o=s.prop("value"),r,h,a;r={skin:"flat",type:"single",min:10,max:100,from:null,to:null,step:1,min_interval:0,max_interval:0,drag_interval:!1,values:[],p_values:[],from_fixed:!1,from_min:null,from_max:null,from_shadow:!1,to_fixed:!1,to_min:null,to_max:null,to_shadow:!1,prettify_enabled:!0,prettify_separator:" ",prettify:null,force_edges:!1,keyboard:!0,grid:!1,grid_margin:!0,grid_num:4,grid_snap:!1,hide_min_max:!1,hide_from_to:!1,prefix:"",postfix:"",max_postfix:"",decorate_both:!0,values_separator:" \u2014 ",input_values_separator:";",disable:!1,block:!1,extra_classes:"",scope:null,onStart:null,onChange:null,onFinish:null,onUpdate:null},s[0].nodeName!=="INPUT"&&console&&console.warn&&console.warn("Base element should be <input>!",s[0]),h={skin:s.data("skin"),type:s.data("type"),min:s.data("min"),max:s.data("max"),from:s.data("from"),to:s.data("to"),step:s.data("step"),min_interval:s.data("minInterval"),max_interval:s.data("maxInterval"),drag_interval:s.data("dragInterval"),values:s.data("values"),from_fixed:s.data("fromFixed"),from_min:s.data("fromMin"),from_max:s.data("fromMax"),from_shadow:s.data("fromShadow"),to_fixed:s.data("toFixed"),to_min:s.data("toMin"),to_max:s.data("toMax"),to_shadow:s.data("toShadow"),prettify_enabled:s.data("prettifyEnabled"),prettify_separator:s.data("prettifySeparator"),force_edges:s.data("forceEdges"),keyboard:s.data("keyboard"),grid:s.data("grid"),grid_margin:s.data("gridMargin"),grid_num:s.data("gridNum"),grid_snap:s.data("gridSnap"),hide_min_max:s.data("hideMinMax"),hide_from_to:s.data("hideFromTo"),prefix:s.data("prefix"),postfix:s.data("postfix"),max_postfix:s.data("maxPostfix"),decorate_both:s.data("decorateBoth"),values_separator:s.data("valuesSeparator"),input_values_separator:s.data("inputValuesSeparator"),disable:s.data("disable"),block:s.data("block"),extra_classes:s.data("extraClasses")},h.values=h.values&&h.values.split(",");for(a in h)h.hasOwnProperty(a)&&(h[a]===g||h[a]==="")&&delete h[a];o!==g&&o!==""&&(o=o.split(h.input_values_separator||i.input_values_separator||";"),o[0]&&o[0]==+o[0]&&(o[0]=+o[0]),o[1]&&o[1]==+o[1]&&(o[1]=+o[1]),i&&i.values&&i.values.length?(r.from=o[0]&&i.values.indexOf(o[0]),r.to=o[1]&&i.values.indexOf(o[1])):(r.from=o[0]&&+o[0],r.to=o[1]&&+o[1])),_.extend(r,i),_.extend(r,h),this.options=r,this.update_check={},this.validate(),this.result={input:this.$cache.input,slider:null,min:this.options.min,max:this.options.max,from:this.options.from,from_percent:0,from_value:null,to:this.options.to,to_percent:0,to_value:null},this.init()};b.prototype={init:function(t){this.no_diapason=!1,this.coords.p_step=this.convertToPercent(this.options.step,!0),this.target="base",this.toggleInput(),this.append(),this.setMinMax(),t?(this.force_redraw=!0,this.calc(!0),this.callOnUpdate()):(this.force_redraw=!0,this.calc(!0),this.callOnStart()),this.updateScene()},append:function(){var t='<span class="irs irs--'+this.options.skin+" js-irs-"+this.plugin_count+" "+this.options.extra_classes+'"></span>';this.$cache.input.before(t),this.$cache.input.prop("readonly",!0),this.$cache.cont=this.$cache.input.prev(),this.result.slider=this.$cache.cont,this.$cache.cont.html(y),this.$cache.rs=this.$cache.cont.find(".irs"),this.$cache.min=this.$cache.cont.find(".irs-min"),this.$cache.max=this.$cache.cont.find(".irs-max"),this.$cache.from=this.$cache.cont.find(".irs-from"),this.$cache.to=this.$cache.cont.find(".irs-to"),this.$cache.single=this.$cache.cont.find(".irs-single"),this.$cache.line=this.$cache.cont.find(".irs-line"),this.$cache.grid=this.$cache.cont.find(".irs-grid"),this.options.type==="single"?(this.$cache.cont.append($),this.$cache.bar=this.$cache.cont.find(".irs-bar"),this.$cache.edge=this.$cache.cont.find(".irs-bar-edge"),this.$cache.s_single=this.$cache.cont.find(".single"),this.$cache.from[0].style.visibility="hidden",this.$cache.to[0].style.visibility="hidden",this.$cache.shad_single=this.$cache.cont.find(".shadow-single")):(this.$cache.cont.append(k),this.$cache.bar=this.$cache.cont.find(".irs-bar"),this.$cache.s_from=this.$cache.cont.find(".from"),this.$cache.s_to=this.$cache.cont.find(".to"),this.$cache.shad_from=this.$cache.cont.find(".shadow-from"),this.$cache.shad_to=this.$cache.cont.find(".shadow-to"),this.setTopHandler()),this.options.hide_from_to&&(this.$cache.from[0].style.display="none",this.$cache.to[0].style.display="none",this.$cache.single[0].style.display="none"),this.appendGrid(),this.options.disable?(this.appendDisableMask(),this.$cache.input[0].disabled=!0):(this.$cache.input[0].disabled=!1,this.removeDisableMask(),this.bindEvents()),this.options.disable||(this.options.block?this.appendDisableMask():this.removeDisableMask()),this.options.drag_interval&&(this.$cache.bar[0].style.cursor="ew-resize")},setTopHandler:function(){var t=this.options.min,i=this.options.max,e=this.options.from,s=this.options.to;e>t&&s===i?this.$cache.s_from.addClass("type_last"):s<i&&this.$cache.s_to.addClass("type_last")},changeLevel:function(t){switch(t){case"single":this.coords.p_gap=this.toFixed(this.coords.p_pointer-this.coords.p_single_fake),this.$cache.s_single.addClass("state_hover");break;case"from":this.coords.p_gap=this.toFixed(this.coords.p_pointer-this.coords.p_from_fake),this.$cache.s_from.addClass("state_hover"),this.$cache.s_from.addClass("type_last"),this.$cache.s_to.removeClass("type_last");break;case"to":this.coords.p_gap=this.toFixed(this.coords.p_pointer-this.coords.p_to_fake),this.$cache.s_to.addClass("state_hover"),this.$cache.s_to.addClass("type_last"),this.$cache.s_from.removeClass("type_last");break;case"both":this.coords.p_gap_left=this.toFixed(this.coords.p_pointer-this.coords.p_from_fake),this.coords.p_gap_right=this.toFixed(this.coords.p_to_fake-this.coords.p_pointer),this.$cache.s_to.removeClass("type_last"),this.$cache.s_from.removeClass("type_last");break}},appendDisableMask:function(){this.$cache.cont.append(w),this.$cache.cont.addClass("irs-disabled")},removeDisableMask:function(){this.$cache.cont.remove(".irs-disable-mask"),this.$cache.cont.removeClass("irs-disabled")},remove:function(){this.$cache.cont.remove(),this.$cache.cont=null,this.$cache.line.off("keydown.irs_"+this.plugin_count),this.$cache.body.off("touchmove.irs_"+this.plugin_count),this.$cache.body.off("mousemove.irs_"+this.plugin_count),this.$cache.win.off("touchend.irs_"+this.plugin_count),this.$cache.win.off("mouseup.irs_"+this.plugin_count),d&&(this.$cache.body.off("mouseup.irs_"+this.plugin_count),this.$cache.body.off("mouseleave.irs_"+this.plugin_count)),this.$cache.grid_labels=[],this.coords.big=[],this.coords.big_w=[],this.coords.big_p=[],this.coords.big_x=[],cancelAnimationFrame(this.raf_id)},bindEvents:function(){this.no_diapason||(this.$cache.body.on("touchmove.irs_"+this.plugin_count,this.pointerMove.bind(this)),this.$cache.body.on("mousemove.irs_"+this.plugin_count,this.pointerMove.bind(this)),this.$cache.win.on("touchend.irs_"+this.plugin_count,this.pointerUp.bind(this)),this.$cache.win.on("mouseup.irs_"+this.plugin_count,this.pointerUp.bind(this)),this.$cache.line.on("touchstart.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.line.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.line.on("focus.irs_"+this.plugin_count,this.pointerFocus.bind(this)),this.options.drag_interval&&this.options.type==="double"?(this.$cache.bar.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"both")),this.$cache.bar.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"both"))):(this.$cache.bar.on("touchstart.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.bar.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click"))),this.options.type==="single"?(this.$cache.single.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"single")),this.$cache.s_single.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"single")),this.$cache.shad_single.on("touchstart.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.single.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"single")),this.$cache.s_single.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"single")),this.$cache.edge.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.shad_single.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click"))):(this.$cache.single.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,null)),this.$cache.single.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,null)),this.$cache.from.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"from")),this.$cache.s_from.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"from")),this.$cache.to.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"to")),this.$cache.s_to.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"to")),this.$cache.shad_from.on("touchstart.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.shad_to.on("touchstart.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.from.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"from")),this.$cache.s_from.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"from")),this.$cache.to.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"to")),this.$cache.s_to.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"to")),this.$cache.shad_from.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.shad_to.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click"))),this.options.keyboard&&this.$cache.line.on("keydown.irs_"+this.plugin_count,this.key.bind(this,"keyboard")),d&&(this.$cache.body.on("mouseup.irs_"+this.plugin_count,this.pointerUp.bind(this)),this.$cache.body.on("mouseleave.irs_"+this.plugin_count,this.pointerUp.bind(this))))},pointerFocus:function(t){if(!this.target){var i,e;this.options.type==="single"?e=this.$cache.single:e=this.$cache.from,i=e.offset().left,i+=e.width()/2-1,this.pointerClick("single",{preventDefault:function(){},pageX:i})}},pointerMove:function(t){if(!!this.dragging){var i=t.pageX||t.originalEvent.touches&&t.originalEvent.touches[0].pageX;this.coords.x_pointer=i-this.coords.x_gap,this.calc()}},pointerUp:function(t){if(this.current_plugin===this.plugin_count){if(this.is_active)this.is_active=!1;else return;this.$cache.cont.find(".state_hover").removeClass("state_hover"),this.force_redraw=!0,d&&_("*").prop("unselectable",!1),this.updateScene(),this.restoreOriginalMinInterval(),(_.contains(this.$cache.cont[0],t.target)||this.dragging)&&this.callOnFinish(),this.dragging=!1}},pointerDown:function(t,i){i.preventDefault(),i.stopPropagation();var e=i.pageX||i.originalEvent.touches&&i.originalEvent.touches[0].pageX;i.button!==2&&(t==="both"&&this.setTempMinInterval(),t||(t=this.target||"from"),this.current_plugin=this.plugin_count,this.target=t,this.is_active=!0,this.dragging=!0,this.coords.x_gap=this.$cache.rs.offset().left,this.coords.x_pointer=e-this.coords.x_gap,this.calcPointerPercent(),this.changeLevel(t),d&&_("*").prop("unselectable",!0),this.$cache.line.trigger("focus"),this.updateScene())},pointerClick:function(t,i){i.preventDefault(),i.stopPropagation();var e=i.pageX||i.originalEvent.touches&&i.originalEvent.touches[0].pageX;i.button!==2&&(this.current_plugin=this.plugin_count,this.target=t,this.is_click=!0,this.coords.x_gap=this.$cache.rs.offset().left,this.coords.x_pointer=+(e-this.coords.x_gap).toFixed(),this.force_redraw=!0,this.calc(),this.$cache.line.trigger("focus"))},key:function(t,i){if(!(this.current_plugin!==this.plugin_count||i.altKey||i.ctrlKey||i.shiftKey||i.metaKey)){switch(i.which){case 83:case 65:case 40:case 37:i.preventDefault(),this.moveByKey(!1);break;case 87:case 68:case 38:case 39:i.preventDefault(),this.moveByKey(!0);break}return!0}},moveByKey:function(t){var i=this.coords.p_pointer,e=(this.options.max-this.options.min)/100;e=this.options.step/e,t?i+=e:i-=e,this.coords.x_pointer=this.toFixed(this.coords.w_rs/100*i),this.is_key=!0,this.calc()},setMinMax:function(){if(!!this.options){if(this.options.hide_min_max){this.$cache.min[0].style.display="none",this.$cache.max[0].style.display="none";return}if(this.options.values.length)this.$cache.min.html(this.decorate(this.options.p_values[this.options.min])),this.$cache.max.html(this.decorate(this.options.p_values[this.options.max]));else{var t=this._prettify(this.options.min),i=this._prettify(this.options.max);this.result.min_pretty=t,this.result.max_pretty=i,this.$cache.min.html(this.decorate(t,this.options.min)),this.$cache.max.html(this.decorate(i,this.options.max))}this.labels.w_min=this.$cache.min.outerWidth(!1),this.labels.w_max=this.$cache.max.outerWidth(!1)}},setTempMinInterval:function(){var t=this.result.to-this.result.from;this.old_min_interval===null&&(this.old_min_interval=this.options.min_interval),this.options.min_interval=t},restoreOriginalMinInterval:function(){this.old_min_interval!==null&&(this.options.min_interval=this.old_min_interval,this.old_min_interval=null)},calc:function(t){if(!!this.options&&(this.calc_count++,(this.calc_count===10||t)&&(this.calc_count=0,this.coords.w_rs=this.$cache.rs.outerWidth(!1),this.calcHandlePercent()),!!this.coords.w_rs)){this.calcPointerPercent();var i=this.getHandleX();switch(this.target==="both"&&(this.coords.p_gap=0,i=this.getHandleX()),this.target==="click"&&(this.coords.p_gap=this.coords.p_handle/2,i=this.getHandleX(),this.options.drag_interval?this.target="both_one":this.target=this.chooseHandle(i)),this.target){case"base":var e=(this.options.max-this.options.min)/100,s=(this.result.from-this.options.min)/e,o=(this.result.to-this.options.min)/e;this.coords.p_single_real=this.toFixed(s),this.coords.p_from_real=this.toFixed(s),this.coords.p_to_real=this.toFixed(o),this.coords.p_single_real=this.checkDiapason(this.coords.p_single_real,this.options.from_min,this.options.from_max),this.coords.p_from_real=this.checkDiapason(this.coords.p_from_real,this.options.from_min,this.options.from_max),this.coords.p_to_real=this.checkDiapason(this.coords.p_to_real,this.options.to_min,this.options.to_max),this.coords.p_single_fake=this.convertToFakePercent(this.coords.p_single_real),this.coords.p_from_fake=this.convertToFakePercent(this.coords.p_from_real),this.coords.p_to_fake=this.convertToFakePercent(this.coords.p_to_real),this.target=null;break;case"single":if(this.options.from_fixed)break;this.coords.p_single_real=this.convertToRealPercent(i),this.coords.p_single_real=this.calcWithStep(this.coords.p_single_real),this.coords.p_single_real=this.checkDiapason(this.coords.p_single_real,this.options.from_min,this.options.from_max),this.coords.p_single_fake=this.convertToFakePercent(this.coords.p_single_real);break;case"from":if(this.options.from_fixed)break;this.coords.p_from_real=this.convertToRealPercent(i),this.coords.p_from_real=this.calcWithStep(this.coords.p_from_real),this.coords.p_from_real>this.coords.p_to_real&&(this.coords.p_from_real=this.coords.p_to_real),this.coords.p_from_real=this.checkDiapason(this.coords.p_from_real,this.options.from_min,this.options.from_max),this.coords.p_from_real=this.checkMinInterval(this.coords.p_from_real,this.coords.p_to_real,"from"),this.coords.p_from_real=this.checkMaxInterval(this.coords.p_from_real,this.coords.p_to_real,"from"),this.coords.p_from_fake=this.convertToFakePercent(this.coords.p_from_real);break;case"to":if(this.options.to_fixed)break;this.coords.p_to_real=this.convertToRealPercent(i),this.coords.p_to_real=this.calcWithStep(this.coords.p_to_real),this.coords.p_to_real<this.coords.p_from_real&&(this.coords.p_to_real=this.coords.p_from_real),this.coords.p_to_real=this.checkDiapason(this.coords.p_to_real,this.options.to_min,this.options.to_max),this.coords.p_to_real=this.checkMinInterval(this.coords.p_to_real,this.coords.p_from_real,"to"),this.coords.p_to_real=this.checkMaxInterval(this.coords.p_to_real,this.coords.p_from_real,"to"),this.coords.p_to_fake=this.convertToFakePercent(this.coords.p_to_real);break;case"both":if(this.options.from_fixed||this.options.to_fixed)break;i=this.toFixed(i+this.coords.p_handle*.001),this.coords.p_from_real=this.convertToRealPercent(i)-this.coords.p_gap_left,this.coords.p_from_real=this.calcWithStep(this.coords.p_from_real),this.coords.p_from_real=this.checkDiapason(this.coords.p_from_real,this.options.from_min,this.options.from_max),this.coords.p_from_real=this.checkMinInterval(this.coords.p_from_real,this.coords.p_to_real,"from"),this.coords.p_from_fake=this.convertToFakePercent(this.coords.p_from_real),this.coords.p_to_real=this.convertToRealPercent(i)+this.coords.p_gap_right,this.coords.p_to_real=this.calcWithStep(this.coords.p_to_real),this.coords.p_to_real=this.checkDiapason(this.coords.p_to_real,this.options.to_min,this.options.to_max),this.coords.p_to_real=this.checkMinInterval(this.coords.p_to_real,this.coords.p_from_real,"to"),this.coords.p_to_fake=this.convertToFakePercent(this.coords.p_to_real);break;case"both_one":if(this.options.from_fixed||this.options.to_fixed)break;var r=this.convertToRealPercent(i),h=this.result.from_percent,a=this.result.to_percent,n=a-h,l=n/2,p=r-l,c=r+l;p<0&&(p=0,c=p+n),c>100&&(c=100,p=c-n),this.coords.p_from_real=this.calcWithStep(p),this.coords.p_from_real=this.checkDiapason(this.coords.p_from_real,this.options.from_min,this.options.from_max),this.coords.p_from_fake=this.convertToFakePercent(this.coords.p_from_real),this.coords.p_to_real=this.calcWithStep(c),this.coords.p_to_real=this.checkDiapason(this.coords.p_to_real,this.options.to_min,this.options.to_max),this.coords.p_to_fake=this.convertToFakePercent(this.coords.p_to_real);break}this.options.type==="single"?(this.coords.p_bar_x=this.coords.p_handle/2,this.coords.p_bar_w=this.coords.p_single_fake,this.result.from_percent=this.coords.p_single_real,this.result.from=this.convertToValue(this.coords.p_single_real),this.result.from_pretty=this._prettify(this.result.from),this.options.values.length&&(this.result.from_value=this.options.values[this.result.from])):(this.coords.p_bar_x=this.toFixed(this.coords.p_from_fake+this.coords.p_handle/2),this.coords.p_bar_w=this.toFixed(this.coords.p_to_fake-this.coords.p_from_fake),this.result.from_percent=this.coords.p_from_real,this.result.from=this.convertToValue(this.coords.p_from_real),this.result.from_pretty=this._prettify(this.result.from),this.result.to_percent=this.coords.p_to_real,this.result.to=this.convertToValue(this.coords.p_to_real),this.result.to_pretty=this._prettify(this.result.to),this.options.values.length&&(this.result.from_value=this.options.values[this.result.from],this.result.to_value=this.options.values[this.result.to])),this.calcMinMax(),this.calcLabels()}},calcPointerPercent:function(){if(!this.coords.w_rs){this.coords.p_pointer=0;return}this.coords.x_pointer<0||isNaN(this.coords.x_pointer)?this.coords.x_pointer=0:this.coords.x_pointer>this.coords.w_rs&&(this.coords.x_pointer=this.coords.w_rs),this.coords.p_pointer=this.toFixed(this.coords.x_pointer/this.coords.w_rs*100)},convertToRealPercent:function(t){var i=100-this.coords.p_handle;return t/i*100},convertToFakePercent:function(t){var i=100-this.coords.p_handle;return t/100*i},getHandleX:function(){var t=100-this.coords.p_handle,i=this.toFixed(this.coords.p_pointer-this.coords.p_gap);return i<0?i=0:i>t&&(i=t),i},calcHandlePercent:function(){this.options.type==="single"?this.coords.w_handle=this.$cache.s_single.outerWidth(!1):this.coords.w_handle=this.$cache.s_from.outerWidth(!1),this.coords.p_handle=this.toFixed(this.coords.w_handle/this.coords.w_rs*100)},chooseHandle:function(t){if(this.options.type==="single")return"single";var i=this.coords.p_from_real+(this.coords.p_to_real-this.coords.p_from_real)/2;return t>=i?this.options.to_fixed?"from":"to":this.options.from_fixed?"to":"from"},calcMinMax:function(){!this.coords.w_rs||(this.labels.p_min=this.labels.w_min/this.coords.w_rs*100,this.labels.p_max=this.labels.w_max/this.coords.w_rs*100)},calcLabels:function(){!this.coords.w_rs||this.options.hide_from_to||(this.options.type==="single"?(this.labels.w_single=this.$cache.single.outerWidth(!1),this.labels.p_single_fake=this.labels.w_single/this.coords.w_rs*100,this.labels.p_single_left=this.coords.p_single_fake+this.coords.p_handle/2-this.labels.p_single_fake/2,this.labels.p_single_left=this.checkEdges(this.labels.p_single_left,this.labels.p_single_fake)):(this.labels.w_from=this.$cache.from.outerWidth(!1),this.labels.p_from_fake=this.labels.w_from/this.coords.w_rs*100,this.labels.p_from_left=this.coords.p_from_fake+this.coords.p_handle/2-this.labels.p_from_fake/2,this.labels.p_from_left=this.toFixed(this.labels.p_from_left),this.labels.p_from_left=this.checkEdges(this.labels.p_from_left,this.labels.p_from_fake),this.labels.w_to=this.$cache.to.outerWidth(!1),this.labels.p_to_fake=this.labels.w_to/this.coords.w_rs*100,this.labels.p_to_left=this.coords.p_to_fake+this.coords.p_handle/2-this.labels.p_to_fake/2,this.labels.p_to_left=this.toFixed(this.labels.p_to_left),this.labels.p_to_left=this.checkEdges(this.labels.p_to_left,this.labels.p_to_fake),this.labels.w_single=this.$cache.single.outerWidth(!1),this.labels.p_single_fake=this.labels.w_single/this.coords.w_rs*100,this.labels.p_single_left=(this.labels.p_from_left+this.labels.p_to_left+this.labels.p_to_fake)/2-this.labels.p_single_fake/2,this.labels.p_single_left=this.toFixed(this.labels.p_single_left),this.labels.p_single_left=this.checkEdges(this.labels.p_single_left,this.labels.p_single_fake)))},updateScene:function(){this.raf_id&&(cancelAnimationFrame(this.raf_id),this.raf_id=null),clearTimeout(this.update_tm),this.update_tm=null,!!this.options&&(this.drawHandles(),this.is_active?this.raf_id=requestAnimationFrame(this.updateScene.bind(this)):this.update_tm=setTimeout(this.updateScene.bind(this),300))},drawHandles:function(){this.coords.w_rs=this.$cache.rs.outerWidth(!1),!!this.coords.w_rs&&(this.coords.w_rs!==this.coords.w_rs_old&&(this.target="base",this.is_resize=!0),(this.coords.w_rs!==this.coords.w_rs_old||this.force_redraw)&&(this.setMinMax(),this.calc(!0),this.drawLabels(),this.options.grid&&(this.calcGridMargin(),this.calcGridLabels()),this.force_redraw=!0,this.coords.w_rs_old=this.coords.w_rs,this.drawShadow()),!!this.coords.w_rs&&(!this.dragging&&!this.force_redraw&&!this.is_key||((this.old_from!==this.result.from||this.old_to!==this.result.to||this.force_redraw||this.is_key)&&(this.drawLabels(),this.$cache.bar[0].style.left=this.coords.p_bar_x+"%",this.$cache.bar[0].style.width=this.coords.p_bar_w+"%",this.options.type==="single"?(this.$cache.bar[0].style.left=0,this.$cache.bar[0].style.width=this.coords.p_bar_w+this.coords.p_bar_x+"%",this.$cache.s_single[0].style.left=this.coords.p_single_fake+"%",this.$cache.single[0].style.left=this.labels.p_single_left+"%"):(this.$cache.s_from[0].style.left=this.coords.p_from_fake+"%",this.$cache.s_to[0].style.left=this.coords.p_to_fake+"%",(this.old_from!==this.result.from||this.force_redraw)&&(this.$cache.from[0].style.left=this.labels.p_from_left+"%"),(this.old_to!==this.result.to||this.force_redraw)&&(this.$cache.to[0].style.left=this.labels.p_to_left+"%"),this.$cache.single[0].style.left=this.labels.p_single_left+"%"),this.writeToInput(),(this.old_from!==this.result.from||this.old_to!==this.result.to)&&!this.is_start&&(this.$cache.input.trigger("change"),this.$cache.input.trigger("input")),this.old_from=this.result.from,this.old_to=this.result.to,!this.is_resize&&!this.is_update&&!this.is_start&&!this.is_finish&&this.callOnChange(),(this.is_key||this.is_click)&&(this.is_key=!1,this.is_click=!1,this.callOnFinish()),this.is_update=!1,this.is_resize=!1,this.is_finish=!1),this.is_start=!1,this.is_key=!1,this.is_click=!1,this.force_redraw=!1)))},drawLabels:function(){if(!!this.options){var t=this.options.values.length,i=this.options.p_values,e,s,o,r,h;if(!this.options.hide_from_to)if(this.options.type==="single")t?(e=this.decorate(i[this.result.from]),this.$cache.single.html(e)):(r=this._prettify(this.result.from),e=this.decorate(r,this.result.from),this.$cache.single.html(e)),this.calcLabels(),this.labels.p_single_left<this.labels.p_min+1?this.$cache.min[0].style.visibility="hidden":this.$cache.min[0].style.visibility="visible",this.labels.p_single_left+this.labels.p_single_fake>100-this.labels.p_max-1?this.$cache.max[0].style.visibility="hidden":this.$cache.max[0].style.visibility="visible";else{t?(this.options.decorate_both?(e=this.decorate(i[this.result.from]),e+=this.options.values_separator,e+=this.decorate(i[this.result.to])):e=this.decorate(i[this.result.from]+this.options.values_separator+i[this.result.to]),s=this.decorate(i[this.result.from]),o=this.decorate(i[this.result.to]),this.$cache.single.html(e),this.$cache.from.html(s),this.$cache.to.html(o)):(r=this._prettify(this.result.from),h=this._prettify(this.result.to),this.options.decorate_both?(e=this.decorate(r,this.result.from),e+=this.options.values_separator,e+=this.decorate(h,this.result.to)):e=this.decorate(r+this.options.values_separator+h,this.result.to),s=this.decorate(r,this.result.from),o=this.decorate(h,this.result.to),this.$cache.single.html(e),this.$cache.from.html(s),this.$cache.to.html(o)),this.calcLabels();var a=Math.min(this.labels.p_single_left,this.labels.p_from_left),n=this.labels.p_single_left+this.labels.p_single_fake,l=this.labels.p_to_left+this.labels.p_to_fake,p=Math.max(n,l);this.labels.p_from_left+this.labels.p_from_fake>=this.labels.p_to_left?(this.$cache.from[0].style.visibility="hidden",this.$cache.to[0].style.visibility="hidden",this.$cache.single[0].style.visibility="visible",this.result.from===this.result.to?(this.target==="from"?this.$cache.from[0].style.visibility="visible":this.target==="to"?this.$cache.to[0].style.visibility="visible":this.target||(this.$cache.from[0].style.visibility="visible"),this.$cache.single[0].style.visibility="hidden",p=l):(this.$cache.from[0].style.visibility="hidden",this.$cache.to[0].style.visibility="hidden",this.$cache.single[0].style.visibility="visible",p=Math.max(n,l))):(this.$cache.from[0].style.visibility="visible",this.$cache.to[0].style.visibility="visible",this.$cache.single[0].style.visibility="hidden"),a<this.labels.p_min+1?this.$cache.min[0].style.visibility="hidden":this.$cache.min[0].style.visibility="visible",p>100-this.labels.p_max-1?this.$cache.max[0].style.visibility="hidden":this.$cache.max[0].style.visibility="visible"}}},drawShadow:function(){var t=this.options,i=this.$cache,e=typeof t.from_min=="number"&&!isNaN(t.from_min),s=typeof t.from_max=="number"&&!isNaN(t.from_max),o=typeof t.to_min=="number"&&!isNaN(t.to_min),r=typeof t.to_max=="number"&&!isNaN(t.to_max),h,a,n,l;t.type==="single"?t.from_shadow&&(e||s)?(h=this.convertToPercent(e?t.from_min:t.min),a=this.convertToPercent(s?t.from_max:t.max)-h,h=this.toFixed(h-this.coords.p_handle/100*h),a=this.toFixed(a-this.coords.p_handle/100*a),h=h+this.coords.p_handle/2,i.shad_single[0].style.display="block",i.shad_single[0].style.left=h+"%",i.shad_single[0].style.width=a+"%"):i.shad_single[0].style.display="none":(t.from_shadow&&(e||s)?(h=this.convertToPercent(e?t.from_min:t.min),a=this.convertToPercent(s?t.from_max:t.max)-h,h=this.toFixed(h-this.coords.p_handle/100*h),a=this.toFixed(a-this.coords.p_handle/100*a),h=h+this.coords.p_handle/2,i.shad_from[0].style.display="block",i.shad_from[0].style.left=h+"%",i.shad_from[0].style.width=a+"%"):i.shad_from[0].style.display="none",t.to_shadow&&(o||r)?(n=this.convertToPercent(o?t.to_min:t.min),l=this.convertToPercent(r?t.to_max:t.max)-n,n=this.toFixed(n-this.coords.p_handle/100*n),l=this.toFixed(l-this.coords.p_handle/100*l),n=n+this.coords.p_handle/2,i.shad_to[0].style.display="block",i.shad_to[0].style.left=n+"%",i.shad_to[0].style.width=l+"%"):i.shad_to[0].style.display="none")},writeToInput:function(){this.options.type==="single"?(this.options.values.length?this.$cache.input.prop("value",this.result.from_value):this.$cache.input.prop("value",this.result.from),this.$cache.input.data("from",this.result.from)):(this.options.values.length?this.$cache.input.prop("value",this.result.from_value+this.options.input_values_separator+this.result.to_value):this.$cache.input.prop("value",this.result.from+this.options.input_values_separator+this.result.to),this.$cache.input.data("from",this.result.from),this.$cache.input.data("to",this.result.to))},callOnStart:function(){this.writeToInput(),this.options.onStart&&typeof this.options.onStart=="function"&&(this.options.scope?this.options.onStart.call(this.options.scope,this.result):this.options.onStart(this.result))},callOnChange:function(){this.writeToInput(),this.options.onChange&&typeof this.options.onChange=="function"&&(this.options.scope?this.options.onChange.call(this.options.scope,this.result):this.options.onChange(this.result))},callOnFinish:function(){this.writeToInput(),this.options.onFinish&&typeof this.options.onFinish=="function"&&(this.options.scope?this.options.onFinish.call(this.options.scope,this.result):this.options.onFinish(this.result))},callOnUpdate:function(){this.writeToInput(),this.options.onUpdate&&typeof this.options.onUpdate=="function"&&(this.options.scope?this.options.onUpdate.call(this.options.scope,this.result):this.options.onUpdate(this.result))},toggleInput:function(){if(this.$cache.input.toggleClass("irs-hidden-input"),this.has_tab_index)this.$cache.input.prop("tabindex",-1);else try{this.$cache.input.removeProp("tabindex")}catch(t){}this.has_tab_index=!this.has_tab_index},convertToPercent:function(t,i){var e=this.options.max-this.options.min,s=e/100,o,r;return e?(i?o=t:o=t-this.options.min,r=o/s,this.toFixed(r)):(this.no_diapason=!0,0)},convertToValue:function(t){var i=this.options.min,e=this.options.max,s=i.toString().split(".")[1],o=e.toString().split(".")[1],r,h,a=0,n=0;if(t===0)return this.options.min;if(t===100)return this.options.max;s&&(r=s.length,a=r),o&&(h=o.length,a=h),r&&h&&(a=r>=h?r:h),i<0&&(n=Math.abs(i),i=+(i+n).toFixed(a),e=+(e+n).toFixed(a));var l=(e-i)/100*t+i,p=this.options.step.toString().split(".")[1],c;return p?l=+l.toFixed(p.length):(l=l/this.options.step,l=l*this.options.step,l=+l.toFixed(0)),n&&(l-=n),p?c=+l.toFixed(p.length):c=this.toFixed(l),c<this.options.min?c=this.options.min:c>this.options.max&&(c=this.options.max),c},calcWithStep:function(t){var i=Math.round(t/this.coords.p_step)*this.coords.p_step;return i>100&&(i=100),t===100&&(i=100),this.toFixed(i)},checkMinInterval:function(t,i,e){var s=this.options,o,r;return s.min_interval?(o=this.convertToValue(t),r=this.convertToValue(i),e==="from"?r-o<s.min_interval&&(o=r-s.min_interval):o-r<s.min_interval&&(o=r+s.min_interval),this.convertToPercent(o)):t},checkMaxInterval:function(t,i,e){var s=this.options,o,r;return s.max_interval?(o=this.convertToValue(t),r=this.convertToValue(i),e==="from"?r-o>s.max_interval&&(o=r-s.max_interval):o-r>s.max_interval&&(o=r+s.max_interval),this.convertToPercent(o)):t},checkDiapason:function(t,i,e){var s=this.convertToValue(t),o=this.options;return typeof i!="number"&&(i=o.min),typeof e!="number"&&(e=o.max),s<i&&(s=i),s>e&&(s=e),this.convertToPercent(s)},toFixed:function(t){return t=t.toFixed(20),+t},_prettify:function(t){return this.options.prettify_enabled?this.options.prettify&&typeof this.options.prettify=="function"?this.options.prettify(t):this.prettify(t):t},prettify:function(t){var i=t.toString();return i.replace(/(\d{1,3}(?=(?:\d\d\d)+(?!\d)))/g,"$1"+this.options.prettify_separator)},checkEdges:function(t,i){return this.options.force_edges?(t<0?t=0:t>100-i&&(t=100-i),this.toFixed(t)):this.toFixed(t)},validate:function(){var t=this.options,i=this.result,e=t.values,s=e.length,o,r;if(typeof t.min=="string"&&(t.min=+t.min),typeof t.max=="string"&&(t.max=+t.max),typeof t.from=="string"&&(t.from=+t.from),typeof t.to=="string"&&(t.to=+t.to),typeof t.step=="string"&&(t.step=+t.step),typeof t.from_min=="string"&&(t.from_min=+t.from_min),typeof t.from_max=="string"&&(t.from_max=+t.from_max),typeof t.to_min=="string"&&(t.to_min=+t.to_min),typeof t.to_max=="string"&&(t.to_max=+t.to_max),typeof t.grid_num=="string"&&(t.grid_num=+t.grid_num),t.max<t.min&&(t.max=t.min),s)for(t.p_values=[],t.min=0,t.max=s-1,t.step=1,t.grid_num=t.max,t.grid_snap=!0,r=0;r<s;r++)o=+e[r],isNaN(o)?o=e[r]:(e[r]=o,o=this._prettify(o)),t.p_values.push(o);(typeof t.from!="number"||isNaN(t.from))&&(t.from=t.min),(typeof t.to!="number"||isNaN(t.to))&&(t.to=t.max),t.type==="single"?(t.from<t.min&&(t.from=t.min),t.from>t.max&&(t.from=t.max)):(t.from<t.min&&(t.from=t.min),t.from>t.max&&(t.from=t.max),t.to<t.min&&(t.to=t.min),t.to>t.max&&(t.to=t.max),this.update_check.from&&(this.update_check.from!==t.from&&t.from>t.to&&(t.from=t.to),this.update_check.to!==t.to&&t.to<t.from&&(t.to=t.from)),t.from>t.to&&(t.from=t.to),t.to<t.from&&(t.to=t.from)),(typeof t.step!="number"||isNaN(t.step)||!t.step||t.step<0)&&(t.step=1),typeof t.from_min=="number"&&t.from<t.from_min&&(t.from=t.from_min),typeof t.from_max=="number"&&t.from>t.from_max&&(t.from=t.from_max),typeof t.to_min=="number"&&t.to<t.to_min&&(t.to=t.to_min),typeof t.to_max=="number"&&t.from>t.to_max&&(t.to=t.to_max),i&&(i.min!==t.min&&(i.min=t.min),i.max!==t.max&&(i.max=t.max),(i.from<i.min||i.from>i.max)&&(i.from=t.from),(i.to<i.min||i.to>i.max)&&(i.to=t.to)),(typeof t.min_interval!="number"||isNaN(t.min_interval)||!t.min_interval||t.min_interval<0)&&(t.min_interval=0),(typeof t.max_interval!="number"||isNaN(t.max_interval)||!t.max_interval||t.max_interval<0)&&(t.max_interval=0),t.min_interval&&t.min_interval>t.max-t.min&&(t.min_interval=t.max-t.min),t.max_interval&&t.max_interval>t.max-t.min&&(t.max_interval=t.max-t.min)},decorate:function(t,i){var e="",s=this.options;return s.prefix&&(e+=s.prefix),e+=t,s.max_postfix&&(s.values.length&&t===s.p_values[s.max]||i===s.max)&&(e+=s.max_postfix,s.postfix&&(e+=" ")),s.postfix&&(e+=s.postfix),e},updateFrom:function(){this.result.from=this.options.from,this.result.from_percent=this.convertToPercent(this.result.from),this.result.from_pretty=this._prettify(this.result.from),this.options.values&&(this.result.from_value=this.options.values[this.result.from])},updateTo:function(){this.result.to=this.options.to,this.result.to_percent=this.convertToPercent(this.result.to),this.result.to_pretty=this._prettify(this.result.to),this.options.values&&(this.result.to_value=this.options.values[this.result.to])},updateResult:function(){this.result.min=this.options.min,this.result.max=this.options.max,this.updateFrom(),this.updateTo()},appendGrid:function(){if(!!this.options.grid){var t=this.options,i,e,s=t.max-t.min,o=t.grid_num,r=0,h=0,a=4,n,l,p=0,c,u="";for(this.calcGridMargin(),t.grid_snap&&(o=s/t.step),o>50&&(o=50),r=this.toFixed(100/o),o>4&&(a=3),o>7&&(a=2),o>14&&(a=1),o>28&&(a=0),i=0;i<o+1;i++){for(n=a,h=this.toFixed(r*i),h>100&&(h=100),this.coords.big[i]=h,l=(h-r*(i-1))/(n+1),e=1;e<=n&&h!==0;e++)p=this.toFixed(h-l*e),u+='<span class="irs-grid-pol small" style="left: '+p+'%"></span>';u+='<span class="irs-grid-pol" style="left: '+h+'%"></span>',c=this.convertToValue(h),t.values.length?c=t.p_values[c]:c=this._prettify(c),u+='<span class="irs-grid-text js-grid-text-'+i+'" style="left: '+h+'%">'+c+"</span>"}this.coords.big_num=Math.ceil(o+1),this.$cache.cont.addClass("irs-with-grid"),this.$cache.grid.html(u),this.cacheGridLabels()}},cacheGridLabels:function(){var t,i,e=this.coords.big_num;for(i=0;i<e;i++)t=this.$cache.grid.find(".js-grid-text-"+i),this.$cache.grid_labels.push(t);this.calcGridLabels()},calcGridLabels:function(){var t,i,e=[],s=[],o=this.coords.big_num;for(t=0;t<o;t++)this.coords.big_w[t]=this.$cache.grid_labels[t].outerWidth(!1),this.coords.big_p[t]=this.toFixed(this.coords.big_w[t]/this.coords.w_rs*100),this.coords.big_x[t]=this.toFixed(this.coords.big_p[t]/2),e[t]=this.toFixed(this.coords.big[t]-this.coords.big_x[t]),s[t]=this.toFixed(e[t]+this.coords.big_p[t]);for(this.options.force_edges&&(e[0]<-this.coords.grid_gap&&(e[0]=-this.coords.grid_gap,s[0]=this.toFixed(e[0]+this.coords.big_p[0]),this.coords.big_x[0]=this.coords.grid_gap),s[o-1]>100+this.coords.grid_gap&&(s[o-1]=100+this.coords.grid_gap,e[o-1]=this.toFixed(s[o-1]-this.coords.big_p[o-1]),this.coords.big_x[o-1]=this.toFixed(this.coords.big_p[o-1]-this.coords.grid_gap))),this.calcGridCollision(2,e,s),this.calcGridCollision(4,e,s),t=0;t<o;t++)i=this.$cache.grid_labels[t][0],this.coords.big_x[t]!==Number.POSITIVE_INFINITY&&(i.style.marginLeft=-this.coords.big_x[t]+"%")},calcGridCollision:function(t,i,e){var s,o,r,h=this.coords.big_num;for(s=0;s<h&&(o=s+t/2,!(o>=h));s+=t)r=this.$cache.grid_labels[o][0],e[s]<=i[o]?r.style.visibility="visible":r.style.visibility="hidden"},calcGridMargin:function(){!this.options.grid_margin||(this.coords.w_rs=this.$cache.rs.outerWidth(!1),!!this.coords.w_rs&&(this.options.type==="single"?this.coords.w_handle=this.$cache.s_single.outerWidth(!1):this.coords.w_handle=this.$cache.s_from.outerWidth(!1),this.coords.p_handle=this.toFixed(this.coords.w_handle/this.coords.w_rs*100),this.coords.grid_gap=this.toFixed(this.coords.p_handle/2-.1),this.$cache.grid[0].style.width=this.toFixed(100-this.coords.p_handle)+"%",this.$cache.grid[0].style.left=this.coords.grid_gap+"%"))},update:function(t){!this.input||(this.is_update=!0,this.options.from=this.result.from,this.options.to=this.result.to,this.update_check.from=this.result.from,this.update_check.to=this.result.to,this.options=_.extend(this.options,t),this.validate(),this.updateResult(t),this.toggleInput(),this.remove(),this.init(!0))},reset:function(){!this.input||(this.updateResult(),this.update())},destroy:function(){!this.input||(this.toggleInput(),this.$cache.input.prop("readonly",!1),_.data(this.input,"ionRangeSlider",null),this.remove(),this.input=null,this.options=null)}},_.fn.ionRangeSlider=function(t){return this.each(function(){_.data(this,"ionRangeSlider")||_.data(this,"ionRangeSlider",new b(this,t,x++))})},function(){for(var t=0,i=["ms","moz","webkit","o"],e=0;e<i.length&&!f.requestAnimationFrame;++e)f.requestAnimationFrame=f[i[e]+"RequestAnimationFrame"],f.cancelAnimationFrame=f[i[e]+"CancelAnimationFrame"]||f[i[e]+"CancelRequestAnimationFrame"];f.requestAnimationFrame||(f.requestAnimationFrame=function(s,o){var r=new Date().getTime(),h=Math.max(0,16-(r-t)),a=f.setTimeout(function(){s(r+h)},h);return t=r+h,a}),f.cancelAnimationFrame||(f.cancelAnimationFrame=function(s){clearTimeout(s)})}()});

shiny/www/shared/ionrangeslider/js/ion.rangeSlider.js METASEP
// Ion.RangeSlider
// version 2.3.1 Build: 382
// © Denis Ineshin, 2019
// https://github.com/IonDen
//
// Project page:    http://ionden.com/a/plugins/ion.rangeSlider/en.html
// GitHub page:     https://github.com/IonDen/ion.rangeSlider
//
// Released under MIT licence:
// http://ionden.com/a/plugins/licence-en.html
// =====================================================================================================================

;(function(factory) {
    if ((typeof jQuery === 'undefined' || !jQuery) && typeof define === "function" && define.amd) {
        define(["jquery"], function (jQuery) {
            return factory(jQuery, document, window, navigator);
        });
    } else if ((typeof jQuery === 'undefined' || !jQuery) && typeof exports === "object") {
        factory(require("jquery"), document, window, navigator);
    } else {
        factory(jQuery, document, window, navigator);
    }
} (function ($, document, window, navigator, undefined) {
    "use strict";

    // =================================================================================================================
    // Service

    var plugin_count = 0;

    // IE8 fix
    var is_old_ie = (function () {
        var n = navigator.userAgent,
            r = /msie\s\d+/i,
            v;
        if (n.search(r) > 0) {
            v = r.exec(n).toString();
            v = v.split(" ")[1];
            if (v < 9) {
                $("html").addClass("lt-ie9");
                return true;
            }
        }
        return false;
    } ());
    if (!Function.prototype.bind) {
        Function.prototype.bind = function bind(that) {

            var target = this;
            var slice = [].slice;

            if (typeof target != "function") {
                throw new TypeError();
            }

            var args = slice.call(arguments, 1),
                bound = function () {

                    if (this instanceof bound) {

                        var F = function(){};
                        F.prototype = target.prototype;
                        var self = new F();

                        var result = target.apply(
                            self,
                            args.concat(slice.call(arguments))
                        );
                        if (Object(result) === result) {
                            return result;
                        }
                        return self;

                    } else {

                        return target.apply(
                            that,
                            args.concat(slice.call(arguments))
                        );

                    }

                };

            return bound;
        };
    }
    if (!Array.prototype.indexOf) {
        Array.prototype.indexOf = function(searchElement, fromIndex) {
            var k;
            if (this == null) {
                throw new TypeError('"this" is null or not defined');
            }
            var O = Object(this);
            var len = O.length >>> 0;
            if (len === 0) {
                return -1;
            }
            var n = +fromIndex || 0;
            if (Math.abs(n) === Infinity) {
                n = 0;
            }
            if (n >= len) {
                return -1;
            }
            k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
            while (k < len) {
                if (k in O && O[k] === searchElement) {
                    return k;
                }
                k++;
            }
            return -1;
        };
    }



    // =================================================================================================================
    // Template

    var base_html =
        '<span class="irs">' +
        '<span class="irs-line" tabindex="0"></span>' +
        '<span class="irs-min">0</span><span class="irs-max">1</span>' +
        '<span class="irs-from">0</span><span class="irs-to">0</span><span class="irs-single">0</span>' +
        '</span>' +
        '<span class="irs-grid"></span>';

    var single_html =
        '<span class="irs-bar irs-bar--single"></span>' +
        '<span class="irs-shadow shadow-single"></span>' +
        '<span class="irs-handle single"><i></i><i></i><i></i></span>';

    var double_html =
        '<span class="irs-bar"></span>' +
        '<span class="irs-shadow shadow-from"></span>' +
        '<span class="irs-shadow shadow-to"></span>' +
        '<span class="irs-handle from"><i></i><i></i><i></i></span>' +
        '<span class="irs-handle to"><i></i><i></i><i></i></span>';

    var disable_html =
        '<span class="irs-disable-mask"></span>';



    // =================================================================================================================
    // Core

    /**
     * Main plugin constructor
     *
     * @param input {Object} link to base input element
     * @param options {Object} slider config
     * @param plugin_count {Number}
     * @constructor
     */
    var IonRangeSlider = function (input, options, plugin_count) {
        this.VERSION = "2.3.1";
        this.input = input;
        this.plugin_count = plugin_count;
        this.current_plugin = 0;
        this.calc_count = 0;
        this.update_tm = 0;
        this.old_from = 0;
        this.old_to = 0;
        this.old_min_interval = null;
        this.raf_id = null;
        this.dragging = false;
        this.force_redraw = false;
        this.no_diapason = false;
        this.has_tab_index = true;
        this.is_key = false;
        this.is_update = false;
        this.is_start = true;
        this.is_finish = false;
        this.is_active = false;
        this.is_resize = false;
        this.is_click = false;

        options = options || {};

        // cache for links to all DOM elements
        this.$cache = {
            win: $(window),
            body: $(document.body),
            input: $(input),
            cont: null,
            rs: null,
            min: null,
            max: null,
            from: null,
            to: null,
            single: null,
            bar: null,
            line: null,
            s_single: null,
            s_from: null,
            s_to: null,
            shad_single: null,
            shad_from: null,
            shad_to: null,
            edge: null,
            grid: null,
            grid_labels: []
        };

        // storage for measure variables
        this.coords = {
            // left
            x_gap: 0,
            x_pointer: 0,

            // width
            w_rs: 0,
            w_rs_old: 0,
            w_handle: 0,

            // percents
            p_gap: 0,
            p_gap_left: 0,
            p_gap_right: 0,
            p_step: 0,
            p_pointer: 0,
            p_handle: 0,
            p_single_fake: 0,
            p_single_real: 0,
            p_from_fake: 0,
            p_from_real: 0,
            p_to_fake: 0,
            p_to_real: 0,
            p_bar_x: 0,
            p_bar_w: 0,

            // grid
            grid_gap: 0,
            big_num: 0,
            big: [],
            big_w: [],
            big_p: [],
            big_x: []
        };

        // storage for labels measure variables
        this.labels = {
            // width
            w_min: 0,
            w_max: 0,
            w_from: 0,
            w_to: 0,
            w_single: 0,

            // percents
            p_min: 0,
            p_max: 0,
            p_from_fake: 0,
            p_from_left: 0,
            p_to_fake: 0,
            p_to_left: 0,
            p_single_fake: 0,
            p_single_left: 0
        };



        /**
         * get and validate config
         */
        var $inp = this.$cache.input,
            val = $inp.prop("value"),
            config, config_from_data, prop;

        // default config
        config = {
            skin: "flat",
            type: "single",

            min: 10,
            max: 100,
            from: null,
            to: null,
            step: 1,

            min_interval: 0,
            max_interval: 0,
            drag_interval: false,

            values: [],
            p_values: [],

            from_fixed: false,
            from_min: null,
            from_max: null,
            from_shadow: false,

            to_fixed: false,
            to_min: null,
            to_max: null,
            to_shadow: false,

            prettify_enabled: true,
            prettify_separator: " ",
            prettify: null,

            force_edges: false,

            keyboard: true,

            grid: false,
            grid_margin: true,
            grid_num: 4,
            grid_snap: false,

            hide_min_max: false,
            hide_from_to: false,

            prefix: "",
            postfix: "",
            max_postfix: "",
            decorate_both: true,
            values_separator: " — ",

            input_values_separator: ";",

            disable: false,
            block: false,

            extra_classes: "",

            scope: null,
            onStart: null,
            onChange: null,
            onFinish: null,
            onUpdate: null
        };


        // check if base element is input
        if ($inp[0].nodeName !== "INPUT") {
            console && console.warn && console.warn("Base element should be <input>!", $inp[0]);
        }


        // config from data-attributes extends js config
        config_from_data = {
            skin: $inp.data("skin"),
            type: $inp.data("type"),

            min: $inp.data("min"),
            max: $inp.data("max"),
            from: $inp.data("from"),
            to: $inp.data("to"),
            step: $inp.data("step"),

            min_interval: $inp.data("minInterval"),
            max_interval: $inp.data("maxInterval"),
            drag_interval: $inp.data("dragInterval"),

            values: $inp.data("values"),

            from_fixed: $inp.data("fromFixed"),
            from_min: $inp.data("fromMin"),
            from_max: $inp.data("fromMax"),
            from_shadow: $inp.data("fromShadow"),

            to_fixed: $inp.data("toFixed"),
            to_min: $inp.data("toMin"),
            to_max: $inp.data("toMax"),
            to_shadow: $inp.data("toShadow"),

            prettify_enabled: $inp.data("prettifyEnabled"),
            prettify_separator: $inp.data("prettifySeparator"),

            force_edges: $inp.data("forceEdges"),

            keyboard: $inp.data("keyboard"),

            grid: $inp.data("grid"),
            grid_margin: $inp.data("gridMargin"),
            grid_num: $inp.data("gridNum"),
            grid_snap: $inp.data("gridSnap"),

            hide_min_max: $inp.data("hideMinMax"),
            hide_from_to: $inp.data("hideFromTo"),

            prefix: $inp.data("prefix"),
            postfix: $inp.data("postfix"),
            max_postfix: $inp.data("maxPostfix"),
            decorate_both: $inp.data("decorateBoth"),
            values_separator: $inp.data("valuesSeparator"),

            input_values_separator: $inp.data("inputValuesSeparator"),

            disable: $inp.data("disable"),
            block: $inp.data("block"),

            extra_classes: $inp.data("extraClasses"),
        };
        config_from_data.values = config_from_data.values && config_from_data.values.split(",");

        for (prop in config_from_data) {
            if (config_from_data.hasOwnProperty(prop)) {
                if (config_from_data[prop] === undefined || config_from_data[prop] === "") {
                    delete config_from_data[prop];
                }
            }
        }


        // input value extends default config
        if (val !== undefined && val !== "") {
            val = val.split(config_from_data.input_values_separator || options.input_values_separator || ";");

            if (val[0] && val[0] == +val[0]) {
                val[0] = +val[0];
            }
            if (val[1] && val[1] == +val[1]) {
                val[1] = +val[1];
            }

            if (options && options.values && options.values.length) {
                config.from = val[0] && options.values.indexOf(val[0]);
                config.to = val[1] && options.values.indexOf(val[1]);
            } else {
                config.from = val[0] && +val[0];
                config.to = val[1] && +val[1];
            }
        }



        // js config extends default config
        $.extend(config, options);


        // data config extends config
        $.extend(config, config_from_data);
        this.options = config;



        // validate config, to be sure that all data types are correct
        this.update_check = {};
        this.validate();



        // default result object, returned to callbacks
        this.result = {
            input: this.$cache.input,
            slider: null,

            min: this.options.min,
            max: this.options.max,

            from: this.options.from,
            from_percent: 0,
            from_value: null,

            to: this.options.to,
            to_percent: 0,
            to_value: null
        };



        this.init();
    };

    IonRangeSlider.prototype = {

        /**
         * Starts or updates the plugin instance
         *
         * @param [is_update] {boolean}
         */
        init: function (is_update) {
            this.no_diapason = false;
            this.coords.p_step = this.convertToPercent(this.options.step, true);

            this.target = "base";

            this.toggleInput();
            this.append();
            this.setMinMax();

            if (is_update) {
                this.force_redraw = true;
                this.calc(true);

                // callbacks called
                this.callOnUpdate();
            } else {
                this.force_redraw = true;
                this.calc(true);

                // callbacks called
                this.callOnStart();
            }

            this.updateScene();
        },

        /**
         * Appends slider template to a DOM
         */
        append: function () {
            var container_html = '<span class="irs irs--' + this.options.skin + ' js-irs-' + this.plugin_count + ' ' + this.options.extra_classes + '"></span>';
            this.$cache.input.before(container_html);
            this.$cache.input.prop("readonly", true);
            this.$cache.cont = this.$cache.input.prev();
            this.result.slider = this.$cache.cont;

            this.$cache.cont.html(base_html);
            this.$cache.rs = this.$cache.cont.find(".irs");
            this.$cache.min = this.$cache.cont.find(".irs-min");
            this.$cache.max = this.$cache.cont.find(".irs-max");
            this.$cache.from = this.$cache.cont.find(".irs-from");
            this.$cache.to = this.$cache.cont.find(".irs-to");
            this.$cache.single = this.$cache.cont.find(".irs-single");
            this.$cache.line = this.$cache.cont.find(".irs-line");
            this.$cache.grid = this.$cache.cont.find(".irs-grid");

            if (this.options.type === "single") {
                this.$cache.cont.append(single_html);
                this.$cache.bar = this.$cache.cont.find(".irs-bar");
                this.$cache.edge = this.$cache.cont.find(".irs-bar-edge");
                this.$cache.s_single = this.$cache.cont.find(".single");
                this.$cache.from[0].style.visibility = "hidden";
                this.$cache.to[0].style.visibility = "hidden";
                this.$cache.shad_single = this.$cache.cont.find(".shadow-single");
            } else {
                this.$cache.cont.append(double_html);
                this.$cache.bar = this.$cache.cont.find(".irs-bar");
                this.$cache.s_from = this.$cache.cont.find(".from");
                this.$cache.s_to = this.$cache.cont.find(".to");
                this.$cache.shad_from = this.$cache.cont.find(".shadow-from");
                this.$cache.shad_to = this.$cache.cont.find(".shadow-to");

                this.setTopHandler();
            }

            if (this.options.hide_from_to) {
                this.$cache.from[0].style.display = "none";
                this.$cache.to[0].style.display = "none";
                this.$cache.single[0].style.display = "none";
            }

            this.appendGrid();

            if (this.options.disable) {
                this.appendDisableMask();
                this.$cache.input[0].disabled = true;
            } else {
                this.$cache.input[0].disabled = false;
                this.removeDisableMask();
                this.bindEvents();
            }

            // block only if not disabled
            if (!this.options.disable) {
                if (this.options.block) {
                    this.appendDisableMask();
                } else {
                    this.removeDisableMask();
                }
            }

            if (this.options.drag_interval) {
                this.$cache.bar[0].style.cursor = "ew-resize";
            }
        },

        /**
         * Determine which handler has a priority
         * works only for double slider type
         */
        setTopHandler: function () {
            var min = this.options.min,
                max = this.options.max,
                from = this.options.from,
                to = this.options.to;

            if (from > min && to === max) {
                this.$cache.s_from.addClass("type_last");
            } else if (to < max) {
                this.$cache.s_to.addClass("type_last");
            }
        },

        /**
         * Determine which handles was clicked last
         * and which handler should have hover effect
         *
         * @param target {String}
         */
        changeLevel: function (target) {
            switch (target) {
                case "single":
                    this.coords.p_gap = this.toFixed(this.coords.p_pointer - this.coords.p_single_fake);
                    this.$cache.s_single.addClass("state_hover");
                    break;
                case "from":
                    this.coords.p_gap = this.toFixed(this.coords.p_pointer - this.coords.p_from_fake);
                    this.$cache.s_from.addClass("state_hover");
                    this.$cache.s_from.addClass("type_last");
                    this.$cache.s_to.removeClass("type_last");
                    break;
                case "to":
                    this.coords.p_gap = this.toFixed(this.coords.p_pointer - this.coords.p_to_fake);
                    this.$cache.s_to.addClass("state_hover");
                    this.$cache.s_to.addClass("type_last");
                    this.$cache.s_from.removeClass("type_last");
                    break;
                case "both":
                    this.coords.p_gap_left = this.toFixed(this.coords.p_pointer - this.coords.p_from_fake);
                    this.coords.p_gap_right = this.toFixed(this.coords.p_to_fake - this.coords.p_pointer);
                    this.$cache.s_to.removeClass("type_last");
                    this.$cache.s_from.removeClass("type_last");
                    break;
            }
        },

        /**
         * Then slider is disabled
         * appends extra layer with opacity
         */
        appendDisableMask: function () {
            this.$cache.cont.append(disable_html);
            this.$cache.cont.addClass("irs-disabled");
        },

        /**
         * Then slider is not disabled
         * remove disable mask
         */
        removeDisableMask: function () {
            this.$cache.cont.remove(".irs-disable-mask");
            this.$cache.cont.removeClass("irs-disabled");
        },

        /**
         * Remove slider instance
         * and unbind all events
         */
        remove: function () {
            this.$cache.cont.remove();
            this.$cache.cont = null;

            this.$cache.line.off("keydown.irs_" + this.plugin_count);

            this.$cache.body.off("touchmove.irs_" + this.plugin_count);
            this.$cache.body.off("mousemove.irs_" + this.plugin_count);

            this.$cache.win.off("touchend.irs_" + this.plugin_count);
            this.$cache.win.off("mouseup.irs_" + this.plugin_count);

            if (is_old_ie) {
                this.$cache.body.off("mouseup.irs_" + this.plugin_count);
                this.$cache.body.off("mouseleave.irs_" + this.plugin_count);
            }

            this.$cache.grid_labels = [];
            this.coords.big = [];
            this.coords.big_w = [];
            this.coords.big_p = [];
            this.coords.big_x = [];

            cancelAnimationFrame(this.raf_id);
        },

        /**
         * bind all slider events
         */
        bindEvents: function () {
            if (this.no_diapason) {
                return;
            }

            this.$cache.body.on("touchmove.irs_" + this.plugin_count, this.pointerMove.bind(this));
            this.$cache.body.on("mousemove.irs_" + this.plugin_count, this.pointerMove.bind(this));

            this.$cache.win.on("touchend.irs_" + this.plugin_count, this.pointerUp.bind(this));
            this.$cache.win.on("mouseup.irs_" + this.plugin_count, this.pointerUp.bind(this));

            this.$cache.line.on("touchstart.irs_" + this.plugin_count, this.pointerClick.bind(this, "click"));
            this.$cache.line.on("mousedown.irs_" + this.plugin_count, this.pointerClick.bind(this, "click"));

            this.$cache.line.on("focus.irs_" + this.plugin_count, this.pointerFocus.bind(this));

            if (this.options.drag_interval && this.options.type === "double") {
                this.$cache.bar.on("touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, "both"));
                this.$cache.bar.on("mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, "both"));
            } else {
                this.$cache.bar.on("touchstart.irs_" + this.plugin_count, this.pointerClick.bind(this, "click"));
                this.$cache.bar.on("mousedown.irs_" + this.plugin_count, this.pointerClick.bind(this, "click"));
            }

            if (this.options.type === "single") {
                this.$cache.single.on("touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, "single"));
                this.$cache.s_single.on("touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, "single"));
                this.$cache.shad_single.on("touchstart.irs_" + this.plugin_count, this.pointerClick.bind(this, "click"));

                this.$cache.single.on("mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, "single"));
                this.$cache.s_single.on("mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, "single"));
                this.$cache.edge.on("mousedown.irs_" + this.plugin_count, this.pointerClick.bind(this, "click"));
                this.$cache.shad_single.on("mousedown.irs_" + this.plugin_count, this.pointerClick.bind(this, "click"));
            } else {
                this.$cache.single.on("touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, null));
                this.$cache.single.on("mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, null));

                this.$cache.from.on("touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, "from"));
                this.$cache.s_from.on("touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, "from"));
                this.$cache.to.on("touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, "to"));
                this.$cache.s_to.on("touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, "to"));
                this.$cache.shad_from.on("touchstart.irs_" + this.plugin_count, this.pointerClick.bind(this, "click"));
                this.$cache.shad_to.on("touchstart.irs_" + this.plugin_count, this.pointerClick.bind(this, "click"));

                this.$cache.from.on("mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, "from"));
                this.$cache.s_from.on("mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, "from"));
                this.$cache.to.on("mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, "to"));
                this.$cache.s_to.on("mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, "to"));
                this.$cache.shad_from.on("mousedown.irs_" + this.plugin_count, this.pointerClick.bind(this, "click"));
                this.$cache.shad_to.on("mousedown.irs_" + this.plugin_count, this.pointerClick.bind(this, "click"));
            }

            if (this.options.keyboard) {
                this.$cache.line.on("keydown.irs_" + this.plugin_count, this.key.bind(this, "keyboard"));
            }

            if (is_old_ie) {
                this.$cache.body.on("mouseup.irs_" + this.plugin_count, this.pointerUp.bind(this));
                this.$cache.body.on("mouseleave.irs_" + this.plugin_count, this.pointerUp.bind(this));
            }
        },

        /**
         * Focus with tabIndex
         *
         * @param e {Object} event object
         */
        pointerFocus: function (e) {
            if (!this.target) {
                var x;
                var $handle;

                if (this.options.type === "single") {
                    $handle = this.$cache.single;
                } else {
                    $handle = this.$cache.from;
                }

                x = $handle.offset().left;
                x += ($handle.width() / 2) - 1;

                this.pointerClick("single", {preventDefault: function () {}, pageX: x});
            }
        },

        /**
         * Mousemove or touchmove
         * only for handlers
         *
         * @param e {Object} event object
         */
        pointerMove: function (e) {
            if (!this.dragging) {
                return;
            }

            var x = e.pageX || e.originalEvent.touches && e.originalEvent.touches[0].pageX;
            this.coords.x_pointer = x - this.coords.x_gap;

            this.calc();
        },

        /**
         * Mouseup or touchend
         * only for handlers
         *
         * @param e {Object} event object
         */
        pointerUp: function (e) {
            if (this.current_plugin !== this.plugin_count) {
                return;
            }

            if (this.is_active) {
                this.is_active = false;
            } else {
                return;
            }

            this.$cache.cont.find(".state_hover").removeClass("state_hover");

            this.force_redraw = true;

            if (is_old_ie) {
                $("*").prop("unselectable", false);
            }

            this.updateScene();
            this.restoreOriginalMinInterval();

            // callbacks call
            if ($.contains(this.$cache.cont[0], e.target) || this.dragging) {
                this.callOnFinish();
            }

            this.dragging = false;
        },

        /**
         * Mousedown or touchstart
         * only for handlers
         *
         * @param target {String|null}
         * @param e {Object} event object
         */
        pointerDown: function (target, e) {
            e.preventDefault();
            e.stopPropagation();
            var x = e.pageX || e.originalEvent.touches && e.originalEvent.touches[0].pageX;
            if (e.button === 2) {
                return;
            }

            if (target === "both") {
                this.setTempMinInterval();
            }

            if (!target) {
                target = this.target || "from";
            }

            this.current_plugin = this.plugin_count;
            this.target = target;

            this.is_active = true;
            this.dragging = true;

            this.coords.x_gap = this.$cache.rs.offset().left;
            this.coords.x_pointer = x - this.coords.x_gap;

            this.calcPointerPercent();
            this.changeLevel(target);

            if (is_old_ie) {
                $("*").prop("unselectable", true);
            }

            this.$cache.line.trigger("focus");

            this.updateScene();
        },

        /**
         * Mousedown or touchstart
         * for other slider elements, like diapason line
         *
         * @param target {String}
         * @param e {Object} event object
         */
        pointerClick: function (target, e) {
            e.preventDefault();
            e.stopPropagation();
            var x = e.pageX || e.originalEvent.touches && e.originalEvent.touches[0].pageX;
            if (e.button === 2) {
                return;
            }

            this.current_plugin = this.plugin_count;
            this.target = target;

            this.is_click = true;
            this.coords.x_gap = this.$cache.rs.offset().left;
            this.coords.x_pointer = +(x - this.coords.x_gap).toFixed();

            this.force_redraw = true;
            this.calc();

            this.$cache.line.trigger("focus");
        },

        /**
         * Keyborard controls for focused slider
         *
         * @param target {String}
         * @param e {Object} event object
         * @returns {boolean|undefined}
         */
        key: function (target, e) {
            if (this.current_plugin !== this.plugin_count || e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) {
                return;
            }

            switch (e.which) {
                case 83: // W
                case 65: // A
                case 40: // DOWN
                case 37: // LEFT
                    e.preventDefault();
                    this.moveByKey(false);
                    break;

                case 87: // S
                case 68: // D
                case 38: // UP
                case 39: // RIGHT
                    e.preventDefault();
                    this.moveByKey(true);
                    break;
            }

            return true;
        },

        /**
         * Move by key
         *
         * @param right {boolean} direction to move
         */
        moveByKey: function (right) {
            var p = this.coords.p_pointer;
            var p_step = (this.options.max - this.options.min) / 100;
            p_step = this.options.step / p_step;

            if (right) {
                p += p_step;
            } else {
                p -= p_step;
            }

            this.coords.x_pointer = this.toFixed(this.coords.w_rs / 100 * p);
            this.is_key = true;
            this.calc();
        },

        /**
         * Set visibility and content
         * of Min and Max labels
         */
        setMinMax: function () {
            if (!this.options) {
                return;
            }

            if (this.options.hide_min_max) {
                this.$cache.min[0].style.display = "none";
                this.$cache.max[0].style.display = "none";
                return;
            }

            if (this.options.values.length) {
                this.$cache.min.html(this.decorate(this.options.p_values[this.options.min]));
                this.$cache.max.html(this.decorate(this.options.p_values[this.options.max]));
            } else {
                var min_pretty = this._prettify(this.options.min);
                var max_pretty = this._prettify(this.options.max);

                this.result.min_pretty = min_pretty;
                this.result.max_pretty = max_pretty;

                this.$cache.min.html(this.decorate(min_pretty, this.options.min));
                this.$cache.max.html(this.decorate(max_pretty, this.options.max));
            }

            this.labels.w_min = this.$cache.min.outerWidth(false);
            this.labels.w_max = this.$cache.max.outerWidth(false);
        },

        /**
         * Then dragging interval, prevent interval collapsing
         * using min_interval option
         */
        setTempMinInterval: function () {
            var interval = this.result.to - this.result.from;

            if (this.old_min_interval === null) {
                this.old_min_interval = this.options.min_interval;
            }

            this.options.min_interval = interval;
        },

        /**
         * Restore min_interval option to original
         */
        restoreOriginalMinInterval: function () {
            if (this.old_min_interval !== null) {
                this.options.min_interval = this.old_min_interval;
                this.old_min_interval = null;
            }
        },



        // =============================================================================================================
        // Calculations

        /**
         * All calculations and measures start here
         *
         * @param update {boolean=}
         */
        calc: function (update) {
            if (!this.options) {
                return;
            }

            this.calc_count++;

            if (this.calc_count === 10 || update) {
                this.calc_count = 0;
                this.coords.w_rs = this.$cache.rs.outerWidth(false);

                this.calcHandlePercent();
            }

            if (!this.coords.w_rs) {
                return;
            }

            this.calcPointerPercent();
            var handle_x = this.getHandleX();


            if (this.target === "both") {
                this.coords.p_gap = 0;
                handle_x = this.getHandleX();
            }

            if (this.target === "click") {
                this.coords.p_gap = this.coords.p_handle / 2;
                handle_x = this.getHandleX();

                if (this.options.drag_interval) {
                    this.target = "both_one";
                } else {
                    this.target = this.chooseHandle(handle_x);
                }
            }

            switch (this.target) {
                case "base":
                    var w = (this.options.max - this.options.min) / 100,
                        f = (this.result.from - this.options.min) / w,
                        t = (this.result.to - this.options.min) / w;

                    this.coords.p_single_real = this.toFixed(f);
                    this.coords.p_from_real = this.toFixed(f);
                    this.coords.p_to_real = this.toFixed(t);

                    this.coords.p_single_real = this.checkDiapason(this.coords.p_single_real, this.options.from_min, this.options.from_max);
                    this.coords.p_from_real = this.checkDiapason(this.coords.p_from_real, this.options.from_min, this.options.from_max);
                    this.coords.p_to_real = this.checkDiapason(this.coords.p_to_real, this.options.to_min, this.options.to_max);

                    this.coords.p_single_fake = this.convertToFakePercent(this.coords.p_single_real);
                    this.coords.p_from_fake = this.convertToFakePercent(this.coords.p_from_real);
                    this.coords.p_to_fake = this.convertToFakePercent(this.coords.p_to_real);

                    this.target = null;

                    break;

                case "single":
                    if (this.options.from_fixed) {
                        break;
                    }

                    this.coords.p_single_real = this.convertToRealPercent(handle_x);
                    this.coords.p_single_real = this.calcWithStep(this.coords.p_single_real);
                    this.coords.p_single_real = this.checkDiapason(this.coords.p_single_real, this.options.from_min, this.options.from_max);

                    this.coords.p_single_fake = this.convertToFakePercent(this.coords.p_single_real);

                    break;

                case "from":
                    if (this.options.from_fixed) {
                        break;
                    }

                    this.coords.p_from_real = this.convertToRealPercent(handle_x);
                    this.coords.p_from_real = this.calcWithStep(this.coords.p_from_real);
                    if (this.coords.p_from_real > this.coords.p_to_real) {
                        this.coords.p_from_real = this.coords.p_to_real;
                    }
                    this.coords.p_from_real = this.checkDiapason(this.coords.p_from_real, this.options.from_min, this.options.from_max);
                    this.coords.p_from_real = this.checkMinInterval(this.coords.p_from_real, this.coords.p_to_real, "from");
                    this.coords.p_from_real = this.checkMaxInterval(this.coords.p_from_real, this.coords.p_to_real, "from");

                    this.coords.p_from_fake = this.convertToFakePercent(this.coords.p_from_real);

                    break;

                case "to":
                    if (this.options.to_fixed) {
                        break;
                    }

                    this.coords.p_to_real = this.convertToRealPercent(handle_x);
                    this.coords.p_to_real = this.calcWithStep(this.coords.p_to_real);
                    if (this.coords.p_to_real < this.coords.p_from_real) {
                        this.coords.p_to_real = this.coords.p_from_real;
                    }
                    this.coords.p_to_real = this.checkDiapason(this.coords.p_to_real, this.options.to_min, this.options.to_max);
                    this.coords.p_to_real = this.checkMinInterval(this.coords.p_to_real, this.coords.p_from_real, "to");
                    this.coords.p_to_real = this.checkMaxInterval(this.coords.p_to_real, this.coords.p_from_real, "to");

                    this.coords.p_to_fake = this.convertToFakePercent(this.coords.p_to_real);

                    break;

                case "both":
                    if (this.options.from_fixed || this.options.to_fixed) {
                        break;
                    }

                    handle_x = this.toFixed(handle_x + (this.coords.p_handle * 0.001));

                    this.coords.p_from_real = this.convertToRealPercent(handle_x) - this.coords.p_gap_left;
                    this.coords.p_from_real = this.calcWithStep(this.coords.p_from_real);
                    this.coords.p_from_real = this.checkDiapason(this.coords.p_from_real, this.options.from_min, this.options.from_max);
                    this.coords.p_from_real = this.checkMinInterval(this.coords.p_from_real, this.coords.p_to_real, "from");
                    this.coords.p_from_fake = this.convertToFakePercent(this.coords.p_from_real);

                    this.coords.p_to_real = this.convertToRealPercent(handle_x) + this.coords.p_gap_right;
                    this.coords.p_to_real = this.calcWithStep(this.coords.p_to_real);
                    this.coords.p_to_real = this.checkDiapason(this.coords.p_to_real, this.options.to_min, this.options.to_max);
                    this.coords.p_to_real = this.checkMinInterval(this.coords.p_to_real, this.coords.p_from_real, "to");
                    this.coords.p_to_fake = this.convertToFakePercent(this.coords.p_to_real);

                    break;

                case "both_one":
                    if (this.options.from_fixed || this.options.to_fixed) {
                        break;
                    }

                    var real_x = this.convertToRealPercent(handle_x),
                        from = this.result.from_percent,
                        to = this.result.to_percent,
                        full = to - from,
                        half = full / 2,
                        new_from = real_x - half,
                        new_to = real_x + half;

                    if (new_from < 0) {
                        new_from = 0;
                        new_to = new_from + full;
                    }

                    if (new_to > 100) {
                        new_to = 100;
                        new_from = new_to - full;
                    }

                    this.coords.p_from_real = this.calcWithStep(new_from);
                    this.coords.p_from_real = this.checkDiapason(this.coords.p_from_real, this.options.from_min, this.options.from_max);
                    this.coords.p_from_fake = this.convertToFakePercent(this.coords.p_from_real);

                    this.coords.p_to_real = this.calcWithStep(new_to);
                    this.coords.p_to_real = this.checkDiapason(this.coords.p_to_real, this.options.to_min, this.options.to_max);
                    this.coords.p_to_fake = this.convertToFakePercent(this.coords.p_to_real);

                    break;
            }

            if (this.options.type === "single") {
                this.coords.p_bar_x = (this.coords.p_handle / 2);
                this.coords.p_bar_w = this.coords.p_single_fake;

                this.result.from_percent = this.coords.p_single_real;
                this.result.from = this.convertToValue(this.coords.p_single_real);
                this.result.from_pretty = this._prettify(this.result.from);

                if (this.options.values.length) {
                    this.result.from_value = this.options.values[this.result.from];
                }
            } else {
                this.coords.p_bar_x = this.toFixed(this.coords.p_from_fake + (this.coords.p_handle / 2));
                this.coords.p_bar_w = this.toFixed(this.coords.p_to_fake - this.coords.p_from_fake);

                this.result.from_percent = this.coords.p_from_real;
                this.result.from = this.convertToValue(this.coords.p_from_real);
                this.result.from_pretty = this._prettify(this.result.from);
                this.result.to_percent = this.coords.p_to_real;
                this.result.to = this.convertToValue(this.coords.p_to_real);
                this.result.to_pretty = this._prettify(this.result.to);

                if (this.options.values.length) {
                    this.result.from_value = this.options.values[this.result.from];
                    this.result.to_value = this.options.values[this.result.to];
                }
            }

            this.calcMinMax();
            this.calcLabels();
        },


        /**
         * calculates pointer X in percent
         */
        calcPointerPercent: function () {
            if (!this.coords.w_rs) {
                this.coords.p_pointer = 0;
                return;
            }

            if (this.coords.x_pointer < 0 || isNaN(this.coords.x_pointer)  ) {
                this.coords.x_pointer = 0;
            } else if (this.coords.x_pointer > this.coords.w_rs) {
                this.coords.x_pointer = this.coords.w_rs;
            }

            this.coords.p_pointer = this.toFixed(this.coords.x_pointer / this.coords.w_rs * 100);
        },

        convertToRealPercent: function (fake) {
            var full = 100 - this.coords.p_handle;
            return fake / full * 100;
        },

        convertToFakePercent: function (real) {
            var full = 100 - this.coords.p_handle;
            return real / 100 * full;
        },

        getHandleX: function () {
            var max = 100 - this.coords.p_handle,
                x = this.toFixed(this.coords.p_pointer - this.coords.p_gap);

            if (x < 0) {
                x = 0;
            } else if (x > max) {
                x = max;
            }

            return x;
        },

        calcHandlePercent: function () {
            if (this.options.type === "single") {
                this.coords.w_handle = this.$cache.s_single.outerWidth(false);
            } else {
                this.coords.w_handle = this.$cache.s_from.outerWidth(false);
            }

            this.coords.p_handle = this.toFixed(this.coords.w_handle / this.coords.w_rs * 100);
        },

        /**
         * Find closest handle to pointer click
         *
         * @param real_x {Number}
         * @returns {String}
         */
        chooseHandle: function (real_x) {
            if (this.options.type === "single") {
                return "single";
            } else {
                var m_point = this.coords.p_from_real + ((this.coords.p_to_real - this.coords.p_from_real) / 2);
                if (real_x >= m_point) {
                    return this.options.to_fixed ? "from" : "to";
                } else {
                    return this.options.from_fixed ? "to" : "from";
                }
            }
        },

        /**
         * Measure Min and Max labels width in percent
         */
        calcMinMax: function () {
            if (!this.coords.w_rs) {
                return;
            }

            this.labels.p_min = this.labels.w_min / this.coords.w_rs * 100;
            this.labels.p_max = this.labels.w_max / this.coords.w_rs * 100;
        },

        /**
         * Measure labels width and X in percent
         */
        calcLabels: function () {
            if (!this.coords.w_rs || this.options.hide_from_to) {
                return;
            }

            if (this.options.type === "single") {

                this.labels.w_single = this.$cache.single.outerWidth(false);
                this.labels.p_single_fake = this.labels.w_single / this.coords.w_rs * 100;
                this.labels.p_single_left = this.coords.p_single_fake + (this.coords.p_handle / 2) - (this.labels.p_single_fake / 2);
                this.labels.p_single_left = this.checkEdges(this.labels.p_single_left, this.labels.p_single_fake);

            } else {

                this.labels.w_from = this.$cache.from.outerWidth(false);
                this.labels.p_from_fake = this.labels.w_from / this.coords.w_rs * 100;
                this.labels.p_from_left = this.coords.p_from_fake + (this.coords.p_handle / 2) - (this.labels.p_from_fake / 2);
                this.labels.p_from_left = this.toFixed(this.labels.p_from_left);
                this.labels.p_from_left = this.checkEdges(this.labels.p_from_left, this.labels.p_from_fake);

                this.labels.w_to = this.$cache.to.outerWidth(false);
                this.labels.p_to_fake = this.labels.w_to / this.coords.w_rs * 100;
                this.labels.p_to_left = this.coords.p_to_fake + (this.coords.p_handle / 2) - (this.labels.p_to_fake / 2);
                this.labels.p_to_left = this.toFixed(this.labels.p_to_left);
                this.labels.p_to_left = this.checkEdges(this.labels.p_to_left, this.labels.p_to_fake);

                this.labels.w_single = this.$cache.single.outerWidth(false);
                this.labels.p_single_fake = this.labels.w_single / this.coords.w_rs * 100;
                this.labels.p_single_left = ((this.labels.p_from_left + this.labels.p_to_left + this.labels.p_to_fake) / 2) - (this.labels.p_single_fake / 2);
                this.labels.p_single_left = this.toFixed(this.labels.p_single_left);
                this.labels.p_single_left = this.checkEdges(this.labels.p_single_left, this.labels.p_single_fake);

            }
        },



        // =============================================================================================================
        // Drawings

        /**
         * Main function called in request animation frame
         * to update everything
         */
        updateScene: function () {
            if (this.raf_id) {
                cancelAnimationFrame(this.raf_id);
                this.raf_id = null;
            }

            clearTimeout(this.update_tm);
            this.update_tm = null;

            if (!this.options) {
                return;
            }

            this.drawHandles();

            if (this.is_active) {
                this.raf_id = requestAnimationFrame(this.updateScene.bind(this));
            } else {
                this.update_tm = setTimeout(this.updateScene.bind(this), 300);
            }
        },

        /**
         * Draw handles
         */
        drawHandles: function () {
            this.coords.w_rs = this.$cache.rs.outerWidth(false);

            if (!this.coords.w_rs) {
                return;
            }

            if (this.coords.w_rs !== this.coords.w_rs_old) {
                this.target = "base";
                this.is_resize = true;
            }

            if (this.coords.w_rs !== this.coords.w_rs_old || this.force_redraw) {
                this.setMinMax();
                this.calc(true);
                this.drawLabels();
                if (this.options.grid) {
                    this.calcGridMargin();
                    this.calcGridLabels();
                }
                this.force_redraw = true;
                this.coords.w_rs_old = this.coords.w_rs;
                this.drawShadow();
            }

            if (!this.coords.w_rs) {
                return;
            }

            if (!this.dragging && !this.force_redraw && !this.is_key) {
                return;
            }

            if (this.old_from !== this.result.from || this.old_to !== this.result.to || this.force_redraw || this.is_key) {

                this.drawLabels();

                this.$cache.bar[0].style.left = this.coords.p_bar_x + "%";
                this.$cache.bar[0].style.width = this.coords.p_bar_w + "%";

                if (this.options.type === "single") {
                    this.$cache.bar[0].style.left = 0;
                    this.$cache.bar[0].style.width = this.coords.p_bar_w + this.coords.p_bar_x + "%";

                    this.$cache.s_single[0].style.left = this.coords.p_single_fake + "%";

                    this.$cache.single[0].style.left = this.labels.p_single_left + "%";
                } else {
                    this.$cache.s_from[0].style.left = this.coords.p_from_fake + "%";
                    this.$cache.s_to[0].style.left = this.coords.p_to_fake + "%";

                    if (this.old_from !== this.result.from || this.force_redraw) {
                        this.$cache.from[0].style.left = this.labels.p_from_left + "%";
                    }
                    if (this.old_to !== this.result.to || this.force_redraw) {
                        this.$cache.to[0].style.left = this.labels.p_to_left + "%";
                    }

                    this.$cache.single[0].style.left = this.labels.p_single_left + "%";
                }

                this.writeToInput();

                if ((this.old_from !== this.result.from || this.old_to !== this.result.to) && !this.is_start) {
                    this.$cache.input.trigger("change");
                    this.$cache.input.trigger("input");
                }

                this.old_from = this.result.from;
                this.old_to = this.result.to;

                // callbacks call
                if (!this.is_resize && !this.is_update && !this.is_start && !this.is_finish) {
                    this.callOnChange();
                }
                if (this.is_key || this.is_click) {
                    this.is_key = false;
                    this.is_click = false;
                    this.callOnFinish();
                }

                this.is_update = false;
                this.is_resize = false;
                this.is_finish = false;
            }

            this.is_start = false;
            this.is_key = false;
            this.is_click = false;
            this.force_redraw = false;
        },

        /**
         * Draw labels
         * measure labels collisions
         * collapse close labels
         */
        drawLabels: function () {
            if (!this.options) {
                return;
            }

            var values_num = this.options.values.length;
            var p_values = this.options.p_values;
            var text_single;
            var text_from;
            var text_to;
            var from_pretty;
            var to_pretty;

            if (this.options.hide_from_to) {
                return;
            }

            if (this.options.type === "single") {

                if (values_num) {
                    text_single = this.decorate(p_values[this.result.from]);
                    this.$cache.single.html(text_single);
                } else {
                    from_pretty = this._prettify(this.result.from);

                    text_single = this.decorate(from_pretty, this.result.from);
                    this.$cache.single.html(text_single);
                }

                this.calcLabels();

                if (this.labels.p_single_left < this.labels.p_min + 1) {
                    this.$cache.min[0].style.visibility = "hidden";
                } else {
                    this.$cache.min[0].style.visibility = "visible";
                }

                if (this.labels.p_single_left + this.labels.p_single_fake > 100 - this.labels.p_max - 1) {
                    this.$cache.max[0].style.visibility = "hidden";
                } else {
                    this.$cache.max[0].style.visibility = "visible";
                }

            } else {

                if (values_num) {

                    if (this.options.decorate_both) {
                        text_single = this.decorate(p_values[this.result.from]);
                        text_single += this.options.values_separator;
                        text_single += this.decorate(p_values[this.result.to]);
                    } else {
                        text_single = this.decorate(p_values[this.result.from] + this.options.values_separator + p_values[this.result.to]);
                    }
                    text_from = this.decorate(p_values[this.result.from]);
                    text_to = this.decorate(p_values[this.result.to]);

                    this.$cache.single.html(text_single);
                    this.$cache.from.html(text_from);
                    this.$cache.to.html(text_to);

                } else {
                    from_pretty = this._prettify(this.result.from);
                    to_pretty = this._prettify(this.result.to);

                    if (this.options.decorate_both) {
                        text_single = this.decorate(from_pretty, this.result.from);
                        text_single += this.options.values_separator;
                        text_single += this.decorate(to_pretty, this.result.to);
                    } else {
                        text_single = this.decorate(from_pretty + this.options.values_separator + to_pretty, this.result.to);
                    }
                    text_from = this.decorate(from_pretty, this.result.from);
                    text_to = this.decorate(to_pretty, this.result.to);

                    this.$cache.single.html(text_single);
                    this.$cache.from.html(text_from);
                    this.$cache.to.html(text_to);

                }

                this.calcLabels();

                var min = Math.min(this.labels.p_single_left, this.labels.p_from_left),
                    single_left = this.labels.p_single_left + this.labels.p_single_fake,
                    to_left = this.labels.p_to_left + this.labels.p_to_fake,
                    max = Math.max(single_left, to_left);

                if (this.labels.p_from_left + this.labels.p_from_fake >= this.labels.p_to_left) {
                    this.$cache.from[0].style.visibility = "hidden";
                    this.$cache.to[0].style.visibility = "hidden";
                    this.$cache.single[0].style.visibility = "visible";

                    if (this.result.from === this.result.to) {
                        if (this.target === "from") {
                            this.$cache.from[0].style.visibility = "visible";
                        } else if (this.target === "to") {
                            this.$cache.to[0].style.visibility = "visible";
                        } else if (!this.target) {
                            this.$cache.from[0].style.visibility = "visible";
                        }
                        this.$cache.single[0].style.visibility = "hidden";
                        max = to_left;
                    } else {
                        this.$cache.from[0].style.visibility = "hidden";
                        this.$cache.to[0].style.visibility = "hidden";
                        this.$cache.single[0].style.visibility = "visible";
                        max = Math.max(single_left, to_left);
                    }
                } else {
                    this.$cache.from[0].style.visibility = "visible";
                    this.$cache.to[0].style.visibility = "visible";
                    this.$cache.single[0].style.visibility = "hidden";
                }

                if (min < this.labels.p_min + 1) {
                    this.$cache.min[0].style.visibility = "hidden";
                } else {
                    this.$cache.min[0].style.visibility = "visible";
                }

                if (max > 100 - this.labels.p_max - 1) {
                    this.$cache.max[0].style.visibility = "hidden";
                } else {
                    this.$cache.max[0].style.visibility = "visible";
                }

            }
        },

        /**
         * Draw shadow intervals
         */
        drawShadow: function () {
            var o = this.options,
                c = this.$cache,

                is_from_min = typeof o.from_min === "number" && !isNaN(o.from_min),
                is_from_max = typeof o.from_max === "number" && !isNaN(o.from_max),
                is_to_min = typeof o.to_min === "number" && !isNaN(o.to_min),
                is_to_max = typeof o.to_max === "number" && !isNaN(o.to_max),

                from_min,
                from_max,
                to_min,
                to_max;

            if (o.type === "single") {
                if (o.from_shadow && (is_from_min || is_from_max)) {
                    from_min = this.convertToPercent(is_from_min ? o.from_min : o.min);
                    from_max = this.convertToPercent(is_from_max ? o.from_max : o.max) - from_min;
                    from_min = this.toFixed(from_min - (this.coords.p_handle / 100 * from_min));
                    from_max = this.toFixed(from_max - (this.coords.p_handle / 100 * from_max));
                    from_min = from_min + (this.coords.p_handle / 2);

                    c.shad_single[0].style.display = "block";
                    c.shad_single[0].style.left = from_min + "%";
                    c.shad_single[0].style.width = from_max + "%";
                } else {
                    c.shad_single[0].style.display = "none";
                }
            } else {
                if (o.from_shadow && (is_from_min || is_from_max)) {
                    from_min = this.convertToPercent(is_from_min ? o.from_min : o.min);
                    from_max = this.convertToPercent(is_from_max ? o.from_max : o.max) - from_min;
                    from_min = this.toFixed(from_min - (this.coords.p_handle / 100 * from_min));
                    from_max = this.toFixed(from_max - (this.coords.p_handle / 100 * from_max));
                    from_min = from_min + (this.coords.p_handle / 2);

                    c.shad_from[0].style.display = "block";
                    c.shad_from[0].style.left = from_min + "%";
                    c.shad_from[0].style.width = from_max + "%";
                } else {
                    c.shad_from[0].style.display = "none";
                }

                if (o.to_shadow && (is_to_min || is_to_max)) {
                    to_min = this.convertToPercent(is_to_min ? o.to_min : o.min);
                    to_max = this.convertToPercent(is_to_max ? o.to_max : o.max) - to_min;
                    to_min = this.toFixed(to_min - (this.coords.p_handle / 100 * to_min));
                    to_max = this.toFixed(to_max - (this.coords.p_handle / 100 * to_max));
                    to_min = to_min + (this.coords.p_handle / 2);

                    c.shad_to[0].style.display = "block";
                    c.shad_to[0].style.left = to_min + "%";
                    c.shad_to[0].style.width = to_max + "%";
                } else {
                    c.shad_to[0].style.display = "none";
                }
            }
        },



        /**
         * Write values to input element
         */
        writeToInput: function () {
            if (this.options.type === "single") {
                if (this.options.values.length) {
                    this.$cache.input.prop("value", this.result.from_value);
                } else {
                    this.$cache.input.prop("value", this.result.from);
                }
                this.$cache.input.data("from", this.result.from);
            } else {
                if (this.options.values.length) {
                    this.$cache.input.prop("value", this.result.from_value + this.options.input_values_separator + this.result.to_value);
                } else {
                    this.$cache.input.prop("value", this.result.from + this.options.input_values_separator + this.result.to);
                }
                this.$cache.input.data("from", this.result.from);
                this.$cache.input.data("to", this.result.to);
            }
        },



        // =============================================================================================================
        // Callbacks

        callOnStart: function () {
            this.writeToInput();

            if (this.options.onStart && typeof this.options.onStart === "function") {
                if (this.options.scope) {
                    this.options.onStart.call(this.options.scope, this.result);
                } else {
                    this.options.onStart(this.result);
                }
            }
        },
        callOnChange: function () {
            this.writeToInput();

            if (this.options.onChange && typeof this.options.onChange === "function") {
                if (this.options.scope) {
                    this.options.onChange.call(this.options.scope, this.result);
                } else {
                    this.options.onChange(this.result);
                }
            }
        },
        callOnFinish: function () {
            this.writeToInput();

            if (this.options.onFinish && typeof this.options.onFinish === "function") {
                if (this.options.scope) {
                    this.options.onFinish.call(this.options.scope, this.result);
                } else {
                    this.options.onFinish(this.result);
                }
            }
        },
        callOnUpdate: function () {
            this.writeToInput();

            if (this.options.onUpdate && typeof this.options.onUpdate === "function") {
                if (this.options.scope) {
                    this.options.onUpdate.call(this.options.scope, this.result);
                } else {
                    this.options.onUpdate(this.result);
                }
            }
        },




        // =============================================================================================================
        // Service methods

        toggleInput: function () {
            this.$cache.input.toggleClass("irs-hidden-input");

            if (this.has_tab_index) {
                this.$cache.input.prop("tabindex", -1);
            } else {
                try {
                    this.$cache.input.removeProp("tabindex");
                } catch(e) {
                    // Do nothing (PhantomJS can throw an error with the
                    // above, #2587)
                }
            }

            this.has_tab_index = !this.has_tab_index;
        },

        /**
         * Convert real value to percent
         *
         * @param value {Number} X in real
         * @param no_min {boolean=} don't use min value
         * @returns {Number} X in percent
         */
        convertToPercent: function (value, no_min) {
            var diapason = this.options.max - this.options.min,
                one_percent = diapason / 100,
                val, percent;

            if (!diapason) {
                this.no_diapason = true;
                return 0;
            }

            if (no_min) {
                val = value;
            } else {
                val = value - this.options.min;
            }

            percent = val / one_percent;

            return this.toFixed(percent);
        },

        /**
         * Convert percent to real values
         *
         * @param percent {Number} X in percent
         * @returns {Number} X in real
         */
        convertToValue: function (percent) {
            var min = this.options.min,
                max = this.options.max,
                min_decimals = min.toString().split(".")[1],
                max_decimals = max.toString().split(".")[1],
                min_length, max_length,
                avg_decimals = 0,
                abs = 0;

            if (percent === 0) {
                return this.options.min;
            }
            if (percent === 100) {
                return this.options.max;
            }


            if (min_decimals) {
                min_length = min_decimals.length;
                avg_decimals = min_length;
            }
            if (max_decimals) {
                max_length = max_decimals.length;
                avg_decimals = max_length;
            }
            if (min_length && max_length) {
                avg_decimals = (min_length >= max_length) ? min_length : max_length;
            }

            if (min < 0) {
                abs = Math.abs(min);
                min = +(min + abs).toFixed(avg_decimals);
                max = +(max + abs).toFixed(avg_decimals);
            }

            var number = ((max - min) / 100 * percent) + min,
                string = this.options.step.toString().split(".")[1],
                result;

            if (string) {
                number = +number.toFixed(string.length);
            } else {
                number = number / this.options.step;
                number = number * this.options.step;

                number = +number.toFixed(0);
            }

            if (abs) {
                number -= abs;
            }

            if (string) {
                result = +number.toFixed(string.length);
            } else {
                result = this.toFixed(number);
            }

            if (result < this.options.min) {
                result = this.options.min;
            } else if (result > this.options.max) {
                result = this.options.max;
            }

            return result;
        },

        /**
         * Round percent value with step
         *
         * @param percent {Number}
         * @returns percent {Number} rounded
         */
        calcWithStep: function (percent) {
            var rounded = Math.round(percent / this.coords.p_step) * this.coords.p_step;

            if (rounded > 100) {
                rounded = 100;
            }
            if (percent === 100) {
                rounded = 100;
            }

            return this.toFixed(rounded);
        },

        checkMinInterval: function (p_current, p_next, type) {
            var o = this.options,
                current,
                next;

            if (!o.min_interval) {
                return p_current;
            }

            current = this.convertToValue(p_current);
            next = this.convertToValue(p_next);

            if (type === "from") {

                if (next - current < o.min_interval) {
                    current = next - o.min_interval;
                }

            } else {

                if (current - next < o.min_interval) {
                    current = next + o.min_interval;
                }

            }

            return this.convertToPercent(current);
        },

        checkMaxInterval: function (p_current, p_next, type) {
            var o = this.options,
                current,
                next;

            if (!o.max_interval) {
                return p_current;
            }

            current = this.convertToValue(p_current);
            next = this.convertToValue(p_next);

            if (type === "from") {

                if (next - current > o.max_interval) {
                    current = next - o.max_interval;
                }

            } else {

                if (current - next > o.max_interval) {
                    current = next + o.max_interval;
                }

            }

            return this.convertToPercent(current);
        },

        checkDiapason: function (p_num, min, max) {
            var num = this.convertToValue(p_num),
                o = this.options;

            if (typeof min !== "number") {
                min = o.min;
            }

            if (typeof max !== "number") {
                max = o.max;
            }

            if (num < min) {
                num = min;
            }

            if (num > max) {
                num = max;
            }

            return this.convertToPercent(num);
        },

        toFixed: function (num) {
            num = num.toFixed(20);
            return +num;
        },

        _prettify: function (num) {
            if (!this.options.prettify_enabled) {
                return num;
            }

            if (this.options.prettify && typeof this.options.prettify === "function") {
                return this.options.prettify(num);
            } else {
                return this.prettify(num);
            }
        },

        prettify: function (num) {
            var n = num.toString();
            return n.replace(/(\d{1,3}(?=(?:\d\d\d)+(?!\d)))/g, "$1" + this.options.prettify_separator);
        },

        checkEdges: function (left, width) {
            if (!this.options.force_edges) {
                return this.toFixed(left);
            }

            if (left < 0) {
                left = 0;
            } else if (left > 100 - width) {
                left = 100 - width;
            }

            return this.toFixed(left);
        },

        validate: function () {
            var o = this.options,
                r = this.result,
                v = o.values,
                vl = v.length,
                value,
                i;

            if (typeof o.min === "string") o.min = +o.min;
            if (typeof o.max === "string") o.max = +o.max;
            if (typeof o.from === "string") o.from = +o.from;
            if (typeof o.to === "string") o.to = +o.to;
            if (typeof o.step === "string") o.step = +o.step;

            if (typeof o.from_min === "string") o.from_min = +o.from_min;
            if (typeof o.from_max === "string") o.from_max = +o.from_max;
            if (typeof o.to_min === "string") o.to_min = +o.to_min;
            if (typeof o.to_max === "string") o.to_max = +o.to_max;

            if (typeof o.grid_num === "string") o.grid_num = +o.grid_num;

            if (o.max < o.min) {
                o.max = o.min;
            }

            if (vl) {
                o.p_values = [];
                o.min = 0;
                o.max = vl - 1;
                o.step = 1;
                o.grid_num = o.max;
                o.grid_snap = true;

                for (i = 0; i < vl; i++) {
                    value = +v[i];

                    if (!isNaN(value)) {
                        v[i] = value;
                        value = this._prettify(value);
                    } else {
                        value = v[i];
                    }

                    o.p_values.push(value);
                }
            }

            if (typeof o.from !== "number" || isNaN(o.from)) {
                o.from = o.min;
            }

            if (typeof o.to !== "number" || isNaN(o.to)) {
                o.to = o.max;
            }

            if (o.type === "single") {

                if (o.from < o.min) o.from = o.min;
                if (o.from > o.max) o.from = o.max;

            } else {

                if (o.from < o.min) o.from = o.min;
                if (o.from > o.max) o.from = o.max;

                if (o.to < o.min) o.to = o.min;
                if (o.to > o.max) o.to = o.max;

                if (this.update_check.from) {

                    if (this.update_check.from !== o.from) {
                        if (o.from > o.to) o.from = o.to;
                    }
                    if (this.update_check.to !== o.to) {
                        if (o.to < o.from) o.to = o.from;
                    }

                }

                if (o.from > o.to) o.from = o.to;
                if (o.to < o.from) o.to = o.from;

            }

            if (typeof o.step !== "number" || isNaN(o.step) || !o.step || o.step < 0) {
                o.step = 1;
            }

            if (typeof o.from_min === "number" && o.from < o.from_min) {
                o.from = o.from_min;
            }

            if (typeof o.from_max === "number" && o.from > o.from_max) {
                o.from = o.from_max;
            }

            if (typeof o.to_min === "number" && o.to < o.to_min) {
                o.to = o.to_min;
            }

            if (typeof o.to_max === "number" && o.from > o.to_max) {
                o.to = o.to_max;
            }

            if (r) {
                if (r.min !== o.min) {
                    r.min = o.min;
                }

                if (r.max !== o.max) {
                    r.max = o.max;
                }

                if (r.from < r.min || r.from > r.max) {
                    r.from = o.from;
                }

                if (r.to < r.min || r.to > r.max) {
                    r.to = o.to;
                }
            }

            if (typeof o.min_interval !== "number" || isNaN(o.min_interval) || !o.min_interval || o.min_interval < 0) {
                o.min_interval = 0;
            }

            if (typeof o.max_interval !== "number" || isNaN(o.max_interval) || !o.max_interval || o.max_interval < 0) {
                o.max_interval = 0;
            }

            if (o.min_interval && o.min_interval > o.max - o.min) {
                o.min_interval = o.max - o.min;
            }

            if (o.max_interval && o.max_interval > o.max - o.min) {
                o.max_interval = o.max - o.min;
            }
        },

        decorate: function (num, original) {
            var decorated = "",
                o = this.options;

            if (o.prefix) {
                decorated += o.prefix;
            }

            decorated += num;

            if (o.max_postfix) {
                if (o.values.length && num === o.p_values[o.max]) {
                    decorated += o.max_postfix;
                    if (o.postfix) {
                        decorated += " ";
                    }
                } else if (original === o.max) {
                    decorated += o.max_postfix;
                    if (o.postfix) {
                        decorated += " ";
                    }
                }
            }

            if (o.postfix) {
                decorated += o.postfix;
            }

            return decorated;
        },

        updateFrom: function () {
            this.result.from = this.options.from;
            this.result.from_percent = this.convertToPercent(this.result.from);
            this.result.from_pretty = this._prettify(this.result.from);
            if (this.options.values) {
                this.result.from_value = this.options.values[this.result.from];
            }
        },

        updateTo: function () {
            this.result.to = this.options.to;
            this.result.to_percent = this.convertToPercent(this.result.to);
            this.result.to_pretty = this._prettify(this.result.to);
            if (this.options.values) {
                this.result.to_value = this.options.values[this.result.to];
            }
        },

        updateResult: function () {
            this.result.min = this.options.min;
            this.result.max = this.options.max;
            this.updateFrom();
            this.updateTo();
        },


        // =============================================================================================================
        // Grid

        appendGrid: function () {
            if (!this.options.grid) {
                return;
            }

            var o = this.options,
                i, z,

                total = o.max - o.min,
                big_num = o.grid_num,
                big_p = 0,
                big_w = 0,

                small_max = 4,
                local_small_max,
                small_p,
                small_w = 0,

                result,
                html = '';



            this.calcGridMargin();

            if (o.grid_snap) {
                big_num = total / o.step;
            }

            if (big_num > 50) big_num = 50;
            big_p = this.toFixed(100 / big_num);

            if (big_num > 4) {
                small_max = 3;
            }
            if (big_num > 7) {
                small_max = 2;
            }
            if (big_num > 14) {
                small_max = 1;
            }
            if (big_num > 28) {
                small_max = 0;
            }

            for (i = 0; i < big_num + 1; i++) {
                local_small_max = small_max;

                big_w = this.toFixed(big_p * i);

                if (big_w > 100) {
                    big_w = 100;
                }
                this.coords.big[i] = big_w;

                small_p = (big_w - (big_p * (i - 1))) / (local_small_max + 1);

                for (z = 1; z <= local_small_max; z++) {
                    if (big_w === 0) {
                        break;
                    }

                    small_w = this.toFixed(big_w - (small_p * z));

                    html += '<span class="irs-grid-pol small" style="left: ' + small_w + '%"></span>';
                }

                html += '<span class="irs-grid-pol" style="left: ' + big_w + '%"></span>';

                result = this.convertToValue(big_w);
                if (o.values.length) {
                    result = o.p_values[result];
                } else {
                    result = this._prettify(result);
                }

                html += '<span class="irs-grid-text js-grid-text-' + i + '" style="left: ' + big_w + '%">' + result + '</span>';
            }
            this.coords.big_num = Math.ceil(big_num + 1);



            this.$cache.cont.addClass("irs-with-grid");
            this.$cache.grid.html(html);
            this.cacheGridLabels();
        },

        cacheGridLabels: function () {
            var $label, i,
                num = this.coords.big_num;

            for (i = 0; i < num; i++) {
                $label = this.$cache.grid.find(".js-grid-text-" + i);
                this.$cache.grid_labels.push($label);
            }

            this.calcGridLabels();
        },

        calcGridLabels: function () {
            var i, label, start = [], finish = [],
                num = this.coords.big_num;

            for (i = 0; i < num; i++) {
                this.coords.big_w[i] = this.$cache.grid_labels[i].outerWidth(false);
                this.coords.big_p[i] = this.toFixed(this.coords.big_w[i] / this.coords.w_rs * 100);
                this.coords.big_x[i] = this.toFixed(this.coords.big_p[i] / 2);

                start[i] = this.toFixed(this.coords.big[i] - this.coords.big_x[i]);
                finish[i] = this.toFixed(start[i] + this.coords.big_p[i]);
            }

            if (this.options.force_edges) {
                if (start[0] < -this.coords.grid_gap) {
                    start[0] = -this.coords.grid_gap;
                    finish[0] = this.toFixed(start[0] + this.coords.big_p[0]);

                    this.coords.big_x[0] = this.coords.grid_gap;
                }

                if (finish[num - 1] > 100 + this.coords.grid_gap) {
                    finish[num - 1] = 100 + this.coords.grid_gap;
                    start[num - 1] = this.toFixed(finish[num - 1] - this.coords.big_p[num - 1]);

                    this.coords.big_x[num - 1] = this.toFixed(this.coords.big_p[num - 1] - this.coords.grid_gap);
                }
            }

            this.calcGridCollision(2, start, finish);
            this.calcGridCollision(4, start, finish);

            for (i = 0; i < num; i++) {
                label = this.$cache.grid_labels[i][0];

                if (this.coords.big_x[i] !== Number.POSITIVE_INFINITY) {
                    label.style.marginLeft = -this.coords.big_x[i] + "%";
                }
            }
        },

        // Collisions Calc Beta
        // TODO: Refactor then have plenty of time
        calcGridCollision: function (step, start, finish) {
            var i, next_i, label,
                num = this.coords.big_num;

            for (i = 0; i < num; i += step) {
                next_i = i + (step / 2);
                if (next_i >= num) {
                    break;
                }

                label = this.$cache.grid_labels[next_i][0];

                if (finish[i] <= start[next_i]) {
                    label.style.visibility = "visible";
                } else {
                    label.style.visibility = "hidden";
                }
            }
        },

        calcGridMargin: function () {
            if (!this.options.grid_margin) {
                return;
            }

            this.coords.w_rs = this.$cache.rs.outerWidth(false);
            if (!this.coords.w_rs) {
                return;
            }

            if (this.options.type === "single") {
                this.coords.w_handle = this.$cache.s_single.outerWidth(false);
            } else {
                this.coords.w_handle = this.$cache.s_from.outerWidth(false);
            }
            this.coords.p_handle = this.toFixed(this.coords.w_handle  / this.coords.w_rs * 100);
            this.coords.grid_gap = this.toFixed((this.coords.p_handle / 2) - 0.1);

            this.$cache.grid[0].style.width = this.toFixed(100 - this.coords.p_handle) + "%";
            this.$cache.grid[0].style.left = this.coords.grid_gap + "%";
        },



        // =============================================================================================================
        // Public methods

        update: function (options) {
            if (!this.input) {
                return;
            }

            this.is_update = true;

            this.options.from = this.result.from;
            this.options.to = this.result.to;
            this.update_check.from = this.result.from;
            this.update_check.to = this.result.to;

            this.options = $.extend(this.options, options);
            this.validate();
            this.updateResult(options);

            this.toggleInput();
            this.remove();
            this.init(true);
        },

        reset: function () {
            if (!this.input) {
                return;
            }

            this.updateResult();
            this.update();
        },

        destroy: function () {
            if (!this.input) {
                return;
            }

            this.toggleInput();
            this.$cache.input.prop("readonly", false);
            $.data(this.input, "ionRangeSlider", null);

            this.remove();
            this.input = null;
            this.options = null;
        }
    };

    $.fn.ionRangeSlider = function (options) {
        return this.each(function() {
            if (!$.data(this, "ionRangeSlider")) {
                $.data(this, "ionRangeSlider", new IonRangeSlider(this, options, plugin_count++));
            }
        });
    };



    // =================================================================================================================
    // http://paulirish.com/2011/requestanimationframe-for-smart-animating/
    // http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating

    // requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel

    // MIT license

    (function() {
        var lastTime = 0;
        var vendors = ['ms', 'moz', 'webkit', 'o'];
        for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
            window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];
            window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame']
                || window[vendors[x]+'CancelRequestAnimationFrame'];
        }

        if (!window.requestAnimationFrame)
            window.requestAnimationFrame = function(callback, element) {
                var currTime = new Date().getTime();
                var timeToCall = Math.max(0, 16 - (currTime - lastTime));
                var id = window.setTimeout(function() { callback(currTime + timeToCall); },
                    timeToCall);
                lastTime = currTime + timeToCall;
                return id;
            };

        if (!window.cancelAnimationFrame)
            window.cancelAnimationFrame = function(id) {
                clearTimeout(id);
            };
    }());

}));

shiny/www/shared/ionrangeslider/css/ion.rangeSlider.css METASEP
@charset "UTF-8";
/* 'shiny' skin for Ion.RangeSlider, largely based on the 'big' skin, but with smaller dimensions, grayscale grid text, and without gradients
© RStudio, Inc, 2014
© Denis Ineshin, 2014  https://github.com/IonDen
© guybowden, 2014  https://github.com/guybowden
*/
.irs {
  position: relative;
  display: block;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  /* https://github.com/rstudio/shiny/issues/3443 */
  /* https://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/ */
  box-sizing: border-box;
}

.irs *, .irs *:before, .irs *:after {
  box-sizing: inherit;
}

.irs-line {
  position: relative;
  display: block;
  overflow: hidden;
  outline: none !important;
}

.irs-bar {
  position: absolute;
  display: block;
  left: 0;
  width: 0;
}

.irs-shadow {
  position: absolute;
  display: none;
  left: 0;
  width: 0;
}

.irs-handle {
  position: absolute;
  display: block;
  box-sizing: border-box;
  cursor: pointer;
  z-index: 1;
}

.irs-handle.type_last {
  z-index: 2;
}

.irs-min, .irs-max {
  position: absolute;
  display: block;
  cursor: default;
}

.irs-min {
  left: 0;
}

.irs-max {
  right: 0;
}

.irs-from, .irs-to, .irs-single {
  position: absolute;
  display: block;
  top: 0;
  left: 0;
  cursor: default;
  white-space: nowrap;
}

.irs-grid {
  position: absolute;
  display: none;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 20px;
}

.irs-with-grid .irs-grid {
  display: block;
}

.irs-grid-pol {
  position: absolute;
  top: 0;
  left: 0;
  width: 1px;
  height: 8px;
}

.irs-grid-pol.small {
  height: 4px;
}

.irs-grid-text {
  position: absolute;
  bottom: 0;
  left: 0;
  white-space: nowrap;
  text-align: center;
  font-size: 9px;
  line-height: 9px;
  padding: 0 3px;
}

.irs-disable-mask {
  position: absolute;
  display: block;
  top: 0;
  left: -1%;
  width: 102%;
  height: 100%;
  cursor: default;
  background: rgba(0, 0, 0, 0);
  z-index: 2;
}

.lt-ie9 .irs-disable-mask {
  background: #000;
  filter: alpha(opacity=0);
  cursor: not-allowed;
}

.irs-disabled {
  opacity: 0.4;
}

.irs-hidden-input {
  position: absolute !important;
  display: block !important;
  top: 0 !important;
  left: 0 !important;
  width: 0 !important;
  height: 0 !important;
  font-size: 0 !important;
  line-height: 0 !important;
  padding: 0 !important;
  margin: 0 !important;
  overflow: hidden;
  outline: none !important;
  z-index: -9999 !important;
  background: none !important;
  border-style: solid !important;
  border-color: transparent !important;
}

.irs {
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}

.irs--shiny {
  height: 40px;
}

.irs--shiny.irs-with-grid {
  height: 60px;
}

.irs--shiny .irs-line {
  top: 25px;
  height: 8px;
  background: linear-gradient(to bottom, #dedede -50%, #fff 150%);
  background-color: #ededed;
  border: 1px solid #cccccc;
  border-radius: 8px;
}

.irs--shiny .irs-bar {
  top: 25px;
  height: 8px;
  border-top: 1px solid #428bca;
  border-bottom: 1px solid #428bca;
  background: #428bca;
}

.irs--shiny .irs-bar--single {
  border-radius: 8px 0 0 8px;
}

.irs--shiny .irs-shadow {
  top: 38px;
  height: 2px;
  background: rgba(0, 0, 0, 0.3);
  border-radius: 5px;
}

.irs--shiny .lt-ie9 .irs-shadow {
  filter: alpha(opacity=30);
}

.irs--shiny .irs-handle {
  top: 17px;
  width: 22px;
  height: 22px;
  border: 1px solid #ababab;
  background-color: #dedede;
  box-shadow: 1px 1px 3px rgba(255, 255, 255, 0.3);
  border-radius: 22px;
}

.irs--shiny .irs-handle.state_hover, .irs--shiny .irs-handle:hover {
  background: #fff;
}

.irs--shiny .irs-min,
.irs--shiny .irs-max {
  top: 0;
  padding: 1px 3px;
  text-shadow: none;
  background-color: rgba(0, 0, 0, 0.1);
  border-radius: 3px;
  font-size: 10px;
  line-height: 1.333;
}

.irs--shiny .lt-ie9 .irs-min,
.irs--shiny .lt-ie9 .irs-max {
  background: #cccccc;
}

.irs--shiny .irs-from,
.irs--shiny .irs-to,
.irs--shiny .irs-single {
  color: #fff;
  text-shadow: none;
  padding: 1px 3px;
  background-color: #428bca;
  border-radius: 3px;
  font-size: 11px;
  line-height: 1.333;
}

.irs--shiny .lt-ie9 .irs-from,
.irs--shiny .lt-ie9 .irs-to,
.irs--shiny .lt-ie9 .irs-single {
  background: #999999;
}

.irs--shiny .irs-grid {
  height: 27px;
}

.irs--shiny .irs-grid-pol {
  background-color: #000;
}

.irs--shiny .irs-grid-text {
  bottom: 5px;
}

.irs--shiny .irs-grid-pol.small {
  background-color: #999999;
}

shiny/www/shared/datepicker/scss/datepicker3.scss METASEP
// Both BS3 and BS4 define a border radius mixin, but just in case
// we're trying to compile this without bootstrapSass
@mixin border-radius-shim($radius) {
  @if mixin-exists("border-radius") {
    @include border-radius($radius);
  } @else {
    border-radius: $radius;
  }
}

.datepicker {
	@include border-radius-shim($border-radius-base);
	&-inline {
		width: 220px;
	}
	direction: ltr;
	&-rtl {
		direction: rtl;
		&.dropdown-menu { left: auto; }
		table tr td span {
			float: right;
		}
	}
	&-dropdown {
		top: 0;
		left: 0;
		padding: 4px;
		&:before {
			content: '';
			display: inline-block;
			border-left:   7px solid transparent;
			border-right:  7px solid transparent;
			border-bottom: 7px solid $dropdown-border;
			border-top:    0;
			border-bottom-color: rgba(0,0,0,.2);
			position: absolute;
		}
		&:after {
			content: '';
			display: inline-block;
			border-left:   6px solid transparent;
			border-right:  6px solid transparent;
			border-bottom: 6px solid $dropdown-bg;
			border-top:    0;
			position: absolute;
		}
		&.datepicker-orient-left:before   { left: 6px; }
		&.datepicker-orient-left:after    { left: 7px; }
		&.datepicker-orient-right:before  { right: 6px; }
		&.datepicker-orient-right:after   { right: 7px; }
		&.datepicker-orient-bottom:before { top: -7px; }
		&.datepicker-orient-bottom:after  { top: -6px; }
		&.datepicker-orient-top:before {
			bottom: -7px;
			border-bottom: 0;
			border-top:    7px solid $dropdown-border;
		}
		&.datepicker-orient-top:after {
			bottom: -6px;
			border-bottom: 0;
			border-top:    6px solid $dropdown-bg;
		}
	}
	table {
		margin: 0;
		-webkit-touch-callout: none;
		-webkit-user-select: none;
		-khtml-user-select: none;
		-moz-user-select: none;
		-ms-user-select: none;
		user-select: none;
		tr {
			td, th {
				text-align: center;
				width: 30px;
				height: 30px;
				@include border-radius-shim(4px);
				border: none;
			}
		}
	}
	// Inline display inside a table presents some problems with
	// border and background colors.
	.table-striped & table tr {
		td, th {
			background-color: transparent;
		}
	}
	table tr td {
		&.old,
		&.new {
			color: $btn-link-disabled-color;
		}
		&.day:hover,
		&.focused {
		  color: color-contrast($gray-lighter);
			background: $gray-lighter;
			cursor: pointer;
		}
		&.disabled,
		&.disabled:hover {
			background: none;
			color: $btn-link-disabled-color;
			cursor: default;
		}
		&.highlighted {
			$highlighted-bg: $state-info-bg;
			@include button-variant($highlighted-bg, darken($highlighted-bg, 20%));
			border-radius: 0;

			&.focused {
				background: darken($highlighted-bg, 10%);
			}

			&.disabled,
			&.disabled:active {
				background: $highlighted-bg;
				color: $btn-link-disabled-color;
			}
		}
		&.today {
			$today-bg: lighten(orange, 30%);
			@include button-variant($today-bg, darken($today-bg, 20%));

			&.focused {
				background: darken($today-bg, 10%);
			}

			&.disabled,
			&.disabled:active {
				background: $today-bg;
				color: $btn-link-disabled-color;
			}
		}
		&.range {
			$range-bg: $gray-lighter;
			@include button-variant($range-bg, darken($range-bg, 20%));
			border-radius: 0;

			&.focused {
				background: darken($range-bg, 10%);
			}

			&.disabled,
			&.disabled:active {
				background: $range-bg;
				color: $btn-link-disabled-color;
			}
		}
		&.range.highlighted {
			$range-highlighted-bg: mix($state-info-bg, $gray-lighter, 50%);
			@include button-variant($range-highlighted-bg, darken($range-highlighted-bg, 20%));

			&.focused {
				background: darken($range-highlighted-bg, 10%);
			}

			&.disabled,
			&.disabled:active {
				background: $range-highlighted-bg;
				color: $btn-link-disabled-color;
			}
		}
		&.range.today {
			$range-today-bg: mix(orange, $gray-lighter, 50%);
			@include button-variant($range-today-bg, darken($range-today-bg, 20%));

			&.disabled,
			&.disabled:active {
				background: $range-today-bg;
				color: $btn-link-disabled-color;
			}
		}
		&.selected,
		&.selected.highlighted {
			@include button-variant($gray-light, $gray);
			text-shadow: 0 -1px 0 rgba(0,0,0,.25);
		}
		&.active,
		&.active.highlighted {
			@include button-variant($btn-primary-bg, $btn-primary-border);
			text-shadow: 0 -1px 0 rgba(0,0,0,.25);
		}
		span {
			display: block;
			width: 23%;
			height: 54px;
			line-height: 54px;
			float: left;
			margin: 1%;
			cursor: pointer;
			@include border-radius-shim(4px);
			&:hover,
			&.focused {
			  color: color-contrast($gray-lighter);
				background: $gray-lighter;
			}
			&.disabled,
			&.disabled:hover {
				background: none;
				color: $btn-link-disabled-color;
				cursor: default;
			}
			&.active,
			&.active:hover,
			&.active.disabled,
			&.active.disabled:hover {
				@include button-variant($btn-primary-bg, $btn-primary-border);
				text-shadow: 0 -1px 0 rgba(0,0,0,.25);
			}
			&.old,
			&.new {
				color: $btn-link-disabled-color;
			}
		}
	}

	.datepicker-switch {
		width: 145px;
	}

	.datepicker-switch,
	.prev,
	.next,
	tfoot tr th {
		cursor: pointer;
		&:hover {
		  color: color-contrast($gray-lighter);
		  background: $gray-lighter;
		}
	}

	.prev, .next {
		&.disabled {
			visibility: hidden;
		}
	}

	// Basic styling for calendar-week cells
	.cw {
		font-size: 10px;
		width: 12px;
		padding: 0 2px 0 5px;
		vertical-align: middle;
	}
}
.input-group.date .input-group-addon {
	cursor: pointer;
}
.input-daterange {
	width: 100%;
	input {
		text-align: center;
	}
	input:first-child {
	  @include border-radius-shim(3px 0 0 3px);
	}
	input:last-child {
		@include border-radius-shim(0 3px 3px 0);
	}
	.input-group-addon {
		width: auto;
		min-width: 16px;
		padding: 4px 5px;
		line-height: $line-height-base;
		border-width: 1px 0;
		margin-left: -5px;
		margin-right: -5px;
	}
}

shiny/www/shared/datepicker/scss/build3.scss METASEP
// Datepicker .scss buildfile.  Includes select mixins/variables from bootstrap
// and imports the included datepicker.scss to output a minimal datepicker.css
//
// Usage:
//     lessc build3.scss datepicker.css
//
// Variables and mixins copied from Bootstrap 3.3.5

// These are BS3 variables that are used in datepicker3.scss. So, when compiling against
// a BS3 bslib theme, these variables should already be defined. Here we set
// *defaults* for these variables based on BS4 variables, so this scss can work for
// both BS3 and BS4
$gray:                mix($body-bg, $body-color, 33.5%) !default;
$gray-light:          mix($body-bg, $body-color, 46.7%) !default;
$gray-lighter:        mix($body-bg, $body-color, 90%) !default;
$brand-primary:       $primary !default;
$btn-primary-color:   $body-bg !default;
$btn-primary-bg:      $primary !default;
$btn-primary-border:  mix($body-color, $btn-primary-bg, 5%) !default;
$state-info-bg:       mix($body-bg, $info, 80%) !default;
$border-radius-base:  $border-radius !default;
$dropdown-border:     $dropdown-border-color !default;
// These variables are also used in datepicker3.scss, but we don't need to set them since
// they're the same in BS3 and BS4
//$line-height-base:        1.428571429;
//$btn-link-disabled-color: $gray-light;
//$dropdown-bg:             #fff;





@mixin button-variant($background, $border) {
  $color: color-contrast($background);

  color: $color;
  background-color: $background;
  border-color: $border;

  &:focus,
  &.focus {
    color: $color;
    background-color: mix($background, $color, 90%);
        border-color: mix($border, $color, 75%);
  }
  &:hover {
    color: $color;
    background-color: mix($background, $color, 50%);
        border-color: mix($border, $color, 88%);
  }
  &:active,
  &.active {
    color: $color;
    background-color: mix($background, $color, 90%);
        border-color: mix($border, $color, 88%);

    &:hover,
    &:focus,
    &.focus {
      color: $color;
      background-color: mix($background, $color, 83%);
          border-color: mix($border, $color, 75%);
    }
  }
  &.disabled,
  &[disabled],
  fieldset[disabled] & {
    &:hover,
    &:focus,
    &.focus {
      background-color: $background;
          border-color: $border;
    }
  }
}

@import "datepicker3.scss";

shiny/www/shared/datepicker/js/bootstrap-datepicker.min.js METASEP
(function(){var s=function(t,M){return function(){return M||t((M={exports:{}}).exports,M),M.exports}};var W=s(function(Ft,L){L.exports=window.jQuery});var G=s(function(Y){(function(t){typeof define=="function"&&define.amd?define(["jquery"],t):typeof Y=="object"?t(W()):t(jQuery)})(function(t,M){function N(){return new Date(Date.UTC.apply(Date,arguments))}function O(){var a=new Date;return N(a.getFullYear(),a.getMonth(),a.getDate())}function V(a,e){return a.getUTCFullYear()===e.getUTCFullYear()&&a.getUTCMonth()===e.getUTCMonth()&&a.getUTCDate()===e.getUTCDate()}function P(a,e){return function(){return e!==M&&t.fn.datepicker.deprecated(e),this[a].apply(this,arguments)}}function vt(a){return a&&!isNaN(a.getTime())}var I=function(){var a={get:function(e){return this.slice(e)[0]},contains:function(e){for(var i=e&&e.valueOf(),r=0,o=this.length;r<o;r++)if(0<=this[r].valueOf()-i&&this[r].valueOf()-i<1e3*60*60*24)return r;return-1},remove:function(e){this.splice(e,1)},replace:function(e){!e||(t.isArray(e)||(e=[e]),this.clear(),this.push.apply(this,e))},clear:function(){this.length=0},copy:function(){var e=new I;return e.replace(this),e}};return function(){var e=[];return e.push.apply(e,arguments),t.extend(e,a),e}}(),J=function(a,e){t.data(a,"datepicker",this),this._events=[],this._secondaryEvents=[],this._process_options(e),this.dates=new I,this.viewDate=this.o.defaultViewDate,this.focusDate=null,this.element=t(a),this.isInput=this.element.is("input"),this.inputField=this.isInput?this.element:this.element.find("input"),this.component=this.element.hasClass("date")?this.element.find(".add-on, .input-group-addon, .input-group-append, .input-group-prepend, .btn"):!1,this.component&&this.component.length===0&&(this.component=!1),this.isInline=!this.component&&this.element.is("div"),this.picker=t(l.template),this._check_template(this.o.templates.leftArrow)&&this.picker.find(".prev").html(this.o.templates.leftArrow),this._check_template(this.o.templates.rightArrow)&&this.picker.find(".next").html(this.o.templates.rightArrow),this._buildEvents(),this._attachEvents(),this.isInline?this.picker.addClass("datepicker-inline").appendTo(this.element):this.picker.addClass("datepicker-dropdown dropdown-menu"),this.o.rtl&&this.picker.addClass("datepicker-rtl"),this.o.calendarWeeks&&this.picker.find(".datepicker-days .datepicker-switch, thead .datepicker-title, tfoot .today, tfoot .clear").attr("colspan",function(i,r){return Number(r)+1}),this._process_options({startDate:this._o.startDate,endDate:this._o.endDate,daysOfWeekDisabled:this.o.daysOfWeekDisabled,daysOfWeekHighlighted:this.o.daysOfWeekHighlighted,datesDisabled:this.o.datesDisabled}),this._allow_update=!1,this.setViewMode(this.o.startView),this._allow_update=!0,this.fillDow(),this.fillMonths(),this.update(),this.isInline&&this.show()};J.prototype={constructor:J,_resolveViewName:function(a){return t.each(l.viewModes,function(e,i){if(a===e||t.inArray(a,i.names)!==-1)return a=e,!1}),a},_resolveDaysOfWeek:function(a){return t.isArray(a)||(a=a.split(/[,\s]*/)),t.map(a,Number)},_check_template:function(a){try{if(a===M||a==="")return!1;if((a.match(/[<>]/g)||[]).length<=0)return!0;var e=t(a);return e.length>0}catch(i){return!1}},_process_options:function(a){this._o=t.extend({},this._o,a);var e=this.o=t.extend({},this._o),i=e.language;g[i]||(i=i.split("-")[0],g[i]||(i=U.language)),e.language=i,e.startView=this._resolveViewName(e.startView),e.minViewMode=this._resolveViewName(e.minViewMode),e.maxViewMode=this._resolveViewName(e.maxViewMode),e.startView=Math.max(this.o.minViewMode,Math.min(this.o.maxViewMode,e.startView)),e.multidate!==!0&&(e.multidate=Number(e.multidate)||!1,e.multidate!==!1&&(e.multidate=Math.max(0,e.multidate))),e.multidateSeparator=String(e.multidateSeparator),e.weekStart%=7,e.weekEnd=(e.weekStart+6)%7;var r=l.parseFormat(e.format);e.startDate!==-Infinity&&(e.startDate?e.startDate instanceof Date?e.startDate=this._local_to_utc(this._zero_time(e.startDate)):e.startDate=l.parseDate(e.startDate,r,e.language,e.assumeNearbyYear):e.startDate=-Infinity),e.endDate!==Infinity&&(e.endDate?e.endDate instanceof Date?e.endDate=this._local_to_utc(this._zero_time(e.endDate)):e.endDate=l.parseDate(e.endDate,r,e.language,e.assumeNearbyYear):e.endDate=Infinity),e.daysOfWeekDisabled=this._resolveDaysOfWeek(e.daysOfWeekDisabled||[]),e.daysOfWeekHighlighted=this._resolveDaysOfWeek(e.daysOfWeekHighlighted||[]),e.datesDisabled=e.datesDisabled||[],t.isArray(e.datesDisabled)||(e.datesDisabled=e.datesDisabled.split(",")),e.datesDisabled=t.map(e.datesDisabled,function(n){return l.parseDate(n,r,e.language,e.assumeNearbyYear)});var o=String(e.orientation).toLowerCase().split(/\s+/g),d=e.orientation.toLowerCase();if(o=t.grep(o,function(n){return/^auto|left|right|top|bottom$/.test(n)}),e.orientation={x:"auto",y:"auto"},!(!d||d==="auto"))if(o.length===1)switch(o[0]){case"top":case"bottom":e.orientation.y=o[0];break;case"left":case"right":e.orientation.x=o[0];break}else d=t.grep(o,function(n){return/^left|right$/.test(n)}),e.orientation.x=d[0]||"auto",d=t.grep(o,function(n){return/^top|bottom$/.test(n)}),e.orientation.y=d[0]||"auto";if(e.defaultViewDate instanceof Date||typeof e.defaultViewDate=="string")e.defaultViewDate=l.parseDate(e.defaultViewDate,r,e.language,e.assumeNearbyYear);else if(e.defaultViewDate){var u=e.defaultViewDate.year||new Date().getFullYear(),c=e.defaultViewDate.month||0,y=e.defaultViewDate.day||1;e.defaultViewDate=N(u,c,y)}else e.defaultViewDate=O()},_applyEvents:function(a){for(var e=0,i,r,o;e<a.length;e++)i=a[e][0],a[e].length===2?(r=M,o=a[e][1]):a[e].length===3&&(r=a[e][1],o=a[e][2]),i.on(o,r)},_unapplyEvents:function(a){for(var e=0,i,r,o;e<a.length;e++)i=a[e][0],a[e].length===2?(o=M,r=a[e][1]):a[e].length===3&&(o=a[e][1],r=a[e][2]),i.off(r,o)},_buildEvents:function(){var a={keyup:t.proxy(function(e){t.inArray(e.keyCode,[27,37,39,38,40,32,13,9])===-1&&this.update()},this),keydown:t.proxy(this.keydown,this),paste:t.proxy(this.paste,this)};this.o.showOnFocus===!0&&(a.focus=t.proxy(this.show,this)),this.isInput?this._events=[[this.element,a]]:this.component&&this.inputField.length?this._events=[[this.inputField,a],[this.component,{click:t.proxy(this.show,this)}]]:this._events=[[this.element,{click:t.proxy(this.show,this),keydown:t.proxy(this.keydown,this)}]],this._events.push([this.element,"*",{blur:t.proxy(function(e){this._focused_from=e.target},this)}],[this.element,{blur:t.proxy(function(e){this._focused_from=e.target},this)}]),this.o.immediateUpdates&&this._events.push([this.element,{"changeYear changeMonth":t.proxy(function(e){this.update(e.date)},this)}]),this._secondaryEvents=[[this.picker,{click:t.proxy(this.click,this)}],[this.picker,".prev, .next",{click:t.proxy(this.navArrowsClick,this)}],[this.picker,".day:not(.disabled)",{click:t.proxy(this.dayCellClick,this)}],[t(window),{resize:t.proxy(this.place,this)}],[t(document),{"mousedown touchstart":t.proxy(function(e){this.element.is(e.target)||this.element.find(e.target).length||this.picker.is(e.target)||this.picker.find(e.target).length||this.isInline||this.hide()},this)}]]},_attachEvents:function(){this._detachEvents(),this._applyEvents(this._events)},_detachEvents:function(){this._unapplyEvents(this._events)},_attachSecondaryEvents:function(){this._detachSecondaryEvents(),this._applyEvents(this._secondaryEvents)},_detachSecondaryEvents:function(){this._unapplyEvents(this._secondaryEvents)},_trigger:function(a,e){var i=e||this.dates.get(-1),r=this._utc_to_local(i);this.element.trigger({type:a,date:r,viewMode:this.viewMode,dates:t.map(this.dates,this._utc_to_local),format:t.proxy(function(o,d){arguments.length===0?(o=this.dates.length-1,d=this.o.format):typeof o=="string"&&(d=o,o=this.dates.length-1),d=d||this.o.format;var u=this.dates.get(o);return l.formatDate(u,d,this.o.language)},this)})},show:function(){if(!(this.inputField.is(":disabled")||this.inputField.prop("readonly")&&this.o.enableOnReadonly===!1))return this.isInline||this.picker.appendTo(this.o.container),this.place(),this.picker.show(),this._attachSecondaryEvents(),this._trigger("show"),(window.navigator.msMaxTouchPoints||"ontouchstart"in document)&&this.o.disableTouchKeyboard&&t(this.element).blur(),this},hide:function(){return this.isInline||!this.picker.is(":visible")?this:(this.focusDate=null,this.picker.hide().detach(),this._detachSecondaryEvents(),this.setViewMode(this.o.startView),this.o.forceParse&&this.inputField.val()&&this.setValue(),this._trigger("hide"),this)},destroy:function(){return this.hide(),this._detachEvents(),this._detachSecondaryEvents(),this.picker.remove(),delete this.element.data().datepicker,this.isInput||delete this.element.data().date,this},paste:function(a){var e;if(a.originalEvent.clipboardData&&a.originalEvent.clipboardData.types&&t.inArray("text/plain",a.originalEvent.clipboardData.types)!==-1)e=a.originalEvent.clipboardData.getData("text/plain");else if(window.clipboardData)e=window.clipboardData.getData("Text");else return;this.setDate(e),this.update(),a.preventDefault()},_utc_to_local:function(a){if(!a)return a;var e=new Date(a.getTime()+a.getTimezoneOffset()*6e4);return e.getTimezoneOffset()!==a.getTimezoneOffset()&&(e=new Date(a.getTime()+e.getTimezoneOffset()*6e4)),e},_local_to_utc:function(a){return a&&new Date(a.getTime()-a.getTimezoneOffset()*6e4)},_zero_time:function(a){return a&&new Date(a.getFullYear(),a.getMonth(),a.getDate())},_zero_utc_time:function(a){return a&&N(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate())},getDates:function(){return t.map(this.dates,this._utc_to_local)},getUTCDates:function(){return t.map(this.dates,function(a){return new Date(a)})},getDate:function(){return this._utc_to_local(this.getUTCDate())},getUTCDate:function(){var a=this.dates.get(-1);return a!==M?new Date(a):null},clearDates:function(){this.inputField.val(""),this.update(),this._trigger("changeDate"),this.o.autoclose&&this.hide()},setDates:function(){var a=t.isArray(arguments[0])?arguments[0]:arguments;return this.update.apply(this,a),this._trigger("changeDate"),this.setValue(),this},setUTCDates:function(){var a=t.isArray(arguments[0])?arguments[0]:arguments;return this.setDates.apply(this,t.map(a,this._utc_to_local)),this},setDate:P("setDates"),setUTCDate:P("setUTCDates"),remove:P("destroy","Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead"),setValue:function(){var a=this.getFormattedDate();return this.inputField.val(a),this},getFormattedDate:function(a){a===M&&(a=this.o.format);var e=this.o.language;return t.map(this.dates,function(i){return l.formatDate(i,a,e)}).join(this.o.multidateSeparator)},getStartDate:function(){return this.o.startDate},setStartDate:function(a){return this._process_options({startDate:a}),this.update(),this.updateNavArrows(),this},getEndDate:function(){return this.o.endDate},setEndDate:function(a){return this._process_options({endDate:a}),this.update(),this.updateNavArrows(),this},setDaysOfWeekDisabled:function(a){return this._process_options({daysOfWeekDisabled:a}),this.update(),this},setDaysOfWeekHighlighted:function(a){return this._process_options({daysOfWeekHighlighted:a}),this.update(),this},setDatesDisabled:function(a){return this._process_options({datesDisabled:a}),this.update(),this},place:function(){if(this.isInline)return this;var a=this.picker.outerWidth(),e=this.picker.outerHeight(),i=10,r=t(this.o.container),o=r.width(),d=this.o.container==="body:first"?t(document).scrollTop():r.scrollTop(),u=r.offset(),c=[0];this.element.parents().each(function(){var f=t(this).css("z-index");f!=="auto"&&Number(f)!==0&&c.push(Number(f))});var y=Math.max.apply(Math,c)+this.o.zIndexOffset,n=this.component?this.component.parent().offset():this.element.offset(),D=this.component?this.component.outerHeight(!0):this.element.outerHeight(!1),j=this.component?this.component.outerWidth(!0):this.element.outerWidth(!1),S=n.left-u.left,m=n.top-u.top;this.o.container!=="body:first"&&(m+=d),this.picker.removeClass("datepicker-orient-top datepicker-orient-bottom datepicker-orient-right datepicker-orient-left"),this.o.orientation.x!=="auto"?(this.picker.addClass("datepicker-orient-"+this.o.orientation.x),this.o.orientation.x==="right"&&(S-=a-j)):n.left<0?(this.picker.addClass("datepicker-orient-left"),S-=n.left-i):S+a>o?(this.picker.addClass("datepicker-orient-right"),S+=j-a):this.o.rtl?this.picker.addClass("datepicker-orient-right"):this.picker.addClass("datepicker-orient-left");var h=this.o.orientation.y,v;if(h==="auto"&&(v=-d+m-e,h=v<0?"bottom":"top"),this.picker.addClass("datepicker-orient-"+h),h==="top"?m-=e+parseInt(this.picker.css("padding-top")):m+=D,this.o.rtl){var p=o-(S+j);this.picker.css({top:m,right:p,zIndex:y})}else this.picker.css({top:m,left:S,zIndex:y});return this},_allow_update:!0,update:function(){if(!this._allow_update)return this;var a=this.dates.copy(),e=[],i=!1;return arguments.length?(t.each(arguments,t.proxy(function(r,o){o instanceof Date&&(o=this._local_to_utc(o)),e.push(o)},this)),i=!0):(e=this.isInput?this.element.val():this.element.data("date")||this.inputField.val(),e&&this.o.multidate?e=e.split(this.o.multidateSeparator):e=[e],delete this.element.data().date),e=t.map(e,t.proxy(function(r){return l.parseDate(r,this.o.format,this.o.language,this.o.assumeNearbyYear)},this)),e=t.grep(e,t.proxy(function(r){return!this.dateWithinRange(r)||!r},this),!0),this.dates.replace(e),this.o.updateViewDate&&(this.dates.length?this.viewDate=new Date(this.dates.get(-1)):this.viewDate<this.o.startDate?this.viewDate=new Date(this.o.startDate):this.viewDate>this.o.endDate?this.viewDate=new Date(this.o.endDate):this.viewDate=this.o.defaultViewDate),i?(this.setValue(),this.element.change()):this.dates.length&&String(a)!==String(this.dates)&&i&&(this._trigger("changeDate"),this.element.change()),!this.dates.length&&a.length&&(this._trigger("clearDate"),this.element.change()),this.fill(),this},fillDow:function(){if(this.o.showWeekDays){var a=this.o.weekStart,e="<tr>";for(this.o.calendarWeeks&&(e+='<th class="cw">&#160;</th>');a<this.o.weekStart+7;)e+='<th class="dow',t.inArray(a,this.o.daysOfWeekDisabled)!==-1&&(e+=" disabled"),e+='">'+g[this.o.language].daysMin[a++%7]+"</th>";e+="</tr>",this.picker.find(".datepicker-days thead").append(e)}},fillMonths:function(){for(var a=this._utc_to_local(this.viewDate),e="",i,r=0;r<12;r++)i=a&&a.getMonth()===r?" focused":"",e+='<span class="month'+i+'">'+g[this.o.language].monthsShort[r]+"</span>";this.picker.find(".datepicker-months td").html(e)},setRange:function(a){!a||!a.length?delete this.range:this.range=t.map(a,function(e){return e.valueOf()}),this.fill()},getClassNames:function(a){var e=[],i=this.viewDate.getUTCFullYear(),r=this.viewDate.getUTCMonth(),o=O();return a.getUTCFullYear()<i||a.getUTCFullYear()===i&&a.getUTCMonth()<r?e.push("old"):(a.getUTCFullYear()>i||a.getUTCFullYear()===i&&a.getUTCMonth()>r)&&e.push("new"),this.focusDate&&a.valueOf()===this.focusDate.valueOf()&&e.push("focused"),this.o.todayHighlight&&V(a,o)&&e.push("today"),this.dates.contains(a)!==-1&&e.push("active"),this.dateWithinRange(a)||e.push("disabled"),this.dateIsDisabled(a)&&e.push("disabled","disabled-date"),t.inArray(a.getUTCDay(),this.o.daysOfWeekHighlighted)!==-1&&e.push("highlighted"),this.range&&(a>this.range[0]&&a<this.range[this.range.length-1]&&e.push("range"),t.inArray(a.valueOf(),this.range)!==-1&&e.push("selected"),a.valueOf()===this.range[0]&&e.push("range-start"),a.valueOf()===this.range[this.range.length-1]&&e.push("range-end")),e},_fill_yearsView:function(a,e,i,r,o,d,u){for(var c="",y=i/10,n=this.picker.find(a),D=Math.floor(r/i)*i,j=D+y*9,S=Math.floor(this.viewDate.getFullYear()/y)*y,m=t.map(this.dates,function(A){return Math.floor(A.getUTCFullYear()/y)*y}),h,v,p,f=D-y;f<=j+y;f+=y)h=[e],v=null,f===D-y?h.push("old"):f===j+y&&h.push("new"),t.inArray(f,m)!==-1&&h.push("active"),(f<o||f>d)&&h.push("disabled"),f===S&&h.push("focused"),u!==t.noop&&(p=u(new Date(f,0,1)),p===M?p={}:typeof p=="boolean"?p={enabled:p}:typeof p=="string"&&(p={classes:p}),p.enabled===!1&&h.push("disabled"),p.classes&&(h=h.concat(p.classes.split(/\s+/))),p.tooltip&&(v=p.tooltip)),c+='<span class="'+h.join(" ")+'"'+(v?' title="'+v+'"':"")+">"+f+"</span>";n.find(".datepicker-switch").text(D+"-"+j),n.find("td").html(c)},fill:function(){var a=new Date(this.viewDate),e=a.getUTCFullYear(),i=a.getUTCMonth(),r=this.o.startDate!==-Infinity?this.o.startDate.getUTCFullYear():-Infinity,o=this.o.startDate!==-Infinity?this.o.startDate.getUTCMonth():-Infinity,d=this.o.endDate!==Infinity?this.o.endDate.getUTCFullYear():Infinity,u=this.o.endDate!==Infinity?this.o.endDate.getUTCMonth():Infinity,c=g[this.o.language].today||g.en.today||"",y=g[this.o.language].clear||g.en.clear||"",n=g[this.o.language].titleFormat||g.en.titleFormat,D=O(),j=(this.o.todayBtn===!0||this.o.todayBtn==="linked")&&D>=this.o.startDate&&D<=this.o.endDate&&!this.weekOfDateIsDisabled(D),S,m;if(!(isNaN(e)||isNaN(i))){this.picker.find(".datepicker-days .datepicker-switch").text(l.formatDate(a,n,this.o.language)),this.picker.find("tfoot .today").text(c).css("display",j?"table-cell":"none"),this.picker.find("tfoot .clear").text(y).css("display",this.o.clearBtn===!0?"table-cell":"none"),this.picker.find("thead .datepicker-title").text(this.o.title).css("display",typeof this.o.title=="string"&&this.o.title!==""?"table-cell":"none"),this.updateNavArrows(),this.fillMonths();var h=N(e,i,0),v=h.getUTCDate();h.setUTCDate(v-(h.getUTCDay()-this.o.weekStart+7)%7);var p=new Date(h);h.getUTCFullYear()<100&&p.setUTCFullYear(h.getUTCFullYear()),p.setUTCDate(p.getUTCDate()+42),p=p.valueOf();for(var f=[],A,w;h.valueOf()<p;){if(A=h.getUTCDay(),A===this.o.weekStart&&(f.push("<tr>"),this.o.calendarWeeks)){var _=new Date(+h+(this.o.weekStart-A-7)%7*864e5),C=new Date(Number(_)+(7+4-_.getUTCDay())%7*864e5),k=new Date(Number(k=N(C.getUTCFullYear(),0,1))+(7+4-k.getUTCDay())%7*864e5),b=(C-k)/864e5/7+1;f.push('<td class="cw">'+b+"</td>")}w=this.getClassNames(h),w.push("day");var E=h.getUTCDate();this.o.beforeShowDay!==t.noop&&(m=this.o.beforeShowDay(this._utc_to_local(h)),m===M?m={}:typeof m=="boolean"?m={enabled:m}:typeof m=="string"&&(m={classes:m}),m.enabled===!1&&w.push("disabled"),m.classes&&(w=w.concat(m.classes.split(/\s+/))),m.tooltip&&(S=m.tooltip),m.content&&(E=m.content)),t.isFunction(t.uniqueSort)?w=t.uniqueSort(w):w=t.unique(w),f.push('<td class="'+w.join(" ")+'"'+(S?' title="'+S+'"':"")+' data-date="'+h.getTime().toString()+'">'+E+"</td>"),S=null,A===this.o.weekEnd&&f.push("</tr>"),h.setUTCDate(h.getUTCDate()+1)}this.picker.find(".datepicker-days tbody").html(f.join(""));var At=g[this.o.language].monthsTitle||g.en.monthsTitle||"Months",z=this.picker.find(".datepicker-months").find(".datepicker-switch").text(this.o.maxViewMode<2?At:e).end().find("tbody span").removeClass("active");if(t.each(this.dates,function(x,F){F.getUTCFullYear()===e&&z.eq(F.getUTCMonth()).addClass("active")}),(e<r||e>d)&&z.addClass("disabled"),e===r&&z.slice(0,o).addClass("disabled"),e===d&&z.slice(u+1).addClass("disabled"),this.o.beforeShowMonth!==t.noop){var Ct=this;t.each(z,function(x,F){var Jt=new Date(e,x,1),T=Ct.o.beforeShowMonth(Jt);T===M?T={}:typeof T=="boolean"?T={enabled:T}:typeof T=="string"&&(T={classes:T}),T.enabled===!1&&!t(F).hasClass("disabled")&&t(F).addClass("disabled"),T.classes&&t(F).addClass(T.classes),T.tooltip&&t(F).prop("title",T.tooltip)})}this._fill_yearsView(".datepicker-years","year",10,e,r,d,this.o.beforeShowYear),this._fill_yearsView(".datepicker-decades","decade",100,e,r,d,this.o.beforeShowDecade),this._fill_yearsView(".datepicker-centuries","century",1e3,e,r,d,this.o.beforeShowCentury)}},updateNavArrows:function(){if(!!this._allow_update){var a=new Date(this.viewDate),e=a.getUTCFullYear(),i=a.getUTCMonth(),r=this.o.startDate!==-Infinity?this.o.startDate.getUTCFullYear():-Infinity,o=this.o.startDate!==-Infinity?this.o.startDate.getUTCMonth():-Infinity,d=this.o.endDate!==Infinity?this.o.endDate.getUTCFullYear():Infinity,u=this.o.endDate!==Infinity?this.o.endDate.getUTCMonth():Infinity,c,y,n=1;switch(this.viewMode){case 4:n*=10;case 3:n*=10;case 2:n*=10;case 1:c=Math.floor(e/n)*n<=r,y=Math.floor(e/n)*n+n>d;break;case 0:c=e<=r&&i<=o,y=e>=d&&i>=u;break}this.picker.find(".prev").toggleClass("disabled",c),this.picker.find(".next").toggleClass("disabled",y)}},click:function(a){a.preventDefault(),a.stopPropagation();var e,i,r,o,d;e=t(a.target),e.hasClass("datepicker-switch")&&this.viewMode!==this.o.maxViewMode&&this.setViewMode(this.viewMode+1),e.hasClass("today")&&!e.hasClass("day")&&(this.setViewMode(0),this._setDate(O(),this.o.todayBtn==="linked"?null:"view")),e.hasClass("clear")&&this.clearDates(),e.hasClass("disabled")||(e.hasClass("month")||e.hasClass("year")||e.hasClass("decade")||e.hasClass("century"))&&(this.viewDate.setUTCDate(1),r=1,this.viewMode===1?(d=e.parent().find("span").index(e),o=this.viewDate.getUTCFullYear(),this.viewDate.setUTCMonth(d)):(d=0,o=Number(e.text()),this.viewDate.setUTCFullYear(o)),this._trigger(l.viewModes[this.viewMode-1].e,this.viewDate),this.viewMode===this.o.minViewMode?this._setDate(N(o,d,r)):(this.setViewMode(this.viewMode-1),this.fill())),this.picker.is(":visible")&&this._focused_from&&this._focused_from.focus(),delete this._focused_from},dayCellClick:function(a){var e=t(a.currentTarget),i=e.data("date"),r=new Date(i);this.o.updateViewDate&&(r.getUTCFullYear()!==this.viewDate.getUTCFullYear()&&this._trigger("changeYear",this.viewDate),r.getUTCMonth()!==this.viewDate.getUTCMonth()&&this._trigger("changeMonth",this.viewDate)),this._setDate(r)},navArrowsClick:function(a){var e=t(a.currentTarget),i=e.hasClass("prev")?-1:1;this.viewMode!==0&&(i*=l.viewModes[this.viewMode].navStep*12),this.viewDate=this.moveMonth(this.viewDate,i),this._trigger(l.viewModes[this.viewMode].e,this.viewDate),this.fill()},_toggle_multidate:function(a){var e=this.dates.contains(a);if(a||this.dates.clear(),e!==-1?(this.o.multidate===!0||this.o.multidate>1||this.o.toggleActive)&&this.dates.remove(e):this.o.multidate===!1?(this.dates.clear(),this.dates.push(a)):this.dates.push(a),typeof this.o.multidate=="number")for(;this.dates.length>this.o.multidate;)this.dates.remove(0)},_setDate:function(a,e){(!e||e==="date")&&this._toggle_multidate(a&&new Date(a)),(!e&&this.o.updateViewDate||e==="view")&&(this.viewDate=a&&new Date(a)),this.fill(),this.setValue(),(!e||e!=="view")&&this._trigger("changeDate"),this.inputField.trigger("change"),this.o.autoclose&&(!e||e==="date")&&this.hide()},moveDay:function(a,e){var i=new Date(a);return i.setUTCDate(a.getUTCDate()+e),i},moveWeek:function(a,e){return this.moveDay(a,e*7)},moveMonth:function(a,e){if(!vt(a))return this.o.defaultViewDate;if(!e)return a;var i=new Date(a.valueOf()),r=i.getUTCDate(),o=i.getUTCMonth(),d=Math.abs(e),u,c;if(e=e>0?1:-1,d===1)c=e===-1?function(){return i.getUTCMonth()===o}:function(){return i.getUTCMonth()!==u},u=o+e,i.setUTCMonth(u),u=(u+12)%12;else{for(var y=0;y<d;y++)i=this.moveMonth(i,e);u=i.getUTCMonth(),i.setUTCDate(r),c=function(){return u!==i.getUTCMonth()}}for(;c();)i.setUTCDate(--r),i.setUTCMonth(u);return i},moveYear:function(a,e){return this.moveMonth(a,e*12)},moveAvailableDate:function(a,e,i){do{if(a=this[i](a,e),!this.dateWithinRange(a))return!1;i="moveDay"}while(this.dateIsDisabled(a));return a},weekOfDateIsDisabled:function(a){return t.inArray(a.getUTCDay(),this.o.daysOfWeekDisabled)!==-1},dateIsDisabled:function(a){return this.weekOfDateIsDisabled(a)||t.grep(this.o.datesDisabled,function(e){return V(a,e)}).length>0},dateWithinRange:function(a){return a>=this.o.startDate&&a<=this.o.endDate},keydown:function(a){if(!this.picker.is(":visible")){(a.keyCode===40||a.keyCode===27)&&(this.show(),a.stopPropagation());return}var e=!1,i,r,o=this.focusDate||this.viewDate;switch(a.keyCode){case 27:this.focusDate?(this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill()):this.hide(),a.preventDefault(),a.stopPropagation();break;case 37:case 38:case 39:case 40:if(!this.o.keyboardNavigation||this.o.daysOfWeekDisabled.length===7)break;i=a.keyCode===37||a.keyCode===38?-1:1,this.viewMode===0?a.ctrlKey?(r=this.moveAvailableDate(o,i,"moveYear"),r&&this._trigger("changeYear",this.viewDate)):a.shiftKey?(r=this.moveAvailableDate(o,i,"moveMonth"),r&&this._trigger("changeMonth",this.viewDate)):a.keyCode===37||a.keyCode===39?r=this.moveAvailableDate(o,i,"moveDay"):this.weekOfDateIsDisabled(o)||(r=this.moveAvailableDate(o,i,"moveWeek")):this.viewMode===1?((a.keyCode===38||a.keyCode===40)&&(i=i*4),r=this.moveAvailableDate(o,i,"moveMonth")):this.viewMode===2&&((a.keyCode===38||a.keyCode===40)&&(i=i*4),r=this.moveAvailableDate(o,i,"moveYear")),r&&(this.focusDate=this.viewDate=r,this.setValue(),this.fill(),a.preventDefault());break;case 13:if(!this.o.forceParse)break;o=this.focusDate||this.dates.get(-1)||this.viewDate,this.o.keyboardNavigation&&(this._toggle_multidate(o),e=!0),this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.setValue(),this.fill(),this.picker.is(":visible")&&(a.preventDefault(),a.stopPropagation(),this.o.autoclose&&this.hide());break;case 9:this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill(),this.hide();break}e&&(this.dates.length?this._trigger("changeDate"):this._trigger("clearDate"),this.inputField.trigger("change"))},setViewMode:function(a){this.viewMode=a,this.picker.children("div").hide().filter(".datepicker-"+l.viewModes[this.viewMode].clsName).show(),this.updateNavArrows(),this._trigger("changeViewMode",new Date(this.viewDate))}};var q=function(a,e){t.data(a,"datepicker",this),this.element=t(a),this.inputs=t.map(e.inputs,function(i){return i.jquery?i[0]:i}),delete e.inputs,this.keepEmptyValues=e.keepEmptyValues,delete e.keepEmptyValues,Q.call(t(this.inputs),e).on("changeDate",t.proxy(this.dateUpdated,this)),this.pickers=t.map(this.inputs,function(i){return t.data(i,"datepicker")}),this.updateDates()};q.prototype={updateDates:function(){this.dates=t.map(this.pickers,function(a){return a.getUTCDate()}),this.updateRanges()},updateRanges:function(){var a=t.map(this.dates,function(e){return e.valueOf()});t.each(this.pickers,function(e,i){i.setRange(a)})},clearDates:function(){t.each(this.pickers,function(a,e){e.clearDates()})},dateUpdated:function(a){if(!this.updating){this.updating=!0;var e=t.data(a.target,"datepicker");if(e!==M){var i=e.getUTCDate(),r=this.keepEmptyValues,o=t.inArray(a.target,this.inputs),d=o-1,u=o+1,c=this.inputs.length;if(o!==-1){if(t.each(this.pickers,function(y,n){!n.getUTCDate()&&(n===e||!r)&&n.setUTCDate(i)}),i<this.dates[d])for(;d>=0&&i<this.dates[d];)this.pickers[d--].setUTCDate(i);else if(i>this.dates[u])for(;u<c&&i>this.dates[u];)this.pickers[u++].setUTCDate(i);this.updateDates(),delete this.updating}}}},destroy:function(){t.map(this.pickers,function(a){a.destroy()}),t(this.inputs).off("changeDate",this.dateUpdated),delete this.element.data().datepicker},remove:P("destroy","Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead")};function Dt(a,e){var i=t(a).data(),r={},o,d=new RegExp("^"+e.toLowerCase()+"([A-Z])");e=new RegExp("^"+e.toLowerCase());function u(y,n){return n.toLowerCase()}for(var c in i)e.test(c)&&(o=c.replace(d,u),r[o]=i[c]);return r}function wt(a){var e={};if(!(!g[a]&&(a=a.split("-")[0],!g[a]))){var i=g[a];return t.each(jt,function(r,o){o in i&&(e[o]=i[o])}),e}}var Tt=t.fn.datepicker,Q=function(a){var e=Array.apply(null,arguments);e.shift();var i;if(this.each(function(){var r=t(this),o=r.data("datepicker"),d=typeof a=="object"&&a;if(!o){var u=Dt(this,"date"),c=t.extend({},U,u,d),y=wt(c.language),n=t.extend({},U,y,u,d);r.hasClass("input-daterange")||n.inputs?(t.extend(n,{inputs:n.inputs||r.find("input").toArray()}),o=new q(this,n)):o=new J(this,n),r.data("datepicker",o)}typeof a=="string"&&typeof o[a]=="function"&&(i=o[a].apply(o,e))}),i===M||i instanceof J||i instanceof q)return this;if(this.length>1)throw new Error("Using only allowed for the collection of a single element ("+a+" function)");return i};t.fn.datepicker=Q;var U=t.fn.datepicker.defaults={assumeNearbyYear:!1,autoclose:!1,beforeShowDay:t.noop,beforeShowMonth:t.noop,beforeShowYear:t.noop,beforeShowDecade:t.noop,beforeShowCentury:t.noop,calendarWeeks:!1,clearBtn:!1,toggleActive:!1,daysOfWeekDisabled:[],daysOfWeekHighlighted:[],datesDisabled:[],endDate:Infinity,forceParse:!0,format:"mm/dd/yyyy",keepEmptyValues:!1,keyboardNavigation:!0,language:"en",minViewMode:0,maxViewMode:4,multidate:!1,multidateSeparator:",",orientation:"auto",rtl:!1,startDate:-Infinity,startView:0,todayBtn:!1,todayHighlight:!1,updateViewDate:!0,weekStart:0,disableTouchKeyboard:!1,enableOnReadonly:!0,showOnFocus:!0,zIndexOffset:10,container:"body:first",immediateUpdates:!1,title:"",templates:{leftArrow:"&#x00AB;",rightArrow:"&#x00BB;"},showWeekDays:!0},jt=t.fn.datepicker.locale_opts=["format","rtl","weekStart"];t.fn.datepicker.Constructor=J;var g=t.fn.datepicker.dates={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",clear:"Clear",titleFormat:"MM yyyy"}},l={viewModes:[{names:["days","month"],clsName:"days",e:"changeMonth"},{names:["months","year"],clsName:"months",e:"changeYear",navStep:1},{names:["years","decade"],clsName:"years",e:"changeDecade",navStep:10},{names:["decades","century"],clsName:"decades",e:"changeCentury",navStep:100},{names:["centuries","millennium"],clsName:"centuries",e:"changeMillennium",navStep:1e3}],validParts:/dd?|DD?|mm?|MM?|yy(?:yy)?/g,nonpunctuation:/[^ -\/:-@\u5e74\u6708\u65e5\[-`{-~\t\n\r]+/g,parseFormat:function(a){if(typeof a.toValue=="function"&&typeof a.toDisplay=="function")return a;var e=a.replace(this.validParts,"\0").split("\0"),i=a.match(this.validParts);if(!e||!e.length||!i||i.length===0)throw new Error("Invalid date format.");return{separators:e,parts:i}},parseDate:function(a,e,i,r){if(!a)return M;if(a instanceof Date)return a;if(typeof e=="string"&&(e=l.parseFormat(e)),e.toValue)return e.toValue(a,e,i);var o={d:"moveDay",m:"moveMonth",w:"moveWeek",y:"moveYear"},d={yesterday:"-1d",today:"+0d",tomorrow:"+1d"},u,c,y,n,D;if(a in d&&(a=d[a]),/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/i.test(a)){for(u=a.match(/([\-+]\d+)([dmwy])/gi),a=new Date,n=0;n<u.length;n++)c=u[n].match(/([\-+]\d+)([dmwy])/i),y=Number(c[1]),D=o[c[2].toLowerCase()],a=J.prototype[D](a,y);return J.prototype._zero_utc_time(a)}u=a&&a.match(this.nonpunctuation)||[];function j(k,b){return b===!0&&(b=10),k<100&&(k+=2e3,k>new Date().getFullYear()+b&&(k-=100)),k}var S={},m=["yyyy","yy","M","MM","m","mm","d","dd"],h={yyyy:function(k,b){return k.setUTCFullYear(r?j(b,r):b)},m:function(k,b){if(isNaN(k))return k;for(b-=1;b<0;)b+=12;for(b%=12,k.setUTCMonth(b);k.getUTCMonth()!==b;)k.setUTCDate(k.getUTCDate()-1);return k},d:function(k,b){return k.setUTCDate(b)}},v,p;h.yy=h.yyyy,h.M=h.MM=h.mm=h.m,h.dd=h.d,a=O();var f=e.parts.slice();u.length!==f.length&&(f=t(f).filter(function(k,b){return t.inArray(b,m)!==-1}).toArray());function A(){var k=this.slice(0,u[n].length),b=u[n].slice(0,k.length);return k.toLowerCase()===b.toLowerCase()}if(u.length===f.length){var w;for(n=0,w=f.length;n<w;n++){if(v=parseInt(u[n],10),c=f[n],isNaN(v))switch(c){case"MM":p=t(g[i].months).filter(A),v=t.inArray(p[0],g[i].months)+1;break;case"M":p=t(g[i].monthsShort).filter(A),v=t.inArray(p[0],g[i].monthsShort)+1;break}S[c]=v}var _,C;for(n=0;n<m.length;n++)C=m[n],C in S&&!isNaN(S[C])&&(_=new Date(a),h[C](_,S[C]),isNaN(_)||(a=_))}return a},formatDate:function(a,e,i){if(!a)return"";if(typeof e=="string"&&(e=l.parseFormat(e)),e.toDisplay)return e.toDisplay(a,e,i);var r={d:a.getUTCDate(),D:g[i].daysShort[a.getUTCDay()],DD:g[i].days[a.getUTCDay()],m:a.getUTCMonth()+1,M:g[i].monthsShort[a.getUTCMonth()],MM:g[i].months[a.getUTCMonth()],yy:a.getUTCFullYear().toString().substring(2),yyyy:a.getUTCFullYear()};r.dd=(r.d<10?"0":"")+r.d,r.mm=(r.m<10?"0":"")+r.m,a=[];for(var o=t.extend([],e.separators),d=0,u=e.parts.length;d<=u;d++)o.length&&a.push(o.shift()),a.push(r[e.parts[d]]);return a.join("")},headTemplate:'<thead><tr><th colspan="7" class="datepicker-title"></th></tr><tr><th class="prev">'+U.templates.leftArrow+'</th><th colspan="5" class="datepicker-switch"></th><th class="next">'+U.templates.rightArrow+"</th></tr></thead>",contTemplate:'<tbody><tr><td colspan="7"></td></tr></tbody>',footTemplate:'<tfoot><tr><th colspan="7" class="today"></th></tr><tr><th colspan="7" class="clear"></th></tr></tfoot>'};l.template='<div class="datepicker"><div class="datepicker-days"><table class="table-condensed">'+l.headTemplate+"<tbody></tbody>"+l.footTemplate+'</table></div><div class="datepicker-months"><table class="table-condensed">'+l.headTemplate+l.contTemplate+l.footTemplate+'</table></div><div class="datepicker-years"><table class="table-condensed">'+l.headTemplate+l.contTemplate+l.footTemplate+'</table></div><div class="datepicker-decades"><table class="table-condensed">'+l.headTemplate+l.contTemplate+l.footTemplate+'</table></div><div class="datepicker-centuries"><table class="table-condensed">'+l.headTemplate+l.contTemplate+l.footTemplate+"</table></div></div>",t.fn.datepicker.DPGlobal=l,t.fn.datepicker.noConflict=function(){return t.fn.datepicker=Tt,this},t.fn.datepicker.version="1.9.0",t.fn.datepicker.deprecated=function(a){var e=window.console;e&&e.warn&&e.warn("DEPRECATED: "+a)},t(document).on("focus.datepicker.data-api click.datepicker.data-api",'[data-provide="datepicker"]',function(a){var e=t(this);e.data("datepicker")||(a.preventDefault(),Q.call(e,"show"))}),t(function(){Q.call(t('[data-provide="datepicker-inline"]'))})})});var H=s(function(){(function(t){t.fn.datepicker.dates["en-CA"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:0,format:"yyyy-mm-dd"},t.fn.datepicker.deprecated("This filename doesn't follow the convention, use bootstrap-datepicker.en-CA.js instead.")})(jQuery)});var K=s(function(){(function(t){t.fn.datepicker.dates["ar-tn"]={days:["\u0627\u0644\u0623\u062D\u062F","\u0627\u0644\u0627\u062B\u0646\u064A\u0646","\u0627\u0644\u062B\u0644\u0627\u062B\u0627\u0621","\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621","\u0627\u0644\u062E\u0645\u064A\u0633","\u0627\u0644\u062C\u0645\u0639\u0629","\u0627\u0644\u0633\u0628\u062A","\u0627\u0644\u0623\u062D\u062F"],daysShort:["\u0623\u062D\u062F","\u0627\u062B\u0646\u064A\u0646","\u062B\u0644\u0627\u062B\u0627\u0621","\u0623\u0631\u0628\u0639\u0627\u0621","\u062E\u0645\u064A\u0633","\u062C\u0645\u0639\u0629","\u0633\u0628\u062A","\u0623\u062D\u062F"],daysMin:["\u062D","\u0646","\u062B","\u0639","\u062E","\u062C","\u0633","\u062D"],months:["\u062C\u0627\u0646\u0641\u064A","\u0641\u064A\u0641\u0631\u064A","\u0645\u0627\u0631\u0633","\u0623\u0641\u0631\u064A\u0644","\u0645\u0627\u064A","\u062C\u0648\u0627\u0646","\u062C\u0648\u064A\u0644\u064A\u0647","\u0623\u0648\u062A","\u0633\u0628\u062A\u0645\u0628\u0631","\u0623\u0643\u062A\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062F\u064A\u0633\u0645\u0628\u0631"],monthsShort:["\u062C\u0627\u0646\u0641\u064A","\u0641\u064A\u0641\u0631\u064A","\u0645\u0627\u0631\u0633","\u0623\u0641\u0631\u064A\u0644","\u0645\u0627\u064A","\u062C\u0648\u0627\u0646","\u062C\u0648\u064A\u0644\u064A\u0647","\u0623\u0648\u062A","\u0633\u0628\u062A\u0645\u0628\u0631","\u0623\u0643\u062A\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062F\u064A\u0633\u0645\u0628\u0631"],today:"\u0647\u0630\u0627 \u0627\u0644\u064A\u0648\u0645",rtl:!0}})(jQuery)});var B=s(function(){(function(t){t.fn.datepicker.dates.ar={days:["\u0627\u0644\u0623\u062D\u062F","\u0627\u0644\u0627\u062B\u0646\u064A\u0646","\u0627\u0644\u062B\u0644\u0627\u062B\u0627\u0621","\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621","\u0627\u0644\u062E\u0645\u064A\u0633","\u0627\u0644\u062C\u0645\u0639\u0629","\u0627\u0644\u0633\u0628\u062A","\u0627\u0644\u0623\u062D\u062F"],daysShort:["\u0623\u062D\u062F","\u0627\u062B\u0646\u064A\u0646","\u062B\u0644\u0627\u062B\u0627\u0621","\u0623\u0631\u0628\u0639\u0627\u0621","\u062E\u0645\u064A\u0633","\u062C\u0645\u0639\u0629","\u0633\u0628\u062A","\u0623\u062D\u062F"],daysMin:["\u062D","\u0646","\u062B","\u0639","\u062E","\u062C","\u0633","\u062D"],months:["\u064A\u0646\u0627\u064A\u0631","\u0641\u0628\u0631\u0627\u064A\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064A\u0644","\u0645\u0627\u064A\u0648","\u064A\u0648\u0646\u064A\u0648","\u064A\u0648\u0644\u064A\u0648","\u0623\u063A\u0633\u0637\u0633","\u0633\u0628\u062A\u0645\u0628\u0631","\u0623\u0643\u062A\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062F\u064A\u0633\u0645\u0628\u0631"],monthsShort:["\u064A\u0646\u0627\u064A\u0631","\u0641\u0628\u0631\u0627\u064A\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064A\u0644","\u0645\u0627\u064A\u0648","\u064A\u0648\u0646\u064A\u0648","\u064A\u0648\u0644\u064A\u0648","\u0623\u063A\u0633\u0637\u0633","\u0633\u0628\u062A\u0645\u0628\u0631","\u0623\u0643\u062A\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062F\u064A\u0633\u0645\u0628\u0631"],today:"\u0647\u0630\u0627 \u0627\u0644\u064A\u0648\u0645",rtl:!0}})(jQuery)});var R=s(function(){(function(t){t.fn.datepicker.dates.az={days:["Bazar","Bazar ert\u0259si","\xC7\u0259r\u015F\u0259nb\u0259 ax\u015Fam\u0131","\xC7\u0259r\u015F\u0259nb\u0259","C\xFCm\u0259 ax\u015Fam\u0131","C\xFCm\u0259","\u015E\u0259nb\u0259"],daysShort:["B.","B.e","\xC7.a","\xC7.","C.a","C.","\u015E."],daysMin:["B.","B.e","\xC7.a","\xC7.","C.a","C.","\u015E."],months:["Yanvar","Fevral","Mart","Aprel","May","\u0130yun","\u0130yul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"],monthsShort:["Yan","Fev","Mar","Apr","May","\u0130yun","\u0130yul","Avq","Sen","Okt","Noy","Dek"],today:"Bu g\xFCn",weekStart:1,clear:"T\u0259mizl\u0259",monthsTitle:"Aylar"}})(jQuery)});var Z=s(function(){(function(t){t.fn.datepicker.dates.bg={days:["\u041D\u0435\u0434\u0435\u043B\u044F","\u041F\u043E\u043D\u0435\u0434\u0435\u043B\u043D\u0438\u043A","\u0412\u0442\u043E\u0440\u043D\u0438\u043A","\u0421\u0440\u044F\u0434\u0430","\u0427\u0435\u0442\u0432\u044A\u0440\u0442\u044A\u043A","\u041F\u0435\u0442\u044A\u043A","\u0421\u044A\u0431\u043E\u0442\u0430"],daysShort:["\u041D\u0435\u0434","\u041F\u043E\u043D","\u0412\u0442\u043E","\u0421\u0440\u044F","\u0427\u0435\u0442","\u041F\u0435\u0442","\u0421\u044A\u0431"],daysMin:["\u041D","\u041F","\u0412","\u0421","\u0427","\u041F","\u0421"],months:["\u042F\u043D\u0443\u0430\u0440\u0438","\u0424\u0435\u0432\u0440\u0443\u0430\u0440\u0438","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440\u0438\u043B","\u041C\u0430\u0439","\u042E\u043D\u0438","\u042E\u043B\u0438","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043F\u0442\u0435\u043C\u0432\u0440\u0438","\u041E\u043A\u0442\u043E\u043C\u0432\u0440\u0438","\u041D\u043E\u0435\u043C\u0432\u0440\u0438","\u0414\u0435\u043A\u0435\u043C\u0432\u0440\u0438"],monthsShort:["\u042F\u043D","\u0424\u0435\u0432","\u041C\u0430\u0440","\u0410\u043F\u0440","\u041C\u0430\u0439","\u042E\u043D\u0438","\u042E\u043B\u0438","\u0410\u0432\u0433","\u0421\u0435\u043F","\u041E\u043A\u0442","\u041D\u043E\u0435","\u0414\u0435\u043A"],today:"\u0434\u043D\u0435\u0441"}})(jQuery)});var X=s(function(){(function(t){t.fn.datepicker.dates.bm={days:["Kari","Nt\u025Bn\u025Bn","Tarata","Araba","Alamisa","Juma","Sibiri"],daysShort:["Kar","Nt\u025B","Tar","Ara","Ala","Jum","Sib"],daysMin:["Ka","Nt","Ta","Ar","Al","Ju","Si"],months:["Zanwuyekalo","Fewuruyekalo","Marisikalo","Awirilikalo","M\u025Bkalo","Zuw\u025Bnkalo","Zuluyekalo","Utikalo","S\u025Btanburukalo","\u0254kut\u0254burukalo","Nowanburukalo","Desanburukalo"],monthsShort:["Zan","Few","Mar","Awi","M\u025B","Zuw","Zul","Uti","S\u025Bt","\u0254ku","Now","Des"],today:"Bi",monthsTitle:"Kalo",clear:"Ka j\u0254si",weekStart:1,format:"dd/mm/yyyy"}})(jQuery)});var $=s(function(){(function(t){t.fn.datepicker.dates.bn={days:["\u09B0\u09AC\u09BF\u09AC\u09BE\u09B0","\u09B8\u09CB\u09AE\u09AC\u09BE\u09B0","\u09AE\u0999\u09CD\u0997\u09B2\u09AC\u09BE\u09B0","\u09AC\u09C1\u09A7\u09AC\u09BE\u09B0","\u09AC\u09C3\u09B9\u09B8\u09CD\u09AA\u09A4\u09BF\u09AC\u09BE\u09B0","\u09B6\u09C1\u0995\u09CD\u09B0\u09AC\u09BE\u09B0","\u09B6\u09A8\u09BF\u09AC\u09BE\u09B0"],daysShort:["\u09B0\u09AC\u09BF\u09AC\u09BE\u09B0","\u09B8\u09CB\u09AE\u09AC\u09BE\u09B0","\u09AE\u0999\u09CD\u0997\u09B2\u09AC\u09BE\u09B0","\u09AC\u09C1\u09A7\u09AC\u09BE\u09B0","\u09AC\u09C3\u09B9\u09B8\u09CD\u09AA\u09A4\u09BF\u09AC\u09BE\u09B0","\u09B6\u09C1\u0995\u09CD\u09B0\u09AC\u09BE\u09B0","\u09B6\u09A8\u09BF\u09AC\u09BE\u09B0"],daysMin:["\u09B0\u09AC\u09BF","\u09B8\u09CB\u09AE","\u09AE\u0999\u09CD\u0997\u09B2","\u09AC\u09C1\u09A7","\u09AC\u09C3\u09B9\u09B8\u09CD\u09AA\u09A4\u09BF","\u09B6\u09C1\u0995\u09CD\u09B0","\u09B6\u09A8\u09BF"],months:["\u099C\u09BE\u09A8\u09C1\u09AF\u09BC\u09BE\u09B0\u09C0","\u09AB\u09C7\u09AC\u09CD\u09B0\u09C1\u09AF\u09BC\u09BE\u09B0\u09BF","\u09AE\u09BE\u09B0\u09CD\u099A","\u098F\u09AA\u09CD\u09B0\u09BF\u09B2","\u09AE\u09C7","\u099C\u09C1\u09A8","\u099C\u09C1\u09B2\u09BE\u0987","\u0985\u0997\u09BE\u09B8\u09CD\u099F","\u09B8\u09C7\u09AA\u09CD\u099F\u09C7\u09AE\u09CD\u09AC\u09B0","\u0985\u0995\u09CD\u099F\u09CB\u09AC\u09B0","\u09A8\u09AD\u09C7\u09AE\u09CD\u09AC\u09B0","\u09A1\u09BF\u09B8\u09C7\u09AE\u09CD\u09AC\u09B0"],monthsShort:["\u099C\u09BE\u09A8\u09C1\u09AF\u09BC\u09BE\u09B0\u09C0","\u09AB\u09C7\u09AC\u09CD\u09B0\u09C1\u09AF\u09BC\u09BE\u09B0\u09BF","\u09AE\u09BE\u09B0\u09CD\u099A","\u098F\u09AA\u09CD\u09B0\u09BF\u09B2","\u09AE\u09C7","\u099C\u09C1\u09A8","\u099C\u09C1\u09B2\u09BE\u0987","\u0985\u0997\u09BE\u09B8\u09CD\u099F","\u09B8\u09C7\u09AA\u09CD\u099F\u09C7\u09AE\u09CD\u09AC\u09B0","\u0985\u0995\u09CD\u099F\u09CB\u09AC\u09B0","\u09A8\u09AD\u09C7\u09AE\u09CD\u09AC\u09B0","\u09A1\u09BF\u09B8\u09C7\u09AE\u09CD\u09AC\u09B0"],today:"\u0986\u099C",monthsTitle:"\u09AE\u09BE\u09B8",clear:"\u09AA\u09B0\u09BF\u09B7\u09CD\u0995\u09BE\u09B0",weekStart:0,format:"mm/dd/yyyy"}})(jQuery)});var ee=s(function(){(function(t){t.fn.datepicker.dates.br={days:["Sul","Lun","Meurzh","Merc'her","Yaou","Gwener","Sadorn"],daysShort:["Sul","Lun","Meu.","Mer.","Yao.","Gwe.","Sad."],daysMin:["Su","L","Meu","Mer","Y","G","Sa"],months:["Genver","C'hwevrer","Meurzh","Ebrel","Mae","Mezheven","Gouere","Eost","Gwengolo","Here","Du","Kerzu"],monthsShort:["Genv.","C'hw.","Meur.","Ebre.","Mae","Mezh.","Goue.","Eost","Gwen.","Here","Du","Kerz."],today:"Hiziv",monthsTitle:"Miz",clear:"Dilemel",weekStart:1,format:"dd/mm/yyyy"}})(jQuery)});var te=s(function(){(function(t){t.fn.datepicker.dates.bs={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","\u010Cetvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sri","\u010Cet","Pet","Sub"],daysMin:["N","Po","U","Sr","\u010C","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Juni","Juli","August","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"}})(jQuery)});var ae=s(function(){(function(t){t.fn.datepicker.dates.ca={days:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"],daysShort:["Diu","Dil","Dmt","Dmc","Dij","Div","Dis"],daysMin:["dg","dl","dt","dc","dj","dv","ds"],months:["Gener","Febrer","Mar\xE7","Abril","Maig","Juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"],monthsShort:["Gen","Feb","Mar","Abr","Mai","Jun","Jul","Ago","Set","Oct","Nov","Des"],today:"Avui",monthsTitle:"Mesos",clear:"Esborrar",weekStart:1,format:"dd/mm/yyyy"}})(jQuery)});var ie=s(function(){(function(t){t.fn.datepicker.dates.cs={days:["Ned\u011Ble","Pond\u011Bl\xED","\xDAter\xFD","St\u0159eda","\u010Ctvrtek","P\xE1tek","Sobota"],daysShort:["Ned","Pon","\xDAte","St\u0159","\u010Ctv","P\xE1t","Sob"],daysMin:["Ne","Po","\xDAt","St","\u010Ct","P\xE1","So"],months:["Leden","\xDAnor","B\u0159ezen","Duben","Kv\u011Bten","\u010Cerven","\u010Cervenec","Srpen","Z\xE1\u0159\xED","\u0158\xEDjen","Listopad","Prosinec"],monthsShort:["Led","\xDAno","B\u0159e","Dub","Kv\u011B","\u010Cer","\u010Cnc","Srp","Z\xE1\u0159","\u0158\xEDj","Lis","Pro"],today:"Dnes",clear:"Vymazat",monthsTitle:"M\u011Bs\xEDc",weekStart:1,format:"dd.mm.yyyy"}})(jQuery)});var re=s(function(){(function(t){t.fn.datepicker.dates.cy={days:["Sul","Llun","Mawrth","Mercher","Iau","Gwener","Sadwrn"],daysShort:["Sul","Llu","Maw","Mer","Iau","Gwe","Sad"],daysMin:["Su","Ll","Ma","Me","Ia","Gwe","Sa"],months:["Ionawr","Chewfror","Mawrth","Ebrill","Mai","Mehefin","Gorfennaf","Awst","Medi","Hydref","Tachwedd","Rhagfyr"],monthsShort:["Ion","Chw","Maw","Ebr","Mai","Meh","Gor","Aws","Med","Hyd","Tach","Rha"],today:"Heddiw"}})(jQuery)});var se=s(function(){(function(t){t.fn.datepicker.dates.da={days:["S\xF8ndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","L\xF8rdag"],daysShort:["S\xF8n","Man","Tir","Ons","Tor","Fre","L\xF8r"],daysMin:["S\xF8","Ma","Ti","On","To","Fr","L\xF8"],months:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],today:"I Dag",weekStart:1,clear:"Nulstil",format:"dd/mm/yyyy",monthsTitle:"M\xE5neder"}})(jQuery)});var oe=s(function(){(function(t){t.fn.datepicker.dates.de={days:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],daysShort:["Son","Mon","Die","Mit","Don","Fre","Sam"],daysMin:["So","Mo","Di","Mi","Do","Fr","Sa"],months:["Januar","Februar","M\xE4rz","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthsShort:["Jan","Feb","M\xE4r","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],today:"Heute",monthsTitle:"Monate",clear:"L\xF6schen",weekStart:1,format:"dd.mm.yyyy"}})(jQuery)});var ne=s(function(){(function(t){t.fn.datepicker.dates.el={days:["\u039A\u03C5\u03C1\u03B9\u03B1\u03BA\u03AE","\u0394\u03B5\u03C5\u03C4\u03AD\u03C1\u03B1","\u03A4\u03C1\u03AF\u03C4\u03B7","\u03A4\u03B5\u03C4\u03AC\u03C1\u03C4\u03B7","\u03A0\u03AD\u03BC\u03C0\u03C4\u03B7","\u03A0\u03B1\u03C1\u03B1\u03C3\u03BA\u03B5\u03C5\u03AE","\u03A3\u03AC\u03B2\u03B2\u03B1\u03C4\u03BF"],daysShort:["\u039A\u03C5\u03C1","\u0394\u03B5\u03C5","\u03A4\u03C1\u03B9","\u03A4\u03B5\u03C4","\u03A0\u03B5\u03BC","\u03A0\u03B1\u03C1","\u03A3\u03B1\u03B2"],daysMin:["\u039A\u03C5","\u0394\u03B5","\u03A4\u03C1","\u03A4\u03B5","\u03A0\u03B5","\u03A0\u03B1","\u03A3\u03B1"],months:["\u0399\u03B1\u03BD\u03BF\u03C5\u03AC\u03C1\u03B9\u03BF\u03C2","\u03A6\u03B5\u03B2\u03C1\u03BF\u03C5\u03AC\u03C1\u03B9\u03BF\u03C2","\u039C\u03AC\u03C1\u03C4\u03B9\u03BF\u03C2","\u0391\u03C0\u03C1\u03AF\u03BB\u03B9\u03BF\u03C2","\u039C\u03AC\u03B9\u03BF\u03C2","\u0399\u03BF\u03CD\u03BD\u03B9\u03BF\u03C2","\u0399\u03BF\u03CD\u03BB\u03B9\u03BF\u03C2","\u0391\u03CD\u03B3\u03BF\u03C5\u03C3\u03C4\u03BF\u03C2","\u03A3\u03B5\u03C0\u03C4\u03AD\u03BC\u03B2\u03C1\u03B9\u03BF\u03C2","\u039F\u03BA\u03C4\u03CE\u03B2\u03C1\u03B9\u03BF\u03C2","\u039D\u03BF\u03AD\u03BC\u03B2\u03C1\u03B9\u03BF\u03C2","\u0394\u03B5\u03BA\u03AD\u03BC\u03B2\u03C1\u03B9\u03BF\u03C2"],monthsShort:["\u0399\u03B1\u03BD","\u03A6\u03B5\u03B2","\u039C\u03B1\u03C1","\u0391\u03C0\u03C1","\u039C\u03AC\u03B9","\u0399\u03BF\u03C5\u03BD","\u0399\u03BF\u03C5\u03BB","\u0391\u03C5\u03B3","\u03A3\u03B5\u03C0","\u039F\u03BA\u03C4","\u039D\u03BF\u03B5","\u0394\u03B5\u03BA"],today:"\u03A3\u03AE\u03BC\u03B5\u03C1\u03B1",clear:"\u039A\u03B1\u03B8\u03B1\u03C1\u03B9\u03C3\u03BC\u03CC\u03C2",weekStart:1,format:"d/m/yyyy"}})(jQuery)});var de=s(function(){(function(t){t.fn.datepicker.dates["en-AU"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"d/mm/yyyy"}})(jQuery)});var ue=s(function(){(function(t){t.fn.datepicker.dates["en-CA"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:0,format:"yyyy-mm-dd"}})(jQuery)});var he=s(function(){(function(t){t.fn.datepicker.dates["en-GB"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"dd/mm/yyyy"}})(jQuery)});var le=s(function(){(function(t){t.fn.datepicker.dates["en-IE"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"dd/mm/yyyy"}})(jQuery)});var ce=s(function(){(function(t){t.fn.datepicker.dates["en-NZ"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"d/mm/yyyy"}})(jQuery)});var ye=s(function(){(function(t){t.fn.datepicker.dates["en-ZA"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"yyyy/mm/d"}})(jQuery)});var me=s(function(){(function(t){t.fn.datepicker.dates.eo={days:["diman\u0109o","lundo","mardo","merkredo","\u0135a\u016Ddo","vendredo","sabato"],daysShort:["dim.","lun.","mar.","mer.","\u0135a\u016D.","ven.","sam."],daysMin:["d","l","ma","me","\u0135","v","s"],months:["januaro","februaro","marto","aprilo","majo","junio","julio","a\u016Dgusto","septembro","oktobro","novembro","decembro"],monthsShort:["jan.","feb.","mar.","apr.","majo","jun.","jul.","a\u016Dg.","sep.","okt.","nov.","dec."],today:"Hodia\u016D",clear:"Nuligi",weekStart:1,format:"yyyy-mm-dd"}})(jQuery)});var pe=s(function(){(function(t){t.fn.datepicker.dates.es={days:["Domingo","Lunes","Martes","Mi\xE9rcoles","Jueves","Viernes","S\xE1bado"],daysShort:["Dom","Lun","Mar","Mi\xE9","Jue","Vie","S\xE1b"],daysMin:["Do","Lu","Ma","Mi","Ju","Vi","Sa"],months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],monthsShort:["Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"],today:"Hoy",monthsTitle:"Meses",clear:"Borrar",weekStart:1,format:"dd/mm/yyyy"}})(jQuery)});var fe=s(function(){(function(t){t.fn.datepicker.dates.et={days:["P\xFChap\xE4ev","Esmasp\xE4ev","Teisip\xE4ev","Kolmap\xE4ev","Neljap\xE4ev","Reede","Laup\xE4ev"],daysShort:["P\xFChap","Esmasp","Teisip","Kolmap","Neljap","Reede","Laup"],daysMin:["P","E","T","K","N","R","L"],months:["Jaanuar","Veebruar","M\xE4rts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],monthsShort:["Jaan","Veebr","M\xE4rts","Apr","Mai","Juuni","Juuli","Aug","Sept","Okt","Nov","Dets"],today:"T\xE4na",clear:"T\xFChjenda",weekStart:1,format:"dd.mm.yyyy"}})(jQuery)});var ke=s(function(){(function(t){t.fn.datepicker.dates.eu={days:["Igandea","Astelehena","Asteartea","Asteazkena","Osteguna","Ostirala","Larunbata"],daysShort:["Ig","Al","Ar","Az","Og","Ol","Lr"],daysMin:["Ig","Al","Ar","Az","Og","Ol","Lr"],months:["Urtarrila","Otsaila","Martxoa","Apirila","Maiatza","Ekaina","Uztaila","Abuztua","Iraila","Urria","Azaroa","Abendua"],monthsShort:["Urt","Ots","Mar","Api","Mai","Eka","Uzt","Abu","Ira","Urr","Aza","Abe"],today:"Gaur",monthsTitle:"Hilabeteak",clear:"Ezabatu",weekStart:1,format:"yyyy/mm/dd"}})(jQuery)});var ge=s(function(){(function(t){t.fn.datepicker.dates.fa={days:["\u06CC\u06A9\u200C\u0634\u0646\u0628\u0647","\u062F\u0648\u0634\u0646\u0628\u0647","\u0633\u0647\u200C\u0634\u0646\u0628\u0647","\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647","\u067E\u0646\u062C\u200C\u0634\u0646\u0628\u0647","\u062C\u0645\u0639\u0647","\u0634\u0646\u0628\u0647","\u06CC\u06A9\u200C\u0634\u0646\u0628\u0647"],daysShort:["\u06CC\u06A9","\u062F\u0648","\u0633\u0647","\u0686\u0647\u0627\u0631","\u067E\u0646\u062C","\u062C\u0645\u0639\u0647","\u0634\u0646\u0628\u0647","\u06CC\u06A9"],daysMin:["\u06CC","\u062F","\u0633","\u0686","\u067E","\u062C","\u0634","\u06CC"],months:["\u0698\u0627\u0646\u0648\u06CC\u0647","\u0641\u0648\u0631\u06CC\u0647","\u0645\u0627\u0631\u0633","\u0622\u0648\u0631\u06CC\u0644","\u0645\u0647","\u0698\u0648\u0626\u0646","\u0698\u0648\u0626\u06CC\u0647","\u0627\u0648\u062A","\u0633\u067E\u062A\u0627\u0645\u0628\u0631","\u0627\u06A9\u062A\u0628\u0631","\u0646\u0648\u0627\u0645\u0628\u0631","\u062F\u0633\u0627\u0645\u0628\u0631"],monthsShort:["\u0698\u0627\u0646","\u0641\u0648\u0631","\u0645\u0627\u0631","\u0622\u0648\u0631","\u0645\u0647","\u0698\u0648\u0646","\u0698\u0648\u06CC","\u0627\u0648\u062A","\u0633\u067E\u062A","\u0627\u06A9\u062A","\u0646\u0648\u0627","\u062F\u0633\u0627"],today:"\u0627\u0645\u0631\u0648\u0632",clear:"\u067E\u0627\u06A9 \u06A9\u0646",weekStart:1,format:"yyyy/mm/dd"}})(jQuery)});var be=s(function(){(function(t){t.fn.datepicker.dates.fi={days:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],daysShort:["sun","maa","tii","kes","tor","per","lau"],daysMin:["su","ma","ti","ke","to","pe","la"],months:["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kes\xE4kuu","hein\xE4kuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],monthsShort:["tam","hel","maa","huh","tou","kes","hei","elo","syy","lok","mar","jou"],today:"t\xE4n\xE4\xE4n",clear:"Tyhjenn\xE4",weekStart:1,format:"d.m.yyyy"}})(jQuery)});var Se=s(function(){(function(t){t.fn.datepicker.dates.fo={days:["Sunnudagur","M\xE1nadagur","T\xFDsdagur","Mikudagur","H\xF3sdagur","Fr\xEDggjadagur","Leygardagur"],daysShort:["Sun","M\xE1n","T\xFDs","Mik","H\xF3s","Fr\xED","Ley"],daysMin:["Su","M\xE1","T\xFD","Mi","H\xF3","Fr","Le"],months:["Januar","Februar","Marts","Apr\xEDl","Mei","Juni","Juli","August","Septembur","Oktobur","Novembur","Desembur"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],today:"\xCD Dag",clear:"Reinsa"}})(jQuery)});var Me=s(function(){(function(t){t.fn.datepicker.dates.fr={days:["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],daysShort:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],daysMin:["D","L","Ma","Me","J","V","S"],months:["Janvier","F\xE9vrier","Mars","Avril","Mai","Juin","Juillet","Ao\xFBt","Septembre","Octobre","Novembre","D\xE9cembre"],monthsShort:["Jan","F\xE9v","Mar","Avr","Mai","Jui","Jul","Aou","Sep","Oct","Nov","D\xE9c"],today:"Aujourd'hui",monthsTitle:"Mois",clear:"Effacer",weekStart:1,format:"dd.mm.yyyy"}})(jQuery)});var ve=s(function(){(function(t){t.fn.datepicker.dates.fr={days:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],daysShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],daysMin:["d","l","ma","me","j","v","s"],months:["janvier","f\xE9vrier","mars","avril","mai","juin","juillet","ao\xFBt","septembre","octobre","novembre","d\xE9cembre"],monthsShort:["janv.","f\xE9vr.","mars","avril","mai","juin","juil.","ao\xFBt","sept.","oct.","nov.","d\xE9c."],today:"Aujourd'hui",monthsTitle:"Mois",clear:"Effacer",weekStart:1,format:"dd/mm/yyyy"}})(jQuery)});var De=s(function(){(function(t){t.fn.datepicker.dates.gl={days:["Domingo","Luns","Martes","M\xE9rcores","Xoves","Venres","S\xE1bado"],daysShort:["Dom","Lun","Mar","M\xE9r","Xov","Ven","S\xE1b"],daysMin:["Do","Lu","Ma","Me","Xo","Ve","Sa"],months:["Xaneiro","Febreiro","Marzo","Abril","Maio","Xu\xF1o","Xullo","Agosto","Setembro","Outubro","Novembro","Decembro"],monthsShort:["Xan","Feb","Mar","Abr","Mai","Xun","Xul","Ago","Sep","Out","Nov","Dec"],today:"Hoxe",clear:"Limpar",weekStart:1,format:"dd/mm/yyyy"}})(jQuery)});var we=s(function(){(function(t){t.fn.datepicker.dates.he={days:["\u05E8\u05D0\u05E9\u05D5\u05DF","\u05E9\u05E0\u05D9","\u05E9\u05DC\u05D9\u05E9\u05D9","\u05E8\u05D1\u05D9\u05E2\u05D9","\u05D7\u05DE\u05D9\u05E9\u05D9","\u05E9\u05D9\u05E9\u05D9","\u05E9\u05D1\u05EA","\u05E8\u05D0\u05E9\u05D5\u05DF"],daysShort:["\u05D0","\u05D1","\u05D2","\u05D3","\u05D4","\u05D5","\u05E9","\u05D0"],daysMin:["\u05D0","\u05D1","\u05D2","\u05D3","\u05D4","\u05D5","\u05E9","\u05D0"],months:["\u05D9\u05E0\u05D5\u05D0\u05E8","\u05E4\u05D1\u05E8\u05D5\u05D0\u05E8","\u05DE\u05E8\u05E5","\u05D0\u05E4\u05E8\u05D9\u05DC","\u05DE\u05D0\u05D9","\u05D9\u05D5\u05E0\u05D9","\u05D9\u05D5\u05DC\u05D9","\u05D0\u05D5\u05D2\u05D5\u05E1\u05D8","\u05E1\u05E4\u05D8\u05DE\u05D1\u05E8","\u05D0\u05D5\u05E7\u05D8\u05D5\u05D1\u05E8","\u05E0\u05D5\u05D1\u05DE\u05D1\u05E8","\u05D3\u05E6\u05DE\u05D1\u05E8"],monthsShort:["\u05D9\u05E0\u05D5","\u05E4\u05D1\u05E8","\u05DE\u05E8\u05E5","\u05D0\u05E4\u05E8","\u05DE\u05D0\u05D9","\u05D9\u05D5\u05E0","\u05D9\u05D5\u05DC","\u05D0\u05D5\u05D2","\u05E1\u05E4\u05D8","\u05D0\u05D5\u05E7","\u05E0\u05D5\u05D1","\u05D3\u05E6\u05DE"],today:"\u05D4\u05D9\u05D5\u05DD",rtl:!0}})(jQuery)});var Te=s(function(){(function(t){t.fn.datepicker.dates.hi={days:["\u0930\u0935\u093F\u0935\u093E\u0930","\u0938\u094B\u092E\u0935\u093E\u0930","\u092E\u0902\u0917\u0932\u0935\u093E\u0930","\u092C\u0941\u0927\u0935\u093E\u0930","\u0917\u0941\u0930\u0941\u0935\u093E\u0930","\u0936\u0941\u0915\u094D\u0930\u0935\u093E\u0930","\u0936\u0928\u093F\u0935\u093E\u0930"],daysShort:["\u0938\u0942\u0930\u094D\u092F","\u0938\u094B\u092E","\u092E\u0902\u0917\u0932","\u092C\u0941\u0927","\u0917\u0941\u0930\u0941","\u0936\u0941\u0915\u094D\u0930","\u0936\u0928\u093F"],daysMin:["\u0930","\u0938\u094B","\u092E\u0902","\u092C\u0941","\u0917\u0941","\u0936\u0941","\u0936"],months:["\u091C\u0928\u0935\u0930\u0940","\u092B\u093C\u0930\u0935\u0930\u0940","\u092E\u093E\u0930\u094D\u091A","\u0905\u092A\u094D\u0930\u0948\u0932","\u092E\u0908","\u091C\u0942\u0928","\u091C\u0941\u0932\u093E\u0908","\u0905\u0917\u0938\u094D\u0924","\u0938\u093F\u0924\u092E\u094D\u092C\u0930","\u0905\u0915\u094D\u091F\u0942\u092C\u0930","\u0928\u0935\u0902\u092C\u0930","\u0926\u093F\u0938\u092E\u094D\u092C\u0930"],monthsShort:["\u091C\u0928","\u092B\u093C\u0930\u0935\u0930\u0940","\u092E\u093E\u0930\u094D\u091A","\u0905\u092A\u094D\u0930\u0948\u0932","\u092E\u0908","\u091C\u0942\u0928","\u091C\u0941\u0932\u093E\u0908","\u0905\u0917\u0938\u094D\u0924","\u0938\u093F\u0924\u0902","\u0905\u0915\u094D\u091F\u0942\u092C\u0930","\u0928\u0935\u0902","\u0926\u093F\u0938\u092E\u094D\u092C\u0930"],today:"\u0906\u091C",monthsTitle:"\u092E\u0939\u0940\u0928\u0947",clear:"\u0938\u093E\u092B",weekStart:1,format:"dd / mm / yyyy"}})(jQuery)});var je=s(function(){(function(t){t.fn.datepicker.dates.hr={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","\u010Cetvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sri","\u010Cet","Pet","Sub"],daysMin:["Ne","Po","Ut","Sr","\u010Ce","Pe","Su"],months:["Sije\u010Danj","Velja\u010Da","O\u017Eujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],monthsShort:["Sij","Velj","O\u017Eu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],today:"Danas"}})(jQuery)});var Ae=s(function(){(function(t){t.fn.datepicker.dates.hu={days:["vas\xE1rnap","h\xE9tf\u0151","kedd","szerda","cs\xFCt\xF6rt\xF6k","p\xE9ntek","szombat"],daysShort:["vas","h\xE9t","ked","sze","cs\xFC","p\xE9n","szo"],daysMin:["V","H","K","Sze","Cs","P","Szo"],months:["janu\xE1r","febru\xE1r","m\xE1rcius","\xE1prilis","m\xE1jus","j\xFAnius","j\xFAlius","augusztus","szeptember","okt\xF3ber","november","december"],monthsShort:["jan","feb","m\xE1r","\xE1pr","m\xE1j","j\xFAn","j\xFAl","aug","sze","okt","nov","dec"],today:"ma",weekStart:1,clear:"t\xF6r\xF6l",titleFormat:"yyyy. MM",format:"yyyy.mm.dd"}})(jQuery)});var Ce=s(function(){(function(t){t.fn.datepicker.dates.hy={days:["\u053F\u056B\u0580\u0561\u056F\u056B","\u0535\u0580\u056F\u0578\u0582\u0577\u0561\u0562\u0569\u056B","\u0535\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056B","\u0549\u0578\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056B","\u0540\u056B\u0576\u0563\u0577\u0561\u0562\u0569\u056B","\u0548\u0582\u0580\u0562\u0561\u0569","\u0547\u0561\u0562\u0561\u0569"],daysShort:["\u053F\u056B\u0580","\u0535\u0580\u056F","\u0535\u0580\u0565","\u0549\u0578\u0580","\u0540\u056B\u0576","\u0548\u0582\u0580\u0562","\u0547\u0561\u0562"],daysMin:["\u053F\u056B","\u0535\u056F","\u0535\u0584","\u0549\u0578","\u0540\u056B","\u0548\u0582","\u0547\u0561"],months:["\u0540\u0578\u0582\u0576\u057E\u0561\u0580","\u0553\u0565\u057F\u0580\u057E\u0561\u0580","\u0544\u0561\u0580\u057F","\u0531\u057A\u0580\u056B\u056C","\u0544\u0561\u0575\u056B\u057D","\u0540\u0578\u0582\u0576\u056B\u057D","\u0540\u0578\u0582\u056C\u056B\u057D","\u0555\u0563\u0578\u057D\u057F\u0578\u057D","\u054D\u0565\u057A\u057F\u0565\u0574\u0562\u0565\u0580","\u0540\u0578\u056F\u057F\u0565\u0574\u0562\u0565\u0580","\u0546\u0578\u0575\u0565\u0574\u0562\u0565\u0580","\u0534\u0565\u056F\u057F\u0565\u0574\u0562\u0565\u0580"],monthsShort:["\u0540\u0576\u057E","\u0553\u0565\u057F","\u0544\u0561\u0580","\u0531\u057A\u0580","\u0544\u0561\u0575","\u0540\u0578\u0582\u0576","\u0540\u0578\u0582\u056C","\u0555\u0563\u057D","\u054D\u0565\u057A","\u0540\u0578\u056F","\u0546\u0578\u0575","\u0534\u0565\u056F"],today:"\u0531\u0575\u057D\u0585\u0580",clear:"\u054B\u0576\u057B\u0565\u056C",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"\u0531\u0574\u056B\u057D\u0576\u0567\u0580"}})(jQuery)});var Je=s(function(){(function(t){t.fn.datepicker.dates.id={days:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],daysShort:["Mgu","Sen","Sel","Rab","Kam","Jum","Sab"],daysMin:["Mg","Sn","Sl","Ra","Ka","Ju","Sa"],months:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Ags","Sep","Okt","Nov","Des"],today:"Hari Ini",clear:"Kosongkan"}})(jQuery)});var _e=s(function(){(function(t){t.fn.datepicker.dates.is={days:["Sunnudagur","M\xE1nudagur","\xDEri\xF0judagur","Mi\xF0vikudagur","Fimmtudagur","F\xF6studagur","Laugardagur"],daysShort:["Sun","M\xE1n","\xDEri","Mi\xF0","Fim","F\xF6s","Lau"],daysMin:["Su","M\xE1","\xDEr","Mi","Fi","F\xF6","La"],months:["Jan\xFAar","Febr\xFAar","Mars","Apr\xEDl","Ma\xED","J\xFAn\xED","J\xFAl\xED","\xC1g\xFAst","September","Okt\xF3ber","N\xF3vember","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Ma\xED","J\xFAn","J\xFAl","\xC1g\xFA","Sep","Okt","N\xF3v","Des"],today:"\xCD Dag"}})(jQuery)});var Fe=s(function(){(function(t){t.fn.datepicker.dates.it={days:["Domenica","Luned\xEC","Marted\xEC","Mercoled\xEC","Gioved\xEC","Venerd\xEC","Sabato"],daysShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],daysMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthsShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],today:"Oggi",clear:"Cancella",weekStart:1,format:"dd.mm.yyyy"}})(jQuery)});var Ne=s(function(){(function(t){t.fn.datepicker.dates.it={days:["Domenica","Luned\xEC","Marted\xEC","Mercoled\xEC","Gioved\xEC","Venerd\xEC","Sabato"],daysShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],daysMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthsShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],today:"Oggi",monthsTitle:"Mesi",clear:"Cancella",weekStart:1,format:"dd/mm/yyyy"}})(jQuery)});var Oe=s(function(){(function(t){t.fn.datepicker.dates.ja={days:["\u65E5\u66DC","\u6708\u66DC","\u706B\u66DC","\u6C34\u66DC","\u6728\u66DC","\u91D1\u66DC","\u571F\u66DC"],daysShort:["\u65E5","\u6708","\u706B","\u6C34","\u6728","\u91D1","\u571F"],daysMin:["\u65E5","\u6708","\u706B","\u6C34","\u6728","\u91D1","\u571F"],months:["1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"],monthsShort:["1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"],today:"\u4ECA\u65E5",format:"yyyy/mm/dd",titleFormat:"yyyy\u5E74mm\u6708",clear:"\u30AF\u30EA\u30A2"}})(jQuery)});var Ue=s(function(){(function(t){t.fn.datepicker.dates.ka={days:["\u10D9\u10D5\u10D8\u10E0\u10D0","\u10DD\u10E0\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8","\u10E1\u10D0\u10DB\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8","\u10DD\u10D7\u10EE\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8","\u10EE\u10E3\u10D7\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8","\u10DE\u10D0\u10E0\u10D0\u10E1\u10D9\u10D4\u10D5\u10D8","\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8"],daysShort:["\u10D9\u10D5\u10D8","\u10DD\u10E0\u10E8","\u10E1\u10D0\u10DB","\u10DD\u10D7\u10EE","\u10EE\u10E3\u10D7","\u10DE\u10D0\u10E0","\u10E8\u10D0\u10D1"],daysMin:["\u10D9\u10D5","\u10DD\u10E0","\u10E1\u10D0","\u10DD\u10D7","\u10EE\u10E3","\u10DE\u10D0","\u10E8\u10D0"],months:["\u10D8\u10D0\u10DC\u10D5\u10D0\u10E0\u10D8","\u10D7\u10D4\u10D1\u10D4\u10E0\u10D5\u10D0\u10DA\u10D8","\u10DB\u10D0\u10E0\u10E2\u10D8","\u10D0\u10DE\u10E0\u10D8\u10DA\u10D8","\u10DB\u10D0\u10D8\u10E1\u10D8","\u10D8\u10D5\u10DC\u10D8\u10E1\u10D8","\u10D8\u10D5\u10DA\u10D8\u10E1\u10D8","\u10D0\u10D2\u10D5\u10D8\u10E1\u10E2\u10DD","\u10E1\u10D4\u10E5\u10E2\u10D4\u10DB\u10D1\u10D4\u10E0\u10D8","\u10DD\u10E5\u10E2\u10DD\u10DB\u10D1\u10D4\u10E0\u10D8","\u10DC\u10DD\u10D4\u10DB\u10D1\u10D4\u10E0\u10D8","\u10D3\u10D4\u10D9\u10D4\u10DB\u10D1\u10D4\u10E0\u10D8"],monthsShort:["\u10D8\u10D0\u10DC","\u10D7\u10D4\u10D1","\u10DB\u10D0\u10E0","\u10D0\u10DE\u10E0","\u10DB\u10D0\u10D8","\u10D8\u10D5\u10DC","\u10D8\u10D5\u10DA","\u10D0\u10D2\u10D5","\u10E1\u10D4\u10E5","\u10DD\u10E5\u10E2","\u10DC\u10DD\u10D4","\u10D3\u10D4\u10D9"],today:"\u10D3\u10E6\u10D4\u10E1",clear:"\u10D2\u10D0\u10E1\u10E3\u10E4\u10D7\u10D0\u10D5\u10D4\u10D1\u10D0",weekStart:1,format:"dd.mm.yyyy"}})(jQuery)});var ze=s(function(){(function(t){t.fn.datepicker.dates.kh={days:["\u17A2\u17B6\u1791\u17B7\u178F\u17D2\u1799","\u1785\u1793\u17D2\u1791","\u17A2\u1784\u17D2\u1782\u17B6\u179A","\u1796\u17BB\u1792","\u1796\u17D2\u179A\u17A0\u179F\u17D2\u1794\u178F\u17B7\u17CD","\u179F\u17BB\u1780\u17D2\u179A","\u179F\u17C5\u179A\u17CD"],daysShort:["\u17A2\u17B6.\u1791\u17B7","\u1785\u1793\u17D2\u1791","\u17A2\u1784\u17D2\u1782\u17B6\u179A","\u1796\u17BB\u1792","\u1796\u17D2\u179A.\u17A0","\u179F\u17BB\u1780\u17D2\u179A","\u179F\u17C5\u179A\u17CD"],daysMin:["\u17A2\u17B6.\u1791\u17B7","\u1785\u1793\u17D2\u1791","\u17A2\u1784\u17D2\u1782\u17B6\u179A","\u1796\u17BB\u1792","\u1796\u17D2\u179A.\u17A0","\u179F\u17BB\u1780\u17D2\u179A","\u179F\u17C5\u179A\u17CD"],months:["\u1798\u1780\u179A\u17B6","\u1780\u17BB\u1798\u17D2\u1797\u17C7","\u1798\u17B7\u1793\u17B6","\u1798\u17C1\u179F\u17B6","\u17A7\u179F\u1797\u17B6","\u1798\u17B7\u1790\u17BB\u1793\u17B6","\u1780\u1780\u17D2\u1780\u178A\u17B6","\u179F\u17B8\u17A0\u17B6","\u1780\u1789\u17D2\u1789\u17B6","\u178F\u17BB\u179B\u17B6","\u179C\u17B7\u1785\u17D2\u1786\u17B7\u1780\u17B6","\u1792\u17D2\u1793\u17BC"],monthsShort:["\u1798\u1780\u179A\u17B6","\u1780\u17BB\u1798\u17D2\u1797\u17C7","\u1798\u17B7\u1793\u17B6","\u1798\u17C1\u179F\u17B6","\u17A7\u179F\u1797\u17B6","\u1798\u17B7\u1790\u17BB\u1793\u17B6","\u1780\u1780\u17D2\u1780\u178A\u17B6","\u179F\u17B8\u17A0\u17B6","\u1780\u1789\u17D2\u1789\u17B6","\u178F\u17BB\u179B\u17B6","\u179C\u17B7\u1785\u17D2\u1786\u17B7\u1780\u17B6","\u1792\u17D2\u1793\u17BC"],today:"\u1790\u17D2\u1784\u17C3\u1793\u17C1\u17C7",clear:"\u179F\u17C6\u17A2\u17B6\u178F"},t.fn.datepicker.deprecated('The language code "kh" is deprecated and will be removed in 2.0. For Khmer support use "km" instead.')})(jQuery)});var Pe=s(function(){(function(t){t.fn.datepicker.dates.kk={days:["\u0416\u0435\u043A\u0441\u0435\u043D\u0431\u0456","\u0414\u04AF\u0439\u0441\u0435\u043D\u0431\u0456","\u0421\u0435\u0439\u0441\u0435\u043D\u0431\u0456","\u0421\u04D9\u0440\u0441\u0435\u043D\u0431\u0456","\u0411\u0435\u0439\u0441\u0435\u043D\u0431\u0456","\u0416\u04B1\u043C\u0430","\u0421\u0435\u043D\u0431\u0456"],daysShort:["\u0416\u0435\u043A","\u0414\u04AF\u0439","\u0421\u0435\u0439","\u0421\u04D9\u0440","\u0411\u0435\u0439","\u0416\u04B1\u043C","\u0421\u0435\u043D"],daysMin:["\u0416\u043A","\u0414\u0441","\u0421\u0441","\u0421\u0440","\u0411\u0441","\u0416\u043C","\u0421\u043D"],months:["\u049A\u0430\u04A3\u0442\u0430\u0440","\u0410\u049B\u043F\u0430\u043D","\u041D\u0430\u0443\u0440\u044B\u0437","\u0421\u04D9\u0443\u0456\u0440","\u041C\u0430\u043C\u044B\u0440","\u041C\u0430\u0443\u0441\u044B\u043C","\u0428\u0456\u043B\u0434\u0435","\u0422\u0430\u043C\u044B\u0437","\u049A\u044B\u0440\u043A\u04AF\u0439\u0435\u043A","\u049A\u0430\u0437\u0430\u043D","\u049A\u0430\u0440\u0430\u0448\u0430","\u0416\u0435\u043B\u0442\u043E\u049B\u0441\u0430\u043D"],monthsShort:["\u049A\u0430\u04A3","\u0410\u049B\u043F","\u041D\u0430\u0443","\u0421\u04D9\u0443","\u041C\u0430\u043C","\u041C\u0430\u0443","\u0428\u0456\u043B","\u0422\u0430\u043C","\u049A\u044B\u0440","\u049A\u0430\u0437","\u049A\u0430\u0440","\u0416\u0435\u043B"],today:"\u0411\u04AF\u0433\u0456\u043D",weekStart:1}})(jQuery)});var Qe=s(function(){(function(t){t.fn.datepicker.dates.km={days:["\u17A2\u17B6\u1791\u17B7\u178F\u17D2\u1799","\u1785\u1793\u17D2\u1791","\u17A2\u1784\u17D2\u1782\u17B6\u179A","\u1796\u17BB\u1792","\u1796\u17D2\u179A\u17A0\u179F\u17D2\u1794\u178F\u17B7\u17CD","\u179F\u17BB\u1780\u17D2\u179A","\u179F\u17C5\u179A\u17CD"],daysShort:["\u17A2\u17B6.\u1791\u17B7","\u1785\u1793\u17D2\u1791","\u17A2\u1784\u17D2\u1782\u17B6\u179A","\u1796\u17BB\u1792","\u1796\u17D2\u179A.\u17A0","\u179F\u17BB\u1780\u17D2\u179A","\u179F\u17C5\u179A\u17CD"],daysMin:["\u17A2\u17B6.\u1791\u17B7","\u1785\u1793\u17D2\u1791","\u17A2\u1784\u17D2\u1782\u17B6\u179A","\u1796\u17BB\u1792","\u1796\u17D2\u179A.\u17A0","\u179F\u17BB\u1780\u17D2\u179A","\u179F\u17C5\u179A\u17CD"],months:["\u1798\u1780\u179A\u17B6","\u1780\u17BB\u1798\u17D2\u1797\u17C7","\u1798\u17B7\u1793\u17B6","\u1798\u17C1\u179F\u17B6","\u17A7\u179F\u1797\u17B6","\u1798\u17B7\u1790\u17BB\u1793\u17B6","\u1780\u1780\u17D2\u1780\u178A\u17B6","\u179F\u17B8\u17A0\u17B6","\u1780\u1789\u17D2\u1789\u17B6","\u178F\u17BB\u179B\u17B6","\u179C\u17B7\u1785\u17D2\u1786\u17B7\u1780\u17B6","\u1792\u17D2\u1793\u17BC"],monthsShort:["\u1798\u1780\u179A\u17B6","\u1780\u17BB\u1798\u17D2\u1797\u17C7","\u1798\u17B7\u1793\u17B6","\u1798\u17C1\u179F\u17B6","\u17A7\u179F\u1797\u17B6","\u1798\u17B7\u1790\u17BB\u1793\u17B6","\u1780\u1780\u17D2\u1780\u178A\u17B6","\u179F\u17B8\u17A0\u17B6","\u1780\u1789\u17D2\u1789\u17B6","\u178F\u17BB\u179B\u17B6","\u179C\u17B7\u1785\u17D2\u1786\u17B7\u1780\u17B6","\u1792\u17D2\u1793\u17BC"],today:"\u1790\u17D2\u1784\u17C3\u1793\u17C1\u17C7",clear:"\u179F\u17C6\u17A2\u17B6\u178F"}})(jQuery)});var qe=s(function(){(function(t){t.fn.datepicker.dates.ko={days:["\uC77C\uC694\uC77C","\uC6D4\uC694\uC77C","\uD654\uC694\uC77C","\uC218\uC694\uC77C","\uBAA9\uC694\uC77C","\uAE08\uC694\uC77C","\uD1A0\uC694\uC77C"],daysShort:["\uC77C","\uC6D4","\uD654","\uC218","\uBAA9","\uAE08","\uD1A0"],daysMin:["\uC77C","\uC6D4","\uD654","\uC218","\uBAA9","\uAE08","\uD1A0"],months:["1\uC6D4","2\uC6D4","3\uC6D4","4\uC6D4","5\uC6D4","6\uC6D4","7\uC6D4","8\uC6D4","9\uC6D4","10\uC6D4","11\uC6D4","12\uC6D4"],monthsShort:["1\uC6D4","2\uC6D4","3\uC6D4","4\uC6D4","5\uC6D4","6\uC6D4","7\uC6D4","8\uC6D4","9\uC6D4","10\uC6D4","11\uC6D4","12\uC6D4"],today:"\uC624\uB298",clear:"\uC0AD\uC81C",format:"yyyy-mm-dd",titleFormat:"yyyy\uB144mm\uC6D4",weekStart:0}})(jQuery)});var Ve=s(function(){(function(t){t.fn.datepicker.dates.kr={days:["\uC77C\uC694\uC77C","\uC6D4\uC694\uC77C","\uD654\uC694\uC77C","\uC218\uC694\uC77C","\uBAA9\uC694\uC77C","\uAE08\uC694\uC77C","\uD1A0\uC694\uC77C"],daysShort:["\uC77C","\uC6D4","\uD654","\uC218","\uBAA9","\uAE08","\uD1A0"],daysMin:["\uC77C","\uC6D4","\uD654","\uC218","\uBAA9","\uAE08","\uD1A0"],months:["1\uC6D4","2\uC6D4","3\uC6D4","4\uC6D4","5\uC6D4","6\uC6D4","7\uC6D4","8\uC6D4","9\uC6D4","10\uC6D4","11\uC6D4","12\uC6D4"],monthsShort:["1\uC6D4","2\uC6D4","3\uC6D4","4\uC6D4","5\uC6D4","6\uC6D4","7\uC6D4","8\uC6D4","9\uC6D4","10\uC6D4","11\uC6D4","12\uC6D4"]},t.fn.datepicker.deprecated('The language code "kr" is deprecated and will be removed in 2.0. For korean support use "ko" instead.')})(jQuery)});var Ie=s(function(){(function(t){t.fn.datepicker.dates.lt={days:["Sekmadienis","Pirmadienis","Antradienis","Tre\u010Diadienis","Ketvirtadienis","Penktadienis","\u0160e\u0161tadienis"],daysShort:["S","Pr","A","T","K","Pn","\u0160"],daysMin:["Sk","Pr","An","Tr","Ke","Pn","\u0160t"],months:["Sausis","Vasaris","Kovas","Balandis","Gegu\u017E\u0117","Bir\u017Eelis","Liepa","Rugpj\u016Btis","Rugs\u0117jis","Spalis","Lapkritis","Gruodis"],monthsShort:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rugp","Rugs","Spa","Lap","Gru"],today:"\u0160iandien",monthsTitle:"M\u0117nesiai",clear:"I\u0161valyti",weekStart:1,format:"yyyy-mm-dd"}})(jQuery)});var Ee=s(function(){(function(t){t.fn.datepicker.dates.lv={days:["Sv\u0113tdiena","Pirmdiena","Otrdiena","Tre\u0161diena","Ceturtdiena","Piektdiena","Sestdiena"],daysShort:["Sv","P","O","T","C","Pk","S"],daysMin:["Sv","Pr","Ot","Tr","Ce","Pk","Se"],months:["Janv\u0101ris","Febru\u0101ris","Marts","Apr\u012Blis","Maijs","J\u016Bnijs","J\u016Blijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],monthsShort:["Jan","Feb","Mar","Apr","Mai","J\u016Bn","J\u016Bl","Aug","Sep","Okt","Nov","Dec"],monthsTitle:"M\u0113ne\u0161i",today:"\u0160odien",clear:"Nodz\u0113st",weekStart:1}})(jQuery)});var xe=s(function(){(function(t){t.fn.datepicker.dates.me={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","\u010Cetvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sri","\u010Cet","Pet","Sub"],daysMin:["Ne","Po","Ut","Sr","\u010Ce","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,clear:"Izbri\u0161i",format:"dd.mm.yyyy"}})(jQuery)});var Le=s(function(){(function(t){t.fn.datepicker.dates.mk={days:["\u041D\u0435\u0434\u0435\u043B\u0430","\u041F\u043E\u043D\u0435\u0434\u0435\u043B\u043D\u0438\u043A","\u0412\u0442\u043E\u0440\u043D\u0438\u043A","\u0421\u0440\u0435\u0434\u0430","\u0427\u0435\u0442\u0432\u0440\u0442\u043E\u043A","\u041F\u0435\u0442\u043E\u043A","\u0421\u0430\u0431\u043E\u0442\u0430"],daysShort:["\u041D\u0435\u0434","\u041F\u043E\u043D","\u0412\u0442\u043E","\u0421\u0440\u0435","\u0427\u0435\u0442","\u041F\u0435\u0442","\u0421\u0430\u0431"],daysMin:["\u041D\u0435","\u041F\u043E","\u0412\u0442","\u0421\u0440","\u0427\u0435","\u041F\u0435","\u0421\u0430"],months:["\u0408\u0430\u043D\u0443\u0430\u0440\u0438","\u0424\u0435\u0432\u0440\u0443\u0430\u0440\u0438","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440\u0438\u043B","\u041C\u0430\u0458","\u0408\u0443\u043D\u0438","\u0408\u0443\u043B\u0438","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043F\u0442\u0435\u043C\u0432\u0440\u0438","\u041E\u043A\u0442\u043E\u043C\u0432\u0440\u0438","\u041D\u043E\u0435\u043C\u0432\u0440\u0438","\u0414\u0435\u043A\u0435\u043C\u0432\u0440\u0438"],monthsShort:["\u0408\u0430\u043D","\u0424\u0435\u0432","\u041C\u0430\u0440","\u0410\u043F\u0440","\u041C\u0430\u0458","\u0408\u0443\u043D","\u0408\u0443\u043B","\u0410\u0432\u0433","\u0421\u0435\u043F","\u041E\u043A\u0442","\u041D\u043E\u0435","\u0414\u0435\u043A"],today:"\u0414\u0435\u043D\u0435\u0441",format:"dd.mm.yyyy"}})(jQuery)});var We=s(function(){(function(t){t.fn.datepicker.dates.mn={days:["\u041D\u044F\u043C","\u0414\u0430\u0432\u0430\u0430","\u041C\u044F\u0433\u043C\u0430\u0440","\u041B\u0445\u0430\u0433\u0432\u0430","\u041F\u04AF\u0440\u044D\u0432","\u0411\u0430\u0430\u0441\u0430\u043D","\u0411\u044F\u043C\u0431\u0430"],daysShort:["\u041D\u044F\u043C","\u0414\u0430\u0432","\u041C\u044F\u0433","\u041B\u0445\u0430","\u041F\u04AF\u0440","\u0411\u0430\u0430","\u0411\u044F\u043C"],daysMin:["\u041D\u044F","\u0414\u0430","\u041C\u044F","\u041B\u0445","\u041F\u04AF","\u0411\u0430","\u0411\u044F"],months:["\u0425\u0443\u043B\u0433\u0430\u043D\u0430","\u04AE\u0445\u044D\u0440","\u0411\u0430\u0440","\u0422\u0443\u0443\u043B\u0430\u0439","\u041B\u0443\u0443","\u041C\u043E\u0433\u043E\u0439","\u041C\u043E\u0440\u044C","\u0425\u043E\u043D\u044C","\u0411\u0438\u0447","\u0422\u0430\u0445\u0438\u0430","\u041D\u043E\u0445\u043E\u0439","\u0413\u0430\u0445\u0430\u0439"],monthsShort:["\u0425\u0443\u043B","\u04AE\u0445\u044D","\u0411\u0430\u0440","\u0422\u0443\u0443","\u041B\u0443\u0443","\u041C\u043E\u0433","\u041C\u043E\u0440","\u0425\u043E\u043D","\u0411\u0438\u0447","\u0422\u0430\u0445","\u041D\u043E\u0445","\u0413\u0430\u0445"],today:"\u04E8\u043D\u04E9\u04E9\u0434\u04E9\u0440",clear:"\u0422\u043E\u0434\u043E\u0440\u0445\u043E\u0439",format:"yyyy.mm.dd",weekStart:1}})(jQuery)});var Ye=s(function(){(function(t){t.fn.datepicker.dates.ms={days:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],daysShort:["Aha","Isn","Sel","Rab","Kha","Jum","Sab"],daysMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],months:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],today:"Hari Ini",clear:"Bersihkan"}})(jQuery)});var Ge=s(function(){(function(t){t.fn.datepicker.dates["nl-BE"]={days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],daysShort:["zo","ma","di","wo","do","vr","za"],daysMin:["zo","ma","di","wo","do","vr","za"],months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthsShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],today:"Vandaag",monthsTitle:"Maanden",clear:"Leegmaken",weekStart:1,format:"dd/mm/yyyy"}})(jQuery)});var He=s(function(){(function(t){t.fn.datepicker.dates.nl={days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],daysShort:["zo","ma","di","wo","do","vr","za"],daysMin:["zo","ma","di","wo","do","vr","za"],months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthsShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],today:"Vandaag",monthsTitle:"Maanden",clear:"Wissen",weekStart:1,format:"dd-mm-yyyy"}})(jQuery)});var Ke=s(function(){(function(t){t.fn.datepicker.dates.no={days:["s\xF8ndag","mandag","tirsdag","onsdag","torsdag","fredag","l\xF8rdag"],daysShort:["s\xF8n","man","tir","ons","tor","fre","l\xF8r"],daysMin:["s\xF8","ma","ti","on","to","fr","l\xF8"],months:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthsShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],today:"i dag",monthsTitle:"M\xE5neder",clear:"Nullstill",weekStart:1,format:"dd.mm.yyyy"}})(jQuery)});var Be=s(function(){(function(t){t.fn.datepicker.dates.oc={days:["Dimenge","Diluns","Dimars","Dim\xE8cres","Dij\xF2us","Divendres","Dissabte"],daysShort:["Dim","Dil","Dmr","Dmc","Dij","Div","Dis"],daysMin:["dg","dl","dr","dc","dj","dv","ds"],months:["Geni\xE8r","Febri\xE8r","Mar\xE7","Abrial","Mai","Junh","Julhet","Agost","Setembre","Octobre","Novembre","Decembre"],monthsShort:["Gen","Feb","Mar","Abr","Mai","Jun","Jul","Ago","Set","Oct","Nov","Dec"],today:"U\xE8i",monthsTitle:"Meses",clear:"Escafar",weekStart:1,format:"dd/mm/yyyy"}})(jQuery)});var Re=s(function(){(function(t){t.fn.datepicker.dates.pl={days:["Niedziela","Poniedzia\u0142ek","Wtorek","\u015Aroda","Czwartek","Pi\u0105tek","Sobota"],daysShort:["Niedz.","Pon.","Wt.","\u015Ar.","Czw.","Pi\u0105t.","Sob."],daysMin:["Ndz.","Pn.","Wt.","\u015Ar.","Czw.","Pt.","Sob."],months:["Stycze\u0144","Luty","Marzec","Kwiecie\u0144","Maj","Czerwiec","Lipiec","Sierpie\u0144","Wrzesie\u0144","Pa\u017Adziernik","Listopad","Grudzie\u0144"],monthsShort:["Sty.","Lut.","Mar.","Kwi.","Maj","Cze.","Lip.","Sie.","Wrz.","Pa\u017A.","Lis.","Gru."],today:"Dzisiaj",weekStart:1,clear:"Wyczy\u015B\u0107",format:"dd.mm.yyyy"}})(jQuery)});var Ze=s(function(){(function(t){t.fn.datepicker.dates["pt-BR"]={days:["Domingo","Segunda","Ter\xE7a","Quarta","Quinta","Sexta","S\xE1bado"],daysShort:["Dom","Seg","Ter","Qua","Qui","Sex","S\xE1b"],daysMin:["Do","Se","Te","Qu","Qu","Se","Sa"],months:["Janeiro","Fevereiro","Mar\xE7o","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthsShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],today:"Hoje",monthsTitle:"Meses",clear:"Limpar",format:"dd/mm/yyyy"}})(jQuery)});var Xe=s(function(){(function(t){t.fn.datepicker.dates.pt={days:["Domingo","Segunda","Ter\xE7a","Quarta","Quinta","Sexta","S\xE1bado"],daysShort:["Dom","Seg","Ter","Qua","Qui","Sex","S\xE1b"],daysMin:["Do","Se","Te","Qu","Qu","Se","Sa"],months:["Janeiro","Fevereiro","Mar\xE7o","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthsShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],today:"Hoje",monthsTitle:"Meses",clear:"Limpar",format:"dd/mm/yyyy"}})(jQuery)});var $e=s(function(){(function(t){t.fn.datepicker.dates.ro={days:["Duminic\u0103","Luni","Mar\u0163i","Miercuri","Joi","Vineri","S\xE2mb\u0103t\u0103"],daysShort:["Dum","Lun","Mar","Mie","Joi","Vin","S\xE2m"],daysMin:["Du","Lu","Ma","Mi","Jo","Vi","S\xE2"],months:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthsShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],today:"Ast\u0103zi",clear:"\u0218terge",weekStart:1,format:"dd/mm/yyyy"}})(jQuery)});var et=s(function(){(function(t){t.fn.datepicker.dates["rs-latin"]={days:["Nedelja","Ponedeljak","Utorak","Sreda","\u010Cetvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sre","\u010Cet","Pet","Sub"],daysMin:["N","Po","U","Sr","\u010C","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"},t.fn.datepicker.deprecated('This language code "rs-latin" is deprecated (invalid serbian language code) and will be removed in 2.0. For Serbian latin support use "sr-latin" instead.')})(jQuery)});var tt=s(function(){(function(t){t.fn.datepicker.dates.rs={days:["\u041D\u0435\u0434\u0435\u0459\u0430","\u041F\u043E\u043D\u0435\u0434\u0435\u0459\u0430\u043A","\u0423\u0442\u043E\u0440\u0430\u043A","\u0421\u0440\u0435\u0434\u0430","\u0427\u0435\u0442\u0432\u0440\u0442\u0430\u043A","\u041F\u0435\u0442\u0430\u043A","\u0421\u0443\u0431\u043E\u0442\u0430"],daysShort:["\u041D\u0435\u0434","\u041F\u043E\u043D","\u0423\u0442\u043E","\u0421\u0440\u0435","\u0427\u0435\u0442","\u041F\u0435\u0442","\u0421\u0443\u0431"],daysMin:["\u041D","\u041F\u043E","\u0423","\u0421\u0440","\u0427","\u041F\u0435","\u0421\u0443"],months:["\u0408\u0430\u043D\u0443\u0430\u0440","\u0424\u0435\u0431\u0440\u0443\u0430\u0440","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440\u0438\u043B","\u041C\u0430\u0458","\u0408\u0443\u043D","\u0408\u0443\u043B","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043F\u0442\u0435\u043C\u0431\u0430\u0440","\u041E\u043A\u0442\u043E\u0431\u0430\u0440","\u041D\u043E\u0432\u0435\u043C\u0431\u0430\u0440","\u0414\u0435\u0446\u0435\u043C\u0431\u0430\u0440"],monthsShort:["\u0408\u0430\u043D","\u0424\u0435\u0431","\u041C\u0430\u0440","\u0410\u043F\u0440","\u041C\u0430\u0458","\u0408\u0443\u043D","\u0408\u0443\u043B","\u0410\u0432\u0433","\u0421\u0435\u043F","\u041E\u043A\u0442","\u041D\u043E\u0432","\u0414\u0435\u0446"],today:"\u0414\u0430\u043D\u0430\u0441",weekStart:1,format:"dd.mm.yyyy"},t.fn.datepicker.deprecated('This language code "rs" is deprecated (invalid serbian language code) and will be removed in 2.0. For Serbian support use "sr" instead.')})(jQuery)});var at=s(function(){(function(t){t.fn.datepicker.dates.ru={days:["\u0412\u043E\u0441\u043A\u0440\u0435\u0441\u0435\u043D\u044C\u0435","\u041F\u043E\u043D\u0435\u0434\u0435\u043B\u044C\u043D\u0438\u043A","\u0412\u0442\u043E\u0440\u043D\u0438\u043A","\u0421\u0440\u0435\u0434\u0430","\u0427\u0435\u0442\u0432\u0435\u0440\u0433","\u041F\u044F\u0442\u043D\u0438\u0446\u0430","\u0421\u0443\u0431\u0431\u043E\u0442\u0430"],daysShort:["\u0412\u0441\u043A","\u041F\u043D\u0434","\u0412\u0442\u0440","\u0421\u0440\u0434","\u0427\u0442\u0432","\u041F\u0442\u043D","\u0421\u0443\u0431"],daysMin:["\u0412\u0441","\u041F\u043D","\u0412\u0442","\u0421\u0440","\u0427\u0442","\u041F\u0442","\u0421\u0431"],months:["\u042F\u043D\u0432\u0430\u0440\u044C","\u0424\u0435\u0432\u0440\u0430\u043B\u044C","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440\u0435\u043B\u044C","\u041C\u0430\u0439","\u0418\u044E\u043D\u044C","\u0418\u044E\u043B\u044C","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043D\u0442\u044F\u0431\u0440\u044C","\u041E\u043A\u0442\u044F\u0431\u0440\u044C","\u041D\u043E\u044F\u0431\u0440\u044C","\u0414\u0435\u043A\u0430\u0431\u0440\u044C"],monthsShort:["\u042F\u043D\u0432","\u0424\u0435\u0432","\u041C\u0430\u0440","\u0410\u043F\u0440","\u041C\u0430\u0439","\u0418\u044E\u043D","\u0418\u044E\u043B","\u0410\u0432\u0433","\u0421\u0435\u043D","\u041E\u043A\u0442","\u041D\u043E\u044F","\u0414\u0435\u043A"],today:"\u0421\u0435\u0433\u043E\u0434\u043D\u044F",clear:"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"\u041C\u0435\u0441\u044F\u0446\u044B"}})(jQuery)});var it=s(function(){(function(t){t.fn.datepicker.dates.si={days:["\u0D89\u0DBB\u0DD2\u0DAF\u0DCF","\u0DC3\u0DB3\u0DD4\u0DAF\u0DCF","\u0D85\u0D9F\u0DC4\u0DBB\u0DD4\u0DC0\u0DCF\u0DAF\u0DCF","\u0DB6\u0DAF\u0DCF\u0DAF\u0DCF","\u0DB6\u0DCA\u200D\u0DBB\u0DC4\u0DC3\u0DCA\u0DB4\u0DAD\u0DD2\u0DB1\u0DCA\u0DAF\u0DCF","\u0DC3\u0DD2\u0D9A\u0DD4\u0DBB\u0DCF\u0DAF\u0DCF","\u0DC3\u0DD9\u0DB1\u0DC3\u0DD4\u0DBB\u0DCF\u0DAF\u0DCF"],daysShort:["\u0D89\u0DBB\u0DD2","\u0DC3\u0DB3\u0DD4","\u0D85\u0D9F","\u0DB6\u0DAF\u0DCF","\u0DB6\u0DCA\u200D\u0DBB\u0DC4","\u0DC3\u0DD2\u0D9A\u0DD4","\u0DC3\u0DD9\u0DB1"],daysMin:["\u0D89","\u0DC3","\u0D85","\u0DB6","\u0DB6\u0DCA\u200D\u0DBB","\u0DC3\u0DD2","\u0DC3\u0DD9"],months:["\u0DA2\u0DB1\u0DC0\u0DCF\u0DBB\u0DD2","\u0DB4\u0DD9\u0DB6\u0DBB\u0DC0\u0DCF\u0DBB\u0DD2","\u0DB8\u0DCF\u0DBB\u0DCA\u0DAD\u0DD4","\u0D85\u0DB4\u0DCA\u200D\u0DBB\u0DDA\u0DBD\u0DCA","\u0DB8\u0DD0\u0DBA\u0DD2","\u0DA2\u0DD4\u0DB1\u0DD2","\u0DA2\u0DD6\u0DBD\u0DD2","\u0D85\u0D9C\u0DDD\u0DC3\u0DCA\u0DAD\u0DD4","\u0DC3\u0DD0\u0DB4\u0DCA\u0DAD\u0DD0\u0DB8\u0DCA\u0DB6\u0DBB\u0DCA","\u0D94\u0D9A\u0DCA\u0DAD\u0DDD\u0DB6\u0DBB\u0DCA","\u0DB1\u0DDC\u0DC0\u0DD0\u0DB8\u0DCA\u0DB6\u0DBB\u0DCA","\u0DAF\u0DD9\u0DC3\u0DD0\u0DB8\u0DCA\u0DB6\u0DBB\u0DCA"],monthsShort:["\u0DA2\u0DB1","\u0DB4\u0DD9\u0DB6","\u0DB8\u0DCF\u0DBB\u0DCA","\u0D85\u0DB4\u0DCA\u200D\u0DBB\u0DDA","\u0DB8\u0DD0\u0DBA\u0DD2","\u0DA2\u0DD4\u0DB1\u0DD2","\u0DA2\u0DD6\u0DBD\u0DD2","\u0D85\u0D9C\u0DDD","\u0DC3\u0DD0\u0DB4\u0DCA","\u0D94\u0D9A\u0DCA","\u0DB1\u0DDC\u0DC0\u0DD0","\u0DAF\u0DD9\u0DC3\u0DD0"],today:"\u0D85\u0DAF",monthsTitle:"\u0DB8\u0DCF\u0DC3",clear:"\u0DB8\u0D9A\u0DB1\u0DCA\u0DB1",weekStart:0,format:"yyyy-mm-dd"}})(jQuery)});var rt=s(function(){(function(t){t.fn.datepicker.dates.sk={days:["Nede\u013Ea","Pondelok","Utorok","Streda","\u0160tvrtok","Piatok","Sobota"],daysShort:["Ned","Pon","Uto","Str","\u0160tv","Pia","Sob"],daysMin:["Ne","Po","Ut","St","\u0160t","Pia","So"],months:["Janu\xE1r","Febru\xE1r","Marec","Apr\xEDl","M\xE1j","J\xFAn","J\xFAl","August","September","Okt\xF3ber","November","December"],monthsShort:["Jan","Feb","Mar","Apr","M\xE1j","J\xFAn","J\xFAl","Aug","Sep","Okt","Nov","Dec"],today:"Dnes",clear:"Vymaza\u0165",weekStart:1,format:"d.m.yyyy"}})(jQuery)});var st=s(function(){(function(t){t.fn.datepicker.dates.sl={days:["Nedelja","Ponedeljek","Torek","Sreda","\u010Cetrtek","Petek","Sobota"],daysShort:["Ned","Pon","Tor","Sre","\u010Cet","Pet","Sob"],daysMin:["Ne","Po","To","Sr","\u010Ce","Pe","So"],months:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danes",weekStart:1}})(jQuery)});var ot=s(function(){(function(t){t.fn.datepicker.dates.sq={days:["E Diel","E H\xEBn\xEB","E Mart\u0113","E M\xEBrkur\xEB","E Enjte","E Premte","E Shtun\xEB"],daysShort:["Die","H\xEBn","Mar","M\xEBr","Enj","Pre","Shtu"],daysMin:["Di","H\xEB","Ma","M\xEB","En","Pr","Sht"],months:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","N\xEBntor","Dhjetor"],monthsShort:["Jan","Shk","Mar","Pri","Maj","Qer","Korr","Gu","Sht","Tet","N\xEBn","Dhjet"],monthsTitle:"Muaj",today:"Sot",weekStart:1,format:"dd/mm/yyyy",clear:"Pastro"}})(jQuery)});var nt=s(function(){(function(t){t.fn.datepicker.dates["sr-latin"]={days:["Nedelja","Ponedeljak","Utorak","Sreda","\u010Cetvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sre","\u010Cet","Pet","Sub"],daysMin:["N","Po","U","Sr","\u010C","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"}})(jQuery)});var dt=s(function(){(function(t){t.fn.datepicker.dates.sr={days:["\u041D\u0435\u0434\u0435\u0459\u0430","\u041F\u043E\u043D\u0435\u0434\u0435\u0459\u0430\u043A","\u0423\u0442\u043E\u0440\u0430\u043A","\u0421\u0440\u0435\u0434\u0430","\u0427\u0435\u0442\u0432\u0440\u0442\u0430\u043A","\u041F\u0435\u0442\u0430\u043A","\u0421\u0443\u0431\u043E\u0442\u0430"],daysShort:["\u041D\u0435\u0434","\u041F\u043E\u043D","\u0423\u0442\u043E","\u0421\u0440\u0435","\u0427\u0435\u0442","\u041F\u0435\u0442","\u0421\u0443\u0431"],daysMin:["\u041D","\u041F\u043E","\u0423","\u0421\u0440","\u0427","\u041F\u0435","\u0421\u0443"],months:["\u0408\u0430\u043D\u0443\u0430\u0440","\u0424\u0435\u0431\u0440\u0443\u0430\u0440","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440\u0438\u043B","\u041C\u0430\u0458","\u0408\u0443\u043D","\u0408\u0443\u043B","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043F\u0442\u0435\u043C\u0431\u0430\u0440","\u041E\u043A\u0442\u043E\u0431\u0430\u0440","\u041D\u043E\u0432\u0435\u043C\u0431\u0430\u0440","\u0414\u0435\u0446\u0435\u043C\u0431\u0430\u0440"],monthsShort:["\u0408\u0430\u043D","\u0424\u0435\u0431","\u041C\u0430\u0440","\u0410\u043F\u0440","\u041C\u0430\u0458","\u0408\u0443\u043D","\u0408\u0443\u043B","\u0410\u0432\u0433","\u0421\u0435\u043F","\u041E\u043A\u0442","\u041D\u043E\u0432","\u0414\u0435\u0446"],today:"\u0414\u0430\u043D\u0430\u0441",weekStart:1,format:"dd.mm.yyyy"}})(jQuery)});var ut=s(function(){(function(t){t.fn.datepicker.dates.sv={days:["s\xF6ndag","m\xE5ndag","tisdag","onsdag","torsdag","fredag","l\xF6rdag"],daysShort:["s\xF6n","m\xE5n","tis","ons","tor","fre","l\xF6r"],daysMin:["s\xF6","m\xE5","ti","on","to","fr","l\xF6"],months:["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],monthsShort:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],today:"Idag",format:"yyyy-mm-dd",weekStart:1,clear:"Rensa"}})(jQuery)});var ht=s(function(){(function(t){t.fn.datepicker.dates.sw={days:["Jumapili","Jumatatu","Jumanne","Jumatano","Alhamisi","Ijumaa","Jumamosi"],daysShort:["J2","J3","J4","J5","Alh","Ij","J1"],daysMin:["2","3","4","5","A","I","1"],months:["Januari","Februari","Machi","Aprili","Mei","Juni","Julai","Agosti","Septemba","Oktoba","Novemba","Desemba"],monthsShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ago","Sep","Okt","Nov","Des"],today:"Leo"}})(jQuery)});var lt=s(function(){(function(t){t.fn.datepicker.dates.ta={days:["\u0B9E\u0BBE\u0BAF\u0BBF\u0BB1\u0BC1","\u0BA4\u0BBF\u0B99\u0BCD\u0B95\u0BB3\u0BCD","\u0B9A\u0BC6\u0BB5\u0BCD\u0BB5\u0BBE\u0BAF\u0BCD","\u0BAA\u0BC1\u0BA4\u0BA9\u0BCD","\u0BB5\u0BBF\u0BAF\u0BBE\u0BB4\u0BA9\u0BCD","\u0BB5\u0BC6\u0BB3\u0BCD\u0BB3\u0BBF","\u0B9A\u0BA9\u0BBF"],daysShort:["\u0B9E\u0BBE\u0BAF\u0BBF","\u0BA4\u0BBF\u0B99\u0BCD","\u0B9A\u0BC6\u0BB5\u0BCD","\u0BAA\u0BC1\u0BA4","\u0BB5\u0BBF\u0BAF\u0BBE","\u0BB5\u0BC6\u0BB3\u0BCD","\u0B9A\u0BA9\u0BBF"],daysMin:["\u0B9E\u0BBE","\u0BA4\u0BBF","\u0B9A\u0BC6","\u0BAA\u0BC1","\u0BB5\u0BBF","\u0BB5\u0BC6","\u0B9A"],months:["\u0B9C\u0BA9\u0BB5\u0BB0\u0BBF","\u0BAA\u0BBF\u0BAA\u0BCD\u0BB0\u0BB5\u0BB0\u0BBF","\u0BAE\u0BBE\u0BB0\u0BCD\u0B9A\u0BCD","\u0B8F\u0BAA\u0BCD\u0BB0\u0BB2\u0BCD","\u0BAE\u0BC7","\u0B9C\u0BC2\u0BA9\u0BCD","\u0B9C\u0BC2\u0BB2\u0BC8","\u0B86\u0B95\u0BB8\u0BCD\u0B9F\u0BC1","\u0B9A\u0BC6\u0BAA\u0BCD\u0B9F\u0BAE\u0BCD\u0BAA\u0BB0\u0BCD","\u0B85\u0B95\u0BCD\u0B9F\u0BCB\u0BAA\u0BB0\u0BCD","\u0BA8\u0BB5\u0BAE\u0BCD\u0BAA\u0BB0\u0BCD","\u0B9F\u0BBF\u0B9A\u0BAE\u0BCD\u0BAA\u0BB0\u0BCD"],monthsShort:["\u0B9C\u0BA9","\u0BAA\u0BBF\u0BAA\u0BCD","\u0BAE\u0BBE\u0BB0\u0BCD","\u0B8F\u0BAA\u0BCD","\u0BAE\u0BC7","\u0B9C\u0BC2\u0BA9\u0BCD","\u0B9C\u0BC2\u0BB2\u0BC8","\u0B86\u0B95","\u0B9A\u0BC6\u0BAA\u0BCD","\u0B85\u0B95\u0BCD","\u0BA8\u0BB5","\u0B9F\u0BBF\u0B9A"],today:"\u0B87\u0BA9\u0BCD\u0BB1\u0BC1",monthsTitle:"\u0BAE\u0BBE\u0BA4\u0B99\u0BCD\u0B95\u0BB3\u0BCD",clear:"\u0BA8\u0BC0\u0B95\u0BCD\u0B95\u0BC1",weekStart:1,format:"dd/mm/yyyy"}})(jQuery)});var ct=s(function(){(function(t){t.fn.datepicker.dates.tg={days:["\u042F\u043A\u0448\u0430\u043D\u0431\u0435","\u0414\u0443\u0448\u0430\u043D\u0431\u0435","\u0421\u0435\u0448\u0430\u043D\u0431\u0435","\u0427\u043E\u0440\u0448\u0430\u043D\u0431\u0435","\u041F\u0430\u043D\u04B7\u0448\u0430\u043D\u0431\u0435","\u04B6\u0443\u043C\u044A\u0430","\u0428\u0430\u043D\u0431\u0435"],daysShort:["\u042F\u0448\u0431","\u0414\u0448\u0431","\u0421\u0448\u0431","\u0427\u0448\u0431","\u041F\u0448\u0431","\u04B6\u0443\u043C","\u0428\u043D\u0431"],daysMin:["\u042F\u0448","\u0414\u0448","\u0421\u0448","\u0427\u0448","\u041F\u0448","\u04B6\u043C","\u0428\u0431"],months:["\u042F\u043D\u0432\u0430\u0440","\u0424\u0435\u0432\u0440\u0430\u043B","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440\u0435\u043B","\u041C\u0430\u0439","\u0418\u044E\u043D","\u0418\u044E\u043B","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043D\u0442\u044F\u0431\u0440","\u041E\u043A\u0442\u044F\u0431\u0440","\u041D\u043E\u044F\u0431\u0440","\u0414\u0435\u043A\u0430\u0431\u0440"],monthsShort:["\u042F\u043D\u0432","\u0424\u0435\u0432","\u041C\u0430\u0440","\u0410\u043F\u0440","\u041C\u0430\u0439","\u0418\u044E\u043D","\u0418\u044E\u043B","\u0410\u0432\u0433","\u0421\u0435\u043D","\u041E\u043A\u0442","\u041D\u043E\u044F","\u0414\u0435\u043A"],today:"\u0418\u043C\u0440\u04EF\u0437",monthsTitle:"\u041C\u043E\u04B3\u04B3\u043E",clear:"\u0422\u043E\u0437\u0430 \u043D\u0430\u043C\u0443\u0434\u0430\u043D",weekStart:1,format:"dd.mm.yyyy"}})(jQuery)});var yt=s(function(){(function(t){t.fn.datepicker.dates.th={days:["\u0E2D\u0E32\u0E17\u0E34\u0E15\u0E22\u0E4C","\u0E08\u0E31\u0E19\u0E17\u0E23\u0E4C","\u0E2D\u0E31\u0E07\u0E04\u0E32\u0E23","\u0E1E\u0E38\u0E18","\u0E1E\u0E24\u0E2B\u0E31\u0E2A","\u0E28\u0E38\u0E01\u0E23\u0E4C","\u0E40\u0E2A\u0E32\u0E23\u0E4C","\u0E2D\u0E32\u0E17\u0E34\u0E15\u0E22\u0E4C"],daysShort:["\u0E2D\u0E32","\u0E08","\u0E2D","\u0E1E","\u0E1E\u0E24","\u0E28","\u0E2A","\u0E2D\u0E32"],daysMin:["\u0E2D\u0E32","\u0E08","\u0E2D","\u0E1E","\u0E1E\u0E24","\u0E28","\u0E2A","\u0E2D\u0E32"],months:["\u0E21\u0E01\u0E23\u0E32\u0E04\u0E21","\u0E01\u0E38\u0E21\u0E20\u0E32\u0E1E\u0E31\u0E19\u0E18\u0E4C","\u0E21\u0E35\u0E19\u0E32\u0E04\u0E21","\u0E40\u0E21\u0E29\u0E32\u0E22\u0E19","\u0E1E\u0E24\u0E29\u0E20\u0E32\u0E04\u0E21","\u0E21\u0E34\u0E16\u0E38\u0E19\u0E32\u0E22\u0E19","\u0E01\u0E23\u0E01\u0E0E\u0E32\u0E04\u0E21","\u0E2A\u0E34\u0E07\u0E2B\u0E32\u0E04\u0E21","\u0E01\u0E31\u0E19\u0E22\u0E32\u0E22\u0E19","\u0E15\u0E38\u0E25\u0E32\u0E04\u0E21","\u0E1E\u0E24\u0E28\u0E08\u0E34\u0E01\u0E32\u0E22\u0E19","\u0E18\u0E31\u0E19\u0E27\u0E32\u0E04\u0E21"],monthsShort:["\u0E21.\u0E04.","\u0E01.\u0E1E.","\u0E21\u0E35.\u0E04.","\u0E40\u0E21.\u0E22.","\u0E1E.\u0E04.","\u0E21\u0E34.\u0E22.","\u0E01.\u0E04.","\u0E2A.\u0E04.","\u0E01.\u0E22.","\u0E15.\u0E04.","\u0E1E.\u0E22.","\u0E18.\u0E04."],today:"\u0E27\u0E31\u0E19\u0E19\u0E35\u0E49"}})(jQuery)});var mt=s(function(){(function(t){t.fn.datepicker.dates.tk={days:["\xDDek\u015Fenbe","Du\u015Fenbe","Si\u015Fenbe","\xC7ar\u015Fenbe","Pen\u015Fenbe","Anna","\u015Eenbe"],daysShort:["\xDDek","Du\u015F","Si\u015F","\xC7ar","Pen","Ann","\u015Een"],daysMin:["\xDDe","Du","Si","\xC7a","Pe","An","\u015Ee"],months:["\xDDanwar","Fewral","Mart","Aprel","Ma\xFD","I\xFDun","I\xFDul","Awgust","Sent\xFDabr","Okt\xFDabr","No\xFDabr","Dekabr"],monthsShort:["\xDDan","Few","Mar","Apr","Ma\xFD","I\xFDn","I\xFDl","Awg","Sen","Okt","No\xFD","Dek"],today:"Bu g\xFCn",monthsTitle:"A\xFDlar",clear:"A\xFDyr",weekStart:1,format:"dd.mm.yyyy"}})(jQuery)});var pt=s(function(){(function(t){t.fn.datepicker.dates.tr={days:["Pazar","Pazartesi","Sal\u0131","\xC7ar\u015Famba","Per\u015Fembe","Cuma","Cumartesi"],daysShort:["Pz","Pzt","Sal","\xC7r\u015F","Pr\u015F","Cu","Cts"],daysMin:["Pz","Pzt","Sa","\xC7r","Pr","Cu","Ct"],months:["Ocak","\u015Eubat","Mart","Nisan","May\u0131s","Haziran","Temmuz","A\u011Fustos","Eyl\xFCl","Ekim","Kas\u0131m","Aral\u0131k"],monthsShort:["Oca","\u015Eub","Mar","Nis","May","Haz","Tem","A\u011Fu","Eyl","Eki","Kas","Ara"],today:"Bug\xFCn",clear:"Temizle",weekStart:1,format:"dd.mm.yyyy"}})(jQuery)});var ft=s(function(){(function(t){t.fn.datepicker.dates.uk={days:["\u041D\u0435\u0434\u0456\u043B\u044F","\u041F\u043E\u043D\u0435\u0434\u0456\u043B\u043E\u043A","\u0412\u0456\u0432\u0442\u043E\u0440\u043E\u043A","\u0421\u0435\u0440\u0435\u0434\u0430","\u0427\u0435\u0442\u0432\u0435\u0440","\u041F'\u044F\u0442\u043D\u0438\u0446\u044F","\u0421\u0443\u0431\u043E\u0442\u0430"],daysShort:["\u041D\u0435\u0434","\u041F\u043D\u0434","\u0412\u0442\u0440","\u0421\u0440\u0434","\u0427\u0442\u0432","\u041F\u0442\u043D","\u0421\u0443\u0431"],daysMin:["\u041D\u0434","\u041F\u043D","\u0412\u0442","\u0421\u0440","\u0427\u0442","\u041F\u0442","\u0421\u0431"],months:["C\u0456\u0447\u0435\u043D\u044C","\u041B\u044E\u0442\u0438\u0439","\u0411\u0435\u0440\u0435\u0437\u0435\u043D\u044C","\u041A\u0432\u0456\u0442\u0435\u043D\u044C","\u0422\u0440\u0430\u0432\u0435\u043D\u044C","\u0427\u0435\u0440\u0432\u0435\u043D\u044C","\u041B\u0438\u043F\u0435\u043D\u044C","\u0421\u0435\u0440\u043F\u0435\u043D\u044C","\u0412\u0435\u0440\u0435\u0441\u0435\u043D\u044C","\u0416\u043E\u0432\u0442\u0435\u043D\u044C","\u041B\u0438\u0441\u0442\u043E\u043F\u0430\u0434","\u0413\u0440\u0443\u0434\u0435\u043D\u044C"],monthsShort:["\u0421\u0456\u0447","\u041B\u044E\u0442","\u0411\u0435\u0440","\u041A\u0432\u0456","\u0422\u0440\u0430","\u0427\u0435\u0440","\u041B\u0438\u043F","\u0421\u0435\u0440","\u0412\u0435\u0440","\u0416\u043E\u0432","\u041B\u0438\u0441","\u0413\u0440\u0443"],today:"\u0421\u044C\u043E\u0433\u043E\u0434\u043D\u0456",clear:"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u0438",format:"dd.mm.yyyy",weekStart:1}})(jQuery)});var kt=s(function(){(function(t){t.fn.datepicker.dates["uz-cyrl"]={days:["\u042F\u043A\u0448\u0430\u043D\u0431\u0430","\u0414\u0443\u0448\u0430\u043D\u0431\u0430","\u0421\u0435\u0448\u0430\u043D\u0431\u0430","\u0427\u043E\u0440\u0448\u0430\u043D\u0431\u0430","\u041F\u0430\u0439\u0448\u0430\u043D\u0431\u0430","\u0416\u0443\u043C\u0430","\u0428\u0430\u043D\u0431\u0430"],daysShort:["\u042F\u043A\u0448","\u0414\u0443","\u0421\u0435","\u0427\u043E\u0440","\u041F\u0430\u0439","\u0416\u0443","\u0428\u0430"],daysMin:["\u042F\u043A","\u0414\u0443","\u0421\u0435","\u0427\u043E","\u041F\u0430","\u0416\u0443","\u0428\u0430"],months:["\u042F\u043D\u0432\u0430\u0440\u044C","\u0424\u0435\u0432\u0440\u0430\u043B\u044C","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440\u0435\u043B\u044C","\u041C\u0430\u0439","\u0418\u044E\u043D\u044C","\u0418\u044E\u043B\u044C","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043D\u0442\u044F\u0431\u0440\u044C","\u041E\u043A\u0442\u044F\u0431\u0440\u044C","\u041D\u043E\u044F\u0431\u0440\u044C","\u0414\u0435\u043A\u0430\u0431\u0440\u044C"],monthsShort:["\u042F\u043D\u0432","\u0424\u0435\u0432","\u041C\u0430\u0440","\u0410\u043F\u0440","\u041C\u0430\u0439","\u0418\u044E\u043D","\u0418\u044E\u043B","\u0410\u0432\u0433","\u0421\u0435\u043D","\u041E\u043A\u0442","\u041D\u043E\u044F","\u0414\u0435\u043A"],today:"\u0411\u0443\u0433\u0443\u043D",clear:"\u040E\u0447\u0438\u0440\u0438\u0448",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"\u041E\u0439\u043B\u0430\u0440"}})(jQuery)});var gt=s(function(){(function(t){t.fn.datepicker.dates["uz-latn"]={days:["Yakshanba","Dushanba","Seshanba","Chorshanba","Payshanba","Juma","Shanba"],daysShort:["Yak","Du","Se","Chor","Pay","Ju","Sha"],daysMin:["Ya","Du","Se","Cho","Pa","Ju","Sha"],months:["Yanvar","Fevral","Mart","Aprel","May","Iyun","Iyul","Avgust","Sentabr","Oktabr","Noyabr","Dekabr"],monthsShort:["Yan","Fev","Mar","Apr","May","Iyn","Iyl","Avg","Sen","Okt","Noy","Dek"],today:"Bugun",clear:"O'chirish",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Oylar"}})(jQuery)});var bt=s(function(){(function(t){t.fn.datepicker.dates.vi={days:["Ch\u1EE7 nh\u1EADt","Th\u1EE9 hai","Th\u1EE9 ba","Th\u1EE9 t\u01B0","Th\u1EE9 n\u0103m","Th\u1EE9 s\xE1u","Th\u1EE9 b\u1EA3y"],daysShort:["CN","Th\u1EE9 2","Th\u1EE9 3","Th\u1EE9 4","Th\u1EE9 5","Th\u1EE9 6","Th\u1EE9 7"],daysMin:["CN","T2","T3","T4","T5","T6","T7"],months:["Th\xE1ng 1","Th\xE1ng 2","Th\xE1ng 3","Th\xE1ng 4","Th\xE1ng 5","Th\xE1ng 6","Th\xE1ng 7","Th\xE1ng 8","Th\xE1ng 9","Th\xE1ng 10","Th\xE1ng 11","Th\xE1ng 12"],monthsShort:["Th1","Th2","Th3","Th4","Th5","Th6","Th7","Th8","Th9","Th10","Th11","Th12"],today:"H\xF4m nay",clear:"X\xF3a",format:"dd/mm/yyyy"}})(jQuery)});var St=s(function(){(function(t){t.fn.datepicker.dates["zh-CN"]={days:["\u661F\u671F\u65E5","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D"],daysShort:["\u5468\u65E5","\u5468\u4E00","\u5468\u4E8C","\u5468\u4E09","\u5468\u56DB","\u5468\u4E94","\u5468\u516D"],daysMin:["\u65E5","\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D"],months:["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"],monthsShort:["1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"],today:"\u4ECA\u5929",monthsTitle:"\u9009\u62E9\u6708\u4EFD",clear:"\u6E05\u9664",format:"yyyy-mm-dd",titleFormat:"yyyy\u5E74mm\u6708",weekStart:1}})(jQuery)});var Mt=s(function(){(function(t){t.fn.datepicker.dates["zh-TW"]={days:["\u661F\u671F\u65E5","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D"],daysShort:["\u9031\u65E5","\u9031\u4E00","\u9031\u4E8C","\u9031\u4E09","\u9031\u56DB","\u9031\u4E94","\u9031\u516D"],daysMin:["\u65E5","\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D"],months:["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"],monthsShort:["1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"],today:"\u4ECA\u5929",format:"yyyy\u5E74mm\u6708dd\u65E5",weekStart:1,clear:"\u6E05\u9664"}})(jQuery)});G();H();K();B();R();Z();X();$();ee();te();ae();ie();re();se();oe();ne();de();ue();he();le();ce();ye();me();pe();fe();ke();ge();be();Se();Me();ve();De();we();Te();je();Ae();Ce();Je();_e();Fe();Ne();Oe();Ue();ze();Pe();Qe();qe();Ve();Ie();Ee();xe();Le();We();Ye();Ge();He();Ke();Be();Re();Ze();Xe();$e();et();tt();at();it();rt();st();ot();nt();dt();ut();ht();lt();ct();yt();mt();pt();ft();kt();gt();bt();St();Mt();})();
/*!
 * Datepicker for Bootstrap v1.9.0 (https://github.com/uxsolutions/bootstrap-datepicker)
 *
 * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
 */

shiny/www/shared/datepicker/js/bootstrap-datepicker.js METASEP
/*!
 * Datepicker for Bootstrap v1.9.0 (https://github.com/uxsolutions/bootstrap-datepicker)
 *
 * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
 */

(function(factory){
    if (typeof define === 'function' && define.amd) {
        define(['jquery'], factory);
    } else if (typeof exports === 'object') {
        factory(require('jquery'));
    } else {
        factory(jQuery);
    }
}(function($, undefined){
	function UTCDate(){
		return new Date(Date.UTC.apply(Date, arguments));
	}
	function UTCToday(){
		var today = new Date();
		return UTCDate(today.getFullYear(), today.getMonth(), today.getDate());
	}
	function isUTCEquals(date1, date2) {
		return (
			date1.getUTCFullYear() === date2.getUTCFullYear() &&
			date1.getUTCMonth() === date2.getUTCMonth() &&
			date1.getUTCDate() === date2.getUTCDate()
		);
	}
	function alias(method, deprecationMsg){
		return function(){
			if (deprecationMsg !== undefined) {
				$.fn.datepicker.deprecated(deprecationMsg);
			}

			return this[method].apply(this, arguments);
		};
	}
	function isValidDate(d) {
		return d && !isNaN(d.getTime());
	}

	var DateArray = (function(){
		var extras = {
			get: function(i){
				return this.slice(i)[0];
			},
			contains: function(d){
				// Array.indexOf is not cross-browser;
				// $.inArray doesn't work with Dates
				var val = d && d.valueOf();
				for (var i=0, l=this.length; i < l; i++)
          // Use date arithmetic to allow dates with different times to match
          if (0 <= this[i].valueOf() - val && this[i].valueOf() - val < 1000*60*60*24)
						return i;
				return -1;
			},
			remove: function(i){
				this.splice(i,1);
			},
			replace: function(new_array){
				if (!new_array)
					return;
				if (!$.isArray(new_array))
					new_array = [new_array];
				this.clear();
				this.push.apply(this, new_array);
			},
			clear: function(){
				this.length = 0;
			},
			copy: function(){
				var a = new DateArray();
				a.replace(this);
				return a;
			}
		};

		return function(){
			var a = [];
			a.push.apply(a, arguments);
			$.extend(a, extras);
			return a;
		};
	})();


	// Picker object

	var Datepicker = function(element, options){
		$.data(element, 'datepicker', this);

		this._events = [];
		this._secondaryEvents = [];

		this._process_options(options);

		this.dates = new DateArray();
		this.viewDate = this.o.defaultViewDate;
		this.focusDate = null;

		this.element = $(element);
		this.isInput = this.element.is('input');
		this.inputField = this.isInput ? this.element : this.element.find('input');
		this.component = this.element.hasClass('date') ? this.element.find('.add-on, .input-group-addon, .input-group-append, .input-group-prepend, .btn') : false;
		if (this.component && this.component.length === 0)
			this.component = false;
		this.isInline = !this.component && this.element.is('div');

		this.picker = $(DPGlobal.template);

		// Checking templates and inserting
		if (this._check_template(this.o.templates.leftArrow)) {
			this.picker.find('.prev').html(this.o.templates.leftArrow);
		}

		if (this._check_template(this.o.templates.rightArrow)) {
			this.picker.find('.next').html(this.o.templates.rightArrow);
		}

		this._buildEvents();
		this._attachEvents();

		if (this.isInline){
			this.picker.addClass('datepicker-inline').appendTo(this.element);
		}
		else {
			this.picker.addClass('datepicker-dropdown dropdown-menu');
		}

		if (this.o.rtl){
			this.picker.addClass('datepicker-rtl');
		}

		if (this.o.calendarWeeks) {
			this.picker.find('.datepicker-days .datepicker-switch, thead .datepicker-title, tfoot .today, tfoot .clear')
				.attr('colspan', function(i, val){
					return Number(val) + 1;
				});
		}

		this._process_options({
			startDate: this._o.startDate,
			endDate: this._o.endDate,
			daysOfWeekDisabled: this.o.daysOfWeekDisabled,
			daysOfWeekHighlighted: this.o.daysOfWeekHighlighted,
			datesDisabled: this.o.datesDisabled
		});

		this._allow_update = false;
		this.setViewMode(this.o.startView);
		this._allow_update = true;

		this.fillDow();
		this.fillMonths();

		this.update();

		if (this.isInline){
			this.show();
		}
	};

	Datepicker.prototype = {
		constructor: Datepicker,

		_resolveViewName: function(view){
			$.each(DPGlobal.viewModes, function(i, viewMode){
				if (view === i || $.inArray(view, viewMode.names) !== -1){
					view = i;
					return false;
				}
			});

			return view;
		},

		_resolveDaysOfWeek: function(daysOfWeek){
			if (!$.isArray(daysOfWeek))
				daysOfWeek = daysOfWeek.split(/[,\s]*/);
			return $.map(daysOfWeek, Number);
		},

		_check_template: function(tmp){
			try {
				// If empty
				if (tmp === undefined || tmp === "") {
					return false;
				}
				// If no html, everything ok
				if ((tmp.match(/[<>]/g) || []).length <= 0) {
					return true;
				}
				// Checking if html is fine
				var jDom = $(tmp);
				return jDom.length > 0;
			}
			catch (ex) {
				return false;
			}
		},

		_process_options: function(opts){
			// Store raw options for reference
			this._o = $.extend({}, this._o, opts);
			// Processed options
			var o = this.o = $.extend({}, this._o);

			// Check if "de-DE" style date is available, if not language should
			// fallback to 2 letter code eg "de"
			var lang = o.language;
			if (!dates[lang]){
				lang = lang.split('-')[0];
				if (!dates[lang])
					lang = defaults.language;
			}
			o.language = lang;

			// Retrieve view index from any aliases
			o.startView = this._resolveViewName(o.startView);
			o.minViewMode = this._resolveViewName(o.minViewMode);
			o.maxViewMode = this._resolveViewName(o.maxViewMode);

			// Check view is between min and max
			o.startView = Math.max(this.o.minViewMode, Math.min(this.o.maxViewMode, o.startView));

			// true, false, or Number > 0
			if (o.multidate !== true){
				o.multidate = Number(o.multidate) || false;
				if (o.multidate !== false)
					o.multidate = Math.max(0, o.multidate);
			}
			o.multidateSeparator = String(o.multidateSeparator);

			o.weekStart %= 7;
			o.weekEnd = (o.weekStart + 6) % 7;

			var format = DPGlobal.parseFormat(o.format);
			if (o.startDate !== -Infinity){
				if (!!o.startDate){
					if (o.startDate instanceof Date)
						o.startDate = this._local_to_utc(this._zero_time(o.startDate));
					else
						o.startDate = DPGlobal.parseDate(o.startDate, format, o.language, o.assumeNearbyYear);
				}
				else {
					o.startDate = -Infinity;
				}
			}
			if (o.endDate !== Infinity){
				if (!!o.endDate){
					if (o.endDate instanceof Date)
						o.endDate = this._local_to_utc(this._zero_time(o.endDate));
					else
						o.endDate = DPGlobal.parseDate(o.endDate, format, o.language, o.assumeNearbyYear);
				}
				else {
					o.endDate = Infinity;
				}
			}

			o.daysOfWeekDisabled = this._resolveDaysOfWeek(o.daysOfWeekDisabled||[]);
			o.daysOfWeekHighlighted = this._resolveDaysOfWeek(o.daysOfWeekHighlighted||[]);

			o.datesDisabled = o.datesDisabled||[];
			if (!$.isArray(o.datesDisabled)) {
				o.datesDisabled = o.datesDisabled.split(',');
			}
			o.datesDisabled = $.map(o.datesDisabled, function(d){
				return DPGlobal.parseDate(d, format, o.language, o.assumeNearbyYear);
			});

			var plc = String(o.orientation).toLowerCase().split(/\s+/g),
				_plc = o.orientation.toLowerCase();
			plc = $.grep(plc, function(word){
				return /^auto|left|right|top|bottom$/.test(word);
			});
			o.orientation = {x: 'auto', y: 'auto'};
			if (!_plc || _plc === 'auto')
				; // no action
			else if (plc.length === 1){
				switch (plc[0]){
					case 'top':
					case 'bottom':
						o.orientation.y = plc[0];
						break;
					case 'left':
					case 'right':
						o.orientation.x = plc[0];
						break;
				}
			}
			else {
				_plc = $.grep(plc, function(word){
					return /^left|right$/.test(word);
				});
				o.orientation.x = _plc[0] || 'auto';

				_plc = $.grep(plc, function(word){
					return /^top|bottom$/.test(word);
				});
				o.orientation.y = _plc[0] || 'auto';
			}
			if (o.defaultViewDate instanceof Date || typeof o.defaultViewDate === 'string') {
				o.defaultViewDate = DPGlobal.parseDate(o.defaultViewDate, format, o.language, o.assumeNearbyYear);
			} else if (o.defaultViewDate) {
				var year = o.defaultViewDate.year || new Date().getFullYear();
				var month = o.defaultViewDate.month || 0;
				var day = o.defaultViewDate.day || 1;
				o.defaultViewDate = UTCDate(year, month, day);
			} else {
				o.defaultViewDate = UTCToday();
			}
		},
		_applyEvents: function(evs){
			for (var i=0, el, ch, ev; i < evs.length; i++){
				el = evs[i][0];
				if (evs[i].length === 2){
					ch = undefined;
					ev = evs[i][1];
				} else if (evs[i].length === 3){
					ch = evs[i][1];
					ev = evs[i][2];
				}
				el.on(ev, ch);
			}
		},
		_unapplyEvents: function(evs){
			for (var i=0, el, ev, ch; i < evs.length; i++){
				el = evs[i][0];
				if (evs[i].length === 2){
					ch = undefined;
					ev = evs[i][1];
				} else if (evs[i].length === 3){
					ch = evs[i][1];
					ev = evs[i][2];
				}
				el.off(ev, ch);
			}
		},
		_buildEvents: function(){
            var events = {
                keyup: $.proxy(function(e){
                    if ($.inArray(e.keyCode, [27, 37, 39, 38, 40, 32, 13, 9]) === -1)
                        this.update();
                }, this),
                keydown: $.proxy(this.keydown, this),
                paste: $.proxy(this.paste, this)
            };

            if (this.o.showOnFocus === true) {
                events.focus = $.proxy(this.show, this);
            }

            if (this.isInput) { // single input
                this._events = [
                    [this.element, events]
                ];
            }
            // component: input + button
            else if (this.component && this.inputField.length) {
                this._events = [
                    // For components that are not readonly, allow keyboard nav
                    [this.inputField, events],
                    [this.component, {
                        click: $.proxy(this.show, this)
                    }]
                ];
            }
			else {
				this._events = [
					[this.element, {
						click: $.proxy(this.show, this),
						keydown: $.proxy(this.keydown, this)
					}]
				];
			}
			this._events.push(
				// Component: listen for blur on element descendants
				[this.element, '*', {
					blur: $.proxy(function(e){
						this._focused_from = e.target;
					}, this)
				}],
				// Input: listen for blur on element
				[this.element, {
					blur: $.proxy(function(e){
						this._focused_from = e.target;
					}, this)
				}]
			);

			if (this.o.immediateUpdates) {
				// Trigger input updates immediately on changed year/month
				this._events.push([this.element, {
					'changeYear changeMonth': $.proxy(function(e){
						this.update(e.date);
					}, this)
				}]);
			}

			this._secondaryEvents = [
				[this.picker, {
					click: $.proxy(this.click, this)
				}],
				[this.picker, '.prev, .next', {
					click: $.proxy(this.navArrowsClick, this)
				}],
				[this.picker, '.day:not(.disabled)', {
					click: $.proxy(this.dayCellClick, this)
				}],
				[$(window), {
					resize: $.proxy(this.place, this)
				}],
				[$(document), {
					'mousedown touchstart': $.proxy(function(e){
						// Clicked outside the datepicker, hide it
						if (!(
							this.element.is(e.target) ||
							this.element.find(e.target).length ||
							this.picker.is(e.target) ||
							this.picker.find(e.target).length ||
							this.isInline
						)){
							this.hide();
						}
					}, this)
				}]
			];
		},
		_attachEvents: function(){
			this._detachEvents();
			this._applyEvents(this._events);
		},
		_detachEvents: function(){
			this._unapplyEvents(this._events);
		},
		_attachSecondaryEvents: function(){
			this._detachSecondaryEvents();
			this._applyEvents(this._secondaryEvents);
		},
		_detachSecondaryEvents: function(){
			this._unapplyEvents(this._secondaryEvents);
		},
		_trigger: function(event, altdate){
			var date = altdate || this.dates.get(-1),
				local_date = this._utc_to_local(date);

			this.element.trigger({
				type: event,
				date: local_date,
				viewMode: this.viewMode,
				dates: $.map(this.dates, this._utc_to_local),
				format: $.proxy(function(ix, format){
					if (arguments.length === 0){
						ix = this.dates.length - 1;
						format = this.o.format;
					} else if (typeof ix === 'string'){
						format = ix;
						ix = this.dates.length - 1;
					}
					format = format || this.o.format;
					var date = this.dates.get(ix);
					return DPGlobal.formatDate(date, format, this.o.language);
				}, this)
			});
		},

		show: function(){
			if (this.inputField.is(':disabled') || (this.inputField.prop('readonly') && this.o.enableOnReadonly === false))
				return;
			if (!this.isInline)
				this.picker.appendTo(this.o.container);
			this.place();
			this.picker.show();
			this._attachSecondaryEvents();
			this._trigger('show');
			if ((window.navigator.msMaxTouchPoints || 'ontouchstart' in document) && this.o.disableTouchKeyboard) {
				$(this.element).blur();
			}
			return this;
		},

		hide: function(){
			if (this.isInline || !this.picker.is(':visible'))
				return this;
			this.focusDate = null;
			this.picker.hide().detach();
			this._detachSecondaryEvents();
			this.setViewMode(this.o.startView);

			if (this.o.forceParse && this.inputField.val())
				this.setValue();
			this._trigger('hide');
			return this;
		},

		destroy: function(){
			this.hide();
			this._detachEvents();
			this._detachSecondaryEvents();
			this.picker.remove();
			delete this.element.data().datepicker;
			if (!this.isInput){
				delete this.element.data().date;
			}
			return this;
		},

		paste: function(e){
			var dateString;
			if (e.originalEvent.clipboardData && e.originalEvent.clipboardData.types
				&& $.inArray('text/plain', e.originalEvent.clipboardData.types) !== -1) {
				dateString = e.originalEvent.clipboardData.getData('text/plain');
			} else if (window.clipboardData) {
				dateString = window.clipboardData.getData('Text');
			} else {
				return;
			}
			this.setDate(dateString);
			this.update();
			e.preventDefault();
		},

		_utc_to_local: function(utc){
			if (!utc) {
				return utc;
			}

			var local = new Date(utc.getTime() + (utc.getTimezoneOffset() * 60000));

			if (local.getTimezoneOffset() !== utc.getTimezoneOffset()) {
				local = new Date(utc.getTime() + (local.getTimezoneOffset() * 60000));
			}

			return local;
		},
		_local_to_utc: function(local){
			return local && new Date(local.getTime() - (local.getTimezoneOffset()*60000));
		},
		_zero_time: function(local){
			return local && new Date(local.getFullYear(), local.getMonth(), local.getDate());
		},
		_zero_utc_time: function(utc){
			return utc && UTCDate(utc.getUTCFullYear(), utc.getUTCMonth(), utc.getUTCDate());
		},

		getDates: function(){
			return $.map(this.dates, this._utc_to_local);
		},

		getUTCDates: function(){
			return $.map(this.dates, function(d){
				return new Date(d);
			});
		},

		getDate: function(){
			return this._utc_to_local(this.getUTCDate());
		},

		getUTCDate: function(){
			var selected_date = this.dates.get(-1);
			if (selected_date !== undefined) {
				return new Date(selected_date);
			} else {
				return null;
			}
		},

		clearDates: function(){
			this.inputField.val('');
			this.update();
			this._trigger('changeDate');

			if (this.o.autoclose) {
				this.hide();
			}
		},

		setDates: function(){
			var args = $.isArray(arguments[0]) ? arguments[0] : arguments;
			this.update.apply(this, args);
			this._trigger('changeDate');
			this.setValue();
			return this;
		},

		setUTCDates: function(){
			var args = $.isArray(arguments[0]) ? arguments[0] : arguments;
			this.setDates.apply(this, $.map(args, this._utc_to_local));
			return this;
		},

		setDate: alias('setDates'),
		setUTCDate: alias('setUTCDates'),
		remove: alias('destroy', 'Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead'),

		setValue: function(){
			var formatted = this.getFormattedDate();
			this.inputField.val(formatted);
			return this;
		},

		getFormattedDate: function(format){
			if (format === undefined)
				format = this.o.format;

			var lang = this.o.language;
			return $.map(this.dates, function(d){
				return DPGlobal.formatDate(d, format, lang);
			}).join(this.o.multidateSeparator);
		},

		getStartDate: function(){
			return this.o.startDate;
		},

		setStartDate: function(startDate){
			this._process_options({startDate: startDate});
			this.update();
			this.updateNavArrows();
			return this;
		},

		getEndDate: function(){
			return this.o.endDate;
		},

		setEndDate: function(endDate){
			this._process_options({endDate: endDate});
			this.update();
			this.updateNavArrows();
			return this;
		},

		setDaysOfWeekDisabled: function(daysOfWeekDisabled){
			this._process_options({daysOfWeekDisabled: daysOfWeekDisabled});
			this.update();
			return this;
		},

		setDaysOfWeekHighlighted: function(daysOfWeekHighlighted){
			this._process_options({daysOfWeekHighlighted: daysOfWeekHighlighted});
			this.update();
			return this;
		},

		setDatesDisabled: function(datesDisabled){
			this._process_options({datesDisabled: datesDisabled});
			this.update();
			return this;
		},

		place: function(){
			if (this.isInline)
				return this;
			var calendarWidth = this.picker.outerWidth(),
				calendarHeight = this.picker.outerHeight(),
				visualPadding = 10,
				container = $(this.o.container),
				windowWidth = container.width(),
				scrollTop = this.o.container === 'body:first' ? $(document).scrollTop() : container.scrollTop(),
				appendOffset = container.offset();

			var parentsZindex = [0];
			this.element.parents().each(function(){
				var itemZIndex = $(this).css('z-index');
				if (itemZIndex !== 'auto' && Number(itemZIndex) !== 0) parentsZindex.push(Number(itemZIndex));
			});
			var zIndex = Math.max.apply(Math, parentsZindex) + this.o.zIndexOffset;
			var offset = this.component ? this.component.parent().offset() : this.element.offset();
			var height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false);
			var width = this.component ? this.component.outerWidth(true) : this.element.outerWidth(false);
			var left = offset.left - appendOffset.left;
			var top = offset.top - appendOffset.top;

			if (this.o.container !== 'body:first') {
				top += scrollTop;
			}

			this.picker.removeClass(
				'datepicker-orient-top datepicker-orient-bottom '+
				'datepicker-orient-right datepicker-orient-left'
			);

			if (this.o.orientation.x !== 'auto'){
				this.picker.addClass('datepicker-orient-' + this.o.orientation.x);
				if (this.o.orientation.x === 'right')
					left -= calendarWidth - width;
			}
			// auto x orientation is best-placement: if it crosses a window
			// edge, fudge it sideways
			else {
				if (offset.left < 0) {
					// component is outside the window on the left side. Move it into visible range
					this.picker.addClass('datepicker-orient-left');
					left -= offset.left - visualPadding;
				} else if (left + calendarWidth > windowWidth) {
					// the calendar passes the widow right edge. Align it to component right side
					this.picker.addClass('datepicker-orient-right');
					left += width - calendarWidth;
				} else {
					if (this.o.rtl) {
						// Default to right
						this.picker.addClass('datepicker-orient-right');
					} else {
						// Default to left
						this.picker.addClass('datepicker-orient-left');
					}
				}
			}

			// auto y orientation is best-situation: top or bottom, no fudging,
			// decision based on which shows more of the calendar
			var yorient = this.o.orientation.y,
				top_overflow;
			if (yorient === 'auto'){
				top_overflow = -scrollTop + top - calendarHeight;
				yorient = top_overflow < 0 ? 'bottom' : 'top';
			}

			this.picker.addClass('datepicker-orient-' + yorient);
			if (yorient === 'top')
				top -= calendarHeight + parseInt(this.picker.css('padding-top'));
			else
				top += height;

			if (this.o.rtl) {
				var right = windowWidth - (left + width);
				this.picker.css({
					top: top,
					right: right,
					zIndex: zIndex
				});
			} else {
				this.picker.css({
					top: top,
					left: left,
					zIndex: zIndex
				});
			}
			return this;
		},

		_allow_update: true,
		update: function(){
			if (!this._allow_update)
				return this;

			var oldDates = this.dates.copy(),
				dates = [],
				fromArgs = false;
			if (arguments.length){
				$.each(arguments, $.proxy(function(i, date){
					if (date instanceof Date)
						date = this._local_to_utc(date);
					dates.push(date);
				}, this));
				fromArgs = true;
			} else {
				dates = this.isInput
						? this.element.val()
						: this.element.data('date') || this.inputField.val();
				if (dates && this.o.multidate)
					dates = dates.split(this.o.multidateSeparator);
				else
					dates = [dates];
				delete this.element.data().date;
			}

			dates = $.map(dates, $.proxy(function(date){
				return DPGlobal.parseDate(date, this.o.format, this.o.language, this.o.assumeNearbyYear);
			}, this));
			dates = $.grep(dates, $.proxy(function(date){
				return (
					!this.dateWithinRange(date) ||
					!date
				);
			}, this), true);
			this.dates.replace(dates);

			if (this.o.updateViewDate) {
				if (this.dates.length)
					this.viewDate = new Date(this.dates.get(-1));
				else if (this.viewDate < this.o.startDate)
					this.viewDate = new Date(this.o.startDate);
				else if (this.viewDate > this.o.endDate)
					this.viewDate = new Date(this.o.endDate);
				else
					this.viewDate = this.o.defaultViewDate;
			}

			if (fromArgs){
				// setting date by clicking
				this.setValue();
				this.element.change();
			}
			else if (this.dates.length){
				// setting date by typing
				if (String(oldDates) !== String(this.dates) && fromArgs) {
					this._trigger('changeDate');
					this.element.change();
				}
			}
			if (!this.dates.length && oldDates.length) {
				this._trigger('clearDate');
				this.element.change();
			}

			this.fill();
			return this;
		},

		fillDow: function(){
      if (this.o.showWeekDays) {
			var dowCnt = this.o.weekStart,
				html = '<tr>';
			if (this.o.calendarWeeks){
				html += '<th class="cw">&#160;</th>';
			}
			while (dowCnt < this.o.weekStart + 7){
				html += '<th class="dow';
        if ($.inArray(dowCnt, this.o.daysOfWeekDisabled) !== -1)
          html += ' disabled';
        html += '">'+dates[this.o.language].daysMin[(dowCnt++)%7]+'</th>';
			}
			html += '</tr>';
			this.picker.find('.datepicker-days thead').append(html);
      }
		},

		fillMonths: function(){
      var localDate = this._utc_to_local(this.viewDate);
			var html = '';
			var focused;
			for (var i = 0; i < 12; i++){
				focused = localDate && localDate.getMonth() === i ? ' focused' : '';
				html += '<span class="month' + focused + '">' + dates[this.o.language].monthsShort[i] + '</span>';
			}
			this.picker.find('.datepicker-months td').html(html);
		},

		setRange: function(range){
			if (!range || !range.length)
				delete this.range;
			else
				this.range = $.map(range, function(d){
					return d.valueOf();
				});
			this.fill();
		},

		getClassNames: function(date){
			var cls = [],
				year = this.viewDate.getUTCFullYear(),
				month = this.viewDate.getUTCMonth(),
				today = UTCToday();
			if (date.getUTCFullYear() < year || (date.getUTCFullYear() === year && date.getUTCMonth() < month)){
				cls.push('old');
			} else if (date.getUTCFullYear() > year || (date.getUTCFullYear() === year && date.getUTCMonth() > month)){
				cls.push('new');
			}
			if (this.focusDate && date.valueOf() === this.focusDate.valueOf())
				cls.push('focused');
			// Compare internal UTC date with UTC today, not local today
			if (this.o.todayHighlight && isUTCEquals(date, today)) {
				cls.push('today');
			}
			if (this.dates.contains(date) !== -1)
				cls.push('active');
			if (!this.dateWithinRange(date)){
				cls.push('disabled');
			}
			if (this.dateIsDisabled(date)){
				cls.push('disabled', 'disabled-date');
			}
			if ($.inArray(date.getUTCDay(), this.o.daysOfWeekHighlighted) !== -1){
				cls.push('highlighted');
			}

			if (this.range){
				if (date > this.range[0] && date < this.range[this.range.length-1]){
					cls.push('range');
				}
				if ($.inArray(date.valueOf(), this.range) !== -1){
					cls.push('selected');
				}
				if (date.valueOf() === this.range[0]){
          cls.push('range-start');
        }
        if (date.valueOf() === this.range[this.range.length-1]){
          cls.push('range-end');
        }
			}
			return cls;
		},

		_fill_yearsView: function(selector, cssClass, factor, year, startYear, endYear, beforeFn){
			var html = '';
			var step = factor / 10;
			var view = this.picker.find(selector);
			var startVal = Math.floor(year / factor) * factor;
			var endVal = startVal + step * 9;
			var focusedVal = Math.floor(this.viewDate.getFullYear() / step) * step;
			var selected = $.map(this.dates, function(d){
				return Math.floor(d.getUTCFullYear() / step) * step;
			});

			var classes, tooltip, before;
			for (var currVal = startVal - step; currVal <= endVal + step; currVal += step) {
				classes = [cssClass];
				tooltip = null;

				if (currVal === startVal - step) {
					classes.push('old');
				} else if (currVal === endVal + step) {
					classes.push('new');
				}
				if ($.inArray(currVal, selected) !== -1) {
					classes.push('active');
				}
				if (currVal < startYear || currVal > endYear) {
					classes.push('disabled');
				}
				if (currVal === focusedVal) {
				  classes.push('focused');
        }

				if (beforeFn !== $.noop) {
					before = beforeFn(new Date(currVal, 0, 1));
					if (before === undefined) {
						before = {};
					} else if (typeof before === 'boolean') {
						before = {enabled: before};
					} else if (typeof before === 'string') {
						before = {classes: before};
					}
					if (before.enabled === false) {
						classes.push('disabled');
					}
					if (before.classes) {
						classes = classes.concat(before.classes.split(/\s+/));
					}
					if (before.tooltip) {
						tooltip = before.tooltip;
					}
				}

				html += '<span class="' + classes.join(' ') + '"' + (tooltip ? ' title="' + tooltip + '"' : '') + '>' + currVal + '</span>';
			}

			view.find('.datepicker-switch').text(startVal + '-' + endVal);
			view.find('td').html(html);
		},

		fill: function(){
			var d = new Date(this.viewDate),
				year = d.getUTCFullYear(),
				month = d.getUTCMonth(),
				startYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,
				startMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,
				endYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,
				endMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,
				todaytxt = dates[this.o.language].today || dates['en'].today || '',
				cleartxt = dates[this.o.language].clear || dates['en'].clear || '',
        titleFormat = dates[this.o.language].titleFormat || dates['en'].titleFormat,
        todayDate = UTCToday(),
        titleBtnVisible = (this.o.todayBtn === true || this.o.todayBtn === 'linked') && todayDate >= this.o.startDate && todayDate <= this.o.endDate && !this.weekOfDateIsDisabled(todayDate),
				tooltip,
				before;
			if (isNaN(year) || isNaN(month))
				return;
			this.picker.find('.datepicker-days .datepicker-switch')
						.text(DPGlobal.formatDate(d, titleFormat, this.o.language));
			this.picker.find('tfoot .today')
						.text(todaytxt)
            .css('display', titleBtnVisible ? 'table-cell' : 'none');
			this.picker.find('tfoot .clear')
						.text(cleartxt)
						.css('display', this.o.clearBtn === true ? 'table-cell' : 'none');
			this.picker.find('thead .datepicker-title')
						.text(this.o.title)
						.css('display', typeof this.o.title === 'string' && this.o.title !== '' ? 'table-cell' : 'none');
			this.updateNavArrows();
			this.fillMonths();
			var prevMonth = UTCDate(year, month, 0),
				day = prevMonth.getUTCDate();
			prevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7)%7);
			var nextMonth = new Date(prevMonth);
			if (prevMonth.getUTCFullYear() < 100){
        nextMonth.setUTCFullYear(prevMonth.getUTCFullYear());
      }
			nextMonth.setUTCDate(nextMonth.getUTCDate() + 42);
			nextMonth = nextMonth.valueOf();
			var html = [];
			var weekDay, clsName;
			while (prevMonth.valueOf() < nextMonth){
				weekDay = prevMonth.getUTCDay();
				if (weekDay === this.o.weekStart){
					html.push('<tr>');
					if (this.o.calendarWeeks){
						// ISO 8601: First week contains first thursday.
						// ISO also states week starts on Monday, but we can be more abstract here.
						var
							// Start of current week: based on weekstart/current date
							ws = new Date(+prevMonth + (this.o.weekStart - weekDay - 7) % 7 * 864e5),
							// Thursday of this week
							th = new Date(Number(ws) + (7 + 4 - ws.getUTCDay()) % 7 * 864e5),
							// First Thursday of year, year from thursday
							yth = new Date(Number(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay()) % 7 * 864e5),
							// Calendar week: ms between thursdays, div ms per day, div 7 days
							calWeek = (th - yth) / 864e5 / 7 + 1;
						html.push('<td class="cw">'+ calWeek +'</td>');
					}
				}
				clsName = this.getClassNames(prevMonth);
				clsName.push('day');

				var content = prevMonth.getUTCDate();

				if (this.o.beforeShowDay !== $.noop){
					before = this.o.beforeShowDay(this._utc_to_local(prevMonth));
					if (before === undefined)
						before = {};
					else if (typeof before === 'boolean')
						before = {enabled: before};
					else if (typeof before === 'string')
						before = {classes: before};
					if (before.enabled === false)
						clsName.push('disabled');
					if (before.classes)
						clsName = clsName.concat(before.classes.split(/\s+/));
					if (before.tooltip)
						tooltip = before.tooltip;
					if (before.content)
						content = before.content;
				}

				//Check if uniqueSort exists (supported by jquery >=1.12 and >=2.2)
				//Fallback to unique function for older jquery versions
				if ($.isFunction($.uniqueSort)) {
					clsName = $.uniqueSort(clsName);
				} else {
					clsName = $.unique(clsName);
				}

				html.push('<td class="'+clsName.join(' ')+'"' + (tooltip ? ' title="'+tooltip+'"' : '') + ' data-date="' + prevMonth.getTime().toString() + '">' + content + '</td>');
				tooltip = null;
				if (weekDay === this.o.weekEnd){
					html.push('</tr>');
				}
				prevMonth.setUTCDate(prevMonth.getUTCDate() + 1);
			}
			this.picker.find('.datepicker-days tbody').html(html.join(''));

			var monthsTitle = dates[this.o.language].monthsTitle || dates['en'].monthsTitle || 'Months';
			var months = this.picker.find('.datepicker-months')
						.find('.datepicker-switch')
							.text(this.o.maxViewMode < 2 ? monthsTitle : year)
							.end()
						.find('tbody span').removeClass('active');

			$.each(this.dates, function(i, d){
				if (d.getUTCFullYear() === year)
					months.eq(d.getUTCMonth()).addClass('active');
			});

			if (year < startYear || year > endYear){
				months.addClass('disabled');
			}
			if (year === startYear){
				months.slice(0, startMonth).addClass('disabled');
			}
			if (year === endYear){
				months.slice(endMonth+1).addClass('disabled');
			}

			if (this.o.beforeShowMonth !== $.noop){
				var that = this;
				$.each(months, function(i, month){
          var moDate = new Date(year, i, 1);
          var before = that.o.beforeShowMonth(moDate);
					if (before === undefined)
						before = {};
					else if (typeof before === 'boolean')
						before = {enabled: before};
					else if (typeof before === 'string')
						before = {classes: before};
					if (before.enabled === false && !$(month).hasClass('disabled'))
					    $(month).addClass('disabled');
					if (before.classes)
					    $(month).addClass(before.classes);
					if (before.tooltip)
					    $(month).prop('title', before.tooltip);
				});
			}

			// Generating decade/years picker
			this._fill_yearsView(
				'.datepicker-years',
				'year',
				10,
				year,
				startYear,
				endYear,
				this.o.beforeShowYear
			);

			// Generating century/decades picker
			this._fill_yearsView(
				'.datepicker-decades',
				'decade',
				100,
				year,
				startYear,
				endYear,
				this.o.beforeShowDecade
			);

			// Generating millennium/centuries picker
			this._fill_yearsView(
				'.datepicker-centuries',
				'century',
				1000,
				year,
				startYear,
				endYear,
				this.o.beforeShowCentury
			);
		},

		updateNavArrows: function(){
			if (!this._allow_update)
				return;

			var d = new Date(this.viewDate),
				year = d.getUTCFullYear(),
				month = d.getUTCMonth(),
				startYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,
				startMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,
				endYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,
				endMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,
				prevIsDisabled,
				nextIsDisabled,
				factor = 1;
			switch (this.viewMode){
				case 4:
					factor *= 10;
					/* falls through */
				case 3:
					factor *= 10;
					/* falls through */
				case 2:
					factor *= 10;
					/* falls through */
				case 1:
					prevIsDisabled = Math.floor(year / factor) * factor <= startYear;
					nextIsDisabled = Math.floor(year / factor) * factor + factor > endYear;
					break;
				case 0:
					prevIsDisabled = year <= startYear && month <= startMonth;
					nextIsDisabled = year >= endYear && month >= endMonth;
					break;
			}

			this.picker.find('.prev').toggleClass('disabled', prevIsDisabled);
			this.picker.find('.next').toggleClass('disabled', nextIsDisabled);
		},

		click: function(e){
			e.preventDefault();
			e.stopPropagation();

			var target, dir, day, year, month;
			target = $(e.target);

			// Clicked on the switch
			if (target.hasClass('datepicker-switch') && this.viewMode !== this.o.maxViewMode){
				this.setViewMode(this.viewMode + 1);
			}

			// Clicked on today button
			if (target.hasClass('today') && !target.hasClass('day')){
				this.setViewMode(0);
				this._setDate(UTCToday(), this.o.todayBtn === 'linked' ? null : 'view');
			}

			// Clicked on clear button
			if (target.hasClass('clear')){
				this.clearDates();
			}

			if (!target.hasClass('disabled')){
				// Clicked on a month, year, decade, century
				if (target.hasClass('month')
						|| target.hasClass('year')
						|| target.hasClass('decade')
						|| target.hasClass('century')) {
					this.viewDate.setUTCDate(1);

					day = 1;
					if (this.viewMode === 1){
						month = target.parent().find('span').index(target);
						year = this.viewDate.getUTCFullYear();
						this.viewDate.setUTCMonth(month);
					} else {
						month = 0;
						year = Number(target.text());
						this.viewDate.setUTCFullYear(year);
					}

					this._trigger(DPGlobal.viewModes[this.viewMode - 1].e, this.viewDate);

					if (this.viewMode === this.o.minViewMode){
						this._setDate(UTCDate(year, month, day));
					} else {
						this.setViewMode(this.viewMode - 1);
						this.fill();
					}
				}
			}

			if (this.picker.is(':visible') && this._focused_from){
				this._focused_from.focus();
			}
			delete this._focused_from;
		},

		dayCellClick: function(e){
			var $target = $(e.currentTarget);
			var timestamp = $target.data('date');
			var date = new Date(timestamp);

			if (this.o.updateViewDate) {
				if (date.getUTCFullYear() !== this.viewDate.getUTCFullYear()) {
					this._trigger('changeYear', this.viewDate);
				}

				if (date.getUTCMonth() !== this.viewDate.getUTCMonth()) {
					this._trigger('changeMonth', this.viewDate);
				}
			}
			this._setDate(date);
		},

		// Clicked on prev or next
		navArrowsClick: function(e){
			var $target = $(e.currentTarget);
			var dir = $target.hasClass('prev') ? -1 : 1;
			if (this.viewMode !== 0){
				dir *= DPGlobal.viewModes[this.viewMode].navStep * 12;
			}
			this.viewDate = this.moveMonth(this.viewDate, dir);
			this._trigger(DPGlobal.viewModes[this.viewMode].e, this.viewDate);
			this.fill();
		},

		_toggle_multidate: function(date){
			var ix = this.dates.contains(date);
			if (!date){
				this.dates.clear();
			}

			if (ix !== -1){
				if (this.o.multidate === true || this.o.multidate > 1 || this.o.toggleActive){
					this.dates.remove(ix);
				}
			} else if (this.o.multidate === false) {
				this.dates.clear();
				this.dates.push(date);
			}
			else {
				this.dates.push(date);
			}

			if (typeof this.o.multidate === 'number')
				while (this.dates.length > this.o.multidate)
					this.dates.remove(0);
		},

		_setDate: function(date, which){
			if (!which || which === 'date')
				this._toggle_multidate(date && new Date(date));
			if ((!which && this.o.updateViewDate) || which === 'view')
				this.viewDate = date && new Date(date);

			this.fill();
			this.setValue();
			if (!which || which !== 'view') {
				this._trigger('changeDate');
			}
			this.inputField.trigger('change');
			if (this.o.autoclose && (!which || which === 'date')){
				this.hide();
			}
		},

		moveDay: function(date, dir){
			var newDate = new Date(date);
			newDate.setUTCDate(date.getUTCDate() + dir);

			return newDate;
		},

		moveWeek: function(date, dir){
			return this.moveDay(date, dir * 7);
		},

		moveMonth: function(date, dir){
			if (!isValidDate(date))
				return this.o.defaultViewDate;
			if (!dir)
				return date;
			var new_date = new Date(date.valueOf()),
				day = new_date.getUTCDate(),
				month = new_date.getUTCMonth(),
				mag = Math.abs(dir),
				new_month, test;
			dir = dir > 0 ? 1 : -1;
			if (mag === 1){
				test = dir === -1
					// If going back one month, make sure month is not current month
					// (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)
					? function(){
						return new_date.getUTCMonth() === month;
					}
					// If going forward one month, make sure month is as expected
					// (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)
					: function(){
						return new_date.getUTCMonth() !== new_month;
					};
				new_month = month + dir;
				new_date.setUTCMonth(new_month);
				// Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11
				new_month = (new_month + 12) % 12;
			}
			else {
				// For magnitudes >1, move one month at a time...
				for (var i=0; i < mag; i++)
					// ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...
					new_date = this.moveMonth(new_date, dir);
				// ...then reset the day, keeping it in the new month
				new_month = new_date.getUTCMonth();
				new_date.setUTCDate(day);
				test = function(){
					return new_month !== new_date.getUTCMonth();
				};
			}
			// Common date-resetting loop -- if date is beyond end of month, make it
			// end of month
			while (test()){
				new_date.setUTCDate(--day);
				new_date.setUTCMonth(new_month);
			}
			return new_date;
		},

		moveYear: function(date, dir){
			return this.moveMonth(date, dir*12);
		},

		moveAvailableDate: function(date, dir, fn){
			do {
				date = this[fn](date, dir);

				if (!this.dateWithinRange(date))
					return false;

				fn = 'moveDay';
			}
			while (this.dateIsDisabled(date));

			return date;
		},

		weekOfDateIsDisabled: function(date){
			return $.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1;
		},

		dateIsDisabled: function(date){
			return (
				this.weekOfDateIsDisabled(date) ||
				$.grep(this.o.datesDisabled, function(d){
					return isUTCEquals(date, d);
				}).length > 0
			);
		},

		dateWithinRange: function(date){
			return date >= this.o.startDate && date <= this.o.endDate;
		},

		keydown: function(e){
			if (!this.picker.is(':visible')){
				if (e.keyCode === 40 || e.keyCode === 27) { // allow down to re-show picker
					this.show();
					e.stopPropagation();
        }
				return;
			}
			var dateChanged = false,
				dir, newViewDate,
				focusDate = this.focusDate || this.viewDate;
			switch (e.keyCode){
				case 27: // escape
					if (this.focusDate){
						this.focusDate = null;
						this.viewDate = this.dates.get(-1) || this.viewDate;
						this.fill();
					}
					else
						this.hide();
					e.preventDefault();
					e.stopPropagation();
					break;
				case 37: // left
				case 38: // up
				case 39: // right
				case 40: // down
					if (!this.o.keyboardNavigation || this.o.daysOfWeekDisabled.length === 7)
						break;
					dir = e.keyCode === 37 || e.keyCode === 38 ? -1 : 1;
          if (this.viewMode === 0) {
  					if (e.ctrlKey){
  						newViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');

  						if (newViewDate)
  							this._trigger('changeYear', this.viewDate);
  					} else if (e.shiftKey){
  						newViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');

  						if (newViewDate)
  							this._trigger('changeMonth', this.viewDate);
  					} else if (e.keyCode === 37 || e.keyCode === 39){
  						newViewDate = this.moveAvailableDate(focusDate, dir, 'moveDay');
  					} else if (!this.weekOfDateIsDisabled(focusDate)){
  						newViewDate = this.moveAvailableDate(focusDate, dir, 'moveWeek');
  					}
          } else if (this.viewMode === 1) {
            if (e.keyCode === 38 || e.keyCode === 40) {
              dir = dir * 4;
            }
            newViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');
          } else if (this.viewMode === 2) {
            if (e.keyCode === 38 || e.keyCode === 40) {
              dir = dir * 4;
            }
            newViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');
          }
					if (newViewDate){
						this.focusDate = this.viewDate = newViewDate;
						this.setValue();
						this.fill();
						e.preventDefault();
					}
					break;
				case 13: // enter
					if (!this.o.forceParse)
						break;
					focusDate = this.focusDate || this.dates.get(-1) || this.viewDate;
					if (this.o.keyboardNavigation) {
						this._toggle_multidate(focusDate);
						dateChanged = true;
					}
					this.focusDate = null;
					this.viewDate = this.dates.get(-1) || this.viewDate;
					this.setValue();
					this.fill();
					if (this.picker.is(':visible')){
						e.preventDefault();
						e.stopPropagation();
						if (this.o.autoclose)
							this.hide();
					}
					break;
				case 9: // tab
					this.focusDate = null;
					this.viewDate = this.dates.get(-1) || this.viewDate;
					this.fill();
					this.hide();
					break;
			}
			if (dateChanged){
				if (this.dates.length)
					this._trigger('changeDate');
				else
					this._trigger('clearDate');
				this.inputField.trigger('change');
			}
		},

		setViewMode: function(viewMode){
			this.viewMode = viewMode;
			this.picker
				.children('div')
				.hide()
				.filter('.datepicker-' + DPGlobal.viewModes[this.viewMode].clsName)
					.show();
			this.updateNavArrows();
      this._trigger('changeViewMode', new Date(this.viewDate));
		}
	};

	var DateRangePicker = function(element, options){
		$.data(element, 'datepicker', this);
		this.element = $(element);
		this.inputs = $.map(options.inputs, function(i){
			return i.jquery ? i[0] : i;
		});
		delete options.inputs;

		this.keepEmptyValues = options.keepEmptyValues;
		delete options.keepEmptyValues;

		datepickerPlugin.call($(this.inputs), options)
			.on('changeDate', $.proxy(this.dateUpdated, this));

		this.pickers = $.map(this.inputs, function(i){
			return $.data(i, 'datepicker');
		});
		this.updateDates();
	};
	DateRangePicker.prototype = {
		updateDates: function(){
			this.dates = $.map(this.pickers, function(i){
				return i.getUTCDate();
			});
			this.updateRanges();
		},
		updateRanges: function(){
			var range = $.map(this.dates, function(d){
				return d.valueOf();
			});
			$.each(this.pickers, function(i, p){
				p.setRange(range);
			});
		},
		clearDates: function(){
			$.each(this.pickers, function(i, p){
				p.clearDates();
			});
		},
		dateUpdated: function(e){
			// `this.updating` is a workaround for preventing infinite recursion
			// between `changeDate` triggering and `setUTCDate` calling.  Until
			// there is a better mechanism.
			if (this.updating)
				return;
			this.updating = true;

			var dp = $.data(e.target, 'datepicker');

			if (dp === undefined) {
				return;
			}

			var new_date = dp.getUTCDate(),
				keep_empty_values = this.keepEmptyValues,
				i = $.inArray(e.target, this.inputs),
				j = i - 1,
				k = i + 1,
				l = this.inputs.length;
			if (i === -1)
				return;

			$.each(this.pickers, function(i, p){
				if (!p.getUTCDate() && (p === dp || !keep_empty_values))
					p.setUTCDate(new_date);
			});

			if (new_date < this.dates[j]){
				// Date being moved earlier/left
				while (j >= 0 && new_date < this.dates[j]){
					this.pickers[j--].setUTCDate(new_date);
				}
			} else if (new_date > this.dates[k]){
				// Date being moved later/right
				while (k < l && new_date > this.dates[k]){
					this.pickers[k++].setUTCDate(new_date);
				}
			}
			this.updateDates();

			delete this.updating;
		},
		destroy: function(){
			$.map(this.pickers, function(p){ p.destroy(); });
			$(this.inputs).off('changeDate', this.dateUpdated);
			delete this.element.data().datepicker;
		},
		remove: alias('destroy', 'Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead')
	};

	function opts_from_el(el, prefix){
		// Derive options from element data-attrs
		var data = $(el).data(),
			out = {}, inkey,
			replace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])');
		prefix = new RegExp('^' + prefix.toLowerCase());
		function re_lower(_,a){
			return a.toLowerCase();
		}
		for (var key in data)
			if (prefix.test(key)){
				inkey = key.replace(replace, re_lower);
				out[inkey] = data[key];
			}
		return out;
	}

	function opts_from_locale(lang){
		// Derive options from locale plugins
		var out = {};
		// Check if "de-DE" style date is available, if not language should
		// fallback to 2 letter code eg "de"
		if (!dates[lang]){
			lang = lang.split('-')[0];
			if (!dates[lang])
				return;
		}
		var d = dates[lang];
		$.each(locale_opts, function(i,k){
			if (k in d)
				out[k] = d[k];
		});
		return out;
	}

	var old = $.fn.datepicker;
	var datepickerPlugin = function(option){
		var args = Array.apply(null, arguments);
		args.shift();
		var internal_return;
		this.each(function(){
			var $this = $(this),
				data = $this.data('datepicker'),
				options = typeof option === 'object' && option;
			if (!data){
				var elopts = opts_from_el(this, 'date'),
					// Preliminary otions
					xopts = $.extend({}, defaults, elopts, options),
					locopts = opts_from_locale(xopts.language),
					// Options priority: js args, data-attrs, locales, defaults
					opts = $.extend({}, defaults, locopts, elopts, options);
				if ($this.hasClass('input-daterange') || opts.inputs){
					$.extend(opts, {
						inputs: opts.inputs || $this.find('input').toArray()
					});
					data = new DateRangePicker(this, opts);
				}
				else {
					data = new Datepicker(this, opts);
				}
				$this.data('datepicker', data);
			}
			if (typeof option === 'string' && typeof data[option] === 'function'){
				internal_return = data[option].apply(data, args);
			}
		});

		if (
			internal_return === undefined ||
			internal_return instanceof Datepicker ||
			internal_return instanceof DateRangePicker
		)
			return this;

		if (this.length > 1)
			throw new Error('Using only allowed for the collection of a single element (' + option + ' function)');
		else
			return internal_return;
	};
	$.fn.datepicker = datepickerPlugin;

	var defaults = $.fn.datepicker.defaults = {
		assumeNearbyYear: false,
		autoclose: false,
		beforeShowDay: $.noop,
		beforeShowMonth: $.noop,
		beforeShowYear: $.noop,
		beforeShowDecade: $.noop,
		beforeShowCentury: $.noop,
		calendarWeeks: false,
		clearBtn: false,
		toggleActive: false,
		daysOfWeekDisabled: [],
		daysOfWeekHighlighted: [],
		datesDisabled: [],
		endDate: Infinity,
		forceParse: true,
		format: 'mm/dd/yyyy',
		keepEmptyValues: false,
		keyboardNavigation: true,
		language: 'en',
		minViewMode: 0,
		maxViewMode: 4,
		multidate: false,
		multidateSeparator: ',',
		orientation: "auto",
		rtl: false,
		startDate: -Infinity,
		startView: 0,
		todayBtn: false,
		todayHighlight: false,
		updateViewDate: true,
		weekStart: 0,
		disableTouchKeyboard: false,
		enableOnReadonly: true,
		showOnFocus: true,
		zIndexOffset: 10,
		container: 'body:first',
		immediateUpdates: false,
		title: '',
		templates: {
			leftArrow: '&#x00AB;',
			rightArrow: '&#x00BB;'
		},
    showWeekDays: true
	};
	var locale_opts = $.fn.datepicker.locale_opts = [
		'format',
		'rtl',
		'weekStart'
	];
	$.fn.datepicker.Constructor = Datepicker;
	var dates = $.fn.datepicker.dates = {
		en: {
			days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
			daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
			daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
			months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
			monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
			today: "Today",
			clear: "Clear",
			titleFormat: "MM yyyy"
		}
	};

	var DPGlobal = {
		viewModes: [
			{
				names: ['days', 'month'],
				clsName: 'days',
				e: 'changeMonth'
			},
			{
				names: ['months', 'year'],
				clsName: 'months',
				e: 'changeYear',
				navStep: 1
			},
			{
				names: ['years', 'decade'],
				clsName: 'years',
				e: 'changeDecade',
				navStep: 10
			},
			{
				names: ['decades', 'century'],
				clsName: 'decades',
				e: 'changeCentury',
				navStep: 100
			},
			{
				names: ['centuries', 'millennium'],
				clsName: 'centuries',
				e: 'changeMillennium',
				navStep: 1000
			}
		],
		validParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,
		nonpunctuation: /[^ -\/:-@\u5e74\u6708\u65e5\[-`{-~\t\n\r]+/g,
		parseFormat: function(format){
			if (typeof format.toValue === 'function' && typeof format.toDisplay === 'function')
                return format;
            // IE treats \0 as a string end in inputs (truncating the value),
			// so it's a bad format delimiter, anyway
			var separators = format.replace(this.validParts, '\0').split('\0'),
				parts = format.match(this.validParts);
			if (!separators || !separators.length || !parts || parts.length === 0){
				throw new Error("Invalid date format.");
			}
			return {separators: separators, parts: parts};
		},
		parseDate: function(date, format, language, assumeNearby){
			if (!date)
				return undefined;
			if (date instanceof Date)
				return date;
			if (typeof format === 'string')
				format = DPGlobal.parseFormat(format);
			if (format.toValue)
				return format.toValue(date, format, language);
			var fn_map = {
					d: 'moveDay',
					m: 'moveMonth',
					w: 'moveWeek',
					y: 'moveYear'
				},
				dateAliases = {
					yesterday: '-1d',
					today: '+0d',
					tomorrow: '+1d'
				},
				parts, part, dir, i, fn;
			if (date in dateAliases){
				date = dateAliases[date];
			}
			if (/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/i.test(date)){
				parts = date.match(/([\-+]\d+)([dmwy])/gi);
				date = new Date();
				for (i=0; i < parts.length; i++){
					part = parts[i].match(/([\-+]\d+)([dmwy])/i);
					dir = Number(part[1]);
					fn = fn_map[part[2].toLowerCase()];
					date = Datepicker.prototype[fn](date, dir);
				}
				return Datepicker.prototype._zero_utc_time(date);
			}

			parts = date && date.match(this.nonpunctuation) || [];

			function applyNearbyYear(year, threshold){
				if (threshold === true)
					threshold = 10;

				// if year is 2 digits or less, than the user most likely is trying to get a recent century
				if (year < 100){
					year += 2000;
					// if the new year is more than threshold years in advance, use last century
					if (year > ((new Date()).getFullYear()+threshold)){
						year -= 100;
					}
				}

				return year;
			}

			var parsed = {},
				setters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'],
				setters_map = {
					yyyy: function(d,v){
						return d.setUTCFullYear(assumeNearby ? applyNearbyYear(v, assumeNearby) : v);
					},
					m: function(d,v){
						if (isNaN(d))
							return d;
						v -= 1;
						while (v < 0) v += 12;
						v %= 12;
						d.setUTCMonth(v);
						while (d.getUTCMonth() !== v)
							d.setUTCDate(d.getUTCDate()-1);
						return d;
					},
					d: function(d,v){
						return d.setUTCDate(v);
					}
				},
				val, filtered;
			setters_map['yy'] = setters_map['yyyy'];
			setters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];
			setters_map['dd'] = setters_map['d'];
			date = UTCToday();
			var fparts = format.parts.slice();
			// Remove noop parts
			if (parts.length !== fparts.length){
				fparts = $(fparts).filter(function(i,p){
					return $.inArray(p, setters_order) !== -1;
				}).toArray();
			}
			// Process remainder
			function match_part(){
				var m = this.slice(0, parts[i].length),
					p = parts[i].slice(0, m.length);
				return m.toLowerCase() === p.toLowerCase();
			}
			if (parts.length === fparts.length){
				var cnt;
				for (i=0, cnt = fparts.length; i < cnt; i++){
					val = parseInt(parts[i], 10);
					part = fparts[i];
					if (isNaN(val)){
						switch (part){
							case 'MM':
								filtered = $(dates[language].months).filter(match_part);
								val = $.inArray(filtered[0], dates[language].months) + 1;
								break;
							case 'M':
								filtered = $(dates[language].monthsShort).filter(match_part);
								val = $.inArray(filtered[0], dates[language].monthsShort) + 1;
								break;
						}
					}
					parsed[part] = val;
				}
				var _date, s;
				for (i=0; i < setters_order.length; i++){
					s = setters_order[i];
					if (s in parsed && !isNaN(parsed[s])){
						_date = new Date(date);
						setters_map[s](_date, parsed[s]);
						if (!isNaN(_date))
							date = _date;
					}
				}
			}
			return date;
		},
		formatDate: function(date, format, language){
			if (!date)
				return '';
			if (typeof format === 'string')
				format = DPGlobal.parseFormat(format);
			if (format.toDisplay)
                return format.toDisplay(date, format, language);
            var val = {
				d: date.getUTCDate(),
				D: dates[language].daysShort[date.getUTCDay()],
				DD: dates[language].days[date.getUTCDay()],
				m: date.getUTCMonth() + 1,
				M: dates[language].monthsShort[date.getUTCMonth()],
				MM: dates[language].months[date.getUTCMonth()],
				yy: date.getUTCFullYear().toString().substring(2),
				yyyy: date.getUTCFullYear()
			};
			val.dd = (val.d < 10 ? '0' : '') + val.d;
			val.mm = (val.m < 10 ? '0' : '') + val.m;
			date = [];
			var seps = $.extend([], format.separators);
			for (var i=0, cnt = format.parts.length; i <= cnt; i++){
				if (seps.length)
					date.push(seps.shift());
				date.push(val[format.parts[i]]);
			}
			return date.join('');
		},
		headTemplate: '<thead>'+
			              '<tr>'+
			                '<th colspan="7" class="datepicker-title"></th>'+
			              '</tr>'+
							'<tr>'+
								'<th class="prev">'+defaults.templates.leftArrow+'</th>'+
								'<th colspan="5" class="datepicker-switch"></th>'+
								'<th class="next">'+defaults.templates.rightArrow+'</th>'+
							'</tr>'+
						'</thead>',
		contTemplate: '<tbody><tr><td colspan="7"></td></tr></tbody>',
		footTemplate: '<tfoot>'+
							'<tr>'+
								'<th colspan="7" class="today"></th>'+
							'</tr>'+
							'<tr>'+
								'<th colspan="7" class="clear"></th>'+
							'</tr>'+
						'</tfoot>'
	};
	DPGlobal.template = '<div class="datepicker">'+
							'<div class="datepicker-days">'+
								'<table class="table-condensed">'+
									DPGlobal.headTemplate+
									'<tbody></tbody>'+
									DPGlobal.footTemplate+
								'</table>'+
							'</div>'+
							'<div class="datepicker-months">'+
								'<table class="table-condensed">'+
									DPGlobal.headTemplate+
									DPGlobal.contTemplate+
									DPGlobal.footTemplate+
								'</table>'+
							'</div>'+
							'<div class="datepicker-years">'+
								'<table class="table-condensed">'+
									DPGlobal.headTemplate+
									DPGlobal.contTemplate+
									DPGlobal.footTemplate+
								'</table>'+
							'</div>'+
							'<div class="datepicker-decades">'+
								'<table class="table-condensed">'+
									DPGlobal.headTemplate+
									DPGlobal.contTemplate+
									DPGlobal.footTemplate+
								'</table>'+
							'</div>'+
							'<div class="datepicker-centuries">'+
								'<table class="table-condensed">'+
									DPGlobal.headTemplate+
									DPGlobal.contTemplate+
									DPGlobal.footTemplate+
								'</table>'+
							'</div>'+
						'</div>';

	$.fn.datepicker.DPGlobal = DPGlobal;


	/* DATEPICKER NO CONFLICT
	* =================== */

	$.fn.datepicker.noConflict = function(){
		$.fn.datepicker = old;
		return this;
	};

	/* DATEPICKER VERSION
	 * =================== */
	$.fn.datepicker.version = '1.9.0';

	$.fn.datepicker.deprecated = function(msg){
		var console = window.console;
		if (console && console.warn) {
			console.warn('DEPRECATED: ' + msg);
		}
	};


	/* DATEPICKER DATA-API
	* ================== */

	$(document).on(
		'focus.datepicker.data-api click.datepicker.data-api',
		'[data-provide="datepicker"]',
		function(e){
			var $this = $(this);
			if ($this.data('datepicker'))
				return;
			e.preventDefault();
			// component click requires us to explicitly show it
			datepickerPlugin.call($this, 'show');
		}
	);
	$(function(){
		datepickerPlugin.call($('[data-provide="datepicker-inline"]'));
	});

}));

shiny/www/shared/datepicker/css/bootstrap-datepicker3.min.css METASEP
.datepicker{border-radius:.25rem;direction:ltr}.datepicker-inline{width:220px}.datepicker-rtl{direction:rtl}.datepicker-rtl.dropdown-menu{left:auto}.datepicker-rtl table tr td span{float:right}.datepicker-dropdown{top:0;left:0;padding:4px}.datepicker-dropdown:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(0,0,0,0.15);border-top:0;border-bottom-color:rgba(0,0,0,0.2);position:absolute}.datepicker-dropdown:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;border-top:0;position:absolute}.datepicker-dropdown.datepicker-orient-left:before{left:6px}.datepicker-dropdown.datepicker-orient-left:after{left:7px}.datepicker-dropdown.datepicker-orient-right:before{right:6px}.datepicker-dropdown.datepicker-orient-right:after{right:7px}.datepicker-dropdown.datepicker-orient-bottom:before{top:-7px}.datepicker-dropdown.datepicker-orient-bottom:after{top:-6px}.datepicker-dropdown.datepicker-orient-top:before{bottom:-7px;border-bottom:0;border-top:7px solid rgba(0,0,0,0.15)}.datepicker-dropdown.datepicker-orient-top:after{bottom:-6px;border-bottom:0;border-top:6px solid #fff}.datepicker table{margin:0;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.datepicker table tr td,.datepicker table tr th{text-align:center;width:30px;height:30px;border-radius:4px;border:none}.table-striped .datepicker table tr td,.table-striped .datepicker table tr th{background-color:transparent}.datepicker table tr td.old,.datepicker table tr td.new{color:#6c757d}.datepicker table tr td.day:hover,.datepicker table tr td.focused{color:#000;background:#e9e9ea;cursor:pointer}.datepicker table tr td.disabled,.datepicker table tr td.disabled:hover{background:none;color:#6c757d;cursor:default}.datepicker table tr td.highlighted{color:#000;background-color:#d1ecf1;border-color:#83ccd9;border-radius:0}.datepicker table tr td.highlighted:focus,.datepicker table tr td.highlighted.focus{color:#000;background-color:#bcd4d9;border-color:#6299a3}.datepicker table tr td.highlighted:hover{color:#000;background-color:#697679;border-color:#73b3bf}.datepicker table tr td.highlighted:active,.datepicker table tr td.highlighted.active{color:#000;background-color:#bcd4d9;border-color:#73b3bf}.datepicker table tr td.highlighted:active:hover,.datepicker table tr td.highlighted:active:focus,.datepicker table tr td.highlighted.focus:active,.datepicker table tr td.highlighted.active:hover,.datepicker table tr td.highlighted.active:focus,.datepicker table tr td.highlighted.active.focus{color:#000;background-color:#adc4c8;border-color:#6299a3}.datepicker table tr td.highlighted.disabled:hover,.datepicker table tr td.highlighted.disabled:focus,.datepicker table tr td.highlighted.disabled.focus,.datepicker table tr td.highlighted[disabled]:hover,.datepicker table tr td.highlighted[disabled]:focus,.datepicker table tr td.highlighted.focus[disabled],fieldset[disabled] .datepicker table tr td.highlighted:hover,fieldset[disabled] .datepicker table tr td.highlighted:focus,fieldset[disabled] .datepicker table tr td.highlighted.focus{background-color:#d1ecf1;border-color:#83ccd9}.datepicker table tr td.highlighted.focused{background:#aadce5}.datepicker table tr td.highlighted.disabled,.datepicker table tr td.highlighted.disabled:active{background:#d1ecf1;color:#6c757d}.datepicker table tr td.today{color:#000;background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today:focus,.datepicker table tr td.today.focus{color:#000;background-color:#e6c58a;border-color:#bf8926}.datepicker table tr td.today:hover{color:#000;background-color:#806e4d;border-color:#e0a12d}.datepicker table tr td.today:active,.datepicker table tr td.today.active{color:#000;background-color:#e6c58a;border-color:#e0a12d}.datepicker table tr td.today:active:hover,.datepicker table tr td.today:active:focus,.datepicker table tr td.today.focus:active,.datepicker table tr td.today.active:hover,.datepicker table tr td.today.active:focus,.datepicker table tr td.today.active.focus{color:#000;background-color:#d4b67f;border-color:#bf8926}.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:focus,.datepicker table tr td.today.disabled.focus,.datepicker table tr td.today[disabled]:hover,.datepicker table tr td.today[disabled]:focus,.datepicker table tr td.today.focus[disabled],fieldset[disabled] .datepicker table tr td.today:hover,fieldset[disabled] .datepicker table tr td.today:focus,fieldset[disabled] .datepicker table tr td.today.focus{background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today.focused{background:#ffc966}.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled:active{background:#ffdb99;color:#6c757d}.datepicker table tr td.range{color:#000;background-color:#e9e9ea;border-color:#b5b5b8;border-radius:0}.datepicker table tr td.range:focus,.datepicker table tr td.range.focus{color:#000;background-color:#d2d2d3;border-color:#88888a}.datepicker table tr td.range:hover{color:#000;background-color:#757575;border-color:#9f9fa2}.datepicker table tr td.range:active,.datepicker table tr td.range.active{color:#000;background-color:#d2d2d3;border-color:#9f9fa2}.datepicker table tr td.range:active:hover,.datepicker table tr td.range:active:focus,.datepicker table tr td.range.focus:active,.datepicker table tr td.range.active:hover,.datepicker table tr td.range.active:focus,.datepicker table tr td.range.active.focus{color:#000;background-color:#c1c1c2;border-color:#88888a}.datepicker table tr td.range.disabled:hover,.datepicker table tr td.range.disabled:focus,.datepicker table tr td.range.disabled.focus,.datepicker table tr td.range[disabled]:hover,.datepicker table tr td.range[disabled]:focus,.datepicker table tr td.range.focus[disabled],fieldset[disabled] .datepicker table tr td.range:hover,fieldset[disabled] .datepicker table tr td.range:focus,fieldset[disabled] .datepicker table tr td.range.focus{background-color:#e9e9ea;border-color:#b5b5b8}.datepicker table tr td.range.focused{background:#cfcfd1}.datepicker table tr td.range.disabled,.datepicker table tr td.range.disabled:active{background:#e9e9ea;color:#6c757d}.datepicker table tr td.range.highlighted{color:#000;background-color:#ddebee;border-color:#99c3cc}.datepicker table tr td.range.highlighted:focus,.datepicker table tr td.range.highlighted.focus{color:#000;background-color:#c7d4d6;border-color:#739299}.datepicker table tr td.range.highlighted:hover{color:#000;background-color:#6f7677;border-color:#87acb4}.datepicker table tr td.range.highlighted:active,.datepicker table tr td.range.highlighted.active{color:#000;background-color:#c7d4d6;border-color:#87acb4}.datepicker table tr td.range.highlighted:active:hover,.datepicker table tr td.range.highlighted:active:focus,.datepicker table tr td.range.highlighted.focus:active,.datepicker table tr td.range.highlighted.active:hover,.datepicker table tr td.range.highlighted.active:focus,.datepicker table tr td.range.highlighted.active.focus{color:#000;background-color:#b7c3c6;border-color:#739299}.datepicker table tr td.range.highlighted.disabled:hover,.datepicker table tr td.range.highlighted.disabled:focus,.datepicker table tr td.range.highlighted.disabled.focus,.datepicker table tr td.range.highlighted[disabled]:hover,.datepicker table tr td.range.highlighted[disabled]:focus,.datepicker table tr td.range.highlighted.focus[disabled],fieldset[disabled] .datepicker table tr td.range.highlighted:hover,fieldset[disabled] .datepicker table tr td.range.highlighted:focus,fieldset[disabled] .datepicker table tr td.range.highlighted.focus{background-color:#ddebee;border-color:#99c3cc}.datepicker table tr td.range.highlighted.focused{background:#bbd7dd}.datepicker table tr td.range.highlighted.disabled,.datepicker table tr td.range.highlighted.disabled:active{background:#ddebee;color:#6c757d}.datepicker table tr td.range.today{color:#000;background-color:#f4c775;border-color:#eca117}.datepicker table tr td.range.today:focus,.datepicker table tr td.range.today.focus{color:#000;background-color:#dcb369;border-color:#b17811}.datepicker table tr td.range.today:hover{color:#000;background-color:#7a643b;border-color:#d08d14}.datepicker table tr td.range.today:active,.datepicker table tr td.range.today.active{color:#000;background-color:#dcb369;border-color:#d08d14}.datepicker table tr td.range.today:active:hover,.datepicker table tr td.range.today:active:focus,.datepicker table tr td.range.today.focus:active,.datepicker table tr td.range.today.active:hover,.datepicker table tr td.range.today.active:focus,.datepicker table tr td.range.today.active.focus{color:#000;background-color:#cba561;border-color:#b17811}.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:focus,.datepicker table tr td.range.today.disabled.focus,.datepicker table tr td.range.today[disabled]:hover,.datepicker table tr td.range.today[disabled]:focus,.datepicker table tr td.range.today.focus[disabled],fieldset[disabled] .datepicker table tr td.range.today:hover,fieldset[disabled] .datepicker table tr td.range.today:focus,fieldset[disabled] .datepicker table tr td.range.today.focus{background-color:#f4c775;border-color:#eca117}.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled:active{background:#f4c775;color:#6c757d}.datepicker table tr td.selected,.datepicker table tr td.selected.highlighted{color:#fff;background-color:#898b8d;border-color:#6b6e71;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.datepicker table tr td.selected:focus,.datepicker table tr td.selected.focus,.datepicker table tr td.selected.highlighted:focus,.datepicker table tr td.selected.highlighted.focus{color:#fff;background-color:#959798;border-color:#909295}.datepicker table tr td.selected:hover,.datepicker table tr td.selected.highlighted:hover{color:#fff;background-color:#c4c5c6;border-color:#7d7f82}.datepicker table tr td.selected:active,.datepicker table tr td.selected.active,.datepicker table tr td.selected.highlighted:active,.datepicker table tr td.selected.highlighted.active{color:#fff;background-color:#959798;border-color:#7d7f82}.datepicker table tr td.selected:active:hover,.datepicker table tr td.selected:active:focus,.datepicker table tr td.selected.focus:active,.datepicker table tr td.selected.active:hover,.datepicker table tr td.selected.active:focus,.datepicker table tr td.selected.active.focus,.datepicker table tr td.selected.highlighted:active:hover,.datepicker table tr td.selected.highlighted:active:focus,.datepicker table tr td.selected.highlighted.focus:active,.datepicker table tr td.selected.highlighted.active:hover,.datepicker table tr td.selected.highlighted.active:focus,.datepicker table tr td.selected.highlighted.active.focus{color:#fff;background-color:#9d9fa0;border-color:#909295}.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:focus,.datepicker table tr td.selected.disabled.focus,.datepicker table tr td.selected[disabled]:hover,.datepicker table tr td.selected[disabled]:focus,.datepicker table tr td.selected.focus[disabled],fieldset[disabled] .datepicker table tr td.selected:hover,fieldset[disabled] .datepicker table tr td.selected:focus,fieldset[disabled] .datepicker table tr td.selected.focus,.datepicker table tr td.selected.highlighted.disabled:hover,.datepicker table tr td.selected.highlighted.disabled:focus,.datepicker table tr td.selected.highlighted.disabled.focus,.datepicker table tr td.selected.highlighted[disabled]:hover,.datepicker table tr td.selected.highlighted[disabled]:focus,.datepicker table tr td.selected.highlighted.focus[disabled],fieldset[disabled] .datepicker table tr td.selected.highlighted:hover,fieldset[disabled] .datepicker table tr td.selected.highlighted:focus,fieldset[disabled] .datepicker table tr td.selected.highlighted.focus{background-color:#898b8d;border-color:#6b6e71}.datepicker table tr td.active,.datepicker table tr td.active.highlighted{color:#fff;background-color:#007bff;border-color:#0277f4;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.datepicker table tr td.active:focus,.datepicker table tr td.active.focus,.datepicker table tr td.active.highlighted:focus,.datepicker table tr td.active.highlighted.focus{color:#fff;background-color:#1a88ff;border-color:#4199f7}.datepicker table tr td.active:hover,.datepicker table tr td.active.highlighted:hover{color:#fff;background-color:#80bdff;border-color:#2087f5}.datepicker table tr td.active:active,.datepicker table tr td.active.active,.datepicker table tr td.active.highlighted:active,.datepicker table tr td.active.highlighted.active{color:#fff;background-color:#1a88ff;border-color:#2087f5}.datepicker table tr td.active:active:hover,.datepicker table tr td.active:active:focus,.datepicker table tr td.active.focus:active,.datepicker table tr td.active.active:hover,.datepicker table tr td.active.active:focus,.datepicker table tr td.active.active.focus,.datepicker table tr td.active.highlighted:active:hover,.datepicker table tr td.active.highlighted:active:focus,.datepicker table tr td.active.highlighted.focus:active,.datepicker table tr td.active.highlighted.active:hover,.datepicker table tr td.active.highlighted.active:focus,.datepicker table tr td.active.highlighted.active.focus{color:#fff;background-color:#2b91ff;border-color:#4199f7}.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:focus,.datepicker table tr td.active.disabled.focus,.datepicker table tr td.active[disabled]:hover,.datepicker table tr td.active[disabled]:focus,.datepicker table tr td.active.focus[disabled],fieldset[disabled] .datepicker table tr td.active:hover,fieldset[disabled] .datepicker table tr td.active:focus,fieldset[disabled] .datepicker table tr td.active.focus,.datepicker table tr td.active.highlighted.disabled:hover,.datepicker table tr td.active.highlighted.disabled:focus,.datepicker table tr td.active.highlighted.disabled.focus,.datepicker table tr td.active.highlighted[disabled]:hover,.datepicker table tr td.active.highlighted[disabled]:focus,.datepicker table tr td.active.highlighted.focus[disabled],fieldset[disabled] .datepicker table tr td.active.highlighted:hover,fieldset[disabled] .datepicker table tr td.active.highlighted:focus,fieldset[disabled] .datepicker table tr td.active.highlighted.focus{background-color:#007bff;border-color:#0277f4}.datepicker table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer;border-radius:4px}.datepicker table tr td span:hover,.datepicker table tr td span.focused{color:#000;background:#e9e9ea}.datepicker table tr td span.disabled,.datepicker table tr td span.disabled:hover{background:none;color:#6c757d;cursor:default}.datepicker table tr td span.active,.datepicker table tr td span.active:hover,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled:hover{color:#fff;background-color:#007bff;border-color:#0277f4;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.datepicker table tr td span.active:focus,.datepicker table tr td span.active.focus,.datepicker table tr td span.active:hover:focus,.datepicker table tr td span.active.focus:hover,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled.focus,.datepicker table tr td span.active.disabled:hover:focus,.datepicker table tr td span.active.disabled.focus:hover{color:#fff;background-color:#1a88ff;border-color:#4199f7}.datepicker table tr td span.active:hover,.datepicker table tr td span.active:hover:hover,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover:hover{color:#fff;background-color:#80bdff;border-color:#2087f5}.datepicker table tr td span.active:active,.datepicker table tr td span.active.active,.datepicker table tr td span.active:hover:active,.datepicker table tr td span.active.active:hover,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.disabled.active:hover{color:#fff;background-color:#1a88ff;border-color:#2087f5}.datepicker table tr td span.active:active:hover,.datepicker table tr td span.active:active:focus,.datepicker table tr td span.active.focus:active,.datepicker table tr td span.active.active:hover,.datepicker table tr td span.active.active:focus,.datepicker table tr td span.active.active.focus,.datepicker table tr td span.active:hover:active:hover,.datepicker table tr td span.active:hover:active:focus,.datepicker table tr td span.active.focus:hover:active,.datepicker table tr td span.active.active:hover:hover,.datepicker table tr td span.active.active:hover:focus,.datepicker table tr td span.active.active.focus:hover,.datepicker table tr td span.active.disabled:active:hover,.datepicker table tr td span.active.disabled:active:focus,.datepicker table tr td span.active.disabled.focus:active,.datepicker table tr td span.active.disabled.active:hover,.datepicker table tr td span.active.disabled.active:focus,.datepicker table tr td span.active.disabled.active.focus,.datepicker table tr td span.active.disabled:hover:active:hover,.datepicker table tr td span.active.disabled:hover:active:focus,.datepicker table tr td span.active.disabled.focus:hover:active,.datepicker table tr td span.active.disabled.active:hover:hover,.datepicker table tr td span.active.disabled.active:hover:focus,.datepicker table tr td span.active.disabled.active.focus:hover{color:#fff;background-color:#2b91ff;border-color:#4199f7}.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled.focus,.datepicker table tr td span.active[disabled]:hover,.datepicker table tr td span.active[disabled]:focus,.datepicker table tr td span.active.focus[disabled],fieldset[disabled] .datepicker table tr td span.active:hover,fieldset[disabled] .datepicker table tr td span.active:focus,fieldset[disabled] .datepicker table tr td span.active.focus,.datepicker table tr td span.active.disabled:hover:hover,.datepicker table tr td span.active.disabled:hover:focus,.datepicker table tr td span.active.disabled.focus:hover,.datepicker table tr td span.active[disabled]:hover:hover,.datepicker table tr td span.active[disabled]:hover:focus,.datepicker table tr td span.active.focus[disabled]:hover,fieldset[disabled] .datepicker table tr td span.active:hover:hover,fieldset[disabled] .datepicker table tr td span.active:hover:focus,fieldset[disabled] .datepicker table tr td span.active.focus:hover,.datepicker table tr td span.active.disabled.disabled:hover,.datepicker table tr td span.active.disabled.disabled:focus,.datepicker table tr td span.active.disabled.disabled.focus,.datepicker table tr td span.active.disabled[disabled]:hover,.datepicker table tr td span.active.disabled[disabled]:focus,.datepicker table tr td span.active.disabled.focus[disabled],fieldset[disabled] .datepicker table tr td span.active.disabled:hover,fieldset[disabled] .datepicker table tr td span.active.disabled:focus,fieldset[disabled] .datepicker table tr td span.active.disabled.focus,.datepicker table tr td span.active.disabled.disabled:hover:hover,.datepicker table tr td span.active.disabled.disabled:hover:focus,.datepicker table tr td span.active.disabled.disabled.focus:hover,.datepicker table tr td span.active.disabled[disabled]:hover:hover,.datepicker table tr td span.active.disabled[disabled]:hover:focus,.datepicker table tr td span.active.disabled.focus[disabled]:hover,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,fieldset[disabled] .datepicker table tr td span.active.disabled.focus:hover{background-color:#007bff;border-color:#0277f4}.datepicker table tr td span.old,.datepicker table tr td span.new{color:#6c757d}.datepicker .datepicker-switch{width:145px}.datepicker .datepicker-switch,.datepicker .prev,.datepicker .next,.datepicker tfoot tr th{cursor:pointer}.datepicker .datepicker-switch:hover,.datepicker .prev:hover,.datepicker .next:hover,.datepicker tfoot tr th:hover{color:#000;background:#e9e9ea}.datepicker .prev.disabled,.datepicker .next.disabled{visibility:hidden}.datepicker .cw{font-size:10px;width:12px;padding:0 2px 0 5px;vertical-align:middle}.input-group.date .input-group-addon{cursor:pointer}.input-daterange{width:100%}.input-daterange input{text-align:center}.input-daterange input:first-child{border-radius:3px 0 0 3px}.input-daterange input:last-child{border-radius:0 3px 3px 0}.input-daterange .input-group-addon{width:auto;min-width:16px;padding:4px 5px;line-height:1.5;border-width:1px 0;margin-left:-5px;margin-right:-5px}

shiny/www/shared/datepicker/css/bootstrap-datepicker3.css METASEP
.datepicker {
  border-radius: 0.25rem;
  direction: ltr;
}

.datepicker-inline {
  width: 220px;
}

.datepicker-rtl {
  direction: rtl;
}

.datepicker-rtl.dropdown-menu {
  left: auto;
}

.datepicker-rtl table tr td span {
  float: right;
}

.datepicker-dropdown {
  top: 0;
  left: 0;
  padding: 4px;
}

.datepicker-dropdown:before {
  content: '';
  display: inline-block;
  border-left: 7px solid transparent;
  border-right: 7px solid transparent;
  border-bottom: 7px solid rgba(0, 0, 0, 0.15);
  border-top: 0;
  border-bottom-color: rgba(0, 0, 0, 0.2);
  position: absolute;
}

.datepicker-dropdown:after {
  content: '';
  display: inline-block;
  border-left: 6px solid transparent;
  border-right: 6px solid transparent;
  border-bottom: 6px solid #fff;
  border-top: 0;
  position: absolute;
}

.datepicker-dropdown.datepicker-orient-left:before {
  left: 6px;
}

.datepicker-dropdown.datepicker-orient-left:after {
  left: 7px;
}

.datepicker-dropdown.datepicker-orient-right:before {
  right: 6px;
}

.datepicker-dropdown.datepicker-orient-right:after {
  right: 7px;
}

.datepicker-dropdown.datepicker-orient-bottom:before {
  top: -7px;
}

.datepicker-dropdown.datepicker-orient-bottom:after {
  top: -6px;
}

.datepicker-dropdown.datepicker-orient-top:before {
  bottom: -7px;
  border-bottom: 0;
  border-top: 7px solid rgba(0, 0, 0, 0.15);
}

.datepicker-dropdown.datepicker-orient-top:after {
  bottom: -6px;
  border-bottom: 0;
  border-top: 6px solid #fff;
}

.datepicker table {
  margin: 0;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

.datepicker table tr td, .datepicker table tr th {
  text-align: center;
  width: 30px;
  height: 30px;
  border-radius: 4px;
  border: none;
}

.table-striped .datepicker table tr td, .table-striped .datepicker table tr th {
  background-color: transparent;
}

.datepicker table tr td.old, .datepicker table tr td.new {
  color: #6c757d;
}

.datepicker table tr td.day:hover, .datepicker table tr td.focused {
  color: #000;
  background: #e9e9ea;
  cursor: pointer;
}

.datepicker table tr td.disabled, .datepicker table tr td.disabled:hover {
  background: none;
  color: #6c757d;
  cursor: default;
}

.datepicker table tr td.highlighted {
  color: #000;
  background-color: #d1ecf1;
  border-color: #83ccd9;
  border-radius: 0;
}

.datepicker table tr td.highlighted:focus, .datepicker table tr td.highlighted.focus {
  color: #000;
  background-color: #bcd4d9;
  border-color: #6299a3;
}

.datepicker table tr td.highlighted:hover {
  color: #000;
  background-color: #697679;
  border-color: #73b3bf;
}

.datepicker table tr td.highlighted:active, .datepicker table tr td.highlighted.active {
  color: #000;
  background-color: #bcd4d9;
  border-color: #73b3bf;
}

.datepicker table tr td.highlighted:active:hover, .datepicker table tr td.highlighted:active:focus, .datepicker table tr td.highlighted.focus:active, .datepicker table tr td.highlighted.active:hover, .datepicker table tr td.highlighted.active:focus, .datepicker table tr td.highlighted.active.focus {
  color: #000;
  background-color: #adc4c8;
  border-color: #6299a3;
}

.datepicker table tr td.highlighted.disabled:hover, .datepicker table tr td.highlighted.disabled:focus, .datepicker table tr td.highlighted.disabled.focus, .datepicker table tr td.highlighted[disabled]:hover, .datepicker table tr td.highlighted[disabled]:focus, .datepicker table tr td.highlighted.focus[disabled], fieldset[disabled] .datepicker table tr td.highlighted:hover, fieldset[disabled] .datepicker table tr td.highlighted:focus, fieldset[disabled] .datepicker table tr td.highlighted.focus {
  background-color: #d1ecf1;
  border-color: #83ccd9;
}

.datepicker table tr td.highlighted.focused {
  background: #aadce5;
}

.datepicker table tr td.highlighted.disabled, .datepicker table tr td.highlighted.disabled:active {
  background: #d1ecf1;
  color: #6c757d;
}

.datepicker table tr td.today {
  color: #000;
  background-color: #ffdb99;
  border-color: #ffb733;
}

.datepicker table tr td.today:focus, .datepicker table tr td.today.focus {
  color: #000;
  background-color: #e6c58a;
  border-color: #bf8926;
}

.datepicker table tr td.today:hover {
  color: #000;
  background-color: #806e4d;
  border-color: #e0a12d;
}

.datepicker table tr td.today:active, .datepicker table tr td.today.active {
  color: #000;
  background-color: #e6c58a;
  border-color: #e0a12d;
}

.datepicker table tr td.today:active:hover, .datepicker table tr td.today:active:focus, .datepicker table tr td.today.focus:active, .datepicker table tr td.today.active:hover, .datepicker table tr td.today.active:focus, .datepicker table tr td.today.active.focus {
  color: #000;
  background-color: #d4b67f;
  border-color: #bf8926;
}

.datepicker table tr td.today.disabled:hover, .datepicker table tr td.today.disabled:focus, .datepicker table tr td.today.disabled.focus, .datepicker table tr td.today[disabled]:hover, .datepicker table tr td.today[disabled]:focus, .datepicker table tr td.today.focus[disabled], fieldset[disabled] .datepicker table tr td.today:hover, fieldset[disabled] .datepicker table tr td.today:focus, fieldset[disabled] .datepicker table tr td.today.focus {
  background-color: #ffdb99;
  border-color: #ffb733;
}

.datepicker table tr td.today.focused {
  background: #ffc966;
}

.datepicker table tr td.today.disabled, .datepicker table tr td.today.disabled:active {
  background: #ffdb99;
  color: #6c757d;
}

.datepicker table tr td.range {
  color: #000;
  background-color: #e9e9ea;
  border-color: #b5b5b8;
  border-radius: 0;
}

.datepicker table tr td.range:focus, .datepicker table tr td.range.focus {
  color: #000;
  background-color: #d2d2d3;
  border-color: #88888a;
}

.datepicker table tr td.range:hover {
  color: #000;
  background-color: #757575;
  border-color: #9f9fa2;
}

.datepicker table tr td.range:active, .datepicker table tr td.range.active {
  color: #000;
  background-color: #d2d2d3;
  border-color: #9f9fa2;
}

.datepicker table tr td.range:active:hover, .datepicker table tr td.range:active:focus, .datepicker table tr td.range.focus:active, .datepicker table tr td.range.active:hover, .datepicker table tr td.range.active:focus, .datepicker table tr td.range.active.focus {
  color: #000;
  background-color: #c1c1c2;
  border-color: #88888a;
}

.datepicker table tr td.range.disabled:hover, .datepicker table tr td.range.disabled:focus, .datepicker table tr td.range.disabled.focus, .datepicker table tr td.range[disabled]:hover, .datepicker table tr td.range[disabled]:focus, .datepicker table tr td.range.focus[disabled], fieldset[disabled] .datepicker table tr td.range:hover, fieldset[disabled] .datepicker table tr td.range:focus, fieldset[disabled] .datepicker table tr td.range.focus {
  background-color: #e9e9ea;
  border-color: #b5b5b8;
}

.datepicker table tr td.range.focused {
  background: #cfcfd1;
}

.datepicker table tr td.range.disabled, .datepicker table tr td.range.disabled:active {
  background: #e9e9ea;
  color: #6c757d;
}

.datepicker table tr td.range.highlighted {
  color: #000;
  background-color: #ddebee;
  border-color: #99c3cc;
}

.datepicker table tr td.range.highlighted:focus, .datepicker table tr td.range.highlighted.focus {
  color: #000;
  background-color: #c7d4d6;
  border-color: #739299;
}

.datepicker table tr td.range.highlighted:hover {
  color: #000;
  background-color: #6f7677;
  border-color: #87acb4;
}

.datepicker table tr td.range.highlighted:active, .datepicker table tr td.range.highlighted.active {
  color: #000;
  background-color: #c7d4d6;
  border-color: #87acb4;
}

.datepicker table tr td.range.highlighted:active:hover, .datepicker table tr td.range.highlighted:active:focus, .datepicker table tr td.range.highlighted.focus:active, .datepicker table tr td.range.highlighted.active:hover, .datepicker table tr td.range.highlighted.active:focus, .datepicker table tr td.range.highlighted.active.focus {
  color: #000;
  background-color: #b7c3c6;
  border-color: #739299;
}

.datepicker table tr td.range.highlighted.disabled:hover, .datepicker table tr td.range.highlighted.disabled:focus, .datepicker table tr td.range.highlighted.disabled.focus, .datepicker table tr td.range.highlighted[disabled]:hover, .datepicker table tr td.range.highlighted[disabled]:focus, .datepicker table tr td.range.highlighted.focus[disabled], fieldset[disabled] .datepicker table tr td.range.highlighted:hover, fieldset[disabled] .datepicker table tr td.range.highlighted:focus, fieldset[disabled] .datepicker table tr td.range.highlighted.focus {
  background-color: #ddebee;
  border-color: #99c3cc;
}

.datepicker table tr td.range.highlighted.focused {
  background: #bbd7dd;
}

.datepicker table tr td.range.highlighted.disabled, .datepicker table tr td.range.highlighted.disabled:active {
  background: #ddebee;
  color: #6c757d;
}

.datepicker table tr td.range.today {
  color: #000;
  background-color: #f4c775;
  border-color: #eca117;
}

.datepicker table tr td.range.today:focus, .datepicker table tr td.range.today.focus {
  color: #000;
  background-color: #dcb369;
  border-color: #b17811;
}

.datepicker table tr td.range.today:hover {
  color: #000;
  background-color: #7a643b;
  border-color: #d08d14;
}

.datepicker table tr td.range.today:active, .datepicker table tr td.range.today.active {
  color: #000;
  background-color: #dcb369;
  border-color: #d08d14;
}

.datepicker table tr td.range.today:active:hover, .datepicker table tr td.range.today:active:focus, .datepicker table tr td.range.today.focus:active, .datepicker table tr td.range.today.active:hover, .datepicker table tr td.range.today.active:focus, .datepicker table tr td.range.today.active.focus {
  color: #000;
  background-color: #cba561;
  border-color: #b17811;
}

.datepicker table tr td.range.today.disabled:hover, .datepicker table tr td.range.today.disabled:focus, .datepicker table tr td.range.today.disabled.focus, .datepicker table tr td.range.today[disabled]:hover, .datepicker table tr td.range.today[disabled]:focus, .datepicker table tr td.range.today.focus[disabled], fieldset[disabled] .datepicker table tr td.range.today:hover, fieldset[disabled] .datepicker table tr td.range.today:focus, fieldset[disabled] .datepicker table tr td.range.today.focus {
  background-color: #f4c775;
  border-color: #eca117;
}

.datepicker table tr td.range.today.disabled, .datepicker table tr td.range.today.disabled:active {
  background: #f4c775;
  color: #6c757d;
}

.datepicker table tr td.selected, .datepicker table tr td.selected.highlighted {
  color: #fff;
  background-color: #898b8d;
  border-color: #6b6e71;
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}

.datepicker table tr td.selected:focus, .datepicker table tr td.selected.focus, .datepicker table tr td.selected.highlighted:focus, .datepicker table tr td.selected.highlighted.focus {
  color: #fff;
  background-color: #959798;
  border-color: #909295;
}

.datepicker table tr td.selected:hover, .datepicker table tr td.selected.highlighted:hover {
  color: #fff;
  background-color: #c4c5c6;
  border-color: #7d7f82;
}

.datepicker table tr td.selected:active, .datepicker table tr td.selected.active, .datepicker table tr td.selected.highlighted:active, .datepicker table tr td.selected.highlighted.active {
  color: #fff;
  background-color: #959798;
  border-color: #7d7f82;
}

.datepicker table tr td.selected:active:hover, .datepicker table tr td.selected:active:focus, .datepicker table tr td.selected.focus:active, .datepicker table tr td.selected.active:hover, .datepicker table tr td.selected.active:focus, .datepicker table tr td.selected.active.focus, .datepicker table tr td.selected.highlighted:active:hover, .datepicker table tr td.selected.highlighted:active:focus, .datepicker table tr td.selected.highlighted.focus:active, .datepicker table tr td.selected.highlighted.active:hover, .datepicker table tr td.selected.highlighted.active:focus, .datepicker table tr td.selected.highlighted.active.focus {
  color: #fff;
  background-color: #9d9fa0;
  border-color: #909295;
}

.datepicker table tr td.selected.disabled:hover, .datepicker table tr td.selected.disabled:focus, .datepicker table tr td.selected.disabled.focus, .datepicker table tr td.selected[disabled]:hover, .datepicker table tr td.selected[disabled]:focus, .datepicker table tr td.selected.focus[disabled], fieldset[disabled] .datepicker table tr td.selected:hover, fieldset[disabled] .datepicker table tr td.selected:focus, fieldset[disabled] .datepicker table tr td.selected.focus, .datepicker table tr td.selected.highlighted.disabled:hover, .datepicker table tr td.selected.highlighted.disabled:focus, .datepicker table tr td.selected.highlighted.disabled.focus, .datepicker table tr td.selected.highlighted[disabled]:hover, .datepicker table tr td.selected.highlighted[disabled]:focus, .datepicker table tr td.selected.highlighted.focus[disabled], fieldset[disabled] .datepicker table tr td.selected.highlighted:hover, fieldset[disabled] .datepicker table tr td.selected.highlighted:focus, fieldset[disabled] .datepicker table tr td.selected.highlighted.focus {
  background-color: #898b8d;
  border-color: #6b6e71;
}

.datepicker table tr td.active, .datepicker table tr td.active.highlighted {
  color: #fff;
  background-color: #007bff;
  border-color: #0277f4;
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}

.datepicker table tr td.active:focus, .datepicker table tr td.active.focus, .datepicker table tr td.active.highlighted:focus, .datepicker table tr td.active.highlighted.focus {
  color: #fff;
  background-color: #1a88ff;
  border-color: #4199f7;
}

.datepicker table tr td.active:hover, .datepicker table tr td.active.highlighted:hover {
  color: #fff;
  background-color: #80bdff;
  border-color: #2087f5;
}

.datepicker table tr td.active:active, .datepicker table tr td.active.active, .datepicker table tr td.active.highlighted:active, .datepicker table tr td.active.highlighted.active {
  color: #fff;
  background-color: #1a88ff;
  border-color: #2087f5;
}

.datepicker table tr td.active:active:hover, .datepicker table tr td.active:active:focus, .datepicker table tr td.active.focus:active, .datepicker table tr td.active.active:hover, .datepicker table tr td.active.active:focus, .datepicker table tr td.active.active.focus, .datepicker table tr td.active.highlighted:active:hover, .datepicker table tr td.active.highlighted:active:focus, .datepicker table tr td.active.highlighted.focus:active, .datepicker table tr td.active.highlighted.active:hover, .datepicker table tr td.active.highlighted.active:focus, .datepicker table tr td.active.highlighted.active.focus {
  color: #fff;
  background-color: #2b91ff;
  border-color: #4199f7;
}

.datepicker table tr td.active.disabled:hover, .datepicker table tr td.active.disabled:focus, .datepicker table tr td.active.disabled.focus, .datepicker table tr td.active[disabled]:hover, .datepicker table tr td.active[disabled]:focus, .datepicker table tr td.active.focus[disabled], fieldset[disabled] .datepicker table tr td.active:hover, fieldset[disabled] .datepicker table tr td.active:focus, fieldset[disabled] .datepicker table tr td.active.focus, .datepicker table tr td.active.highlighted.disabled:hover, .datepicker table tr td.active.highlighted.disabled:focus, .datepicker table tr td.active.highlighted.disabled.focus, .datepicker table tr td.active.highlighted[disabled]:hover, .datepicker table tr td.active.highlighted[disabled]:focus, .datepicker table tr td.active.highlighted.focus[disabled], fieldset[disabled] .datepicker table tr td.active.highlighted:hover, fieldset[disabled] .datepicker table tr td.active.highlighted:focus, fieldset[disabled] .datepicker table tr td.active.highlighted.focus {
  background-color: #007bff;
  border-color: #0277f4;
}

.datepicker table tr td span {
  display: block;
  width: 23%;
  height: 54px;
  line-height: 54px;
  float: left;
  margin: 1%;
  cursor: pointer;
  border-radius: 4px;
}

.datepicker table tr td span:hover, .datepicker table tr td span.focused {
  color: #000;
  background: #e9e9ea;
}

.datepicker table tr td span.disabled, .datepicker table tr td span.disabled:hover {
  background: none;
  color: #6c757d;
  cursor: default;
}

.datepicker table tr td span.active, .datepicker table tr td span.active:hover, .datepicker table tr td span.active.disabled, .datepicker table tr td span.active.disabled:hover {
  color: #fff;
  background-color: #007bff;
  border-color: #0277f4;
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}

.datepicker table tr td span.active:focus, .datepicker table tr td span.active.focus, .datepicker table tr td span.active:hover:focus, .datepicker table tr td span.active.focus:hover, .datepicker table tr td span.active.disabled:focus, .datepicker table tr td span.active.disabled.focus, .datepicker table tr td span.active.disabled:hover:focus, .datepicker table tr td span.active.disabled.focus:hover {
  color: #fff;
  background-color: #1a88ff;
  border-color: #4199f7;
}

.datepicker table tr td span.active:hover, .datepicker table tr td span.active:hover:hover, .datepicker table tr td span.active.disabled:hover, .datepicker table tr td span.active.disabled:hover:hover {
  color: #fff;
  background-color: #80bdff;
  border-color: #2087f5;
}

.datepicker table tr td span.active:active, .datepicker table tr td span.active.active, .datepicker table tr td span.active:hover:active, .datepicker table tr td span.active.active:hover, .datepicker table tr td span.active.disabled:active, .datepicker table tr td span.active.disabled.active, .datepicker table tr td span.active.disabled:hover:active, .datepicker table tr td span.active.disabled.active:hover {
  color: #fff;
  background-color: #1a88ff;
  border-color: #2087f5;
}

.datepicker table tr td span.active:active:hover, .datepicker table tr td span.active:active:focus, .datepicker table tr td span.active.focus:active, .datepicker table tr td span.active.active:hover, .datepicker table tr td span.active.active:focus, .datepicker table tr td span.active.active.focus, .datepicker table tr td span.active:hover:active:hover, .datepicker table tr td span.active:hover:active:focus, .datepicker table tr td span.active.focus:hover:active, .datepicker table tr td span.active.active:hover:hover, .datepicker table tr td span.active.active:hover:focus, .datepicker table tr td span.active.active.focus:hover, .datepicker table tr td span.active.disabled:active:hover, .datepicker table tr td span.active.disabled:active:focus, .datepicker table tr td span.active.disabled.focus:active, .datepicker table tr td span.active.disabled.active:hover, .datepicker table tr td span.active.disabled.active:focus, .datepicker table tr td span.active.disabled.active.focus, .datepicker table tr td span.active.disabled:hover:active:hover, .datepicker table tr td span.active.disabled:hover:active:focus, .datepicker table tr td span.active.disabled.focus:hover:active, .datepicker table tr td span.active.disabled.active:hover:hover, .datepicker table tr td span.active.disabled.active:hover:focus, .datepicker table tr td span.active.disabled.active.focus:hover {
  color: #fff;
  background-color: #2b91ff;
  border-color: #4199f7;
}

.datepicker table tr td span.active.disabled:hover, .datepicker table tr td span.active.disabled:focus, .datepicker table tr td span.active.disabled.focus, .datepicker table tr td span.active[disabled]:hover, .datepicker table tr td span.active[disabled]:focus, .datepicker table tr td span.active.focus[disabled], fieldset[disabled] .datepicker table tr td span.active:hover, fieldset[disabled] .datepicker table tr td span.active:focus, fieldset[disabled] .datepicker table tr td span.active.focus, .datepicker table tr td span.active.disabled:hover:hover, .datepicker table tr td span.active.disabled:hover:focus, .datepicker table tr td span.active.disabled.focus:hover, .datepicker table tr td span.active[disabled]:hover:hover, .datepicker table tr td span.active[disabled]:hover:focus, .datepicker table tr td span.active.focus[disabled]:hover, fieldset[disabled] .datepicker table tr td span.active:hover:hover, fieldset[disabled] .datepicker table tr td span.active:hover:focus, fieldset[disabled] .datepicker table tr td span.active.focus:hover, .datepicker table tr td span.active.disabled.disabled:hover, .datepicker table tr td span.active.disabled.disabled:focus, .datepicker table tr td span.active.disabled.disabled.focus, .datepicker table tr td span.active.disabled[disabled]:hover, .datepicker table tr td span.active.disabled[disabled]:focus, .datepicker table tr td span.active.disabled.focus[disabled], fieldset[disabled] .datepicker table tr td span.active.disabled:hover, fieldset[disabled] .datepicker table tr td span.active.disabled:focus, fieldset[disabled] .datepicker table tr td span.active.disabled.focus, .datepicker table tr td span.active.disabled.disabled:hover:hover, .datepicker table tr td span.active.disabled.disabled:hover:focus, .datepicker table tr td span.active.disabled.disabled.focus:hover, .datepicker table tr td span.active.disabled[disabled]:hover:hover, .datepicker table tr td span.active.disabled[disabled]:hover:focus, .datepicker table tr td span.active.disabled.focus[disabled]:hover, fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover, fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus, fieldset[disabled] .datepicker table tr td span.active.disabled.focus:hover {
  background-color: #007bff;
  border-color: #0277f4;
}

.datepicker table tr td span.old, .datepicker table tr td span.new {
  color: #6c757d;
}

.datepicker .datepicker-switch {
  width: 145px;
}

.datepicker .datepicker-switch,
.datepicker .prev,
.datepicker .next,
.datepicker tfoot tr th {
  cursor: pointer;
}

.datepicker .datepicker-switch:hover,
.datepicker .prev:hover,
.datepicker .next:hover,
.datepicker tfoot tr th:hover {
  color: #000;
  background: #e9e9ea;
}

.datepicker .prev.disabled, .datepicker .next.disabled {
  visibility: hidden;
}

.datepicker .cw {
  font-size: 10px;
  width: 12px;
  padding: 0 2px 0 5px;
  vertical-align: middle;
}

.input-group.date .input-group-addon {
  cursor: pointer;
}

.input-daterange {
  width: 100%;
}

.input-daterange input {
  text-align: center;
}

.input-daterange input:first-child {
  border-radius: 3px 0 0 3px;
}

.input-daterange input:last-child {
  border-radius: 0 3px 3px 0;
}

.input-daterange .input-group-addon {
  width: auto;
  min-width: 16px;
  padding: 4px 5px;
  line-height: 1.5;
  border-width: 1px 0;
  margin-left: -5px;
  margin-right: -5px;
}

shiny/www/shared/datatables/js/jquery.dataTables.min.js METASEP
/*! DataTables 1.10.5
 * ©2008-2015 SpryMedia Ltd - datatables.net/license
 */
(function(Ea,P,k){var O=function(h){function V(a){var b,c,e={};h.each(a,function(d){if((b=d.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(b[1]+" "))c=d.replace(b[0],b[2].toLowerCase()),e[c]=d,"o"===b[1]&&V(a[d])});a._hungarianMap=e}function H(a,b,c){a._hungarianMap||V(a);var e;h.each(b,function(d){e=a._hungarianMap[d];if(e!==k&&(c||b[e]===k))"o"===e.charAt(0)?(b[e]||(b[e]={}),h.extend(!0,b[e],b[d]),H(a[e],b[e],c)):b[e]=b[d]})}function O(a){var b=o.defaults.oLanguage,c=a.sZeroRecords;
!a.sEmptyTable&&(c&&"No data available in table"===b.sEmptyTable)&&E(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&(c&&"Loading..."===b.sLoadingRecords)&&E(a,a,"sZeroRecords","sLoadingRecords");a.sInfoThousands&&(a.sThousands=a.sInfoThousands);(a=a.sDecimal)&&db(a)}function eb(a){A(a,"ordering","bSort");A(a,"orderMulti","bSortMulti");A(a,"orderClasses","bSortClasses");A(a,"orderCellsTop","bSortCellsTop");A(a,"order","aaSorting");A(a,"orderFixed","aaSortingFixed");A(a,"paging","bPaginate");
A(a,"pagingType","sPaginationType");A(a,"pageLength","iDisplayLength");A(a,"searching","bFilter");if(a=a.aoSearchCols)for(var b=0,c=a.length;b<c;b++)a[b]&&H(o.models.oSearch,a[b])}function fb(a){A(a,"orderable","bSortable");A(a,"orderData","aDataSort");A(a,"orderSequence","asSorting");A(a,"orderDataType","sortDataType")}function gb(a){var a=a.oBrowser,b=h("<div/>").css({position:"absolute",top:0,left:0,height:1,width:1,overflow:"hidden"}).append(h("<div/>").css({position:"absolute",top:1,left:1,width:100,
overflow:"scroll"}).append(h('<div class="test"/>').css({width:"100%",height:10}))).appendTo("body"),c=b.find(".test");a.bScrollOversize=100===c[0].offsetWidth;a.bScrollbarLeft=1!==c.offset().left;b.remove()}function hb(a,b,c,e,d,f){var g,j=!1;c!==k&&(g=c,j=!0);for(;e!==d;)a.hasOwnProperty(e)&&(g=j?b(g,a[e],e,a):a[e],j=!0,e+=f);return g}function Fa(a,b){var c=o.defaults.column,e=a.aoColumns.length,c=h.extend({},o.models.oColumn,c,{nTh:b?b:P.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:
"",aDataSort:c.aDataSort?c.aDataSort:[e],mData:c.mData?c.mData:e,idx:e});a.aoColumns.push(c);c=a.aoPreSearchCols;c[e]=h.extend({},o.models.oSearch,c[e]);ka(a,e,h(b).data())}function ka(a,b,c){var b=a.aoColumns[b],e=a.oClasses,d=h(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=d.attr("width")||null;var f=(d.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);f&&(b.sWidthOrig=f[1])}c!==k&&null!==c&&(fb(c),H(o.defaults.column,c),c.mDataProp!==k&&!c.mData&&(c.mData=c.mDataProp),c.sType&&(b._sManualType=c.sType),
c.className&&!c.sClass&&(c.sClass=c.className),h.extend(b,c),E(b,c,"sWidth","sWidthOrig"),"number"===typeof c.iDataSort&&(b.aDataSort=[c.iDataSort]),E(b,c,"aDataSort"));var g=b.mData,j=W(g),i=b.mRender?W(b.mRender):null,c=function(a){return"string"===typeof a&&-1!==a.indexOf("@")};b._bAttrSrc=h.isPlainObject(g)&&(c(g.sort)||c(g.type)||c(g.filter));b.fnGetData=function(a,b,c){var e=j(a,b,k,c);return i&&b?i(e,b,a,c):e};b.fnSetData=function(a,b,c){return Q(g)(a,b,c)};"number"!==typeof g&&(a._rowReadObject=
!0);a.oFeatures.bSort||(b.bSortable=!1,d.addClass(e.sSortableNone));a=-1!==h.inArray("asc",b.asSorting);c=-1!==h.inArray("desc",b.asSorting);!b.bSortable||!a&&!c?(b.sSortingClass=e.sSortableNone,b.sSortingClassJUI=""):a&&!c?(b.sSortingClass=e.sSortableAsc,b.sSortingClassJUI=e.sSortJUIAscAllowed):!a&&c?(b.sSortingClass=e.sSortableDesc,b.sSortingClassJUI=e.sSortJUIDescAllowed):(b.sSortingClass=e.sSortable,b.sSortingClassJUI=e.sSortJUI)}function X(a){if(!1!==a.oFeatures.bAutoWidth){var b=a.aoColumns;
Ga(a);for(var c=0,e=b.length;c<e;c++)b[c].nTh.style.width=b[c].sWidth}b=a.oScroll;(""!==b.sY||""!==b.sX)&&Y(a);w(a,null,"column-sizing",[a])}function la(a,b){var c=Z(a,"bVisible");return"number"===typeof c[b]?c[b]:null}function $(a,b){var c=Z(a,"bVisible"),c=h.inArray(b,c);return-1!==c?c:null}function aa(a){return Z(a,"bVisible").length}function Z(a,b){var c=[];h.map(a.aoColumns,function(a,d){a[b]&&c.push(d)});return c}function Ha(a){var b=a.aoColumns,c=a.aoData,e=o.ext.type.detect,d,f,g,j,i,h,l,
p,n;d=0;for(f=b.length;d<f;d++)if(l=b[d],n=[],!l.sType&&l._sManualType)l.sType=l._sManualType;else if(!l.sType){g=0;for(j=e.length;g<j;g++){i=0;for(h=c.length;i<h;i++){n[i]===k&&(n[i]=y(a,i,d,"type"));p=e[g](n[i],a);if(!p&&g!==e.length-1)break;if("html"===p)break}if(p){l.sType=p;break}}l.sType||(l.sType="string")}}function ib(a,b,c,e){var d,f,g,j,i,m,l=a.aoColumns;if(b)for(d=b.length-1;0<=d;d--){m=b[d];var p=m.targets!==k?m.targets:m.aTargets;h.isArray(p)||(p=[p]);f=0;for(g=p.length;f<g;f++)if("number"===
typeof p[f]&&0<=p[f]){for(;l.length<=p[f];)Fa(a);e(p[f],m)}else if("number"===typeof p[f]&&0>p[f])e(l.length+p[f],m);else if("string"===typeof p[f]){j=0;for(i=l.length;j<i;j++)("_all"==p[f]||h(l[j].nTh).hasClass(p[f]))&&e(j,m)}}if(c){d=0;for(a=c.length;d<a;d++)e(d,c[d])}}function J(a,b,c,e){var d=a.aoData.length,f=h.extend(!0,{},o.models.oRow,{src:c?"dom":"data"});f._aData=b;a.aoData.push(f);for(var b=a.aoColumns,f=0,g=b.length;f<g;f++)c&&Ia(a,d,f,y(a,d,f)),b[f].sType=null;a.aiDisplayMaster.push(d);
(c||!a.oFeatures.bDeferRender)&&Ja(a,d,c,e);return d}function ma(a,b){var c;b instanceof h||(b=h(b));return b.map(function(b,d){c=na(a,d);return J(a,c.data,d,c.cells)})}function y(a,b,c,e){var d=a.iDraw,f=a.aoColumns[c],g=a.aoData[b]._aData,j=f.sDefaultContent,c=f.fnGetData(g,e,{settings:a,row:b,col:c});if(c===k)return a.iDrawError!=d&&null===j&&(R(a,0,"Requested unknown parameter "+("function"==typeof f.mData?"{function}":"'"+f.mData+"'")+" for row "+b,4),a.iDrawError=d),j;if((c===g||null===c)&&
null!==j)c=j;else if("function"===typeof c)return c.call(g);return null===c&&"display"==e?"":c}function Ia(a,b,c,e){a.aoColumns[c].fnSetData(a.aoData[b]._aData,e,{settings:a,row:b,col:c})}function Ka(a){return h.map(a.match(/(\\.|[^\.])+/g),function(a){return a.replace(/\\./g,".")})}function W(a){if(h.isPlainObject(a)){var b={};h.each(a,function(a,c){c&&(b[a]=W(c))});return function(a,c,f,g){var j=b[c]||b._;return j!==k?j(a,c,f,g):a}}if(null===a)return function(a){return a};if("function"===typeof a)return function(b,
c,f,g){return a(b,c,f,g)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var c=function(a,b,f){var g,j;if(""!==f){j=Ka(f);for(var i=0,h=j.length;i<h;i++){f=j[i].match(ba);g=j[i].match(S);if(f){j[i]=j[i].replace(ba,"");""!==j[i]&&(a=a[j[i]]);g=[];j.splice(0,i+1);j=j.join(".");i=0;for(h=a.length;i<h;i++)g.push(c(a[i],b,j));a=f[0].substring(1,f[0].length-1);a=""===a?g:g.join(a);break}else if(g){j[i]=j[i].replace(S,"");a=a[j[i]]();continue}if(null===a||a[j[i]]===
k)return k;a=a[j[i]]}}return a};return function(b,d){return c(b,d,a)}}return function(b){return b[a]}}function Q(a){if(h.isPlainObject(a))return Q(a._);if(null===a)return function(){};if("function"===typeof a)return function(b,e,d){a(b,"set",e,d)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var b=function(a,e,d){var d=Ka(d),f;f=d[d.length-1];for(var g,j,i=0,h=d.length-1;i<h;i++){g=d[i].match(ba);j=d[i].match(S);if(g){d[i]=d[i].replace(ba,"");a[d[i]]=[];
f=d.slice();f.splice(0,i+1);g=f.join(".");j=0;for(h=e.length;j<h;j++)f={},b(f,e[j],g),a[d[i]].push(f);return}j&&(d[i]=d[i].replace(S,""),a=a[d[i]](e));if(null===a[d[i]]||a[d[i]]===k)a[d[i]]={};a=a[d[i]]}if(f.match(S))a[f.replace(S,"")](e);else a[f.replace(ba,"")]=e};return function(c,e){return b(c,e,a)}}return function(b,e){b[a]=e}}function La(a){return D(a.aoData,"_aData")}function oa(a){a.aoData.length=0;a.aiDisplayMaster.length=0;a.aiDisplay.length=0}function pa(a,b,c){for(var e=-1,d=0,f=a.length;d<
f;d++)a[d]==b?e=d:a[d]>b&&a[d]--; -1!=e&&c===k&&a.splice(e,1)}function ca(a,b,c,e){var d=a.aoData[b],f,g=function(c,f){for(;c.childNodes.length;)c.removeChild(c.firstChild);c.innerHTML=y(a,b,f,"display")};if("dom"===c||(!c||"auto"===c)&&"dom"===d.src)d._aData=na(a,d,e,e===k?k:d._aData).data;else{var j=d.anCells;if(j)if(e!==k)g(j[e],e);else{c=0;for(f=j.length;c<f;c++)g(j[c],c)}}d._aSortData=null;d._aFilterData=null;g=a.aoColumns;if(e!==k)g[e].sType=null;else{c=0;for(f=g.length;c<f;c++)g[c].sType=null;
Ma(d)}}function na(a,b,c,e){var d=[],f=b.firstChild,g,j=0,i,m=a.aoColumns,l=a._rowReadObject,e=e||l?{}:[],p=function(a,b){if("string"===typeof a){var c=a.indexOf("@");-1!==c&&(c=a.substring(c+1),Q(a)(e,b.getAttribute(c)))}},a=function(a){if(c===k||c===j)g=m[j],i=h.trim(a.innerHTML),g&&g._bAttrSrc?(Q(g.mData._)(e,i),p(g.mData.sort,a),p(g.mData.type,a),p(g.mData.filter,a)):l?(g._setter||(g._setter=Q(g.mData)),g._setter(e,i)):e[j]=i;j++};if(f)for(;f;){b=f.nodeName.toUpperCase();if("TD"==b||"TH"==b)a(f),
d.push(f);f=f.nextSibling}else{d=b.anCells;f=0;for(b=d.length;f<b;f++)a(d[f])}return{data:e,cells:d}}function Ja(a,b,c,e){var d=a.aoData[b],f=d._aData,g=[],j,i,h,l,p;if(null===d.nTr){j=c||P.createElement("tr");d.nTr=j;d.anCells=g;j._DT_RowIndex=b;Ma(d);l=0;for(p=a.aoColumns.length;l<p;l++){h=a.aoColumns[l];i=c?e[l]:P.createElement(h.sCellType);g.push(i);if(!c||h.mRender||h.mData!==l)i.innerHTML=y(a,b,l,"display");h.sClass&&(i.className+=" "+h.sClass);h.bVisible&&!c?j.appendChild(i):!h.bVisible&&c&&
i.parentNode.removeChild(i);h.fnCreatedCell&&h.fnCreatedCell.call(a.oInstance,i,y(a,b,l),f,b,l)}w(a,"aoRowCreatedCallback",null,[j,f,b])}d.nTr.setAttribute("role","row")}function Ma(a){var b=a.nTr,c=a._aData;if(b){c.DT_RowId&&(b.id=c.DT_RowId);if(c.DT_RowClass){var e=c.DT_RowClass.split(" ");a.__rowc=a.__rowc?Na(a.__rowc.concat(e)):e;h(b).removeClass(a.__rowc.join(" ")).addClass(c.DT_RowClass)}c.DT_RowAttr&&h(b).attr(c.DT_RowAttr);c.DT_RowData&&h(b).data(c.DT_RowData)}}function jb(a){var b,c,e,d,
f,g=a.nTHead,j=a.nTFoot,i=0===h("th, td",g).length,m=a.oClasses,l=a.aoColumns;i&&(d=h("<tr/>").appendTo(g));b=0;for(c=l.length;b<c;b++)f=l[b],e=h(f.nTh).addClass(f.sClass),i&&e.appendTo(d),a.oFeatures.bSort&&(e.addClass(f.sSortingClass),!1!==f.bSortable&&(e.attr("tabindex",a.iTabIndex).attr("aria-controls",a.sTableId),Oa(a,f.nTh,b))),f.sTitle!=e.html()&&e.html(f.sTitle),Pa(a,"header")(a,e,f,m);i&&da(a.aoHeader,g);h(g).find(">tr").attr("role","row");h(g).find(">tr>th, >tr>td").addClass(m.sHeaderTH);
h(j).find(">tr>th, >tr>td").addClass(m.sFooterTH);if(null!==j){a=a.aoFooter[0];b=0;for(c=a.length;b<c;b++)f=l[b],f.nTf=a[b].cell,f.sClass&&h(f.nTf).addClass(f.sClass)}}function ea(a,b,c){var e,d,f,g=[],j=[],i=a.aoColumns.length,m;if(b){c===k&&(c=!1);e=0;for(d=b.length;e<d;e++){g[e]=b[e].slice();g[e].nTr=b[e].nTr;for(f=i-1;0<=f;f--)!a.aoColumns[f].bVisible&&!c&&g[e].splice(f,1);j.push([])}e=0;for(d=g.length;e<d;e++){if(a=g[e].nTr)for(;f=a.firstChild;)a.removeChild(f);f=0;for(b=g[e].length;f<b;f++)if(m=
i=1,j[e][f]===k){a.appendChild(g[e][f].cell);for(j[e][f]=1;g[e+i]!==k&&g[e][f].cell==g[e+i][f].cell;)j[e+i][f]=1,i++;for(;g[e][f+m]!==k&&g[e][f].cell==g[e][f+m].cell;){for(c=0;c<i;c++)j[e+c][f+m]=1;m++}h(g[e][f].cell).attr("rowspan",i).attr("colspan",m)}}}}function M(a){var b=w(a,"aoPreDrawCallback","preDraw",[a]);if(-1!==h.inArray(!1,b))C(a,!1);else{var b=[],c=0,e=a.asStripeClasses,d=e.length,f=a.oLanguage,g=a.iInitDisplayStart,j="ssp"==B(a),i=a.aiDisplay;a.bDrawing=!0;g!==k&&-1!==g&&(a._iDisplayStart=
j?g:g>=a.fnRecordsDisplay()?0:g,a.iInitDisplayStart=-1);var g=a._iDisplayStart,m=a.fnDisplayEnd();if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,C(a,!1);else if(j){if(!a.bDestroying&&!kb(a))return}else a.iDraw++;if(0!==i.length){f=j?a.aoData.length:m;for(j=j?0:g;j<f;j++){var l=i[j],p=a.aoData[l];null===p.nTr&&Ja(a,l);l=p.nTr;if(0!==d){var n=e[c%d];p._sRowStripe!=n&&(h(l).removeClass(p._sRowStripe).addClass(n),p._sRowStripe=n)}w(a,"aoRowCallback",null,[l,p._aData,c,j]);b.push(l);c++}}else c=f.sZeroRecords,
1==a.iDraw&&"ajax"==B(a)?c=f.sLoadingRecords:f.sEmptyTable&&0===a.fnRecordsTotal()&&(c=f.sEmptyTable),b[0]=h("<tr/>",{"class":d?e[0]:""}).append(h("<td />",{valign:"top",colSpan:aa(a),"class":a.oClasses.sRowEmpty}).html(c))[0];w(a,"aoHeaderCallback","header",[h(a.nTHead).children("tr")[0],La(a),g,m,i]);w(a,"aoFooterCallback","footer",[h(a.nTFoot).children("tr")[0],La(a),g,m,i]);e=h(a.nTBody);e.children().detach();e.append(h(b));w(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=
!1}}function N(a,b){var c=a.oFeatures,e=c.bFilter;c.bSort&&lb(a);e?fa(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;M(a);a._drawHold=!1}function mb(a){var b=a.oClasses,c=h(a.nTable),c=h("<div/>").insertBefore(c),e=a.oFeatures,d=h("<div/>",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=d[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var f=a.sDom.split(""),g,j,i,m,l,p,n=0;n<f.length;n++){g=
null;j=f[n];if("<"==j){i=h("<div/>")[0];m=f[n+1];if("'"==m||'"'==m){l="";for(p=2;f[n+p]!=m;)l+=f[n+p],p++;"H"==l?l=b.sJUIHeader:"F"==l&&(l=b.sJUIFooter);-1!=l.indexOf(".")?(m=l.split("."),i.id=m[0].substr(1,m[0].length-1),i.className=m[1]):"#"==l.charAt(0)?i.id=l.substr(1,l.length-1):i.className=l;n+=p}d.append(i);d=h(i)}else if(">"==j)d=d.parent();else if("l"==j&&e.bPaginate&&e.bLengthChange)g=nb(a);else if("f"==j&&e.bFilter)g=ob(a);else if("r"==j&&e.bProcessing)g=pb(a);else if("t"==j)g=qb(a);else if("i"==
j&&e.bInfo)g=rb(a);else if("p"==j&&e.bPaginate)g=sb(a);else if(0!==o.ext.feature.length){i=o.ext.feature;p=0;for(m=i.length;p<m;p++)if(j==i[p].cFeature){g=i[p].fnInit(a);break}}g&&(i=a.aanFeatures,i[j]||(i[j]=[]),i[j].push(g),d.append(g))}c.replaceWith(d)}function da(a,b){var c=h(b).children("tr"),e,d,f,g,j,i,m,l,p,n;a.splice(0,a.length);f=0;for(i=c.length;f<i;f++)a.push([]);f=0;for(i=c.length;f<i;f++){e=c[f];for(d=e.firstChild;d;){if("TD"==d.nodeName.toUpperCase()||"TH"==d.nodeName.toUpperCase()){l=
1*d.getAttribute("colspan");p=1*d.getAttribute("rowspan");l=!l||0===l||1===l?1:l;p=!p||0===p||1===p?1:p;g=0;for(j=a[f];j[g];)g++;m=g;n=1===l?!0:!1;for(j=0;j<l;j++)for(g=0;g<p;g++)a[f+g][m+j]={cell:d,unique:n},a[f+g].nTr=e}d=d.nextSibling}}}function qa(a,b,c){var e=[];c||(c=a.aoHeader,b&&(c=[],da(c,b)));for(var b=0,d=c.length;b<d;b++)for(var f=0,g=c[b].length;f<g;f++)if(c[b][f].unique&&(!e[f]||!a.bSortCellsTop))e[f]=c[b][f].cell;return e}function ra(a,b,c){w(a,"aoServerParams","serverParams",[b]);
if(b&&h.isArray(b)){var e={},d=/(.*?)\[\]$/;h.each(b,function(a,b){var c=b.name.match(d);c?(c=c[0],e[c]||(e[c]=[]),e[c].push(b.value)):e[b.name]=b.value});b=e}var f,g=a.ajax,j=a.oInstance;if(h.isPlainObject(g)&&g.data){f=g.data;var i=h.isFunction(f)?f(b):f,b=h.isFunction(f)&&i?i:h.extend(!0,b,i);delete g.data}i={data:b,success:function(b){var f=b.error||b.sError;f&&a.oApi._fnLog(a,0,f);a.json=b;w(a,null,"xhr",[a,b]);c(b)},dataType:"json",cache:!1,type:a.sServerMethod,error:function(b,c){var f=a.oApi._fnLog;
"parsererror"==c?f(a,0,"Invalid JSON response",1):4===b.readyState&&f(a,0,"Ajax error",7);C(a,!1)}};a.oAjaxData=b;w(a,null,"preXhr",[a,b]);a.fnServerData?a.fnServerData.call(j,a.sAjaxSource,h.map(b,function(a,b){return{name:b,value:a}}),c,a):a.sAjaxSource||"string"===typeof g?a.jqXHR=h.ajax(h.extend(i,{url:g||a.sAjaxSource})):h.isFunction(g)?a.jqXHR=g.call(j,b,c,a):(a.jqXHR=h.ajax(h.extend(i,g)),g.data=f)}function kb(a){return a.bAjaxDataGet?(a.iDraw++,C(a,!0),ra(a,tb(a),function(b){ub(a,b)}),!1):
!0}function tb(a){var b=a.aoColumns,c=b.length,e=a.oFeatures,d=a.oPreviousSearch,f=a.aoPreSearchCols,g,j=[],i,m,l,p=T(a);g=a._iDisplayStart;i=!1!==e.bPaginate?a._iDisplayLength:-1;var n=function(a,b){j.push({name:a,value:b})};n("sEcho",a.iDraw);n("iColumns",c);n("sColumns",D(b,"sName").join(","));n("iDisplayStart",g);n("iDisplayLength",i);var k={draw:a.iDraw,columns:[],order:[],start:g,length:i,search:{value:d.sSearch,regex:d.bRegex}};for(g=0;g<c;g++)m=b[g],l=f[g],i="function"==typeof m.mData?"function":
m.mData,k.columns.push({data:i,name:m.sName,searchable:m.bSearchable,orderable:m.bSortable,search:{value:l.sSearch,regex:l.bRegex}}),n("mDataProp_"+g,i),e.bFilter&&(n("sSearch_"+g,l.sSearch),n("bRegex_"+g,l.bRegex),n("bSearchable_"+g,m.bSearchable)),e.bSort&&n("bSortable_"+g,m.bSortable);e.bFilter&&(n("sSearch",d.sSearch),n("bRegex",d.bRegex));e.bSort&&(h.each(p,function(a,b){k.order.push({column:b.col,dir:b.dir});n("iSortCol_"+a,b.col);n("sSortDir_"+a,b.dir)}),n("iSortingCols",p.length));b=o.ext.legacy.ajax;
return null===b?a.sAjaxSource?j:k:b?j:k}function ub(a,b){var c=b.sEcho!==k?b.sEcho:b.draw,e=b.iTotalRecords!==k?b.iTotalRecords:b.recordsTotal,d=b.iTotalDisplayRecords!==k?b.iTotalDisplayRecords:b.recordsFiltered;if(c){if(1*c<a.iDraw)return;a.iDraw=1*c}oa(a);a._iRecordsTotal=parseInt(e,10);a._iRecordsDisplay=parseInt(d,10);c=sa(a,b);e=0;for(d=c.length;e<d;e++)J(a,c[e]);a.aiDisplay=a.aiDisplayMaster.slice();a.bAjaxDataGet=!1;M(a);a._bInitComplete||ta(a,b);a.bAjaxDataGet=!0;C(a,!1)}function sa(a,b){var c=
h.isPlainObject(a.ajax)&&a.ajax.dataSrc!==k?a.ajax.dataSrc:a.sAjaxDataProp;return"data"===c?b.aaData||b[c]:""!==c?W(c)(b):b}function ob(a){var b=a.oClasses,c=a.sTableId,e=a.oLanguage,d=a.oPreviousSearch,f=a.aanFeatures,g='<input type="search" class="'+b.sFilterInput+'"/>',j=e.sSearch,j=j.match(/_INPUT_/)?j.replace("_INPUT_",g):j+g,b=h("<div/>",{id:!f.f?c+"_filter":null,"class":b.sFilter}).append(h("<label/>").append(j)),f=function(){var b=!this.value?"":this.value;b!=d.sSearch&&(fa(a,{sSearch:b,bRegex:d.bRegex,
bSmart:d.bSmart,bCaseInsensitive:d.bCaseInsensitive}),a._iDisplayStart=0,M(a))},g=null!==a.searchDelay?a.searchDelay:"ssp"===B(a)?400:0,i=h("input",b).val(d.sSearch).attr("placeholder",e.sSearchPlaceholder).bind("keyup.DT search.DT input.DT paste.DT cut.DT",g?ua(f,g):f).bind("keypress.DT",function(a){if(13==a.keyCode)return!1}).attr("aria-controls",c);h(a.nTable).on("search.dt.DT",function(b,c){if(a===c)try{i[0]!==P.activeElement&&i.val(d.sSearch)}catch(f){}});return b[0]}function fa(a,b,c){var e=
a.oPreviousSearch,d=a.aoPreSearchCols,f=function(a){e.sSearch=a.sSearch;e.bRegex=a.bRegex;e.bSmart=a.bSmart;e.bCaseInsensitive=a.bCaseInsensitive};Ha(a);if("ssp"!=B(a)){vb(a,b.sSearch,c,b.bEscapeRegex!==k?!b.bEscapeRegex:b.bRegex,b.bSmart,b.bCaseInsensitive);f(b);for(b=0;b<d.length;b++)wb(a,d[b].sSearch,b,d[b].bEscapeRegex!==k?!d[b].bEscapeRegex:d[b].bRegex,d[b].bSmart,d[b].bCaseInsensitive);xb(a)}else f(b);a.bFiltered=!0;w(a,null,"search",[a])}function xb(a){for(var b=o.ext.search,c=a.aiDisplay,
e,d,f=0,g=b.length;f<g;f++){for(var j=[],i=0,h=c.length;i<h;i++)d=c[i],e=a.aoData[d],b[f](a,e._aFilterData,d,e._aData,i)&&j.push(d);c.length=0;c.push.apply(c,j)}}function wb(a,b,c,e,d,f){if(""!==b)for(var g=a.aiDisplay,e=Qa(b,e,d,f),d=g.length-1;0<=d;d--)b=a.aoData[g[d]]._aFilterData[c],e.test(b)||g.splice(d,1)}function vb(a,b,c,e,d,f){var e=Qa(b,e,d,f),d=a.oPreviousSearch.sSearch,f=a.aiDisplayMaster,g;0!==o.ext.search.length&&(c=!0);g=yb(a);if(0>=b.length)a.aiDisplay=f.slice();else{if(g||c||d.length>
b.length||0!==b.indexOf(d)||a.bSorted)a.aiDisplay=f.slice();b=a.aiDisplay;for(c=b.length-1;0<=c;c--)e.test(a.aoData[b[c]]._sFilterRow)||b.splice(c,1)}}function Qa(a,b,c,e){a=b?a:va(a);c&&(a="^(?=.*?"+h.map(a.match(/"[^"]+"|[^ ]+/g)||"",function(a){if('"'===a.charAt(0))var b=a.match(/^"(.*)"$/),a=b?b[1]:a;return a.replace('"',"")}).join(")(?=.*?")+").*$");return RegExp(a,e?"i":"")}function va(a){return a.replace(Yb,"\\$1")}function yb(a){var b=a.aoColumns,c,e,d,f,g,j,i,h,l=o.ext.type.search;c=!1;e=
0;for(f=a.aoData.length;e<f;e++)if(h=a.aoData[e],!h._aFilterData){j=[];d=0;for(g=b.length;d<g;d++)c=b[d],c.bSearchable?(i=y(a,e,d,"filter"),l[c.sType]&&(i=l[c.sType](i)),null===i&&(i=""),"string"!==typeof i&&i.toString&&(i=i.toString())):i="",i.indexOf&&-1!==i.indexOf("&")&&(wa.innerHTML=i,i=Zb?wa.textContent:wa.innerText),i.replace&&(i=i.replace(/[\r\n]/g,"")),j.push(i);h._aFilterData=j;h._sFilterRow=j.join("  ");c=!0}return c}function zb(a){return{search:a.sSearch,smart:a.bSmart,regex:a.bRegex,
caseInsensitive:a.bCaseInsensitive}}function Ab(a){return{sSearch:a.search,bSmart:a.smart,bRegex:a.regex,bCaseInsensitive:a.caseInsensitive}}function rb(a){var b=a.sTableId,c=a.aanFeatures.i,e=h("<div/>",{"class":a.oClasses.sInfo,id:!c?b+"_info":null});c||(a.aoDrawCallback.push({fn:Bb,sName:"information"}),e.attr("role","status").attr("aria-live","polite"),h(a.nTable).attr("aria-describedby",b+"_info"));return e[0]}function Bb(a){var b=a.aanFeatures.i;if(0!==b.length){var c=a.oLanguage,e=a._iDisplayStart+
1,d=a.fnDisplayEnd(),f=a.fnRecordsTotal(),g=a.fnRecordsDisplay(),j=g?c.sInfo:c.sInfoEmpty;g!==f&&(j+=" "+c.sInfoFiltered);j+=c.sInfoPostFix;j=Cb(a,j);c=c.fnInfoCallback;null!==c&&(j=c.call(a.oInstance,a,e,d,f,g,j));h(b).html(j)}}function Cb(a,b){var c=a.fnFormatNumber,e=a._iDisplayStart+1,d=a._iDisplayLength,f=a.fnRecordsDisplay(),g=-1===d;return b.replace(/_START_/g,c.call(a,e)).replace(/_END_/g,c.call(a,a.fnDisplayEnd())).replace(/_MAX_/g,c.call(a,a.fnRecordsTotal())).replace(/_TOTAL_/g,c.call(a,
f)).replace(/_PAGE_/g,c.call(a,g?1:Math.ceil(e/d))).replace(/_PAGES_/g,c.call(a,g?1:Math.ceil(f/d)))}function ga(a){var b,c,e=a.iInitDisplayStart,d=a.aoColumns,f;c=a.oFeatures;if(a.bInitialised){mb(a);jb(a);ea(a,a.aoHeader);ea(a,a.aoFooter);C(a,!0);c.bAutoWidth&&Ga(a);b=0;for(c=d.length;b<c;b++)f=d[b],f.sWidth&&(f.nTh.style.width=s(f.sWidth));N(a);d=B(a);"ssp"!=d&&("ajax"==d?ra(a,[],function(c){var f=sa(a,c);for(b=0;b<f.length;b++)J(a,f[b]);a.iInitDisplayStart=e;N(a);C(a,!1);ta(a,c)},a):(C(a,!1),
ta(a)))}else setTimeout(function(){ga(a)},200)}function ta(a,b){a._bInitComplete=!0;b&&X(a);w(a,"aoInitComplete","init",[a,b])}function Ra(a,b){var c=parseInt(b,10);a._iDisplayLength=c;Sa(a);w(a,null,"length",[a,c])}function nb(a){for(var b=a.oClasses,c=a.sTableId,e=a.aLengthMenu,d=h.isArray(e[0]),f=d?e[0]:e,e=d?e[1]:e,d=h("<select/>",{name:c+"_length","aria-controls":c,"class":b.sLengthSelect}),g=0,j=f.length;g<j;g++)d[0][g]=new Option(e[g],f[g]);var i=h("<div><label/></div>").addClass(b.sLength);
a.aanFeatures.l||(i[0].id=c+"_length");i.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",d[0].outerHTML));h("select",i).val(a._iDisplayLength).bind("change.DT",function(){Ra(a,h(this).val());M(a)});h(a.nTable).bind("length.dt.DT",function(b,c,f){a===c&&h("select",i).val(f)});return i[0]}function sb(a){var b=a.sPaginationType,c=o.ext.pager[b],e="function"===typeof c,d=function(a){M(a)},b=h("<div/>").addClass(a.oClasses.sPaging+b)[0],f=a.aanFeatures;e||c.fnInit(a,b,d);f.p||(b.id=a.sTableId+
"_paginate",a.aoDrawCallback.push({fn:function(a){if(e){var b=a._iDisplayStart,h=a._iDisplayLength,m=a.fnRecordsDisplay(),l=-1===h,b=l?0:Math.ceil(b/h),h=l?1:Math.ceil(m/h),m=c(b,h),p,l=0;for(p=f.p.length;l<p;l++)Pa(a,"pageButton")(a,f.p[l],l,m,b,h)}else c.fnUpdate(a,d)},sName:"pagination"}));return b}function Ta(a,b,c){var e=a._iDisplayStart,d=a._iDisplayLength,f=a.fnRecordsDisplay();0===f||-1===d?e=0:"number"===typeof b?(e=b*d,e>f&&(e=0)):"first"==b?e=0:"previous"==b?(e=0<=d?e-d:0,0>e&&(e=0)):"next"==
b?e+d<f&&(e+=d):"last"==b?e=Math.floor((f-1)/d)*d:R(a,0,"Unknown paging action: "+b,5);b=a._iDisplayStart!==e;a._iDisplayStart=e;b&&(w(a,null,"page",[a]),c&&M(a));return b}function pb(a){return h("<div/>",{id:!a.aanFeatures.r?a.sTableId+"_processing":null,"class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function C(a,b){a.oFeatures.bProcessing&&h(a.aanFeatures.r).css("display",b?"block":"none");w(a,null,"processing",[a,b])}function qb(a){var b=h(a.nTable);b.attr("role",
"grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var e=c.sX,d=c.sY,f=a.oClasses,g=b.children("caption"),j=g.length?g[0]._captionSide:null,i=h(b[0].cloneNode(!1)),m=h(b[0].cloneNode(!1)),l=b.children("tfoot");c.sX&&"100%"===b.attr("width")&&b.removeAttr("width");l.length||(l=null);c=h("<div/>",{"class":f.sScrollWrapper}).append(h("<div/>",{"class":f.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,width:e?!e?null:s(e):"100%"}).append(h("<div/>",{"class":f.sScrollHeadInner}).css({"box-sizing":"content-box",
width:c.sXInner||"100%"}).append(i.removeAttr("id").css("margin-left",0).append("top"===j?g:null).append(b.children("thead"))))).append(h("<div/>",{"class":f.sScrollBody}).css({overflow:"auto",height:!d?null:s(d),width:!e?null:s(e)}).append(b));l&&c.append(h("<div/>",{"class":f.sScrollFoot}).css({overflow:"hidden",border:0,width:e?!e?null:s(e):"100%"}).append(h("<div/>",{"class":f.sScrollFootInner}).append(m.removeAttr("id").css("margin-left",0).append("bottom"===j?g:null).append(b.children("tfoot")))));
var b=c.children(),p=b[0],f=b[1],n=l?b[2]:null;if(e)h(f).on("scroll.DT",function(){var a=this.scrollLeft;p.scrollLeft=a;l&&(n.scrollLeft=a)});a.nScrollHead=p;a.nScrollBody=f;a.nScrollFoot=n;a.aoDrawCallback.push({fn:Y,sName:"scrolling"});return c[0]}function Y(a){var b=a.oScroll,c=b.sX,e=b.sXInner,d=b.sY,f=b.iBarWidth,g=h(a.nScrollHead),j=g[0].style,i=g.children("div"),m=i[0].style,l=i.children("table"),i=a.nScrollBody,p=h(i),n=i.style,k=h(a.nScrollFoot).children("div"),q=k.children("table"),o=h(a.nTHead),
r=h(a.nTable),t=r[0],u=t.style,K=a.nTFoot?h(a.nTFoot):null,ha=a.oBrowser,w=ha.bScrollOversize,x,v,y,L,z,A=[],B=[],C=[],D,E=function(a){a=a.style;a.paddingTop="0";a.paddingBottom="0";a.borderTopWidth="0";a.borderBottomWidth="0";a.height=0};r.children("thead, tfoot").remove();z=o.clone().prependTo(r);x=o.find("tr");y=z.find("tr");z.find("th, td").removeAttr("tabindex");K&&(L=K.clone().prependTo(r),v=K.find("tr"),L=L.find("tr"));c||(n.width="100%",g[0].style.width="100%");h.each(qa(a,z),function(b,c){D=
la(a,b);c.style.width=a.aoColumns[D].sWidth});K&&G(function(a){a.style.width=""},L);b.bCollapse&&""!==d&&(n.height=p[0].offsetHeight+o[0].offsetHeight+"px");g=r.outerWidth();if(""===c){if(u.width="100%",w&&(r.find("tbody").height()>i.offsetHeight||"scroll"==p.css("overflow-y")))u.width=s(r.outerWidth()-f)}else""!==e?u.width=s(e):g==p.width()&&p.height()<r.height()?(u.width=s(g-f),r.outerWidth()>g-f&&(u.width=s(g))):u.width=s(g);g=r.outerWidth();G(E,y);G(function(a){C.push(a.innerHTML);A.push(s(h(a).css("width")))},
y);G(function(a,b){a.style.width=A[b]},x);h(y).height(0);K&&(G(E,L),G(function(a){B.push(s(h(a).css("width")))},L),G(function(a,b){a.style.width=B[b]},v),h(L).height(0));G(function(a,b){a.innerHTML='<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+C[b]+"</div>";a.style.width=A[b]},y);K&&G(function(a,b){a.innerHTML="";a.style.width=B[b]},L);if(r.outerWidth()<g){v=i.scrollHeight>i.offsetHeight||"scroll"==p.css("overflow-y")?g+f:g;if(w&&(i.scrollHeight>i.offsetHeight||"scroll"==p.css("overflow-y")))u.width=
s(v-f);(""===c||""!==e)&&R(a,1,"Possible column misalignment",6)}else v="100%";n.width=s(v);j.width=s(v);K&&(a.nScrollFoot.style.width=s(v));!d&&w&&(n.height=s(t.offsetHeight+f));d&&b.bCollapse&&(n.height=s(d),b=c&&t.offsetWidth>i.offsetWidth?f:0,t.offsetHeight<i.offsetHeight&&(n.height=s(t.offsetHeight+b)));b=r.outerWidth();l[0].style.width=s(b);m.width=s(b);l=r.height()>i.clientHeight||"scroll"==p.css("overflow-y");ha="padding"+(ha.bScrollbarLeft?"Left":"Right");m[ha]=l?f+"px":"0px";K&&(q[0].style.width=
s(b),k[0].style.width=s(b),k[0].style[ha]=l?f+"px":"0px");p.scroll();if((a.bSorted||a.bFiltered)&&!a._drawHold)i.scrollTop=0}function G(a,b,c){for(var e=0,d=0,f=b.length,g,j;d<f;){g=b[d].firstChild;for(j=c?c[d].firstChild:null;g;)1===g.nodeType&&(c?a(g,j,e):a(g,e),e++),g=g.nextSibling,j=c?j.nextSibling:null;d++}}function Ga(a){var b=a.nTable,c=a.aoColumns,e=a.oScroll,d=e.sY,f=e.sX,g=e.sXInner,j=c.length,e=Z(a,"bVisible"),i=h("th",a.nTHead),m=b.style.width||b.getAttribute("width"),l=b.parentNode,p=
!1,n,k;for(n=0;n<e.length;n++)k=c[e[n]],null!==k.sWidth&&(k.sWidth=Db(k.sWidthOrig,l),p=!0);if(!p&&!f&&!d&&j==aa(a)&&j==i.length)for(n=0;n<j;n++)c[n].sWidth=s(i.eq(n).width());else{j=h(b).clone().empty().css("visibility","hidden").removeAttr("id").append(h(a.nTHead).clone(!1)).append(h(a.nTFoot).clone(!1)).append(h("<tbody><tr/></tbody>"));j.find("tfoot th, tfoot td").css("width","");var q=j.find("tbody tr"),i=qa(a,j.find("thead")[0]);for(n=0;n<e.length;n++)k=c[e[n]],i[n].style.width=null!==k.sWidthOrig&&
""!==k.sWidthOrig?s(k.sWidthOrig):"";if(a.aoData.length)for(n=0;n<e.length;n++)p=e[n],k=c[p],h(Eb(a,p)).clone(!1).append(k.sContentPadding).appendTo(q);j.appendTo(l);f&&g?j.width(g):f?(j.css("width","auto"),j.width()<l.offsetWidth&&j.width(l.offsetWidth)):d?j.width(l.offsetWidth):m&&j.width(m);Fb(a,j[0]);if(f){for(n=g=0;n<e.length;n++)k=c[e[n]],d=h(i[n]).outerWidth(),g+=null===k.sWidthOrig?d:parseInt(k.sWidth,10)+d-h(i[n]).width();j.width(s(g));b.style.width=s(g)}for(n=0;n<e.length;n++)if(k=c[e[n]],
d=h(i[n]).width())k.sWidth=s(d);b.style.width=s(j.css("width"));j.remove()}m&&(b.style.width=s(m));if((m||f)&&!a._reszEvt)h(Ea).bind("resize.DT-"+a.sInstance,ua(function(){X(a)})),a._reszEvt=!0}function ua(a,b){var c=b!==k?b:200,e,d;return function(){var b=this,g=+new Date,j=arguments;e&&g<e+c?(clearTimeout(d),d=setTimeout(function(){e=k;a.apply(b,j)},c)):(e=g,a.apply(b,j))}}function Db(a,b){if(!a)return 0;var c=h("<div/>").css("width",s(a)).appendTo(b||P.body),e=c[0].offsetWidth;c.remove();return e}
function Fb(a,b){var c=a.oScroll;if(c.sX||c.sY)c=!c.sX?c.iBarWidth:0,b.style.width=s(h(b).outerWidth()-c)}function Eb(a,b){var c=Gb(a,b);if(0>c)return null;var e=a.aoData[c];return!e.nTr?h("<td/>").html(y(a,c,b,"display"))[0]:e.anCells[b]}function Gb(a,b){for(var c,e=-1,d=-1,f=0,g=a.aoData.length;f<g;f++)c=y(a,f,b,"display")+"",c=c.replace($b,""),c.length>e&&(e=c.length,d=f);return d}function s(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function Hb(){if(!o.__scrollbarWidth){var a=
h("<p/>").css({width:"100%",height:200,padding:0})[0],b=h("<div/>").css({position:"absolute",top:0,left:0,width:200,height:150,padding:0,overflow:"hidden",visibility:"hidden"}).append(a).appendTo("body"),c=a.offsetWidth;b.css("overflow","scroll");a=a.offsetWidth;c===a&&(a=b[0].clientWidth);b.remove();o.__scrollbarWidth=c-a}return o.__scrollbarWidth}function T(a){var b,c,e=[],d=a.aoColumns,f,g,j,i;b=a.aaSortingFixed;c=h.isPlainObject(b);var m=[];f=function(a){a.length&&!h.isArray(a[0])?m.push(a):m.push.apply(m,
a)};h.isArray(b)&&f(b);c&&b.pre&&f(b.pre);f(a.aaSorting);c&&b.post&&f(b.post);for(a=0;a<m.length;a++){i=m[a][0];f=d[i].aDataSort;b=0;for(c=f.length;b<c;b++)g=f[b],j=d[g].sType||"string",m[a]._idx===k&&(m[a]._idx=h.inArray(m[a][1],d[g].asSorting)),e.push({src:i,col:g,dir:m[a][1],index:m[a]._idx,type:j,formatter:o.ext.type.order[j+"-pre"]})}return e}function lb(a){var b,c,e=[],d=o.ext.type.order,f=a.aoData,g=0,j,h=a.aiDisplayMaster,m;Ha(a);m=T(a);b=0;for(c=m.length;b<c;b++)j=m[b],j.formatter&&g++,Ib(a,
j.col);if("ssp"!=B(a)&&0!==m.length){b=0;for(c=h.length;b<c;b++)e[h[b]]=b;g===m.length?h.sort(function(a,b){var c,d,g,h,j=m.length,i=f[a]._aSortData,k=f[b]._aSortData;for(g=0;g<j;g++)if(h=m[g],c=i[h.col],d=k[h.col],c=c<d?-1:c>d?1:0,0!==c)return"asc"===h.dir?c:-c;c=e[a];d=e[b];return c<d?-1:c>d?1:0}):h.sort(function(a,b){var c,g,h,j,i=m.length,k=f[a]._aSortData,o=f[b]._aSortData;for(h=0;h<i;h++)if(j=m[h],c=k[j.col],g=o[j.col],j=d[j.type+"-"+j.dir]||d["string-"+j.dir],c=j(c,g),0!==c)return c;c=e[a];
g=e[b];return c<g?-1:c>g?1:0})}a.bSorted=!0}function Jb(a){for(var b,c,e=a.aoColumns,d=T(a),a=a.oLanguage.oAria,f=0,g=e.length;f<g;f++){c=e[f];var h=c.asSorting;b=c.sTitle.replace(/<.*?>/g,"");var i=c.nTh;i.removeAttribute("aria-sort");c.bSortable&&(0<d.length&&d[0].col==f?(i.setAttribute("aria-sort","asc"==d[0].dir?"ascending":"descending"),c=h[d[0].index+1]||h[0]):c=h[0],b+="asc"===c?a.sSortAscending:a.sSortDescending);i.setAttribute("aria-label",b)}}function Ua(a,b,c,e){var d=a.aaSorting,f=a.aoColumns[b].asSorting,
g=function(a,b){var c=a._idx;c===k&&(c=h.inArray(a[1],f));return c+1<f.length?c+1:b?null:0};"number"===typeof d[0]&&(d=a.aaSorting=[d]);c&&a.oFeatures.bSortMulti?(c=h.inArray(b,D(d,"0")),-1!==c?(b=g(d[c],!0),null===b?d.splice(c,1):(d[c][1]=f[b],d[c]._idx=b)):(d.push([b,f[0],0]),d[d.length-1]._idx=0)):d.length&&d[0][0]==b?(b=g(d[0]),d.length=1,d[0][1]=f[b],d[0]._idx=b):(d.length=0,d.push([b,f[0]]),d[0]._idx=0);N(a);"function"==typeof e&&e(a)}function Oa(a,b,c,e){var d=a.aoColumns[c];Va(b,{},function(b){!1!==
d.bSortable&&(a.oFeatures.bProcessing?(C(a,!0),setTimeout(function(){Ua(a,c,b.shiftKey,e);"ssp"!==B(a)&&C(a,!1)},0)):Ua(a,c,b.shiftKey,e))})}function xa(a){var b=a.aLastSort,c=a.oClasses.sSortColumn,e=T(a),d=a.oFeatures,f,g;if(d.bSort&&d.bSortClasses){d=0;for(f=b.length;d<f;d++)g=b[d].src,h(D(a.aoData,"anCells",g)).removeClass(c+(2>d?d+1:3));d=0;for(f=e.length;d<f;d++)g=e[d].src,h(D(a.aoData,"anCells",g)).addClass(c+(2>d?d+1:3))}a.aLastSort=e}function Ib(a,b){var c=a.aoColumns[b],e=o.ext.order[c.sSortDataType],
d;e&&(d=e.call(a.oInstance,a,b,$(a,b)));for(var f,g=o.ext.type.order[c.sType+"-pre"],h=0,i=a.aoData.length;h<i;h++)if(c=a.aoData[h],c._aSortData||(c._aSortData=[]),!c._aSortData[b]||e)f=e?d[h]:y(a,h,b,"sort"),c._aSortData[b]=g?g(f):f}function ya(a){if(a.oFeatures.bStateSave&&!a.bDestroying){var b={time:+new Date,start:a._iDisplayStart,length:a._iDisplayLength,order:h.extend(!0,[],a.aaSorting),search:zb(a.oPreviousSearch),columns:h.map(a.aoColumns,function(b,e){return{visible:b.bVisible,search:zb(a.aoPreSearchCols[e])}})};
w(a,"aoStateSaveParams","stateSaveParams",[a,b]);a.oSavedState=b;a.fnStateSaveCallback.call(a.oInstance,a,b)}}function Kb(a){var b,c,e=a.aoColumns;if(a.oFeatures.bStateSave){var d=a.fnStateLoadCallback.call(a.oInstance,a);if(d&&d.time&&(b=w(a,"aoStateLoadParams","stateLoadParams",[a,d]),-1===h.inArray(!1,b)&&(b=a.iStateDuration,!(0<b&&d.time<+new Date-1E3*b)&&e.length===d.columns.length))){a.oLoadedState=h.extend(!0,{},d);a._iDisplayStart=d.start;a.iInitDisplayStart=d.start;a._iDisplayLength=d.length;
a.aaSorting=[];h.each(d.order,function(b,c){a.aaSorting.push(c[0]>=e.length?[0,c[1]]:c)});h.extend(a.oPreviousSearch,Ab(d.search));b=0;for(c=d.columns.length;b<c;b++){var f=d.columns[b];e[b].bVisible=f.visible;h.extend(a.aoPreSearchCols[b],Ab(f.search))}w(a,"aoStateLoaded","stateLoaded",[a,d])}}}function za(a){var b=o.settings,a=h.inArray(a,D(b,"nTable"));return-1!==a?b[a]:null}function R(a,b,c,e){c="DataTables warning: "+(null!==a?"table id="+a.sTableId+" - ":"")+c;e&&(c+=". For more information about this error, please see http://datatables.net/tn/"+
e);if(b)Ea.console&&console.log&&console.log(c);else if(b=o.ext,b=b.sErrMode||b.errMode,w(a,null,"error",[a,e,c]),"alert"==b)alert(c);else{if("throw"==b)throw Error(c);"function"==typeof b&&b(a,e,c)}}function E(a,b,c,e){h.isArray(c)?h.each(c,function(c,f){h.isArray(f)?E(a,b,f[0],f[1]):E(a,b,f)}):(e===k&&(e=c),b[c]!==k&&(a[e]=b[c]))}function Lb(a,b,c){var e,d;for(d in b)b.hasOwnProperty(d)&&(e=b[d],h.isPlainObject(e)?(h.isPlainObject(a[d])||(a[d]={}),h.extend(!0,a[d],e)):a[d]=c&&"data"!==d&&"aaData"!==
d&&h.isArray(e)?e.slice():e);return a}function Va(a,b,c){h(a).bind("click.DT",b,function(b){a.blur();c(b)}).bind("keypress.DT",b,function(a){13===a.which&&(a.preventDefault(),c(a))}).bind("selectstart.DT",function(){return!1})}function z(a,b,c,e){c&&a[b].push({fn:c,sName:e})}function w(a,b,c,e){var d=[];b&&(d=h.map(a[b].slice().reverse(),function(b){return b.fn.apply(a.oInstance,e)}));null!==c&&h(a.nTable).trigger(c+".dt",e);return d}function Sa(a){var b=a._iDisplayStart,c=a.fnDisplayEnd(),e=a._iDisplayLength;
b>=c&&(b=c-e);b-=b%e;if(-1===e||0>b)b=0;a._iDisplayStart=b}function Pa(a,b){var c=a.renderer,e=o.ext.renderer[b];return h.isPlainObject(c)&&c[b]?e[c[b]]||e._:"string"===typeof c?e[c]||e._:e._}function B(a){return a.oFeatures.bServerSide?"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function Wa(a,b){var c=[],c=Mb.numbers_length,e=Math.floor(c/2);b<=c?c=U(0,b):a<=e?(c=U(0,c-2),c.push("ellipsis"),c.push(b-1)):(a>=b-1-e?c=U(b-(c-2),b):(c=U(a-1,a+2),c.push("ellipsis"),c.push(b-1)),c.splice(0,0,"ellipsis"),
c.splice(0,0,0));c.DT_el="span";return c}function db(a){h.each({num:function(b){return Aa(b,a)},"num-fmt":function(b){return Aa(b,a,Xa)},"html-num":function(b){return Aa(b,a,Ba)},"html-num-fmt":function(b){return Aa(b,a,Ba,Xa)}},function(b,c){x.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(x.type.search[b+a]=x.type.search.html)})}function Nb(a){return function(){var b=[za(this[o.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return o.ext.internal[a].apply(this,b)}}var o,x,t,r,u,Ya=
{},Ob=/[\r\n]/g,Ba=/<.*?>/g,ac=/^[\w\+\-]/,bc=/[\w\+\-]$/,Yb=RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)","g"),Xa=/[',$\u00a3\u20ac\u00a5%\u2009\u202F]/g,I=function(a){return!a||!0===a||"-"===a?!0:!1},Pb=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},Qb=function(a,b){Ya[b]||(Ya[b]=RegExp(va(b),"g"));return"string"===typeof a&&"."!==b?a.replace(/\./g,"").replace(Ya[b],"."):a},Za=function(a,b,c){var e="string"===typeof a;b&&e&&(a=Qb(a,b));c&&e&&
(a=a.replace(Xa,""));return I(a)||!isNaN(parseFloat(a))&&isFinite(a)},Rb=function(a,b,c){return I(a)?!0:!(I(a)||"string"===typeof a)?null:Za(a.replace(Ba,""),b,c)?!0:null},D=function(a,b,c){var e=[],d=0,f=a.length;if(c!==k)for(;d<f;d++)a[d]&&a[d][b]&&e.push(a[d][b][c]);else for(;d<f;d++)a[d]&&e.push(a[d][b]);return e},ia=function(a,b,c,e){var d=[],f=0,g=b.length;if(e!==k)for(;f<g;f++)a[b[f]][c]&&d.push(a[b[f]][c][e]);else for(;f<g;f++)d.push(a[b[f]][c]);return d},U=function(a,b){var c=[],e;b===k?
(b=0,e=a):(e=b,b=a);for(var d=b;d<e;d++)c.push(d);return c},Sb=function(a){for(var b=[],c=0,e=a.length;c<e;c++)a[c]&&b.push(a[c]);return b},Na=function(a){var b=[],c,e,d=a.length,f,g=0;e=0;a:for(;e<d;e++){c=a[e];for(f=0;f<g;f++)if(b[f]===c)continue a;b.push(c);g++}return b},A=function(a,b,c){a[b]!==k&&(a[c]=a[b])},ba=/\[.*?\]$/,S=/\(\)$/,wa=h("<div>")[0],Zb=wa.textContent!==k,$b=/<.*?>/g;o=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a,b){return this.api(!0).rows(a,
b).data()};this.api=function(a){return a?new t(za(this[x.iApiIndex])):new t(this)};this.fnAddData=function(a,b){var c=this.api(!0),e=h.isArray(a)&&(h.isArray(a[0])||h.isPlainObject(a[0]))?c.rows.add(a):c.row.add(a);(b===k||b)&&c.draw();return e.flatten().toArray()};this.fnAdjustColumnSizing=function(a){var b=this.api(!0).columns.adjust(),c=b.settings()[0],e=c.oScroll;a===k||a?b.draw(!1):(""!==e.sX||""!==e.sY)&&Y(c)};this.fnClearTable=function(a){var b=this.api(!0).clear();(a===k||a)&&b.draw()};this.fnClose=
function(a){this.api(!0).row(a).child.hide()};this.fnDeleteRow=function(a,b,c){var e=this.api(!0),a=e.rows(a),d=a.settings()[0],h=d.aoData[a[0][0]];a.remove();b&&b.call(this,d,h);(c===k||c)&&e.draw();return h};this.fnDestroy=function(a){this.api(!0).destroy(a)};this.fnDraw=function(a){this.api(!0).draw(!a)};this.fnFilter=function(a,b,c,e,d,h){d=this.api(!0);null===b||b===k?d.search(a,c,e,h):d.column(b).search(a,c,e,h);d.draw()};this.fnGetData=function(a,b){var c=this.api(!0);if(a!==k){var e=a.nodeName?
a.nodeName.toLowerCase():"";return b!==k||"td"==e||"th"==e?c.cell(a,b).data():c.row(a).data()||null}return c.data().toArray()};this.fnGetNodes=function(a){var b=this.api(!0);return a!==k?b.row(a).node():b.rows().nodes().flatten().toArray()};this.fnGetPosition=function(a){var b=this.api(!0),c=a.nodeName.toUpperCase();return"TR"==c?b.row(a).index():"TD"==c||"TH"==c?(a=b.cell(a).index(),[a.row,a.columnVisible,a.column]):null};this.fnIsOpen=function(a){return this.api(!0).row(a).child.isShown()};this.fnOpen=
function(a,b,c){return this.api(!0).row(a).child(b,c).show().child()[0]};this.fnPageChange=function(a,b){var c=this.api(!0).page(a);(b===k||b)&&c.draw(!1)};this.fnSetColumnVis=function(a,b,c){a=this.api(!0).column(a).visible(b);(c===k||c)&&a.columns.adjust().draw()};this.fnSettings=function(){return za(this[x.iApiIndex])};this.fnSort=function(a){this.api(!0).order(a).draw()};this.fnSortListener=function(a,b,c){this.api(!0).order.listener(a,b,c)};this.fnUpdate=function(a,b,c,e,d){var h=this.api(!0);
c===k||null===c?h.row(b).data(a):h.cell(b,c).data(a);(d===k||d)&&h.columns.adjust();(e===k||e)&&h.draw();return 0};this.fnVersionCheck=x.fnVersionCheck;var b=this,c=a===k,e=this.length;c&&(a={});this.oApi=this.internal=x.internal;for(var d in o.ext.internal)d&&(this[d]=Nb(d));this.each(function(){var d={},d=1<e?Lb(d,a,!0):a,g=0,j,i=this.getAttribute("id"),m=!1,l=o.defaults,p=h(this);if("table"!=this.nodeName.toLowerCase())R(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{eb(l);
fb(l.column);H(l,l,!0);H(l.column,l.column,!0);H(l,h.extend(d,p.data()));var n=o.settings,g=0;for(j=n.length;g<j;g++){var r=n[g];if(r.nTable==this||r.nTHead.parentNode==this||r.nTFoot&&r.nTFoot.parentNode==this){g=d.bRetrieve!==k?d.bRetrieve:l.bRetrieve;if(c||g)return r.oInstance;if(d.bDestroy!==k?d.bDestroy:l.bDestroy){r.oInstance.fnDestroy();break}else{R(r,0,"Cannot reinitialise DataTable",3);return}}if(r.sTableId==this.id){n.splice(g,1);break}}if(null===i||""===i)this.id=i="DataTables_Table_"+
o.ext._unique++;var q=h.extend(!0,{},o.models.oSettings,{nTable:this,oApi:b.internal,oInit:d,sDestroyWidth:p[0].style.width,sInstance:i,sTableId:i});n.push(q);q.oInstance=1===b.length?b:p.dataTable();eb(d);d.oLanguage&&O(d.oLanguage);d.aLengthMenu&&!d.iDisplayLength&&(d.iDisplayLength=h.isArray(d.aLengthMenu[0])?d.aLengthMenu[0][0]:d.aLengthMenu[0]);d=Lb(h.extend(!0,{},l),d);E(q.oFeatures,d,"bPaginate bLengthChange bFilter bSort bSortMulti bInfo bProcessing bAutoWidth bSortClasses bServerSide bDeferRender".split(" "));
E(q,d,["asStripeClasses","ajax","fnServerData","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu","sPaginationType","sAjaxSource","sAjaxDataProp","iStateDuration","sDom","bSortCellsTop","iTabIndex","fnStateLoadCallback","fnStateSaveCallback","renderer","searchDelay",["iCookieDuration","iStateDuration"],["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"],["bJQueryUI","bJUI"]]);E(q.oScroll,d,[["sScrollX","sX"],["sScrollXInner",
"sXInner"],["sScrollY","sY"],["bScrollCollapse","bCollapse"]]);E(q.oLanguage,d,"fnInfoCallback");z(q,"aoDrawCallback",d.fnDrawCallback,"user");z(q,"aoServerParams",d.fnServerParams,"user");z(q,"aoStateSaveParams",d.fnStateSaveParams,"user");z(q,"aoStateLoadParams",d.fnStateLoadParams,"user");z(q,"aoStateLoaded",d.fnStateLoaded,"user");z(q,"aoRowCallback",d.fnRowCallback,"user");z(q,"aoRowCreatedCallback",d.fnCreatedRow,"user");z(q,"aoHeaderCallback",d.fnHeaderCallback,"user");z(q,"aoFooterCallback",
d.fnFooterCallback,"user");z(q,"aoInitComplete",d.fnInitComplete,"user");z(q,"aoPreDrawCallback",d.fnPreDrawCallback,"user");i=q.oClasses;d.bJQueryUI?(h.extend(i,o.ext.oJUIClasses,d.oClasses),d.sDom===l.sDom&&"lfrtip"===l.sDom&&(q.sDom='<"H"lfr>t<"F"ip>'),q.renderer)?h.isPlainObject(q.renderer)&&!q.renderer.header&&(q.renderer.header="jqueryui"):q.renderer="jqueryui":h.extend(i,o.ext.classes,d.oClasses);p.addClass(i.sTable);if(""!==q.oScroll.sX||""!==q.oScroll.sY)q.oScroll.iBarWidth=Hb();!0===q.oScroll.sX&&
(q.oScroll.sX="100%");q.iInitDisplayStart===k&&(q.iInitDisplayStart=d.iDisplayStart,q._iDisplayStart=d.iDisplayStart);null!==d.iDeferLoading&&(q.bDeferLoading=!0,g=h.isArray(d.iDeferLoading),q._iRecordsDisplay=g?d.iDeferLoading[0]:d.iDeferLoading,q._iRecordsTotal=g?d.iDeferLoading[1]:d.iDeferLoading);var t=q.oLanguage;h.extend(!0,t,d.oLanguage);""!==t.sUrl&&(h.ajax({dataType:"json",url:t.sUrl,success:function(a){O(a);H(l.oLanguage,a);h.extend(true,t,a);ga(q)},error:function(){ga(q)}}),m=!0);null===
d.asStripeClasses&&(q.asStripeClasses=[i.sStripeOdd,i.sStripeEven]);var g=q.asStripeClasses,s=h("tbody tr",this).eq(0);-1!==h.inArray(!0,h.map(g,function(a){return s.hasClass(a)}))&&(h("tbody tr",this).removeClass(g.join(" ")),q.asDestroyStripes=g.slice());n=[];g=this.getElementsByTagName("thead");0!==g.length&&(da(q.aoHeader,g[0]),n=qa(q));if(null===d.aoColumns){r=[];g=0;for(j=n.length;g<j;g++)r.push(null)}else r=d.aoColumns;g=0;for(j=r.length;g<j;g++)Fa(q,n?n[g]:null);ib(q,d.aoColumnDefs,r,function(a,
b){ka(q,a,b)});if(s.length){var u=function(a,b){return a.getAttribute("data-"+b)!==null?b:null};h.each(na(q,s[0]).cells,function(a,b){var c=q.aoColumns[a];if(c.mData===a){var e=u(b,"sort")||u(b,"order"),d=u(b,"filter")||u(b,"search");if(e!==null||d!==null){c.mData={_:a+".display",sort:e!==null?a+".@data-"+e:k,type:e!==null?a+".@data-"+e:k,filter:d!==null?a+".@data-"+d:k};ka(q,a)}}})}var v=q.oFeatures;d.bStateSave&&(v.bStateSave=!0,Kb(q,d),z(q,"aoDrawCallback",ya,"state_save"));if(d.aaSorting===k){n=
q.aaSorting;g=0;for(j=n.length;g<j;g++)n[g][1]=q.aoColumns[g].asSorting[0]}xa(q);v.bSort&&z(q,"aoDrawCallback",function(){if(q.bSorted){var a=T(q),b={};h.each(a,function(a,c){b[c.src]=c.dir});w(q,null,"order",[q,a,b]);Jb(q)}});z(q,"aoDrawCallback",function(){(q.bSorted||B(q)==="ssp"||v.bDeferRender)&&xa(q)},"sc");gb(q);g=p.children("caption").each(function(){this._captionSide=p.css("caption-side")});j=p.children("thead");0===j.length&&(j=h("<thead/>").appendTo(this));q.nTHead=j[0];j=p.children("tbody");
0===j.length&&(j=h("<tbody/>").appendTo(this));q.nTBody=j[0];j=p.children("tfoot");if(0===j.length&&0<g.length&&(""!==q.oScroll.sX||""!==q.oScroll.sY))j=h("<tfoot/>").appendTo(this);0===j.length||0===j.children().length?p.addClass(i.sNoFooter):0<j.length&&(q.nTFoot=j[0],da(q.aoFooter,q.nTFoot));if(d.aaData)for(g=0;g<d.aaData.length;g++)J(q,d.aaData[g]);else(q.bDeferLoading||"dom"==B(q))&&ma(q,h(q.nTBody).children("tr"));q.aiDisplay=q.aiDisplayMaster.slice();q.bInitialised=!0;!1===m&&ga(q)}});b=null;
return this};var Tb=[],v=Array.prototype,cc=function(a){var b,c,e=o.settings,d=h.map(e,function(a){return a.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&"table"===a.nodeName.toLowerCase())return b=h.inArray(a,d),-1!==b?[e[b]]:null;if(a&&"function"===typeof a.settings)return a.settings().toArray();"string"===typeof a?c=h(a):a instanceof h&&(c=a)}else return[];if(c)return c.map(function(){b=h.inArray(this,d);return-1!==b?e[b]:null}).toArray()};t=function(a,b){if(!this instanceof t)throw"DT API must be constructed as a new object";
var c=[],e=function(a){(a=cc(a))&&c.push.apply(c,a)};if(h.isArray(a))for(var d=0,f=a.length;d<f;d++)e(a[d]);else e(a);this.context=Na(c);b&&this.push.apply(this,b.toArray?b.toArray():b);this.selector={rows:null,cols:null,opts:null};t.extend(this,this,Tb)};o.Api=t;t.prototype={concat:v.concat,context:[],each:function(a){for(var b=0,c=this.length;b<c;b++)a.call(this,this[b],b,this);return this},eq:function(a){var b=this.context;return b.length>a?new t(b[a],this[a]):null},filter:function(a){var b=[];
if(v.filter)b=v.filter.call(this,a,this);else for(var c=0,e=this.length;c<e;c++)a.call(this,this[c],c,this)&&b.push(this[c]);return new t(this.context,b)},flatten:function(){var a=[];return new t(this.context,a.concat.apply(a,this.toArray()))},join:v.join,indexOf:v.indexOf||function(a,b){for(var c=b||0,e=this.length;c<e;c++)if(this[c]===a)return c;return-1},iterator:function(a,b,c,e){var d=[],f,g,h,i,m,l=this.context,p,n,o=this.selector;"string"===typeof a&&(e=c,c=b,b=a,a=!1);g=0;for(h=l.length;g<
h;g++){var q=new t(l[g]);if("table"===b)f=c.call(q,l[g],g),f!==k&&d.push(f);else if("columns"===b||"rows"===b)f=c.call(q,l[g],this[g],g),f!==k&&d.push(f);else if("column"===b||"column-rows"===b||"row"===b||"cell"===b){n=this[g];"column-rows"===b&&(p=Ca(l[g],o.opts));i=0;for(m=n.length;i<m;i++)f=n[i],f="cell"===b?c.call(q,l[g],f.row,f.column,g,i):c.call(q,l[g],f,g,i,p),f!==k&&d.push(f)}}return d.length||e?(a=new t(l,a?d.concat.apply([],d):d),b=a.selector,b.rows=o.rows,b.cols=o.cols,b.opts=o.opts,a):
this},lastIndexOf:v.lastIndexOf||function(a,b){return this.indexOf.apply(this.toArray.reverse(),arguments)},length:0,map:function(a){var b=[];if(v.map)b=v.map.call(this,a,this);else for(var c=0,e=this.length;c<e;c++)b.push(a.call(this,this[c],c));return new t(this.context,b)},pluck:function(a){return this.map(function(b){return b[a]})},pop:v.pop,push:v.push,reduce:v.reduce||function(a,b){return hb(this,a,b,0,this.length,1)},reduceRight:v.reduceRight||function(a,b){return hb(this,a,b,this.length-1,
-1,-1)},reverse:v.reverse,selector:null,shift:v.shift,sort:v.sort,splice:v.splice,toArray:function(){return v.slice.call(this)},to$:function(){return h(this)},toJQuery:function(){return h(this)},unique:function(){return new t(this.context,Na(this))},unshift:v.unshift};t.extend=function(a,b,c){if(c.length&&b&&(b instanceof t||b.__dt_wrapper)){var e,d,f,g=function(a,b,c){return function(){var e=b.apply(a,arguments);t.extend(e,e,c.methodExt);return e}};e=0;for(d=c.length;e<d;e++)f=c[e],b[f.name]="function"===
typeof f.val?g(a,f.val,f):h.isPlainObject(f.val)?{}:f.val,b[f.name].__dt_wrapper=!0,t.extend(a,b[f.name],f.propExt)}};t.register=r=function(a,b){if(h.isArray(a))for(var c=0,e=a.length;c<e;c++)t.register(a[c],b);else for(var d=a.split("."),f=Tb,g,j,c=0,e=d.length;c<e;c++){g=(j=-1!==d[c].indexOf("()"))?d[c].replace("()",""):d[c];var i;a:{i=0;for(var m=f.length;i<m;i++)if(f[i].name===g){i=f[i];break a}i=null}i||(i={name:g,val:{},methodExt:[],propExt:[]},f.push(i));c===e-1?i.val=b:f=j?i.methodExt:i.propExt}};
t.registerPlural=u=function(a,b,c){t.register(a,c);t.register(b,function(){var a=c.apply(this,arguments);return a===this?this:a instanceof t?a.length?h.isArray(a[0])?new t(a.context,a[0]):a[0]:k:a})};r("tables()",function(a){var b;if(a){b=t;var c=this.context;if("number"===typeof a)a=[c[a]];else var e=h.map(c,function(a){return a.nTable}),a=h(e).filter(a).map(function(){var a=h.inArray(this,e);return c[a]}).toArray();b=new b(a)}else b=this;return b});r("table()",function(a){var a=this.tables(a),b=
a.context;return b.length?new t(b[0]):a});u("tables().nodes()","table().node()",function(){return this.iterator("table",function(a){return a.nTable},1)});u("tables().body()","table().body()",function(){return this.iterator("table",function(a){return a.nTBody},1)});u("tables().header()","table().header()",function(){return this.iterator("table",function(a){return a.nTHead},1)});u("tables().footer()","table().footer()",function(){return this.iterator("table",function(a){return a.nTFoot},1)});u("tables().containers()",
"table().container()",function(){return this.iterator("table",function(a){return a.nTableWrapper},1)});r("draw()",function(a){return this.iterator("table",function(b){N(b,!1===a)})});r("page()",function(a){return a===k?this.page.info().page:this.iterator("table",function(b){Ta(b,a)})});r("page.info()",function(){if(0===this.context.length)return k;var a=this.context[0],b=a._iDisplayStart,c=a._iDisplayLength,e=a.fnRecordsDisplay(),d=-1===c;return{page:d?0:Math.floor(b/c),pages:d?1:Math.ceil(e/c),start:b,
end:a.fnDisplayEnd(),length:c,recordsTotal:a.fnRecordsTotal(),recordsDisplay:e}});r("page.len()",function(a){return a===k?0!==this.context.length?this.context[0]._iDisplayLength:k:this.iterator("table",function(b){Ra(b,a)})});var Ub=function(a,b,c){"ssp"==B(a)?N(a,b):(C(a,!0),ra(a,[],function(c){oa(a);for(var c=sa(a,c),e=0,g=c.length;e<g;e++)J(a,c[e]);N(a,b);C(a,!1)}));if(c){var e=new t(a);e.one("draw",function(){c(e.ajax.json())})}};r("ajax.json()",function(){var a=this.context;if(0<a.length)return a[0].json});
r("ajax.params()",function(){var a=this.context;if(0<a.length)return a[0].oAjaxData});r("ajax.reload()",function(a,b){return this.iterator("table",function(c){Ub(c,!1===b,a)})});r("ajax.url()",function(a){var b=this.context;if(a===k){if(0===b.length)return k;b=b[0];return b.ajax?h.isPlainObject(b.ajax)?b.ajax.url:b.ajax:b.sAjaxSource}return this.iterator("table",function(b){h.isPlainObject(b.ajax)?b.ajax.url=a:b.ajax=a})});r("ajax.url().load()",function(a,b){return this.iterator("table",function(c){Ub(c,
!1===b,a)})});var $a=function(a,b){var c=[],e,d,f,g,j,i;e=typeof a;if(!a||"string"===e||"function"===e||a.length===k)a=[a];f=0;for(g=a.length;f<g;f++){d=a[f]&&a[f].split?a[f].split(","):[a[f]];j=0;for(i=d.length;j<i;j++)(e=b("string"===typeof d[j]?h.trim(d[j]):d[j]))&&e.length&&c.push.apply(c,e)}return c},ab=function(a){a||(a={});a.filter&&!a.search&&(a.search=a.filter);return{search:a.search||"none",order:a.order||"current",page:a.page||"all"}},bb=function(a){for(var b=0,c=a.length;b<c;b++)if(0<
a[b].length)return a[0]=a[b],a.length=1,a.context=[a.context[b]],a;a.length=0;return a},Ca=function(a,b){var c,e,d,f=[],g=a.aiDisplay;c=a.aiDisplayMaster;var j=b.search;e=b.order;d=b.page;if("ssp"==B(a))return"removed"===j?[]:U(0,c.length);if("current"==d){c=a._iDisplayStart;for(e=a.fnDisplayEnd();c<e;c++)f.push(g[c])}else if("current"==e||"applied"==e)f="none"==j?c.slice():"applied"==j?g.slice():h.map(c,function(a){return-1===h.inArray(a,g)?a:null});else if("index"==e||"original"==e){c=0;for(e=a.aoData.length;c<
e;c++)"none"==j?f.push(c):(d=h.inArray(c,g),(-1===d&&"removed"==j||0<=d&&"applied"==j)&&f.push(c))}return f};r("rows()",function(a,b){a===k?a="":h.isPlainObject(a)&&(b=a,a="");var b=ab(b),c=this.iterator("table",function(c){var d=b;return $a(a,function(a){var b=Pb(a);if(b!==null&&!d)return[b];var j=Ca(c,d);if(b!==null&&h.inArray(b,j)!==-1)return[b];if(!a)return j;if(typeof a==="function")return h.map(j,function(b){var d=c.aoData[b];return a(b,d._aData,d.nTr)?b:null});b=Sb(ia(c.aoData,j,"nTr"));return a.nodeName&&
h.inArray(a,b)!==-1?[a._DT_RowIndex]:h(b).filter(a).map(function(){return this._DT_RowIndex}).toArray()})},1);c.selector.rows=a;c.selector.opts=b;return c});r("rows().nodes()",function(){return this.iterator("row",function(a,b){return a.aoData[b].nTr||k},1)});r("rows().data()",function(){return this.iterator(!0,"rows",function(a,b){return ia(a.aoData,b,"_aData")},1)});u("rows().cache()","row().cache()",function(a){return this.iterator("row",function(b,c){var e=b.aoData[c];return"search"===a?e._aFilterData:
e._aSortData},1)});u("rows().invalidate()","row().invalidate()",function(a){return this.iterator("row",function(b,c){ca(b,c,a)})});u("rows().indexes()","row().index()",function(){return this.iterator("row",function(a,b){return b},1)});u("rows().remove()","row().remove()",function(){var a=this;return this.iterator("row",function(b,c,e){var d=b.aoData;d.splice(c,1);for(var f=0,g=d.length;f<g;f++)null!==d[f].nTr&&(d[f].nTr._DT_RowIndex=f);h.inArray(c,b.aiDisplay);pa(b.aiDisplayMaster,c);pa(b.aiDisplay,
c);pa(a[e],c,!1);Sa(b)})});r("rows.add()",function(a){var b=this.iterator("table",function(b){var c,f,g,h=[];f=0;for(g=a.length;f<g;f++)c=a[f],c.nodeName&&"TR"===c.nodeName.toUpperCase()?h.push(ma(b,c)[0]):h.push(J(b,c));return h},1),c=this.rows(-1);c.pop();c.push.apply(c,b.toArray());return c});r("row()",function(a,b){return bb(this.rows(a,b))});r("row().data()",function(a){var b=this.context;if(a===k)return b.length&&this.length?b[0].aoData[this[0]]._aData:k;b[0].aoData[this[0]]._aData=a;ca(b[0],
this[0],"data");return this});r("row().node()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]].nTr||null:null});r("row.add()",function(a){a instanceof h&&a.length&&(a=a[0]);var b=this.iterator("table",function(b){return a.nodeName&&"TR"===a.nodeName.toUpperCase()?ma(b,a)[0]:J(b,a)});return this.row(b[0])});var cb=function(a,b){var c=a.context;c.length&&(c=c[0].aoData[b!==k?b:a[0]],c._details&&(c._details.remove(),c._detailsShow=k,c._details=k))},Vb=function(a,b){var c=
a.context;if(c.length&&a.length){var e=c[0].aoData[a[0]];if(e._details){(e._detailsShow=b)?e._details.insertAfter(e.nTr):e._details.detach();var d=c[0],f=new t(d),g=d.aoData;f.off("draw.dt.DT_details column-visibility.dt.DT_details destroy.dt.DT_details");0<D(g,"_details").length&&(f.on("draw.dt.DT_details",function(a,b){d===b&&f.rows({page:"current"}).eq(0).each(function(a){a=g[a];a._detailsShow&&a._details.insertAfter(a.nTr)})}),f.on("column-visibility.dt.DT_details",function(a,b){if(d===b)for(var c,
e=aa(b),f=0,h=g.length;f<h;f++)c=g[f],c._details&&c._details.children("td[colspan]").attr("colspan",e)}),f.on("destroy.dt.DT_details",function(a,b){if(d===b)for(var c=0,e=g.length;c<e;c++)g[c]._details&&cb(f,c)}))}}};r("row().child()",function(a,b){var c=this.context;if(a===k)return c.length&&this.length?c[0].aoData[this[0]]._details:k;if(!0===a)this.child.show();else if(!1===a)cb(this);else if(c.length&&this.length){var e=c[0],c=c[0].aoData[this[0]],d=[],f=function(a,b){if(a.nodeName&&"tr"===a.nodeName.toLowerCase())d.push(a);
else{var c=h("<tr><td/></tr>").addClass(b);h("td",c).addClass(b).html(a)[0].colSpan=aa(e);d.push(c[0])}};if(h.isArray(a)||a instanceof h)for(var g=0,j=a.length;g<j;g++)f(a[g],b);else f(a,b);c._details&&c._details.remove();c._details=h(d);c._detailsShow&&c._details.insertAfter(c.nTr)}return this});r(["row().child.show()","row().child().show()"],function(){Vb(this,!0);return this});r(["row().child.hide()","row().child().hide()"],function(){Vb(this,!1);return this});r(["row().child.remove()","row().child().remove()"],
function(){cb(this);return this});r("row().child.isShown()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]]._detailsShow||!1:!1});var dc=/^(.+):(name|visIdx|visible)$/,Wb=function(a,b,c,e,d){for(var c=[],e=0,f=d.length;e<f;e++)c.push(y(a,d[e],b));return c};r("columns()",function(a,b){a===k?a="":h.isPlainObject(a)&&(b=a,a="");var b=ab(b),c=this.iterator("table",function(c){var d=a,f=b,g=c.aoColumns,j=D(g,"sName"),i=D(g,"nTh");return $a(d,function(a){var b=Pb(a);if(a===
"")return U(g.length);if(b!==null)return[b>=0?b:g.length+b];if(typeof a==="function"){var d=Ca(c,f);return h.map(g,function(b,f){return a(f,Wb(c,f,0,0,d),i[f])?f:null})}var k=typeof a==="string"?a.match(dc):"";if(k)switch(k[2]){case "visIdx":case "visible":b=parseInt(k[1],10);if(b<0){var o=h.map(g,function(a,b){return a.bVisible?b:null});return[o[o.length+b]]}return[la(c,b)];case "name":return h.map(j,function(a,b){return a===k[1]?b:null})}else return h(i).filter(a).map(function(){return h.inArray(this,
i)}).toArray()})},1);c.selector.cols=a;c.selector.opts=b;return c});u("columns().header()","column().header()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTh},1)});u("columns().footer()","column().footer()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTf},1)});u("columns().data()","column().data()",function(){return this.iterator("column-rows",Wb,1)});u("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",
function(a,b){return a.aoColumns[b].mData},1)});u("columns().cache()","column().cache()",function(a){return this.iterator("column-rows",function(b,c,e,d,f){return ia(b.aoData,f,"search"===a?"_aFilterData":"_aSortData",c)},1)});u("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(a,b,c,e,d){return ia(a.aoData,d,"anCells",b)},1)});u("columns().visible()","column().visible()",function(a,b){return this.iterator("column",function(c,e){if(a===k)return c.aoColumns[e].bVisible;
var d=c.aoColumns,f=d[e],g=c.aoData,j,i,m;if(a!==k&&f.bVisible!==a){if(a){var l=h.inArray(!0,D(d,"bVisible"),e+1);j=0;for(i=g.length;j<i;j++)m=g[j].nTr,d=g[j].anCells,m&&m.insertBefore(d[e],d[l]||null)}else h(D(c.aoData,"anCells",e)).detach();f.bVisible=a;ea(c,c.aoHeader);ea(c,c.aoFooter);if(b===k||b)X(c),(c.oScroll.sX||c.oScroll.sY)&&Y(c);w(c,null,"column-visibility",[c,e,a]);ya(c)}})});u("columns().indexes()","column().index()",function(a){return this.iterator("column",function(b,c){return"visible"===
a?$(b,c):c},1)});r("columns.adjust()",function(){return this.iterator("table",function(a){X(a)},1)});r("column.index()",function(a,b){if(0!==this.context.length){var c=this.context[0];if("fromVisible"===a||"toData"===a)return la(c,b);if("fromData"===a||"toVisible"===a)return $(c,b)}});r("column()",function(a,b){return bb(this.columns(a,b))});r("cells()",function(a,b,c){h.isPlainObject(a)&&(typeof a.row!==k?(c=b,b=null):(c=a,a=null));h.isPlainObject(b)&&(c=b,b=null);if(null===b||b===k)return this.iterator("table",
function(b){var e=a,d=ab(c),f=b.aoData,g=Ca(b,d),d=Sb(ia(f,g,"anCells")),j=h([].concat.apply([],d)),i,l=b.aoColumns.length,m,o,r,t,s,u;return $a(e,function(a){var c=typeof a==="function";if(a===null||a===k||c){m=[];o=0;for(r=g.length;o<r;o++){i=g[o];for(t=0;t<l;t++){s={row:i,column:t};if(c){u=b.aoData[i];a(s,y(b,i,t),u.anCells[t])&&m.push(s)}else m.push(s)}}return m}return h.isPlainObject(a)?[a]:j.filter(a).map(function(a,b){i=b.parentNode._DT_RowIndex;return{row:i,column:h.inArray(b,f[i].anCells)}}).toArray()})});
var e=this.columns(b,c),d=this.rows(a,c),f,g,j,i,m,l=this.iterator("table",function(a,b){f=[];g=0;for(j=d[b].length;g<j;g++){i=0;for(m=e[b].length;i<m;i++)f.push({row:d[b][g],column:e[b][i]})}return f},1);h.extend(l.selector,{cols:b,rows:a,opts:c});return l});u("cells().nodes()","cell().node()",function(){return this.iterator("cell",function(a,b,c){return(a=a.aoData[b].anCells)?a[c]:k},1)});r("cells().data()",function(){return this.iterator("cell",function(a,b,c){return y(a,b,c)},1)});u("cells().cache()",
"cell().cache()",function(a){a="search"===a?"_aFilterData":"_aSortData";return this.iterator("cell",function(b,c,e){return b.aoData[c][a][e]},1)});u("cells().render()","cell().render()",function(a){return this.iterator("cell",function(b,c,e){return y(b,c,e,a)},1)});u("cells().indexes()","cell().index()",function(){return this.iterator("cell",function(a,b,c){return{row:b,column:c,columnVisible:$(a,c)}},1)});u("cells().invalidate()","cell().invalidate()",function(a){return this.iterator("cell",function(b,
c,e){ca(b,c,a,e)})});r("cell()",function(a,b,c){return bb(this.cells(a,b,c))});r("cell().data()",function(a){var b=this.context,c=this[0];if(a===k)return b.length&&c.length?y(b[0],c[0].row,c[0].column):k;Ia(b[0],c[0].row,c[0].column,a);ca(b[0],c[0].row,"data",c[0].column);return this});r("order()",function(a,b){var c=this.context;if(a===k)return 0!==c.length?c[0].aaSorting:k;"number"===typeof a?a=[[a,b]]:h.isArray(a[0])||(a=Array.prototype.slice.call(arguments));return this.iterator("table",function(b){b.aaSorting=
a.slice()})});r("order.listener()",function(a,b,c){return this.iterator("table",function(e){Oa(e,a,b,c)})});r(["columns().order()","column().order()"],function(a){var b=this;return this.iterator("table",function(c,e){var d=[];h.each(b[e],function(b,c){d.push([c,a])});c.aaSorting=d})});r("search()",function(a,b,c,e){var d=this.context;return a===k?0!==d.length?d[0].oPreviousSearch.sSearch:k:this.iterator("table",function(d){d.oFeatures.bFilter&&fa(d,h.extend({},d.oPreviousSearch,{sSearch:a+"",bRegex:null===
b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===e?!0:e}),1)})});u("columns().search()","column().search()",function(a,b,c,e){return this.iterator("column",function(d,f){var g=d.aoPreSearchCols;if(a===k)return g[f].sSearch;d.oFeatures.bFilter&&(h.extend(g[f],{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===e?!0:e}),fa(d,d.oPreviousSearch,1))})});r("state()",function(){return this.context.length?this.context[0].oSavedState:null});r("state.clear()",function(){return this.iterator("table",
function(a){a.fnStateSaveCallback.call(a.oInstance,a,{})})});r("state.loaded()",function(){return this.context.length?this.context[0].oLoadedState:null});r("state.save()",function(){return this.iterator("table",function(a){ya(a)})});o.versionCheck=o.fnVersionCheck=function(a){for(var b=o.version.split("."),a=a.split("."),c,e,d=0,f=a.length;d<f;d++)if(c=parseInt(b[d],10)||0,e=parseInt(a[d],10)||0,c!==e)return c>e;return!0};o.isDataTable=o.fnIsDataTable=function(a){var b=h(a).get(0),c=!1;h.each(o.settings,
function(a,d){if(d.nTable===b||h("table",d.nScrollHead)[0]===b||h("table",d.nScrollFoot)[0]===b)c=!0});return c};o.tables=o.fnTables=function(a){return h.map(o.settings,function(b){if(!a||a&&h(b.nTable).is(":visible"))return b.nTable})};o.util={throttle:ua,escapeRegex:va};o.camelToHungarian=H;r("$()",function(a,b){var c=this.rows(b).nodes(),c=h(c);return h([].concat(c.filter(a).toArray(),c.find(a).toArray()))});h.each(["on","one","off"],function(a,b){r(b+"()",function(){var a=Array.prototype.slice.call(arguments);
a[0].match(/\.dt\b/)||(a[0]+=".dt");var e=h(this.tables().nodes());e[b].apply(e,a);return this})});r("clear()",function(){return this.iterator("table",function(a){oa(a)})});r("settings()",function(){return new t(this.context,this.context)});r("data()",function(){return this.iterator("table",function(a){return D(a.aoData,"_aData")}).flatten()});r("destroy()",function(a){a=a||!1;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,e=b.oClasses,d=b.nTable,f=b.nTBody,g=b.nTHead,j=
b.nTFoot,i=h(d),f=h(f),k=h(b.nTableWrapper),l=h.map(b.aoData,function(a){return a.nTr}),p;b.bDestroying=!0;w(b,"aoDestroyCallback","destroy",[b]);a||(new t(b)).columns().visible(!0);k.unbind(".DT").find(":not(tbody *)").unbind(".DT");h(Ea).unbind(".DT-"+b.sInstance);d!=g.parentNode&&(i.children("thead").detach(),i.append(g));j&&d!=j.parentNode&&(i.children("tfoot").detach(),i.append(j));i.detach();k.detach();b.aaSorting=[];b.aaSortingFixed=[];xa(b);h(l).removeClass(b.asStripeClasses.join(" "));h("th, td",
g).removeClass(e.sSortable+" "+e.sSortableAsc+" "+e.sSortableDesc+" "+e.sSortableNone);b.bJUI&&(h("th span."+e.sSortIcon+", td span."+e.sSortIcon,g).detach(),h("th, td",g).each(function(){var a=h("div."+e.sSortJUIWrapper,this);h(this).append(a.contents());a.detach()}));!a&&c&&c.insertBefore(d,b.nTableReinsertBefore);f.children().detach();f.append(l);i.css("width",b.sDestroyWidth).removeClass(e.sTable);(p=b.asDestroyStripes.length)&&f.children().each(function(a){h(this).addClass(b.asDestroyStripes[a%
p])});c=h.inArray(b,o.settings);-1!==c&&o.settings.splice(c,1)})});o.version="1.10.5";o.settings=[];o.models={};o.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};o.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null};o.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,
nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null};o.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bJQueryUI:!1,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,
bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+
a.sInstance+"_"+location.pathname))}catch(b){}},fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+a.sInstance+"_"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null,iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},
oPaginate:{sFirst:"First",sLast:"Last",sNext:"Next",sPrevious:"Previous"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries",sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:h.extend({},
o.models.oSearch),sAjaxDataProp:"data",sAjaxSource:null,sDom:"lfrtip",searchDelay:null,sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null};V(o.defaults);o.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};V(o.defaults.column);
o.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},aoPreSearchCols:[],
aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",iStateDuration:0,aoStateSave:[],
aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,bAjaxDataGet:!0,jqXHR:null,json:k,oAjaxData:k,fnServerData:null,aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,bJUI:null,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==B(this)?1*this._iRecordsTotal:this.aiDisplayMaster.length},
fnRecordsDisplay:function(){return"ssp"==B(this)?1*this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength,b=this._iDisplayStart,c=b+a,e=this.aiDisplay.length,d=this.oFeatures,f=d.bPaginate;return d.bServerSide?!1===f||-1===a?b+e:Math.min(b+a,this._iRecordsDisplay):!f||c>e||-1===a?e:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{}};o.ext=x={buttons:{},classes:{},errMode:"alert",feature:[],search:[],internal:{},
legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:o.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:o.version};h.extend(x,{afnFiltering:x.search,aTypes:x.type.detect,ofnSearch:x.type.search,oSort:x.type.order,afnSortData:x.order,aoFeatures:x.feature,oApi:x.internal,oStdClasses:x.classes,oPagination:x.pager});h.extend(o.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",
sPageButtonDisabled:"disabled",sStripeOdd:"odd",sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",
sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",sJUIHeader:"",sJUIFooter:""});var Da="",Da="",F=Da+"ui-state-default",ja=Da+"css_right ui-icon ui-icon-",Xb=Da+"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix";
h.extend(o.ext.oJUIClasses,o.ext.classes,{sPageButton:"fg-button ui-button "+F,sPageButtonActive:"ui-state-disabled",sPageButtonDisabled:"ui-state-disabled",sPaging:"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_",sSortAsc:F+" sorting_asc",sSortDesc:F+" sorting_desc",sSortable:F+" sorting",sSortableAsc:F+" sorting_asc_disabled",sSortableDesc:F+" sorting_desc_disabled",sSortableNone:F+" sorting_disabled",sSortJUIAsc:ja+"triangle-1-n",sSortJUIDesc:ja+"triangle-1-s",
sSortJUI:ja+"carat-2-n-s",sSortJUIAscAllowed:ja+"carat-1-n",sSortJUIDescAllowed:ja+"carat-1-s",sSortJUIWrapper:"DataTables_sort_wrapper",sSortIcon:"DataTables_sort_icon",sScrollHead:"dataTables_scrollHead "+F,sScrollFoot:"dataTables_scrollFoot "+F,sHeaderTH:F,sFooterTH:F,sJUIHeader:Xb+" ui-corner-tl ui-corner-tr",sJUIFooter:Xb+" ui-corner-bl ui-corner-br"});var Mb=o.ext.pager;h.extend(Mb,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},simple_numbers:function(a,
b){return["previous",Wa(a,b),"next"]},full_numbers:function(a,b){return["first","previous",Wa(a,b),"next","last"]},_numbers:Wa,numbers_length:7});h.extend(!0,o.ext.renderer,{pageButton:{_:function(a,b,c,e,d,f){var g=a.oClasses,j=a.oLanguage.oPaginate,i,k,l=0,o=function(b,e){var n,r,t,s,u=function(b){Ta(a,b.data.action,true)};n=0;for(r=e.length;n<r;n++){s=e[n];if(h.isArray(s)){t=h("<"+(s.DT_el||"div")+"/>").appendTo(b);o(t,s)}else{k=i="";switch(s){case "ellipsis":b.append("<span>&hellip;</span>");
break;case "first":i=j.sFirst;k=s+(d>0?"":" "+g.sPageButtonDisabled);break;case "previous":i=j.sPrevious;k=s+(d>0?"":" "+g.sPageButtonDisabled);break;case "next":i=j.sNext;k=s+(d<f-1?"":" "+g.sPageButtonDisabled);break;case "last":i=j.sLast;k=s+(d<f-1?"":" "+g.sPageButtonDisabled);break;default:i=s+1;k=d===s?g.sPageButtonActive:""}if(i){t=h("<a>",{"class":g.sPageButton+" "+k,"aria-controls":a.sTableId,"data-dt-idx":l,tabindex:a.iTabIndex,id:c===0&&typeof s==="string"?a.sTableId+"_"+s:null}).html(i).appendTo(b);
Va(t,{action:s},u);l++}}}},n;try{n=h(P.activeElement).data("dt-idx")}catch(r){}o(h(b).empty(),e);n&&h(b).find("[data-dt-idx="+n+"]").focus()}}});h.extend(o.ext.type.detect,[function(a,b){var c=b.oLanguage.sDecimal;return Za(a,c)?"num"+c:null},function(a){if(a&&!(a instanceof Date)&&(!ac.test(a)||!bc.test(a)))return null;var b=Date.parse(a);return null!==b&&!isNaN(b)||I(a)?"date":null},function(a,b){var c=b.oLanguage.sDecimal;return Za(a,c,!0)?"num-fmt"+c:null},function(a,b){var c=b.oLanguage.sDecimal;
return Rb(a,c)?"html-num"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Rb(a,c,!0)?"html-num-fmt"+c:null},function(a){return I(a)||"string"===typeof a&&-1!==a.indexOf("<")?"html":null}]);h.extend(o.ext.type.search,{html:function(a){return I(a)?a:"string"===typeof a?a.replace(Ob," ").replace(Ba,""):""},string:function(a){return I(a)?a:"string"===typeof a?a.replace(Ob," "):a}});var Aa=function(a,b,c,e){if(0!==a&&(!a||"-"===a))return-Infinity;b&&(a=Qb(a,b));a.replace&&(c&&(a=a.replace(c,"")),
e&&(a=a.replace(e,"")));return 1*a};h.extend(x.type.order,{"date-pre":function(a){return Date.parse(a)||0},"html-pre":function(a){return I(a)?"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return I(a)?"":"string"===typeof a?a.toLowerCase():!a.toString?"":a.toString()},"string-asc":function(a,b){return a<b?-1:a>b?1:0},"string-desc":function(a,b){return a<b?1:a>b?-1:0}});db("");h.extend(!0,o.ext.renderer,{header:{_:function(a,b,c,e){h(a.nTable).on("order.dt.DT",function(d,
f,g,h){if(a===f){d=c.idx;b.removeClass(c.sSortingClass+" "+e.sSortAsc+" "+e.sSortDesc).addClass(h[d]=="asc"?e.sSortAsc:h[d]=="desc"?e.sSortDesc:c.sSortingClass)}})},jqueryui:function(a,b,c,e){h("<div/>").addClass(e.sSortJUIWrapper).append(b.contents()).append(h("<span/>").addClass(e.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);h(a.nTable).on("order.dt.DT",function(d,f,g,h){if(a===f){d=c.idx;b.removeClass(e.sSortAsc+" "+e.sSortDesc).addClass(h[d]=="asc"?e.sSortAsc:h[d]=="desc"?e.sSortDesc:c.sSortingClass);
b.find("span."+e.sSortIcon).removeClass(e.sSortJUIAsc+" "+e.sSortJUIDesc+" "+e.sSortJUI+" "+e.sSortJUIAscAllowed+" "+e.sSortJUIDescAllowed).addClass(h[d]=="asc"?e.sSortJUIAsc:h[d]=="desc"?e.sSortJUIDesc:c.sSortingClassJUI)}})}}});o.render={number:function(a,b,c,e){return{display:function(d){var f=0>d?"-":"",d=Math.abs(parseFloat(d)),g=parseInt(d,10),d=c?b+(d-g).toFixed(c).substring(2):"";return f+(e||"")+g.toString().replace(/\B(?=(\d{3})+(?!\d))/g,a)+d}}}};h.extend(o.ext.internal,{_fnExternApiFunc:Nb,
_fnBuildAjax:ra,_fnAjaxUpdate:kb,_fnAjaxParameters:tb,_fnAjaxUpdateDraw:ub,_fnAjaxDataSrc:sa,_fnAddColumn:Fa,_fnColumnOptions:ka,_fnAdjustColumnSizing:X,_fnVisibleToColumnIndex:la,_fnColumnIndexToVisible:$,_fnVisbleColumns:aa,_fnGetColumns:Z,_fnColumnTypes:Ha,_fnApplyColumnDefs:ib,_fnHungarianMap:V,_fnCamelToHungarian:H,_fnLanguageCompat:O,_fnBrowserDetect:gb,_fnAddData:J,_fnAddTr:ma,_fnNodeToDataIndex:function(a,b){return b._DT_RowIndex!==k?b._DT_RowIndex:null},_fnNodeToColumnIndex:function(a,b,
c){return h.inArray(c,a.aoData[b].anCells)},_fnGetCellData:y,_fnSetCellData:Ia,_fnSplitObjNotation:Ka,_fnGetObjectDataFn:W,_fnSetObjectDataFn:Q,_fnGetDataMaster:La,_fnClearTable:oa,_fnDeleteIndex:pa,_fnInvalidate:ca,_fnGetRowElements:na,_fnCreateTr:Ja,_fnBuildHead:jb,_fnDrawHead:ea,_fnDraw:M,_fnReDraw:N,_fnAddOptionsHtml:mb,_fnDetectHeader:da,_fnGetUniqueThs:qa,_fnFeatureHtmlFilter:ob,_fnFilterComplete:fa,_fnFilterCustom:xb,_fnFilterColumn:wb,_fnFilter:vb,_fnFilterCreateSearch:Qa,_fnEscapeRegex:va,
_fnFilterData:yb,_fnFeatureHtmlInfo:rb,_fnUpdateInfo:Bb,_fnInfoMacros:Cb,_fnInitialise:ga,_fnInitComplete:ta,_fnLengthChange:Ra,_fnFeatureHtmlLength:nb,_fnFeatureHtmlPaginate:sb,_fnPageChange:Ta,_fnFeatureHtmlProcessing:pb,_fnProcessingDisplay:C,_fnFeatureHtmlTable:qb,_fnScrollDraw:Y,_fnApplyToChildren:G,_fnCalculateColumnWidths:Ga,_fnThrottle:ua,_fnConvertToWidth:Db,_fnScrollingWidthAdjust:Fb,_fnGetWidestNode:Eb,_fnGetMaxLenString:Gb,_fnStringToCss:s,_fnScrollBarWidth:Hb,_fnSortFlatten:T,_fnSort:lb,
_fnSortAria:Jb,_fnSortListener:Ua,_fnSortAttachListener:Oa,_fnSortingClasses:xa,_fnSortData:Ib,_fnSaveState:ya,_fnLoadState:Kb,_fnSettingsFromNode:za,_fnLog:R,_fnMap:E,_fnBindAction:Va,_fnCallbackReg:z,_fnCallbackFire:w,_fnLengthOverflow:Sa,_fnRenderer:Pa,_fnDataSource:B,_fnRowAttributes:Ma,_fnCalculateEnd:function(){}});h.fn.dataTable=o;h.fn.dataTableSettings=o.settings;h.fn.dataTableExt=o.ext;h.fn.DataTable=function(a){return h(this).dataTable(a).api()};h.each(o,function(a,b){h.fn.DataTable[a]=
b});return h.fn.dataTable};"function"===typeof define&&define.amd?define("datatables",["jquery"],O):"object"===typeof exports?module.exports=O(require("jquery")):jQuery&&!jQuery.fn.dataTable&&O(jQuery)})(window,document);

shiny/www/shared/datatables/js/dataTables.bootstrap.js METASEP
/*! DataTables Bootstrap 3 integration
 * ©2011-2014 SpryMedia Ltd - datatables.net/license
 */

/**
 * DataTables integration for Bootstrap 3. This requires Bootstrap 3 and
 * DataTables 1.10 or newer.
 *
 * This file sets the defaults and adds options to DataTables to style its
 * controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap
 * for further information.
 */
(function(window, document, undefined){

var factory = function( $, DataTable ) {
"use strict";


/* Set the defaults for DataTables initialisation */
$.extend( true, DataTable.defaults, {
	dom:
		"<'row'<'col-sm-6'l><'col-sm-6'f>>" +
		"<'row'<'col-sm-12'tr>>" +
		"<'row'<'col-sm-6'i><'col-sm-6'p>>",
	renderer: 'bootstrap'
} );


/* Default class modification */
$.extend( DataTable.ext.classes, {
	sWrapper:      "dataTables_wrapper form-inline dt-bootstrap",
	sFilterInput:  "form-control form-control-sm input-sm",
	sLengthSelect: "form-control form-control-sm input-sm"
} );


/* Bootstrap paging button renderer */
DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, buttons, page, pages ) {
	var api     = new DataTable.Api( settings );
	var classes = settings.oClasses;
	var lang    = settings.oLanguage.oPaginate;
	var btnDisplay, btnClass;

	var attach = function( container, buttons ) {
		var i, ien, node, button;
		var clickHandler = function ( e ) {
			e.preventDefault();
			if ( !$(e.currentTarget).hasClass('disabled') ) {
				api.page( e.data.action ).draw( false );
			}
		};

		for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
			button = buttons[i];

			if ( $.isArray( button ) ) {
				attach( container, button );
			}
			else {
				btnDisplay = '';
				btnClass = '';

				switch ( button ) {
					case 'ellipsis':
						btnDisplay = '&hellip;';
						btnClass = 'disabled';
						break;

					case 'first':
						btnDisplay = lang.sFirst;
						btnClass = button + (page > 0 ?
							'' : ' disabled');
						break;

					case 'previous':
						btnDisplay = lang.sPrevious;
						btnClass = button + (page > 0 ?
							'' : ' disabled');
						break;

					case 'next':
						btnDisplay = lang.sNext;
						btnClass = button + (page < pages-1 ?
							'' : ' disabled');
						break;

					case 'last':
						btnDisplay = lang.sLast;
						btnClass = button + (page < pages-1 ?
							'' : ' disabled');
						break;

					default:
						btnDisplay = button + 1;
						btnClass = page === button ?
							'active' : '';
						break;
				}

				if ( btnDisplay ) {
					node = $('<li>', {
							'class': classes.sPageButton+' '+btnClass,
							'aria-controls': settings.sTableId,
							'tabindex': settings.iTabIndex,
							'id': idx === 0 && typeof button === 'string' ?
								settings.sTableId +'_'+ button :
								null
						} )
						.append( $('<a>', {
								'href': '#'
							} )
							.html( btnDisplay )
						)
						.appendTo( container );

					settings.oApi._fnBindAction(
						node, {action: button}, clickHandler
					);
				}
			}
		}
	};

	attach(
		$(host).empty().html('<ul class="pagination"/>').children('ul'),
		buttons
	);
};


/*
 * TableTools Bootstrap compatibility
 * Required TableTools 2.1+
 */
if ( DataTable.TableTools ) {
	// Set the classes that TableTools uses to something suitable for Bootstrap
	$.extend( true, DataTable.TableTools.classes, {
		"container": "DTTT btn-group",
		"buttons": {
			"normal": "btn btn-default",
			"disabled": "disabled"
		},
		"collection": {
			"container": "DTTT_dropdown dropdown-menu",
			"buttons": {
				"normal": "",
				"disabled": "disabled"
			}
		},
		"print": {
			"info": "DTTT_print_info"
		},
		"select": {
			"row": "active"
		}
	} );

	// Have the collection use a bootstrap compatible drop down
	$.extend( true, DataTable.TableTools.DEFAULTS.oTags, {
		"collection": {
			"container": "ul",
			"button": "li",
			"liner": "a"
		}
	} );
}

}; // /factory


// Define as an AMD module if possible
if ( typeof define === 'function' && define.amd ) {
	define( ['jquery', 'datatables'], factory );
}
else if ( typeof exports === 'object' ) {
    // Node/CommonJS
    factory( require('jquery'), require('datatables') );
}
else if ( jQuery ) {
	// Otherwise simply initialise as normal, stopping multiple evaluation
	factory( jQuery, jQuery.fn.dataTable );
}


})(window, document);


shiny/www/shared/datatables/images/sort_desc_disabled.png METASEP

shiny/www/shared/datatables/images/sort_desc.png METASEP

shiny/www/shared/datatables/images/sort_both.png METASEP

shiny/www/shared/datatables/images/sort_asc_disabled.png METASEP

shiny/www/shared/datatables/images/sort_asc.png METASEP

shiny/www/shared/datatables/css/dataTables.extra.css METASEP
/* Sorting */
table.dataTable tr.odd td.sorting_1 { background-color: #D3D6FF; }
table.dataTable tr.odd td.sorting_2 { background-color: #DADCFF; }
table.dataTable tr.odd td.sorting_3 { background-color: #E0E2FF; }
table.dataTable tr.even td.sorting_1 { background-color: #EAEBFF; }
table.dataTable tr.even td.sorting_2 { background-color: #F2F3FF; }
table.dataTable tr.even td.sorting_3 { background-color: #F9F9FF; }

table.dataTable tr.odd td.sorting_1 { background-color: #D3D6FF; }
table.dataTable tr.odd td.sorting_2 { background-color: #DADCFF; }
table.dataTable tr.odd td.sorting_3 { background-color: #E0E2FF; }
table.dataTable tr.even td.sorting_1 { background-color: #EAEBFF; }
table.dataTable tr.even td.sorting_2 { background-color: #F2F3FF; }
table.dataTable tr.even td.sorting_3 { background-color: #F9F9FF; }

/* Selected rows */
table.dataTable tbody tr.selected,
table.dataTable tr.selected td.sorting_1,
table.dataTable tr.selected td.sorting_2,
table.dataTable tr.selected td.sorting_3,
.table-striped tbody>tr.selected:nth-child(odd)>td,
.table-striped tbody>tr.selected:nth-child(even)>td {
  background-color: #b0bed9;
}

/* Search boxes in the footer */
table tfoot input {
  width: 100%;
}


shiny/www/shared/datatables/css/dataTables.bootstrap.css METASEP
div.dataTables_length label {
	font-weight: normal;
	text-align: left;
	white-space: nowrap;
}

div.dataTables_length select {
	width: 75px;
	display: inline-block;
}

div.dataTables_filter {
	text-align: right;
}

div.dataTables_filter label {
	font-weight: normal;
	white-space: nowrap;
	text-align: left;
}

div.dataTables_filter input {
	margin-left: 0.5em;
	display: inline-block;
}

div.dataTables_info {
	padding-top: 8px;
	white-space: nowrap;
}

div.dataTables_paginate {
	margin: 0;
	white-space: nowrap;
	text-align: right;
}

div.dataTables_paginate ul.pagination {
	margin: 2px 0;
	white-space: nowrap;
}

@media screen and (max-width: 767px) {
	div.dataTables_length,
	div.dataTables_filter,
	div.dataTables_info,
	div.dataTables_paginate {
		text-align: center;
	}
}


table.dataTable td,
table.dataTable th {
	-webkit-box-sizing: content-box;
	-moz-box-sizing: content-box;
	box-sizing: content-box;
}


table.dataTable {
	clear: both;
	margin-top: 6px !important;
	margin-bottom: 6px !important;
	max-width: none !important;
}

table.dataTable thead .sorting,
table.dataTable thead .sorting_asc,
table.dataTable thead .sorting_desc,
table.dataTable thead .sorting_asc_disabled,
table.dataTable thead .sorting_desc_disabled {
	cursor: pointer;
}

table.dataTable thead .sorting { background: url('../images/sort_both.png') no-repeat center right; }
table.dataTable thead .sorting_asc { background: url('../images/sort_asc.png') no-repeat center right; }
table.dataTable thead .sorting_desc { background: url('../images/sort_desc.png') no-repeat center right; }

table.dataTable thead .sorting_asc_disabled { background: url('../images/sort_asc_disabled.png') no-repeat center right; }
table.dataTable thead .sorting_desc_disabled { background: url('../images/sort_desc_disabled.png') no-repeat center right; }

table.dataTable thead > tr > th {
	padding-left: 18px;
	padding-right: 18px;
}

table.dataTable th:active {
	outline: none;
}

/* Scrolling */
div.dataTables_scrollHead table {
	margin-bottom: 0 !important;
	border-bottom-left-radius: 0;
	border-bottom-right-radius: 0;
}

div.dataTables_scrollHead table thead tr:last-child th:first-child,
div.dataTables_scrollHead table thead tr:last-child td:first-child {
	border-bottom-left-radius: 0 !important;
	border-bottom-right-radius: 0 !important;
}

div.dataTables_scrollBody table {
	border-top: none;
	margin-top: 0 !important;
	margin-bottom: 0 !important;
}

div.dataTables_scrollBody tbody tr:first-child th,
div.dataTables_scrollBody tbody tr:first-child td {
	border-top: none;
}

div.dataTables_scrollFoot table {
	margin-top: 0 !important;
	border-top: none;
}

/* Frustratingly the border-collapse:collapse used by Bootstrap makes the column
   width calculations when using scrolling impossible to align columns. We have
   to use separate
 */
table.table-bordered.dataTable {
	border-collapse: separate !important;
}
table.table-bordered thead th,
table.table-bordered thead td {
	border-left-width: 0;
	border-top-width: 0;
}
table.table-bordered tbody th,
table.table-bordered tbody td {
	border-left-width: 0;
	border-bottom-width: 0;
}
table.table-bordered th:last-child,
table.table-bordered td:last-child {
	border-right-width: 0;
}
div.dataTables_scrollHead table.table-bordered {
	border-bottom-width: 0;
}




/*
 * TableTools styles
 */
.table.dataTable tbody tr.active td,
.table.dataTable tbody tr.active th {
	background-color: #08C;
	color: white;
}

.table.dataTable tbody tr.active:hover td,
.table.dataTable tbody tr.active:hover th {
	background-color: #0075b0 !important;
}

.table.dataTable tbody tr.active th > a,
.table.dataTable tbody tr.active td > a {
	color: white;
}

.table-striped.dataTable tbody tr.active:nth-child(odd) td,
.table-striped.dataTable tbody tr.active:nth-child(odd) th {
	background-color: #017ebc;
}

table.DTTT_selectable tbody tr {
	cursor: pointer;
}

div.DTTT .btn {
	color: #333 !important;
	font-size: 12px;
}

div.DTTT .btn:hover {
	text-decoration: none !important;
}

ul.DTTT_dropdown.dropdown-menu {
  z-index: 2003;
}

ul.DTTT_dropdown.dropdown-menu a {
	color: #333 !important; /* needed only when demo_page.css is included */
}

ul.DTTT_dropdown.dropdown-menu li {
	position: relative;
}

ul.DTTT_dropdown.dropdown-menu li:hover a {
	background-color: #0088cc;
	color: white !important;
}

div.DTTT_collection_background {
	z-index: 2002;	
}

/* TableTools information display */
div.DTTT_print_info {
	position: fixed;
	top: 50%;
	left: 50%;
	width: 400px;
	height: 150px;
	margin-left: -200px;
	margin-top: -75px;
	text-align: center;
	color: #333;
	padding: 10px 30px;
	opacity: 0.95;

	background-color: white;
	border: 1px solid rgba(0, 0, 0, 0.2);
	border-radius: 6px;
	
	-webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
	        box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
}

div.DTTT_print_info h6 {
	font-weight: normal;
	font-size: 28px;
	line-height: 28px;
	margin: 1em;
}

div.DTTT_print_info p {
	font-size: 14px;
	line-height: 20px;
}

div.dataTables_processing {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 100%;
    height: 60px;
    margin-left: -50%;
    margin-top: -25px;
    padding-top: 20px;
    padding-bottom: 20px;
    text-align: center;
    font-size: 1.2em;
    background-color: white;
    background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0)));
    background: -webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);
    background: -moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);
    background: -ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);
    background: -o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);
    background: linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);
}



/*
 * FixedColumns styles
 */
div.DTFC_LeftHeadWrapper table,
div.DTFC_LeftFootWrapper table,
div.DTFC_RightHeadWrapper table,
div.DTFC_RightFootWrapper table,
table.DTFC_Cloned tr.even {
    background-color: white;
    margin-bottom: 0;
}
 
div.DTFC_RightHeadWrapper table ,
div.DTFC_LeftHeadWrapper table {
	border-bottom: none !important;
    margin-bottom: 0 !important;
    border-top-right-radius: 0 !important;
    border-bottom-left-radius: 0 !important;
    border-bottom-right-radius: 0 !important;
}
 
div.DTFC_RightHeadWrapper table thead tr:last-child th:first-child,
div.DTFC_RightHeadWrapper table thead tr:last-child td:first-child,
div.DTFC_LeftHeadWrapper table thead tr:last-child th:first-child,
div.DTFC_LeftHeadWrapper table thead tr:last-child td:first-child {
    border-bottom-left-radius: 0 !important;
    border-bottom-right-radius: 0 !important;
}
 
div.DTFC_RightBodyWrapper table,
div.DTFC_LeftBodyWrapper table {
    border-top: none;
    margin: 0 !important;
}
 
div.DTFC_RightBodyWrapper tbody tr:first-child th,
div.DTFC_RightBodyWrapper tbody tr:first-child td,
div.DTFC_LeftBodyWrapper tbody tr:first-child th,
div.DTFC_LeftBodyWrapper tbody tr:first-child td {
    border-top: none;
}
 
div.DTFC_RightFootWrapper table,
div.DTFC_LeftFootWrapper table {
    border-top: none;
    margin-top: 0 !important;
}


/*
 * FixedHeader styles
 */
div.FixedHeader_Cloned table {
	margin: 0 !important
}


shiny/www/shared/bslib/dist/navs.min.js.map METASEP
{"version":3,"file":"navs.min.js","sources":["../node_modules/object-assign/index.js","../node_modules/react/cjs/react.development.js","../node_modules/react/index.js","../src/index.js"],"sourcesContent":["/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/** @license React v17.0.2\n * react.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n  (function() {\n'use strict';\n\nvar _assign = require('object-assign');\n\n// TODO: this is special because it gets imported during build.\nvar ReactVersion = '17.0.2';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar REACT_ELEMENT_TYPE = 0xeac7;\nvar REACT_PORTAL_TYPE = 0xeaca;\nexports.Fragment = 0xeacb;\nexports.StrictMode = 0xeacc;\nexports.Profiler = 0xead2;\nvar REACT_PROVIDER_TYPE = 0xeacd;\nvar REACT_CONTEXT_TYPE = 0xeace;\nvar REACT_FORWARD_REF_TYPE = 0xead0;\nexports.Suspense = 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = 0xead8;\nvar REACT_MEMO_TYPE = 0xead3;\nvar REACT_LAZY_TYPE = 0xead4;\nvar REACT_BLOCK_TYPE = 0xead9;\nvar REACT_SERVER_BLOCK_TYPE = 0xeada;\nvar REACT_FUNDAMENTAL_TYPE = 0xead5;\nvar REACT_SCOPE_TYPE = 0xead7;\nvar REACT_OPAQUE_ID_TYPE = 0xeae0;\nvar REACT_DEBUG_TRACING_MODE_TYPE = 0xeae1;\nvar REACT_OFFSCREEN_TYPE = 0xeae2;\nvar REACT_LEGACY_HIDDEN_TYPE = 0xeae3;\n\nif (typeof Symbol === 'function' && Symbol.for) {\n  var symbolFor = Symbol.for;\n  REACT_ELEMENT_TYPE = symbolFor('react.element');\n  REACT_PORTAL_TYPE = symbolFor('react.portal');\n  exports.Fragment = symbolFor('react.fragment');\n  exports.StrictMode = symbolFor('react.strict_mode');\n  exports.Profiler = symbolFor('react.profiler');\n  REACT_PROVIDER_TYPE = symbolFor('react.provider');\n  REACT_CONTEXT_TYPE = symbolFor('react.context');\n  REACT_FORWARD_REF_TYPE = symbolFor('react.forward_ref');\n  exports.Suspense = symbolFor('react.suspense');\n  REACT_SUSPENSE_LIST_TYPE = symbolFor('react.suspense_list');\n  REACT_MEMO_TYPE = symbolFor('react.memo');\n  REACT_LAZY_TYPE = symbolFor('react.lazy');\n  REACT_BLOCK_TYPE = symbolFor('react.block');\n  REACT_SERVER_BLOCK_TYPE = symbolFor('react.server.block');\n  REACT_FUNDAMENTAL_TYPE = symbolFor('react.fundamental');\n  REACT_SCOPE_TYPE = symbolFor('react.scope');\n  REACT_OPAQUE_ID_TYPE = symbolFor('react.opaque.id');\n  REACT_DEBUG_TRACING_MODE_TYPE = symbolFor('react.debug_trace_mode');\n  REACT_OFFSCREEN_TYPE = symbolFor('react.offscreen');\n  REACT_LEGACY_HIDDEN_TYPE = symbolFor('react.legacy_hidden');\n}\n\nvar MAYBE_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n  if (maybeIterable === null || typeof maybeIterable !== 'object') {\n    return null;\n  }\n\n  var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n  if (typeof maybeIterator === 'function') {\n    return maybeIterator;\n  }\n\n  return null;\n}\n\n/**\n * Keeps track of the current dispatcher.\n */\nvar ReactCurrentDispatcher = {\n  /**\n   * @internal\n   * @type {ReactComponent}\n   */\n  current: null\n};\n\n/**\n * Keeps track of the current batch's configuration such as how long an update\n * should suspend for if it needs to.\n */\nvar ReactCurrentBatchConfig = {\n  transition: 0\n};\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */\nvar ReactCurrentOwner = {\n  /**\n   * @internal\n   * @type {ReactComponent}\n   */\n  current: null\n};\n\nvar ReactDebugCurrentFrame = {};\nvar currentExtraStackFrame = null;\nfunction setExtraStackFrame(stack) {\n  {\n    currentExtraStackFrame = stack;\n  }\n}\n\n{\n  ReactDebugCurrentFrame.setExtraStackFrame = function (stack) {\n    {\n      currentExtraStackFrame = stack;\n    }\n  }; // Stack implementation injected by the current renderer.\n\n\n  ReactDebugCurrentFrame.getCurrentStack = null;\n\n  ReactDebugCurrentFrame.getStackAddendum = function () {\n    var stack = ''; // Add an extra top frame while an element is being validated\n\n    if (currentExtraStackFrame) {\n      stack += currentExtraStackFrame;\n    } // Delegate to the injected renderer-specific implementation\n\n\n    var impl = ReactDebugCurrentFrame.getCurrentStack;\n\n    if (impl) {\n      stack += impl() || '';\n    }\n\n    return stack;\n  };\n}\n\n/**\n * Used by act() to track whether you're inside an act() scope.\n */\nvar IsSomeRendererActing = {\n  current: false\n};\n\nvar ReactSharedInternals = {\n  ReactCurrentDispatcher: ReactCurrentDispatcher,\n  ReactCurrentBatchConfig: ReactCurrentBatchConfig,\n  ReactCurrentOwner: ReactCurrentOwner,\n  IsSomeRendererActing: IsSomeRendererActing,\n  // Used by renderers to avoid bundling object-assign twice in UMD bundles:\n  assign: _assign\n};\n\n{\n  ReactSharedInternals.ReactDebugCurrentFrame = ReactDebugCurrentFrame;\n}\n\n// by calls to these methods by a Babel plugin.\n//\n// In PROD (or in packages without access to React internals),\n// they are left as they are instead.\n\nfunction warn(format) {\n  {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    printWarning('warn', format, args);\n  }\n}\nfunction error(format) {\n  {\n    for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n      args[_key2 - 1] = arguments[_key2];\n    }\n\n    printWarning('error', format, args);\n  }\n}\n\nfunction printWarning(level, format, args) {\n  // When changing this logic, you might want to also\n  // update consoleWithStackDev.www.js as well.\n  {\n    var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n    var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n    if (stack !== '') {\n      format += '%s';\n      args = args.concat([stack]);\n    }\n\n    var argsWithFormat = args.map(function (item) {\n      return '' + item;\n    }); // Careful: RN currently depends on this prefix\n\n    argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n    // breaks IE9: https://github.com/facebook/react/issues/13610\n    // eslint-disable-next-line react-internal/no-production-logging\n\n    Function.prototype.apply.call(console[level], console, argsWithFormat);\n  }\n}\n\nvar didWarnStateUpdateForUnmountedComponent = {};\n\nfunction warnNoop(publicInstance, callerName) {\n  {\n    var _constructor = publicInstance.constructor;\n    var componentName = _constructor && (_constructor.displayName || _constructor.name) || 'ReactClass';\n    var warningKey = componentName + \".\" + callerName;\n\n    if (didWarnStateUpdateForUnmountedComponent[warningKey]) {\n      return;\n    }\n\n    error(\"Can't call %s on a component that is not yet mounted. \" + 'This is a no-op, but it might indicate a bug in your application. ' + 'Instead, assign to `this.state` directly or define a `state = {};` ' + 'class property with the desired state in the %s component.', callerName, componentName);\n\n    didWarnStateUpdateForUnmountedComponent[warningKey] = true;\n  }\n}\n/**\n * This is the abstract API for an update queue.\n */\n\n\nvar ReactNoopUpdateQueue = {\n  /**\n   * Checks whether or not this composite component is mounted.\n   * @param {ReactClass} publicInstance The instance we want to test.\n   * @return {boolean} True if mounted, false otherwise.\n   * @protected\n   * @final\n   */\n  isMounted: function (publicInstance) {\n    return false;\n  },\n\n  /**\n   * Forces an update. This should only be invoked when it is known with\n   * certainty that we are **not** in a DOM transaction.\n   *\n   * You may want to call this when you know that some deeper aspect of the\n   * component's state has changed but `setState` was not called.\n   *\n   * This will not invoke `shouldComponentUpdate`, but it will invoke\n   * `componentWillUpdate` and `componentDidUpdate`.\n   *\n   * @param {ReactClass} publicInstance The instance that should rerender.\n   * @param {?function} callback Called after component is updated.\n   * @param {?string} callerName name of the calling function in the public API.\n   * @internal\n   */\n  enqueueForceUpdate: function (publicInstance, callback, callerName) {\n    warnNoop(publicInstance, 'forceUpdate');\n  },\n\n  /**\n   * Replaces all of the state. Always use this or `setState` to mutate state.\n   * You should treat `this.state` as immutable.\n   *\n   * There is no guarantee that `this.state` will be immediately updated, so\n   * accessing `this.state` after calling this method may return the old value.\n   *\n   * @param {ReactClass} publicInstance The instance that should rerender.\n   * @param {object} completeState Next state.\n   * @param {?function} callback Called after component is updated.\n   * @param {?string} callerName name of the calling function in the public API.\n   * @internal\n   */\n  enqueueReplaceState: function (publicInstance, completeState, callback, callerName) {\n    warnNoop(publicInstance, 'replaceState');\n  },\n\n  /**\n   * Sets a subset of the state. This only exists because _pendingState is\n   * internal. This provides a merging strategy that is not available to deep\n   * properties which is confusing. TODO: Expose pendingState or don't use it\n   * during the merge.\n   *\n   * @param {ReactClass} publicInstance The instance that should rerender.\n   * @param {object} partialState Next partial state to be merged with state.\n   * @param {?function} callback Called after component is updated.\n   * @param {?string} Name of the calling function in the public API.\n   * @internal\n   */\n  enqueueSetState: function (publicInstance, partialState, callback, callerName) {\n    warnNoop(publicInstance, 'setState');\n  }\n};\n\nvar emptyObject = {};\n\n{\n  Object.freeze(emptyObject);\n}\n/**\n * Base class helpers for the updating state of a component.\n */\n\n\nfunction Component(props, context, updater) {\n  this.props = props;\n  this.context = context; // If a component has string refs, we will assign a different object later.\n\n  this.refs = emptyObject; // We initialize the default updater but the real one gets injected by the\n  // renderer.\n\n  this.updater = updater || ReactNoopUpdateQueue;\n}\n\nComponent.prototype.isReactComponent = {};\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together.  You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n *        produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\n\nComponent.prototype.setState = function (partialState, callback) {\n  if (!(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null)) {\n    {\n      throw Error( \"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\" );\n    }\n  }\n\n  this.updater.enqueueSetState(this, partialState, callback, 'setState');\n};\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\n\n\nComponent.prototype.forceUpdate = function (callback) {\n  this.updater.enqueueForceUpdate(this, callback, 'forceUpdate');\n};\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\n\n\n{\n  var deprecatedAPIs = {\n    isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n    replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n  };\n\n  var defineDeprecationWarning = function (methodName, info) {\n    Object.defineProperty(Component.prototype, methodName, {\n      get: function () {\n        warn('%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]);\n\n        return undefined;\n      }\n    });\n  };\n\n  for (var fnName in deprecatedAPIs) {\n    if (deprecatedAPIs.hasOwnProperty(fnName)) {\n      defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n    }\n  }\n}\n\nfunction ComponentDummy() {}\n\nComponentDummy.prototype = Component.prototype;\n/**\n * Convenience component with default shallow equality check for sCU.\n */\n\nfunction PureComponent(props, context, updater) {\n  this.props = props;\n  this.context = context; // If a component has string refs, we will assign a different object later.\n\n  this.refs = emptyObject;\n  this.updater = updater || ReactNoopUpdateQueue;\n}\n\nvar pureComponentPrototype = PureComponent.prototype = new ComponentDummy();\npureComponentPrototype.constructor = PureComponent; // Avoid an extra prototype jump for these methods.\n\n_assign(pureComponentPrototype, Component.prototype);\n\npureComponentPrototype.isPureReactComponent = true;\n\n// an immutable object with a single mutable value\nfunction createRef() {\n  var refObject = {\n    current: null\n  };\n\n  {\n    Object.seal(refObject);\n  }\n\n  return refObject;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n  var functionName = innerType.displayName || innerType.name || '';\n  return outerType.displayName || (functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName);\n}\n\nfunction getContextName(type) {\n  return type.displayName || 'Context';\n}\n\nfunction getComponentName(type) {\n  if (type == null) {\n    // Host root, text node or just invalid type.\n    return null;\n  }\n\n  {\n    if (typeof type.tag === 'number') {\n      error('Received an unexpected object in getComponentName(). ' + 'This is likely a bug in React. Please file an issue.');\n    }\n  }\n\n  if (typeof type === 'function') {\n    return type.displayName || type.name || null;\n  }\n\n  if (typeof type === 'string') {\n    return type;\n  }\n\n  switch (type) {\n    case exports.Fragment:\n      return 'Fragment';\n\n    case REACT_PORTAL_TYPE:\n      return 'Portal';\n\n    case exports.Profiler:\n      return 'Profiler';\n\n    case exports.StrictMode:\n      return 'StrictMode';\n\n    case exports.Suspense:\n      return 'Suspense';\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return 'SuspenseList';\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_CONTEXT_TYPE:\n        var context = type;\n        return getContextName(context) + '.Consumer';\n\n      case REACT_PROVIDER_TYPE:\n        var provider = type;\n        return getContextName(provider._context) + '.Provider';\n\n      case REACT_FORWARD_REF_TYPE:\n        return getWrappedName(type, type.render, 'ForwardRef');\n\n      case REACT_MEMO_TYPE:\n        return getComponentName(type.type);\n\n      case REACT_BLOCK_TYPE:\n        return getComponentName(type._render);\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            return getComponentName(init(payload));\n          } catch (x) {\n            return null;\n          }\n        }\n    }\n  }\n\n  return null;\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar RESERVED_PROPS = {\n  key: true,\n  ref: true,\n  __self: true,\n  __source: true\n};\nvar specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs;\n\n{\n  didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n  {\n    if (hasOwnProperty.call(config, 'ref')) {\n      var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n      if (getter && getter.isReactWarning) {\n        return false;\n      }\n    }\n  }\n\n  return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n  {\n    if (hasOwnProperty.call(config, 'key')) {\n      var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n      if (getter && getter.isReactWarning) {\n        return false;\n      }\n    }\n  }\n\n  return config.key !== undefined;\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n  var warnAboutAccessingKey = function () {\n    {\n      if (!specialPropKeyWarningShown) {\n        specialPropKeyWarningShown = true;\n\n        error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n      }\n    }\n  };\n\n  warnAboutAccessingKey.isReactWarning = true;\n  Object.defineProperty(props, 'key', {\n    get: warnAboutAccessingKey,\n    configurable: true\n  });\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n  var warnAboutAccessingRef = function () {\n    {\n      if (!specialPropRefWarningShown) {\n        specialPropRefWarningShown = true;\n\n        error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n      }\n    }\n  };\n\n  warnAboutAccessingRef.isReactWarning = true;\n  Object.defineProperty(props, 'ref', {\n    get: warnAboutAccessingRef,\n    configurable: true\n  });\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config) {\n  {\n    if (typeof config.ref === 'string' && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) {\n      var componentName = getComponentName(ReactCurrentOwner.current.type);\n\n      if (!didWarnAboutStringRefs[componentName]) {\n        error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', componentName, config.ref);\n\n        didWarnAboutStringRefs[componentName] = true;\n      }\n    }\n  }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n  var element = {\n    // This tag allows us to uniquely identify this as a React Element\n    $$typeof: REACT_ELEMENT_TYPE,\n    // Built-in properties that belong on the element\n    type: type,\n    key: key,\n    ref: ref,\n    props: props,\n    // Record the component responsible for creating this element.\n    _owner: owner\n  };\n\n  {\n    // The validation flag is currently mutative. We put it on\n    // an external backing store so that we can freeze the whole object.\n    // This can be replaced with a WeakMap once they are implemented in\n    // commonly used development environments.\n    element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n    // the validation flag non-enumerable (where possible, which should\n    // include every environment we run tests in), so the test framework\n    // ignores it.\n\n    Object.defineProperty(element._store, 'validated', {\n      configurable: false,\n      enumerable: false,\n      writable: true,\n      value: false\n    }); // self and source are DEV only properties.\n\n    Object.defineProperty(element, '_self', {\n      configurable: false,\n      enumerable: false,\n      writable: false,\n      value: self\n    }); // Two elements created in two different places should be considered\n    // equal for testing purposes and therefore we hide it from enumeration.\n\n    Object.defineProperty(element, '_source', {\n      configurable: false,\n      enumerable: false,\n      writable: false,\n      value: source\n    });\n\n    if (Object.freeze) {\n      Object.freeze(element.props);\n      Object.freeze(element);\n    }\n  }\n\n  return element;\n};\n/**\n * Create and return a new ReactElement of the given type.\n * See https://reactjs.org/docs/react-api.html#createelement\n */\n\nfunction createElement(type, config, children) {\n  var propName; // Reserved names are extracted\n\n  var props = {};\n  var key = null;\n  var ref = null;\n  var self = null;\n  var source = null;\n\n  if (config != null) {\n    if (hasValidRef(config)) {\n      ref = config.ref;\n\n      {\n        warnIfStringRefCannotBeAutoConverted(config);\n      }\n    }\n\n    if (hasValidKey(config)) {\n      key = '' + config.key;\n    }\n\n    self = config.__self === undefined ? null : config.__self;\n    source = config.__source === undefined ? null : config.__source; // Remaining properties are added to a new props object\n\n    for (propName in config) {\n      if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n        props[propName] = config[propName];\n      }\n    }\n  } // Children can be more than one argument, and those are transferred onto\n  // the newly allocated props object.\n\n\n  var childrenLength = arguments.length - 2;\n\n  if (childrenLength === 1) {\n    props.children = children;\n  } else if (childrenLength > 1) {\n    var childArray = Array(childrenLength);\n\n    for (var i = 0; i < childrenLength; i++) {\n      childArray[i] = arguments[i + 2];\n    }\n\n    {\n      if (Object.freeze) {\n        Object.freeze(childArray);\n      }\n    }\n\n    props.children = childArray;\n  } // Resolve default props\n\n\n  if (type && type.defaultProps) {\n    var defaultProps = type.defaultProps;\n\n    for (propName in defaultProps) {\n      if (props[propName] === undefined) {\n        props[propName] = defaultProps[propName];\n      }\n    }\n  }\n\n  {\n    if (key || ref) {\n      var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n      if (key) {\n        defineKeyPropWarningGetter(props, displayName);\n      }\n\n      if (ref) {\n        defineRefPropWarningGetter(props, displayName);\n      }\n    }\n  }\n\n  return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n  var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n  return newElement;\n}\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://reactjs.org/docs/react-api.html#cloneelement\n */\n\nfunction cloneElement(element, config, children) {\n  if (!!(element === null || element === undefined)) {\n    {\n      throw Error( \"React.cloneElement(...): The argument must be a React element, but you passed \" + element + \".\" );\n    }\n  }\n\n  var propName; // Original props are copied\n\n  var props = _assign({}, element.props); // Reserved names are extracted\n\n\n  var key = element.key;\n  var ref = element.ref; // Self is preserved since the owner is preserved.\n\n  var self = element._self; // Source is preserved since cloneElement is unlikely to be targeted by a\n  // transpiler, and the original source is probably a better indicator of the\n  // true owner.\n\n  var source = element._source; // Owner will be preserved, unless ref is overridden\n\n  var owner = element._owner;\n\n  if (config != null) {\n    if (hasValidRef(config)) {\n      // Silently steal the ref from the parent.\n      ref = config.ref;\n      owner = ReactCurrentOwner.current;\n    }\n\n    if (hasValidKey(config)) {\n      key = '' + config.key;\n    } // Remaining properties override existing props\n\n\n    var defaultProps;\n\n    if (element.type && element.type.defaultProps) {\n      defaultProps = element.type.defaultProps;\n    }\n\n    for (propName in config) {\n      if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n        if (config[propName] === undefined && defaultProps !== undefined) {\n          // Resolve default props\n          props[propName] = defaultProps[propName];\n        } else {\n          props[propName] = config[propName];\n        }\n      }\n    }\n  } // Children can be more than one argument, and those are transferred onto\n  // the newly allocated props object.\n\n\n  var childrenLength = arguments.length - 2;\n\n  if (childrenLength === 1) {\n    props.children = children;\n  } else if (childrenLength > 1) {\n    var childArray = Array(childrenLength);\n\n    for (var i = 0; i < childrenLength; i++) {\n      childArray[i] = arguments[i + 2];\n    }\n\n    props.children = childArray;\n  }\n\n  return ReactElement(element.type, key, ref, self, source, owner, props);\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\nfunction isValidElement(object) {\n  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n  var escapeRegex = /[=:]/g;\n  var escaperLookup = {\n    '=': '=0',\n    ':': '=2'\n  };\n  var escapedString = key.replace(escapeRegex, function (match) {\n    return escaperLookup[match];\n  });\n  return '$' + escapedString;\n}\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\n\nvar didWarnAboutMaps = false;\nvar userProvidedKeyEscapeRegex = /\\/+/g;\n\nfunction escapeUserProvidedKey(text) {\n  return text.replace(userProvidedKeyEscapeRegex, '$&/');\n}\n/**\n * Generate a key string that identifies a element within a set.\n *\n * @param {*} element A element that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\n\n\nfunction getElementKey(element, index) {\n  // Do some typechecking here since we call this blindly. We want to ensure\n  // that we don't block potential future ES APIs.\n  if (typeof element === 'object' && element !== null && element.key != null) {\n    // Explicit key\n    return escape('' + element.key);\n  } // Implicit key determined by the index in the set\n\n\n  return index.toString(36);\n}\n\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n  var type = typeof children;\n\n  if (type === 'undefined' || type === 'boolean') {\n    // All of the above are perceived as null.\n    children = null;\n  }\n\n  var invokeCallback = false;\n\n  if (children === null) {\n    invokeCallback = true;\n  } else {\n    switch (type) {\n      case 'string':\n      case 'number':\n        invokeCallback = true;\n        break;\n\n      case 'object':\n        switch (children.$$typeof) {\n          case REACT_ELEMENT_TYPE:\n          case REACT_PORTAL_TYPE:\n            invokeCallback = true;\n        }\n\n    }\n  }\n\n  if (invokeCallback) {\n    var _child = children;\n    var mappedChild = callback(_child); // If it's the only child, treat the name as if it was wrapped in an array\n    // so that it's consistent if the number of children grows:\n\n    var childKey = nameSoFar === '' ? SEPARATOR + getElementKey(_child, 0) : nameSoFar;\n\n    if (Array.isArray(mappedChild)) {\n      var escapedChildKey = '';\n\n      if (childKey != null) {\n        escapedChildKey = escapeUserProvidedKey(childKey) + '/';\n      }\n\n      mapIntoArray(mappedChild, array, escapedChildKey, '', function (c) {\n        return c;\n      });\n    } else if (mappedChild != null) {\n      if (isValidElement(mappedChild)) {\n        mappedChild = cloneAndReplaceKey(mappedChild, // Keep both the (mapped) and old keys if they differ, just as\n        // traverseAllChildren used to do for objects as children\n        escapedPrefix + ( // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key\n        mappedChild.key && (!_child || _child.key !== mappedChild.key) ? // $FlowFixMe Flow incorrectly thinks existing element's key can be a number\n        escapeUserProvidedKey('' + mappedChild.key) + '/' : '') + childKey);\n      }\n\n      array.push(mappedChild);\n    }\n\n    return 1;\n  }\n\n  var child;\n  var nextName;\n  var subtreeCount = 0; // Count of children found in the current subtree.\n\n  var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n  if (Array.isArray(children)) {\n    for (var i = 0; i < children.length; i++) {\n      child = children[i];\n      nextName = nextNamePrefix + getElementKey(child, i);\n      subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n    }\n  } else {\n    var iteratorFn = getIteratorFn(children);\n\n    if (typeof iteratorFn === 'function') {\n      var iterableChildren = children;\n\n      {\n        // Warn about using Maps as children\n        if (iteratorFn === iterableChildren.entries) {\n          if (!didWarnAboutMaps) {\n            warn('Using Maps as children is not supported. ' + 'Use an array of keyed ReactElements instead.');\n          }\n\n          didWarnAboutMaps = true;\n        }\n      }\n\n      var iterator = iteratorFn.call(iterableChildren);\n      var step;\n      var ii = 0;\n\n      while (!(step = iterator.next()).done) {\n        child = step.value;\n        nextName = nextNamePrefix + getElementKey(child, ii++);\n        subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n      }\n    } else if (type === 'object') {\n      var childrenString = '' + children;\n\n      {\n        {\n          throw Error( \"Objects are not valid as a React child (found: \" + (childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString) + \"). If you meant to render a collection of children, use an array instead.\" );\n        }\n      }\n    }\n  }\n\n  return subtreeCount;\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenmap\n *\n * The provided mapFunction(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n  if (children == null) {\n    return children;\n  }\n\n  var result = [];\n  var count = 0;\n  mapIntoArray(children, result, '', '', function (child) {\n    return func.call(context, child, count++);\n  });\n  return result;\n}\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrencount\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\n\n\nfunction countChildren(children) {\n  var n = 0;\n  mapChildren(children, function () {\n    n++; // Don't return anything\n  });\n  return n;\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenforeach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n  mapChildren(children, function () {\n    forEachFunc.apply(this, arguments); // Don't return anything.\n  }, forEachContext);\n}\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrentoarray\n */\n\n\nfunction toArray(children) {\n  return mapChildren(children, function (child) {\n    return child;\n  }) || [];\n}\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenonly\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\n\n\nfunction onlyChild(children) {\n  if (!isValidElement(children)) {\n    {\n      throw Error( \"React.Children.only expected to receive a single React element child.\" );\n    }\n  }\n\n  return children;\n}\n\nfunction createContext(defaultValue, calculateChangedBits) {\n  if (calculateChangedBits === undefined) {\n    calculateChangedBits = null;\n  } else {\n    {\n      if (calculateChangedBits !== null && typeof calculateChangedBits !== 'function') {\n        error('createContext: Expected the optional second argument to be a ' + 'function. Instead received: %s', calculateChangedBits);\n      }\n    }\n  }\n\n  var context = {\n    $$typeof: REACT_CONTEXT_TYPE,\n    _calculateChangedBits: calculateChangedBits,\n    // As a workaround to support multiple concurrent renderers, we categorize\n    // some renderers as primary and others as secondary. We only expect\n    // there to be two concurrent renderers at most: React Native (primary) and\n    // Fabric (secondary); React DOM (primary) and React ART (secondary).\n    // Secondary renderers store their context values on separate fields.\n    _currentValue: defaultValue,\n    _currentValue2: defaultValue,\n    // Used to track how many concurrent renderers this context currently\n    // supports within in a single renderer. Such as parallel server rendering.\n    _threadCount: 0,\n    // These are circular\n    Provider: null,\n    Consumer: null\n  };\n  context.Provider = {\n    $$typeof: REACT_PROVIDER_TYPE,\n    _context: context\n  };\n  var hasWarnedAboutUsingNestedContextConsumers = false;\n  var hasWarnedAboutUsingConsumerProvider = false;\n  var hasWarnedAboutDisplayNameOnConsumer = false;\n\n  {\n    // A separate object, but proxies back to the original context object for\n    // backwards compatibility. It has a different $$typeof, so we can properly\n    // warn for the incorrect usage of Context as a Consumer.\n    var Consumer = {\n      $$typeof: REACT_CONTEXT_TYPE,\n      _context: context,\n      _calculateChangedBits: context._calculateChangedBits\n    }; // $FlowFixMe: Flow complains about not setting a value, which is intentional here\n\n    Object.defineProperties(Consumer, {\n      Provider: {\n        get: function () {\n          if (!hasWarnedAboutUsingConsumerProvider) {\n            hasWarnedAboutUsingConsumerProvider = true;\n\n            error('Rendering <Context.Consumer.Provider> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Provider> instead?');\n          }\n\n          return context.Provider;\n        },\n        set: function (_Provider) {\n          context.Provider = _Provider;\n        }\n      },\n      _currentValue: {\n        get: function () {\n          return context._currentValue;\n        },\n        set: function (_currentValue) {\n          context._currentValue = _currentValue;\n        }\n      },\n      _currentValue2: {\n        get: function () {\n          return context._currentValue2;\n        },\n        set: function (_currentValue2) {\n          context._currentValue2 = _currentValue2;\n        }\n      },\n      _threadCount: {\n        get: function () {\n          return context._threadCount;\n        },\n        set: function (_threadCount) {\n          context._threadCount = _threadCount;\n        }\n      },\n      Consumer: {\n        get: function () {\n          if (!hasWarnedAboutUsingNestedContextConsumers) {\n            hasWarnedAboutUsingNestedContextConsumers = true;\n\n            error('Rendering <Context.Consumer.Consumer> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Consumer> instead?');\n          }\n\n          return context.Consumer;\n        }\n      },\n      displayName: {\n        get: function () {\n          return context.displayName;\n        },\n        set: function (displayName) {\n          if (!hasWarnedAboutDisplayNameOnConsumer) {\n            warn('Setting `displayName` on Context.Consumer has no effect. ' + \"You should set it directly on the context with Context.displayName = '%s'.\", displayName);\n\n            hasWarnedAboutDisplayNameOnConsumer = true;\n          }\n        }\n      }\n    }); // $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty\n\n    context.Consumer = Consumer;\n  }\n\n  {\n    context._currentRenderer = null;\n    context._currentRenderer2 = null;\n  }\n\n  return context;\n}\n\nvar Uninitialized = -1;\nvar Pending = 0;\nvar Resolved = 1;\nvar Rejected = 2;\n\nfunction lazyInitializer(payload) {\n  if (payload._status === Uninitialized) {\n    var ctor = payload._result;\n    var thenable = ctor(); // Transition to the next state.\n\n    var pending = payload;\n    pending._status = Pending;\n    pending._result = thenable;\n    thenable.then(function (moduleObject) {\n      if (payload._status === Pending) {\n        var defaultExport = moduleObject.default;\n\n        {\n          if (defaultExport === undefined) {\n            error('lazy: Expected the result of a dynamic import() call. ' + 'Instead received: %s\\n\\nYour code should look like: \\n  ' + // Break up imports to avoid accidentally parsing them as dependencies.\n            'const MyComponent = lazy(() => imp' + \"ort('./MyComponent'))\", moduleObject);\n          }\n        } // Transition to the next state.\n\n\n        var resolved = payload;\n        resolved._status = Resolved;\n        resolved._result = defaultExport;\n      }\n    }, function (error) {\n      if (payload._status === Pending) {\n        // Transition to the next state.\n        var rejected = payload;\n        rejected._status = Rejected;\n        rejected._result = error;\n      }\n    });\n  }\n\n  if (payload._status === Resolved) {\n    return payload._result;\n  } else {\n    throw payload._result;\n  }\n}\n\nfunction lazy(ctor) {\n  var payload = {\n    // We use these fields to store the result.\n    _status: -1,\n    _result: ctor\n  };\n  var lazyType = {\n    $$typeof: REACT_LAZY_TYPE,\n    _payload: payload,\n    _init: lazyInitializer\n  };\n\n  {\n    // In production, this would just set it on the object.\n    var defaultProps;\n    var propTypes; // $FlowFixMe\n\n    Object.defineProperties(lazyType, {\n      defaultProps: {\n        configurable: true,\n        get: function () {\n          return defaultProps;\n        },\n        set: function (newDefaultProps) {\n          error('React.lazy(...): It is not supported to assign `defaultProps` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');\n\n          defaultProps = newDefaultProps; // Match production behavior more closely:\n          // $FlowFixMe\n\n          Object.defineProperty(lazyType, 'defaultProps', {\n            enumerable: true\n          });\n        }\n      },\n      propTypes: {\n        configurable: true,\n        get: function () {\n          return propTypes;\n        },\n        set: function (newPropTypes) {\n          error('React.lazy(...): It is not supported to assign `propTypes` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');\n\n          propTypes = newPropTypes; // Match production behavior more closely:\n          // $FlowFixMe\n\n          Object.defineProperty(lazyType, 'propTypes', {\n            enumerable: true\n          });\n        }\n      }\n    });\n  }\n\n  return lazyType;\n}\n\nfunction forwardRef(render) {\n  {\n    if (render != null && render.$$typeof === REACT_MEMO_TYPE) {\n      error('forwardRef requires a render function but received a `memo` ' + 'component. Instead of forwardRef(memo(...)), use ' + 'memo(forwardRef(...)).');\n    } else if (typeof render !== 'function') {\n      error('forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render);\n    } else {\n      if (render.length !== 0 && render.length !== 2) {\n        error('forwardRef render functions accept exactly two parameters: props and ref. %s', render.length === 1 ? 'Did you forget to use the ref parameter?' : 'Any additional parameter will be undefined.');\n      }\n    }\n\n    if (render != null) {\n      if (render.defaultProps != null || render.propTypes != null) {\n        error('forwardRef render functions do not support propTypes or defaultProps. ' + 'Did you accidentally pass a React component?');\n      }\n    }\n  }\n\n  var elementType = {\n    $$typeof: REACT_FORWARD_REF_TYPE,\n    render: render\n  };\n\n  {\n    var ownName;\n    Object.defineProperty(elementType, 'displayName', {\n      enumerable: false,\n      configurable: true,\n      get: function () {\n        return ownName;\n      },\n      set: function (name) {\n        ownName = name;\n\n        if (render.displayName == null) {\n          render.displayName = name;\n        }\n      }\n    });\n  }\n\n  return elementType;\n}\n\n// Filter certain DOM attributes (e.g. src, href) if their values are empty strings.\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\n\nfunction isValidElementType(type) {\n  if (typeof type === 'string' || typeof type === 'function') {\n    return true;\n  } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n  if (type === exports.Fragment || type === exports.Profiler || type === REACT_DEBUG_TRACING_MODE_TYPE || type === exports.StrictMode || type === exports.Suspense || type === REACT_SUSPENSE_LIST_TYPE || type === REACT_LEGACY_HIDDEN_TYPE || enableScopeAPI ) {\n    return true;\n  }\n\n  if (typeof type === 'object' && type !== null) {\n    if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_BLOCK_TYPE || type[0] === REACT_SERVER_BLOCK_TYPE) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction memo(type, compare) {\n  {\n    if (!isValidElementType(type)) {\n      error('memo: The first argument must be a component. Instead ' + 'received: %s', type === null ? 'null' : typeof type);\n    }\n  }\n\n  var elementType = {\n    $$typeof: REACT_MEMO_TYPE,\n    type: type,\n    compare: compare === undefined ? null : compare\n  };\n\n  {\n    var ownName;\n    Object.defineProperty(elementType, 'displayName', {\n      enumerable: false,\n      configurable: true,\n      get: function () {\n        return ownName;\n      },\n      set: function (name) {\n        ownName = name;\n\n        if (type.displayName == null) {\n          type.displayName = name;\n        }\n      }\n    });\n  }\n\n  return elementType;\n}\n\nfunction resolveDispatcher() {\n  var dispatcher = ReactCurrentDispatcher.current;\n\n  if (!(dispatcher !== null)) {\n    {\n      throw Error( \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.\" );\n    }\n  }\n\n  return dispatcher;\n}\n\nfunction useContext(Context, unstable_observedBits) {\n  var dispatcher = resolveDispatcher();\n\n  {\n    if (unstable_observedBits !== undefined) {\n      error('useContext() second argument is reserved for future ' + 'use in React. Passing it is not supported. ' + 'You passed: %s.%s', unstable_observedBits, typeof unstable_observedBits === 'number' && Array.isArray(arguments[2]) ? '\\n\\nDid you call array.map(useContext)? ' + 'Calling Hooks inside a loop is not supported. ' + 'Learn more at https://reactjs.org/link/rules-of-hooks' : '');\n    } // TODO: add a more generic warning for invalid values.\n\n\n    if (Context._context !== undefined) {\n      var realContext = Context._context; // Don't deduplicate because this legitimately causes bugs\n      // and nobody should be using this in existing code.\n\n      if (realContext.Consumer === Context) {\n        error('Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be ' + 'removed in a future major release. Did you mean to call useContext(Context) instead?');\n      } else if (realContext.Provider === Context) {\n        error('Calling useContext(Context.Provider) is not supported. ' + 'Did you mean to call useContext(Context) instead?');\n      }\n    }\n  }\n\n  return dispatcher.useContext(Context, unstable_observedBits);\n}\nfunction useState(initialState) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useState(initialState);\n}\nfunction useReducer(reducer, initialArg, init) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useReducer(reducer, initialArg, init);\n}\nfunction useRef(initialValue) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useRef(initialValue);\n}\nfunction useEffect(create, deps) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useEffect(create, deps);\n}\nfunction useLayoutEffect(create, deps) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useLayoutEffect(create, deps);\n}\nfunction useCallback(callback, deps) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useCallback(callback, deps);\n}\nfunction useMemo(create, deps) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useMemo(create, deps);\n}\nfunction useImperativeHandle(ref, create, deps) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useImperativeHandle(ref, create, deps);\n}\nfunction useDebugValue(value, formatterFn) {\n  {\n    var dispatcher = resolveDispatcher();\n    return dispatcher.useDebugValue(value, formatterFn);\n  }\n}\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n  {\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      prevLog = console.log;\n      prevInfo = console.info;\n      prevWarn = console.warn;\n      prevError = console.error;\n      prevGroup = console.group;\n      prevGroupCollapsed = console.groupCollapsed;\n      prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n      var props = {\n        configurable: true,\n        enumerable: true,\n        value: disabledLog,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        info: props,\n        log: props,\n        warn: props,\n        error: props,\n        group: props,\n        groupCollapsed: props,\n        groupEnd: props\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    disabledDepth++;\n  }\n}\nfunction reenableLogs() {\n  {\n    disabledDepth--;\n\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      var props = {\n        configurable: true,\n        enumerable: true,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        log: _assign({}, props, {\n          value: prevLog\n        }),\n        info: _assign({}, props, {\n          value: prevInfo\n        }),\n        warn: _assign({}, props, {\n          value: prevWarn\n        }),\n        error: _assign({}, props, {\n          value: prevError\n        }),\n        group: _assign({}, props, {\n          value: prevGroup\n        }),\n        groupCollapsed: _assign({}, props, {\n          value: prevGroupCollapsed\n        }),\n        groupEnd: _assign({}, props, {\n          value: prevGroupEnd\n        })\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    if (disabledDepth < 0) {\n      error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n    }\n  }\n}\n\nvar ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n  {\n    if (prefix === undefined) {\n      // Extract the VM specific prefix used by each line.\n      try {\n        throw Error();\n      } catch (x) {\n        var match = x.stack.trim().match(/\\n( *(at )?)/);\n        prefix = match && match[1] || '';\n      }\n    } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n    return '\\n' + prefix + name;\n  }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n  var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n  componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n  // If something asked for a stack inside a fake render, it should get ignored.\n  if (!fn || reentry) {\n    return '';\n  }\n\n  {\n    var frame = componentFrameCache.get(fn);\n\n    if (frame !== undefined) {\n      return frame;\n    }\n  }\n\n  var control;\n  reentry = true;\n  var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n  Error.prepareStackTrace = undefined;\n  var previousDispatcher;\n\n  {\n    previousDispatcher = ReactCurrentDispatcher$1.current; // Set the dispatcher in DEV because this might be call in the render function\n    // for warnings.\n\n    ReactCurrentDispatcher$1.current = null;\n    disableLogs();\n  }\n\n  try {\n    // This should throw.\n    if (construct) {\n      // Something should be setting the props in the constructor.\n      var Fake = function () {\n        throw Error();\n      }; // $FlowFixMe\n\n\n      Object.defineProperty(Fake.prototype, 'props', {\n        set: function () {\n          // We use a throwing setter instead of frozen or non-writable props\n          // because that won't throw in a non-strict mode function.\n          throw Error();\n        }\n      });\n\n      if (typeof Reflect === 'object' && Reflect.construct) {\n        // We construct a different control for this case to include any extra\n        // frames added by the construct call.\n        try {\n          Reflect.construct(Fake, []);\n        } catch (x) {\n          control = x;\n        }\n\n        Reflect.construct(fn, [], Fake);\n      } else {\n        try {\n          Fake.call();\n        } catch (x) {\n          control = x;\n        }\n\n        fn.call(Fake.prototype);\n      }\n    } else {\n      try {\n        throw Error();\n      } catch (x) {\n        control = x;\n      }\n\n      fn();\n    }\n  } catch (sample) {\n    // This is inlined manually because closure doesn't do it for us.\n    if (sample && control && typeof sample.stack === 'string') {\n      // This extracts the first frame from the sample that isn't also in the control.\n      // Skipping one frame that we assume is the frame that calls the two.\n      var sampleLines = sample.stack.split('\\n');\n      var controlLines = control.stack.split('\\n');\n      var s = sampleLines.length - 1;\n      var c = controlLines.length - 1;\n\n      while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n        // We expect at least one stack frame to be shared.\n        // Typically this will be the root most one. However, stack frames may be\n        // cut off due to maximum stack limits. In this case, one maybe cut off\n        // earlier than the other. We assume that the sample is longer or the same\n        // and there for cut off earlier. So we should find the root most frame in\n        // the sample somewhere in the control.\n        c--;\n      }\n\n      for (; s >= 1 && c >= 0; s--, c--) {\n        // Next we find the first one that isn't the same which should be the\n        // frame that called our sample function and the control.\n        if (sampleLines[s] !== controlLines[c]) {\n          // In V8, the first line is describing the message but other VMs don't.\n          // If we're about to return the first line, and the control is also on the same\n          // line, that's a pretty good indicator that our sample threw at same line as\n          // the control. I.e. before we entered the sample frame. So we ignore this result.\n          // This can happen if you passed a class to function component, or non-function.\n          if (s !== 1 || c !== 1) {\n            do {\n              s--;\n              c--; // We may still have similar intermediate frames from the construct call.\n              // The next one that isn't the same should be our match though.\n\n              if (c < 0 || sampleLines[s] !== controlLines[c]) {\n                // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n                var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at ');\n\n                {\n                  if (typeof fn === 'function') {\n                    componentFrameCache.set(fn, _frame);\n                  }\n                } // Return the line we found.\n\n\n                return _frame;\n              }\n            } while (s >= 1 && c >= 0);\n          }\n\n          break;\n        }\n      }\n    }\n  } finally {\n    reentry = false;\n\n    {\n      ReactCurrentDispatcher$1.current = previousDispatcher;\n      reenableLogs();\n    }\n\n    Error.prepareStackTrace = previousPrepareStackTrace;\n  } // Fallback to just using the name if we couldn't make it throw.\n\n\n  var name = fn ? fn.displayName || fn.name : '';\n  var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n  {\n    if (typeof fn === 'function') {\n      componentFrameCache.set(fn, syntheticFrame);\n    }\n  }\n\n  return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n  {\n    return describeNativeComponentFrame(fn, false);\n  }\n}\n\nfunction shouldConstruct(Component) {\n  var prototype = Component.prototype;\n  return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n  if (type == null) {\n    return '';\n  }\n\n  if (typeof type === 'function') {\n    {\n      return describeNativeComponentFrame(type, shouldConstruct(type));\n    }\n  }\n\n  if (typeof type === 'string') {\n    return describeBuiltInComponentFrame(type);\n  }\n\n  switch (type) {\n    case exports.Suspense:\n      return describeBuiltInComponentFrame('Suspense');\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return describeBuiltInComponentFrame('SuspenseList');\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_FORWARD_REF_TYPE:\n        return describeFunctionComponentFrame(type.render);\n\n      case REACT_MEMO_TYPE:\n        // Memo may contain any component type so we recursively resolve it.\n        return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n      case REACT_BLOCK_TYPE:\n        return describeFunctionComponentFrame(type._render);\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            // Lazy may contain any component type so we recursively resolve it.\n            return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n          } catch (x) {}\n        }\n    }\n  }\n\n  return '';\n}\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n  {\n    if (element) {\n      var owner = element._owner;\n      var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n      ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n    } else {\n      ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n    }\n  }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n  {\n    // $FlowFixMe This is okay but Flow doesn't know it.\n    var has = Function.call.bind(Object.prototype.hasOwnProperty);\n\n    for (var typeSpecName in typeSpecs) {\n      if (has(typeSpecs, typeSpecName)) {\n        var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n        // fail the render phase where it didn't fail before. So we log it.\n        // After these have been cleaned up, we'll let them throw.\n\n        try {\n          // This is intentionally an invariant that gets caught. It's the same\n          // behavior as without this statement except with a better message.\n          if (typeof typeSpecs[typeSpecName] !== 'function') {\n            var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n            err.name = 'Invariant Violation';\n            throw err;\n          }\n\n          error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n        } catch (ex) {\n          error$1 = ex;\n        }\n\n        if (error$1 && !(error$1 instanceof Error)) {\n          setCurrentlyValidatingElement(element);\n\n          error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n          setCurrentlyValidatingElement(null);\n        }\n\n        if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n          // Only monitor this failure once because there tends to be a lot of the\n          // same error.\n          loggedTypeFailures[error$1.message] = true;\n          setCurrentlyValidatingElement(element);\n\n          error('Failed %s type: %s', location, error$1.message);\n\n          setCurrentlyValidatingElement(null);\n        }\n      }\n    }\n  }\n}\n\nfunction setCurrentlyValidatingElement$1(element) {\n  {\n    if (element) {\n      var owner = element._owner;\n      var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n      setExtraStackFrame(stack);\n    } else {\n      setExtraStackFrame(null);\n    }\n  }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n  propTypesMisspellWarningShown = false;\n}\n\nfunction getDeclarationErrorAddendum() {\n  if (ReactCurrentOwner.current) {\n    var name = getComponentName(ReactCurrentOwner.current.type);\n\n    if (name) {\n      return '\\n\\nCheck the render method of `' + name + '`.';\n    }\n  }\n\n  return '';\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n  if (source !== undefined) {\n    var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n    var lineNumber = source.lineNumber;\n    return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n  }\n\n  return '';\n}\n\nfunction getSourceInfoErrorAddendumForProps(elementProps) {\n  if (elementProps !== null && elementProps !== undefined) {\n    return getSourceInfoErrorAddendum(elementProps.__source);\n  }\n\n  return '';\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n  var info = getDeclarationErrorAddendum();\n\n  if (!info) {\n    var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n    if (parentName) {\n      info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n    }\n  }\n\n  return info;\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n  if (!element._store || element._store.validated || element.key != null) {\n    return;\n  }\n\n  element._store.validated = true;\n  var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n  if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n    return;\n  }\n\n  ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n  // property, it may be the creator of the child that's responsible for\n  // assigning it a key.\n\n  var childOwner = '';\n\n  if (element && element._owner && element._owner !== ReactCurrentOwner.current) {\n    // Give the component that originally created this child.\n    childOwner = \" It was passed a child from \" + getComponentName(element._owner.type) + \".\";\n  }\n\n  {\n    setCurrentlyValidatingElement$1(element);\n\n    error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n    setCurrentlyValidatingElement$1(null);\n  }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n  if (typeof node !== 'object') {\n    return;\n  }\n\n  if (Array.isArray(node)) {\n    for (var i = 0; i < node.length; i++) {\n      var child = node[i];\n\n      if (isValidElement(child)) {\n        validateExplicitKey(child, parentType);\n      }\n    }\n  } else if (isValidElement(node)) {\n    // This element was passed in a valid location.\n    if (node._store) {\n      node._store.validated = true;\n    }\n  } else if (node) {\n    var iteratorFn = getIteratorFn(node);\n\n    if (typeof iteratorFn === 'function') {\n      // Entry iterators used to provide implicit keys,\n      // but now we print a separate warning for them later.\n      if (iteratorFn !== node.entries) {\n        var iterator = iteratorFn.call(node);\n        var step;\n\n        while (!(step = iterator.next()).done) {\n          if (isValidElement(step.value)) {\n            validateExplicitKey(step.value, parentType);\n          }\n        }\n      }\n    }\n  }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n  {\n    var type = element.type;\n\n    if (type === null || type === undefined || typeof type === 'string') {\n      return;\n    }\n\n    var propTypes;\n\n    if (typeof type === 'function') {\n      propTypes = type.propTypes;\n    } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n    // Inner props are checked in the reconciler.\n    type.$$typeof === REACT_MEMO_TYPE)) {\n      propTypes = type.propTypes;\n    } else {\n      return;\n    }\n\n    if (propTypes) {\n      // Intentionally inside to avoid triggering lazy initializers:\n      var name = getComponentName(type);\n      checkPropTypes(propTypes, element.props, 'prop', name, element);\n    } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n      propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n      var _name = getComponentName(type);\n\n      error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n    }\n\n    if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n      error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n    }\n  }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n  {\n    var keys = Object.keys(fragment.props);\n\n    for (var i = 0; i < keys.length; i++) {\n      var key = keys[i];\n\n      if (key !== 'children' && key !== 'key') {\n        setCurrentlyValidatingElement$1(fragment);\n\n        error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n        setCurrentlyValidatingElement$1(null);\n        break;\n      }\n    }\n\n    if (fragment.ref !== null) {\n      setCurrentlyValidatingElement$1(fragment);\n\n      error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n      setCurrentlyValidatingElement$1(null);\n    }\n  }\n}\nfunction createElementWithValidation(type, props, children) {\n  var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n  // succeed and there will likely be errors in render.\n\n  if (!validType) {\n    var info = '';\n\n    if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n      info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n    }\n\n    var sourceInfo = getSourceInfoErrorAddendumForProps(props);\n\n    if (sourceInfo) {\n      info += sourceInfo;\n    } else {\n      info += getDeclarationErrorAddendum();\n    }\n\n    var typeString;\n\n    if (type === null) {\n      typeString = 'null';\n    } else if (Array.isArray(type)) {\n      typeString = 'array';\n    } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n      typeString = \"<\" + (getComponentName(type.type) || 'Unknown') + \" />\";\n      info = ' Did you accidentally export a JSX literal instead of a component?';\n    } else {\n      typeString = typeof type;\n    }\n\n    {\n      error('React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n    }\n  }\n\n  var element = createElement.apply(this, arguments); // The result can be nullish if a mock or a custom function is used.\n  // TODO: Drop this when these are no longer allowed as the type argument.\n\n  if (element == null) {\n    return element;\n  } // Skip key warning if the type isn't valid since our key validation logic\n  // doesn't expect a non-string/function type and can throw confusing errors.\n  // We don't want exception behavior to differ between dev and prod.\n  // (Rendering will throw with a helpful message and as soon as the type is\n  // fixed, the key warnings will appear.)\n\n\n  if (validType) {\n    for (var i = 2; i < arguments.length; i++) {\n      validateChildKeys(arguments[i], type);\n    }\n  }\n\n  if (type === exports.Fragment) {\n    validateFragmentProps(element);\n  } else {\n    validatePropTypes(element);\n  }\n\n  return element;\n}\nvar didWarnAboutDeprecatedCreateFactory = false;\nfunction createFactoryWithValidation(type) {\n  var validatedFactory = createElementWithValidation.bind(null, type);\n  validatedFactory.type = type;\n\n  {\n    if (!didWarnAboutDeprecatedCreateFactory) {\n      didWarnAboutDeprecatedCreateFactory = true;\n\n      warn('React.createFactory() is deprecated and will be removed in ' + 'a future major release. Consider using JSX ' + 'or use React.createElement() directly instead.');\n    } // Legacy hook: remove it\n\n\n    Object.defineProperty(validatedFactory, 'type', {\n      enumerable: false,\n      get: function () {\n        warn('Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.');\n\n        Object.defineProperty(this, 'type', {\n          value: type\n        });\n        return type;\n      }\n    });\n  }\n\n  return validatedFactory;\n}\nfunction cloneElementWithValidation(element, props, children) {\n  var newElement = cloneElement.apply(this, arguments);\n\n  for (var i = 2; i < arguments.length; i++) {\n    validateChildKeys(arguments[i], newElement.type);\n  }\n\n  validatePropTypes(newElement);\n  return newElement;\n}\n\n{\n\n  try {\n    var frozenObject = Object.freeze({});\n    /* eslint-disable no-new */\n\n    new Map([[frozenObject, null]]);\n    new Set([frozenObject]);\n    /* eslint-enable no-new */\n  } catch (e) {\n  }\n}\n\nvar createElement$1 =  createElementWithValidation ;\nvar cloneElement$1 =  cloneElementWithValidation ;\nvar createFactory =  createFactoryWithValidation ;\nvar Children = {\n  map: mapChildren,\n  forEach: forEachChildren,\n  count: countChildren,\n  toArray: toArray,\n  only: onlyChild\n};\n\nexports.Children = Children;\nexports.Component = Component;\nexports.PureComponent = PureComponent;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals;\nexports.cloneElement = cloneElement$1;\nexports.createContext = createContext;\nexports.createElement = createElement$1;\nexports.createFactory = createFactory;\nexports.createRef = createRef;\nexports.forwardRef = forwardRef;\nexports.isValidElement = isValidElement;\nexports.lazy = lazy;\nexports.memo = memo;\nexports.useCallback = useCallback;\nexports.useContext = useContext;\nexports.useDebugValue = useDebugValue;\nexports.useEffect = useEffect;\nexports.useImperativeHandle = useImperativeHandle;\nexports.useLayoutEffect = useLayoutEffect;\nexports.useMemo = useMemo;\nexports.useReducer = useReducer;\nexports.useRef = useRef;\nexports.useState = useState;\nexports.version = ReactVersion;\n  })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.min.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","/** @jsx React.createElement */\n/** @jsxFrag React.Fragment */\nimport { Component, cloneElement, Fragment, Children } from 'react';\n\nclass Navs extends Component {\n\n  constructor(props) {\n    super(props);\n\n    this.firstNavValue = this.firstNavValue.bind(this);\n    this.addChildProps = this.addChildProps.bind(this);\n    this.getContent = this.getContent.bind(this);\n\n    const tabsetId = this.newId();\n    const selected = props.selected ? props.selected : this.firstNavValue(props.children);\n    const children = this.addChildProps(props.children, tabsetId, selected);\n    const content = this.getContent(children);\n\n    this.state = {tabsetId, selected, children, content};\n  }\n\n  render() {\n    const props = this.props;\n    const ulClass = `nav nav-${props.type} ${props.id ? 'shiny-tab-input' : ''}`;\n    return <Fragment>\n        <ul id={props.id} className={ulClass} role='tablist' data-tabsetid={this.state.tabsetId}>\n          {this.state.children}\n        </ul>\n        <div className='tab-content' data-tabsetid={this.state.tabsetId}>\n          {props.header}\n          {this.state.content}\n          {props.footer}\n        </div>\n    </Fragment>\n  }\n\n  firstNavValue(navs) {\n    for (var i = 0; i < navs.length; i++) {\n      let nav = navs[i];\n      if (nav.type.name === 'Nav') {\n        return nav.props.value;\n      }\n      if (nav.type.name === 'NavMenu') {\n        this.firstNavValue(nav);\n      }\n    }\n  }\n\n  getContent(navs) {\n    const result = [];\n    Children.forEach(navs, x => {\n      if (x.type.name === 'NavMenu') {\n        result.push(this.getContent(x.props.children))\n      }\n      if (x.type.name === 'Nav') {\n        const className = `tab-pane ${x.props.selected === x.props.value ? 'active' : ''}`;\n        result.push(\n          <div id={x.props.id} role='tabpanel' className={className} key={x.props.id}>\n            {x.props.children}\n          </div>\n        );\n      }\n    })\n    return result;\n  }\n\n  addChildProps(children, tabsetId, selected) {\n    var self = this;\n    return Children.map(children, (x, idx) => {\n      if (x.type.name === 'NavMenu') {\n        const tabsetId = self.newId();\n        const children_ = self.addChildProps(x.props.children, tabsetId, selected);\n        return cloneElement(x, {tabsetId, selected}, children_);\n      }\n      const id = `tab-${tabsetId}-${idx + 1}`;\n      return cloneElement(x, {id, selected});\n    });\n  }\n\n  newId() {\n    return Math.floor(1000 + Math.random() * 9000);\n  }\n}\n\nclass NavsCard extends Navs {\n  render() {\n    const props = this.props;\n    const ulClass = `nav nav-${props.type} card-header-${props.type} ${props.id ? 'shiny-tab-input' : ''}`;\n\n    const ulTag =\n      <ul id={props.id} className={ulClass} role='tablist' data-tabsetid={this.state.tabsetId}>\n        {this.state.children}\n      </ul>\n\n    const divTag =\n      <div className='tab-content' data-tabsetid={this.state.tabsetId}>\n        {props.header}\n        {this.state.content}\n        {props.footer}\n      </div>\n\n    const below = props.placement === \"below\";\n\n    return <div className=\"card\">\n        { below ? null : <div className=\"card-header\"> {ulTag} </div>}\n        <div className=\"card-body\"> {divTag} </div>\n        { below ? <div className=\"card-footer\"> {ulTag} </div> : null}\n    </div>\n  }\n}\n\nclass NavsBar extends Navs {\n  render() {\n    const props = this.props;\n\n    const collapseId = `#navbar-collapse-${this.newId()}`;\n    const collapseBtn =\n      <button type=\"button\" className=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-bs-toggle=\"collapse\" data-target={collapseId} data-bs-target={collapseId}>\n        <span className=\"sr-only\">Toggle navigation</span>\n        <span className=\"icon-bar\"></span>\n        <span className=\"icon-bar\"></span>\n        <span className=\"icon-bar\"></span>\n      </button>\n\n    const navbarHeader =\n      <div className=\"navbar-header\">\n        { props.collapse ? collapseBtn : null }\n        <span className=\"navbar-brand\">{props.title}</span>\n      </div>\n\n    const ulTag =\n      <ul id={props.id} className={`nav navbar-nav ${props.id ? 'shiny-tab-input' : ''}`} role='tablist' data-tabsetid={this.state.tabsetId}>\n      {this.state.children}\n    </ul>\n\n    const containerDiv =\n      <div className={`container${props.fluid ? '-fluid' : ''}`}>\n        {navbarHeader}\n        {collapseId ? <div className=\"collapse navbar-collapse\" id={collapseId}>{ulTag}</div> : ulTag}\n      </div>;\n\n    const navbarClass = `navbar navbar-default ${props.inverse ? 'navbar-inverse' : ''} ${props.position ? ('navbar-' + props.position) : '' }`;\n\n    // TODO: re-implement this...\n    // https://github.com/rstudio/bslib/blob/d77f5ce61003307e7a6dc3c211e7ac6ee6896582/R/navs-legacy.R#L225\n    return <Fragment>\n      <nav className={navbarClass} role=\"navigation\" ref={(el) => el && props.bg && el.style.setProperty(\"background-color\", props.bg, \"important\")}>\n          {containerDiv}\n        </nav>\n        <div className='tab-content' data-tabsetid={this.state.tabsetId}>\n          {props.header}\n          {this.state.content}\n          {props.footer}\n        </div>\n      </Fragment>\n  }\n}\n\n\nfunction Nav(props) {\n  return (\n    <li key={props.id} className={props.selected === props.value ? 'active' : ''}>\n      <a href={'#'+props.id} role='tab' data-toggle='tab' data-value={props.value}>\n       {props.title}\n      </a>\n    </li>\n  )\n}\n\nfunction NavSpacer(props) {\n  return <div className=\"bslib-nav-spacer\"></div>\n}\n\nfunction NavItem(props) {\n  return <li className=\"form-inline\" key={props.id}>{props.children}</li>\n}\n\nfunction NavMenu(props) {\n  const toggleClass = `dropdown-toggle${props.selected === props.value ? ' active' : ''}`\n  const ulClass = `dropdown-menu${props.align === \"right\" ? ' dropdown-menu-right' : ''}`;\n  return (\n    <li className=\"dropdown\" key={props.tabsetId}>\n      <a className={toggleClass} data-toggle=\"dropdown\" href=\"#\" role=\"button\" aria-expanded=\"false\">\n        {props.title}\n      </a>\n      <ul className={ulClass} data-tabsetid={props.tabsetId}>\n        {props.children}\n      </ul>\n    </li>\n  )\n}\n\nexport { Navs, NavsCard, NavsBar, Nav, NavSpacer, NavItem, NavMenu }\n"],"names":["getOwnPropertySymbols","Object","hasOwnProperty","prototype","propIsEnumerable","propertyIsEnumerable","toObject","val","undefined","TypeError","shouldUseNative","assign","test1","String","getOwnPropertyNames","test2","i","fromCharCode","order2","map","n","join","test3","split","forEach","letter","keys","err","module","target","source","from","to","symbols","s","arguments","length","key","call","_assign","require","ReactVersion","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","exports","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_BLOCK_TYPE","REACT_SERVER_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_DEBUG_TRACING_MODE_TYPE","REACT_LEGACY_HIDDEN_TYPE","Symbol","for","symbolFor","REACT_SCOPE_TYPE","REACT_OPAQUE_ID_TYPE","REACT_OFFSCREEN_TYPE","MAYBE_ITERATOR_SYMBOL","iterator","FAUX_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","maybeIterator","ReactCurrentDispatcher","current","ReactCurrentBatchConfig","transition","ReactCurrentOwner","ReactDebugCurrentFrame","currentExtraStackFrame","setExtraStackFrame","stack","getCurrentStack","getStackAddendum","impl","IsSomeRendererActing","ReactSharedInternals","warn","format","_len","args","Array","_key","printWarning","error","_len2","_key2","level","concat","argsWithFormat","item","unshift","Function","apply","console","didWarnStateUpdateForUnmountedComponent","warnNoop","publicInstance","callerName","_constructor","constructor","componentName","displayName","name","warningKey","ReactNoopUpdateQueue","isMounted","enqueueForceUpdate","callback","enqueueReplaceState","completeState","enqueueSetState","partialState","emptyObject","freeze","Component","props","context","updater","refs","isReactComponent","setState","Error","forceUpdate","deprecatedAPIs","replaceState","defineDeprecationWarning","methodName","info","defineProperty","get","fnName","ComponentDummy","PureComponent","pureComponentPrototype","isPureReactComponent","createRef","refObject","seal","getWrappedName","outerType","innerType","wrapperName","functionName","getContextName","type","getComponentName","tag","Fragment","Profiler","StrictMode","Suspense","$$typeof","provider","_context","render","_render","lazyComponent","payload","_payload","init","_init","x","RESERVED_PROPS","ref","__self","__source","specialPropKeyWarningShown","specialPropRefWarningShown","didWarnAboutStringRefs","hasValidRef","config","getter","getOwnPropertyDescriptor","isReactWarning","hasValidKey","defineKeyPropWarningGetter","warnAboutAccessingKey","configurable","defineRefPropWarningGetter","warnAboutAccessingRef","warnIfStringRefCannotBeAutoConverted","stateNode","ReactElement","self","owner","element","_owner","_store","enumerable","writable","value","createElement","children","propName","childrenLength","childArray","defaultProps","cloneAndReplaceKey","oldElement","newKey","newElement","_self","_source","cloneElement","isValidElement","object","SEPARATOR","SUBSEPARATOR","escape","escapeRegex","escaperLookup","escapedString","replace","match","didWarnAboutMaps","userProvidedKeyEscapeRegex","escapeUserProvidedKey","text","getElementKey","index","toString","mapIntoArray","array","escapedPrefix","nameSoFar","invokeCallback","_child","mappedChild","childKey","isArray","escapedChildKey","c","push","child","nextName","subtreeCount","nextNamePrefix","iteratorFn","iterableChildren","entries","step","ii","next","done","childrenString","mapChildren","func","result","count","countChildren","forEachChildren","forEachFunc","forEachContext","toArray","onlyChild","createContext","defaultValue","calculateChangedBits","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","Provider","Consumer","hasWarnedAboutUsingNestedContextConsumers","hasWarnedAboutUsingConsumerProvider","hasWarnedAboutDisplayNameOnConsumer","defineProperties","set","_Provider","_currentRenderer","_currentRenderer2","Uninitialized","Pending","Resolved","Rejected","lazyInitializer","_status","ctor","_result","thenable","pending","then","moduleObject","defaultExport","default","resolved","rejected","lazy","lazyType","propTypes","newDefaultProps","newPropTypes","forwardRef","elementType","ownName","enableScopeAPI","isValidElementType","memo","compare","resolveDispatcher","dispatcher","useContext","Context","unstable_observedBits","realContext","useState","initialState","useReducer","reducer","initialArg","useRef","initialValue","useEffect","create","deps","useLayoutEffect","useCallback","useMemo","useImperativeHandle","useDebugValue","formatterFn","disabledDepth","prevLog","prevInfo","prevWarn","prevError","prevGroup","prevGroupCollapsed","prevGroupEnd","disabledLog","__reactDisabledLog","disableLogs","log","group","groupCollapsed","groupEnd","reenableLogs","ReactCurrentDispatcher$1","prefix","describeBuiltInComponentFrame","ownerFn","trim","reentry","componentFrameCache","PossiblyWeakMap","WeakMap","Map","describeNativeComponentFrame","fn","construct","frame","control","previousPrepareStackTrace","prepareStackTrace","previousDispatcher","Fake","Reflect","sample","sampleLines","controlLines","_frame","syntheticFrame","describeFunctionComponentFrame","shouldConstruct","describeUnknownElementTypeFrameInDEV","loggedTypeFailures","ReactDebugCurrentFrame$1","setCurrentlyValidatingElement","checkPropTypes","typeSpecs","values","location","has","bind","typeSpecName","error$1","ex","message","setCurrentlyValidatingElement$1","propTypesMisspellWarningShown","getDeclarationErrorAddendum","getSourceInfoErrorAddendum","fileName","lineNumber","getSourceInfoErrorAddendumForProps","elementProps","ownerHasKeyUseWarning","getCurrentComponentErrorInfo","parentType","parentName","validateExplicitKey","validated","currentComponentErrorInfo","childOwner","validateChildKeys","node","validatePropTypes","PropTypes","_name","getDefaultProps","isReactClassApproved","validateFragmentProps","fragment","createElementWithValidation","validType","sourceInfo","typeString","didWarnAboutDeprecatedCreateFactory","createFactoryWithValidation","validatedFactory","cloneElementWithValidation","frozenObject","Set","e","createElement$1","cloneElement$1","createFactory","Children","only","Navs","firstNavValue","addChildProps","getContent","tabsetId","newId","selected","content","state","ulClass","id","header","footer","navs","nav","className","idx","children_","Math","floor","random","NavsCard","ulTag","divTag","below","placement","NavsBar","collapseId","collapseBtn","navbarHeader","collapse","title","containerDiv","fluid","navbarClass","inverse","position","el","bg","style","setProperty","Nav","NavSpacer","NavItem","NavMenu","toggleClass","align"],"mappings":"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"}
shiny/www/shared/bslib/dist/navs.min.js METASEP
(function (global, factory) {
	typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
	typeof define === 'function' && define.amd ? define(['exports'], factory) :
	(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.bslib = {}));
}(this, (function (exports) { 'use strict';

	var react = {exports: {}};

	var react_development = {};

	/*
	object-assign
	(c) Sindre Sorhus
	@license MIT
	*/
	/* eslint-disable no-unused-vars */

	var getOwnPropertySymbols = Object.getOwnPropertySymbols;
	var hasOwnProperty = Object.prototype.hasOwnProperty;
	var propIsEnumerable = Object.prototype.propertyIsEnumerable;

	function toObject(val) {
	  if (val === null || val === undefined) {
	    throw new TypeError('Object.assign cannot be called with null or undefined');
	  }

	  return Object(val);
	}

	function shouldUseNative() {
	  try {
	    if (!Object.assign) {
	      return false;
	    } // Detect buggy property enumeration order in older V8 versions.
	    // https://bugs.chromium.org/p/v8/issues/detail?id=4118


	    var test1 = new String('abc'); // eslint-disable-line no-new-wrappers

	    test1[5] = 'de';

	    if (Object.getOwnPropertyNames(test1)[0] === '5') {
	      return false;
	    } // https://bugs.chromium.org/p/v8/issues/detail?id=3056


	    var test2 = {};

	    for (var i = 0; i < 10; i++) {
	      test2['_' + String.fromCharCode(i)] = i;
	    }

	    var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
	      return test2[n];
	    });

	    if (order2.join('') !== '0123456789') {
	      return false;
	    } // https://bugs.chromium.org/p/v8/issues/detail?id=3056


	    var test3 = {};
	    'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
	      test3[letter] = letter;
	    });

	    if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') {
	      return false;
	    }

	    return true;
	  } catch (err) {
	    // We don't expect any of the above to throw, but better to be safe.
	    return false;
	  }
	}

	var objectAssign = shouldUseNative() ? Object.assign : function (target, source) {
	  var from;
	  var to = toObject(target);
	  var symbols;

	  for (var s = 1; s < arguments.length; s++) {
	    from = Object(arguments[s]);

	    for (var key in from) {
	      if (hasOwnProperty.call(from, key)) {
	        to[key] = from[key];
	      }
	    }

	    if (getOwnPropertySymbols) {
	      symbols = getOwnPropertySymbols(from);

	      for (var i = 0; i < symbols.length; i++) {
	        if (propIsEnumerable.call(from, symbols[i])) {
	          to[symbols[i]] = from[symbols[i]];
	        }
	      }
	    }
	  }

	  return to;
	};

	/** @license React v17.0.2
	 * react.development.js
	 *
	 * Copyright (c) Facebook, Inc. and its affiliates.
	 *
	 * This source code is licensed under the MIT license found in the
	 * LICENSE file in the root directory of this source tree.
	 */

	(function (exports) {

	{
	  (function () {

	    var _assign = objectAssign; // TODO: this is special because it gets imported during build.


	    var ReactVersion = '17.0.2'; // ATTENTION
	    // When adding new symbols to this file,
	    // Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'
	    // The Symbol used to tag the ReactElement-like types. If there is no native Symbol
	    // nor polyfill, then a plain number is used for performance.

	    var REACT_ELEMENT_TYPE = 0xeac7;
	    var REACT_PORTAL_TYPE = 0xeaca;
	    exports.Fragment = 0xeacb;
	    exports.StrictMode = 0xeacc;
	    exports.Profiler = 0xead2;
	    var REACT_PROVIDER_TYPE = 0xeacd;
	    var REACT_CONTEXT_TYPE = 0xeace;
	    var REACT_FORWARD_REF_TYPE = 0xead0;
	    exports.Suspense = 0xead1;
	    var REACT_SUSPENSE_LIST_TYPE = 0xead8;
	    var REACT_MEMO_TYPE = 0xead3;
	    var REACT_LAZY_TYPE = 0xead4;
	    var REACT_BLOCK_TYPE = 0xead9;
	    var REACT_SERVER_BLOCK_TYPE = 0xeada;
	    var REACT_FUNDAMENTAL_TYPE = 0xead5;
	    var REACT_DEBUG_TRACING_MODE_TYPE = 0xeae1;
	    var REACT_LEGACY_HIDDEN_TYPE = 0xeae3;

	    if (typeof Symbol === 'function' && Symbol.for) {
	      var symbolFor = Symbol.for;
	      REACT_ELEMENT_TYPE = symbolFor('react.element');
	      REACT_PORTAL_TYPE = symbolFor('react.portal');
	      exports.Fragment = symbolFor('react.fragment');
	      exports.StrictMode = symbolFor('react.strict_mode');
	      exports.Profiler = symbolFor('react.profiler');
	      REACT_PROVIDER_TYPE = symbolFor('react.provider');
	      REACT_CONTEXT_TYPE = symbolFor('react.context');
	      REACT_FORWARD_REF_TYPE = symbolFor('react.forward_ref');
	      exports.Suspense = symbolFor('react.suspense');
	      REACT_SUSPENSE_LIST_TYPE = symbolFor('react.suspense_list');
	      REACT_MEMO_TYPE = symbolFor('react.memo');
	      REACT_LAZY_TYPE = symbolFor('react.lazy');
	      REACT_BLOCK_TYPE = symbolFor('react.block');
	      REACT_SERVER_BLOCK_TYPE = symbolFor('react.server.block');
	      REACT_FUNDAMENTAL_TYPE = symbolFor('react.fundamental');
	      symbolFor('react.scope');
	      symbolFor('react.opaque.id');
	      REACT_DEBUG_TRACING_MODE_TYPE = symbolFor('react.debug_trace_mode');
	      symbolFor('react.offscreen');
	      REACT_LEGACY_HIDDEN_TYPE = symbolFor('react.legacy_hidden');
	    }

	    var MAYBE_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
	    var FAUX_ITERATOR_SYMBOL = '@@iterator';

	    function getIteratorFn(maybeIterable) {
	      if (maybeIterable === null || typeof maybeIterable !== 'object') {
	        return null;
	      }

	      var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];

	      if (typeof maybeIterator === 'function') {
	        return maybeIterator;
	      }

	      return null;
	    }
	    /**
	     * Keeps track of the current dispatcher.
	     */


	    var ReactCurrentDispatcher = {
	      /**
	       * @internal
	       * @type {ReactComponent}
	       */
	      current: null
	    };
	    /**
	     * Keeps track of the current batch's configuration such as how long an update
	     * should suspend for if it needs to.
	     */

	    var ReactCurrentBatchConfig = {
	      transition: 0
	    };
	    /**
	     * Keeps track of the current owner.
	     *
	     * The current owner is the component who should own any components that are
	     * currently being constructed.
	     */

	    var ReactCurrentOwner = {
	      /**
	       * @internal
	       * @type {ReactComponent}
	       */
	      current: null
	    };
	    var ReactDebugCurrentFrame = {};
	    var currentExtraStackFrame = null;

	    function setExtraStackFrame(stack) {
	      {
	        currentExtraStackFrame = stack;
	      }
	    }

	    {
	      ReactDebugCurrentFrame.setExtraStackFrame = function (stack) {
	        {
	          currentExtraStackFrame = stack;
	        }
	      }; // Stack implementation injected by the current renderer.


	      ReactDebugCurrentFrame.getCurrentStack = null;

	      ReactDebugCurrentFrame.getStackAddendum = function () {
	        var stack = ''; // Add an extra top frame while an element is being validated

	        if (currentExtraStackFrame) {
	          stack += currentExtraStackFrame;
	        } // Delegate to the injected renderer-specific implementation


	        var impl = ReactDebugCurrentFrame.getCurrentStack;

	        if (impl) {
	          stack += impl() || '';
	        }

	        return stack;
	      };
	    }
	    /**
	     * Used by act() to track whether you're inside an act() scope.
	     */

	    var IsSomeRendererActing = {
	      current: false
	    };
	    var ReactSharedInternals = {
	      ReactCurrentDispatcher: ReactCurrentDispatcher,
	      ReactCurrentBatchConfig: ReactCurrentBatchConfig,
	      ReactCurrentOwner: ReactCurrentOwner,
	      IsSomeRendererActing: IsSomeRendererActing,
	      // Used by renderers to avoid bundling object-assign twice in UMD bundles:
	      assign: _assign
	    };
	    {
	      ReactSharedInternals.ReactDebugCurrentFrame = ReactDebugCurrentFrame;
	    } // by calls to these methods by a Babel plugin.
	    //
	    // In PROD (or in packages without access to React internals),
	    // they are left as they are instead.

	    function warn(format) {
	      {
	        for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
	          args[_key - 1] = arguments[_key];
	        }

	        printWarning('warn', format, args);
	      }
	    }

	    function error(format) {
	      {
	        for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
	          args[_key2 - 1] = arguments[_key2];
	        }

	        printWarning('error', format, args);
	      }
	    }

	    function printWarning(level, format, args) {
	      // When changing this logic, you might want to also
	      // update consoleWithStackDev.www.js as well.
	      {
	        var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;
	        var stack = ReactDebugCurrentFrame.getStackAddendum();

	        if (stack !== '') {
	          format += '%s';
	          args = args.concat([stack]);
	        }

	        var argsWithFormat = args.map(function (item) {
	          return '' + item;
	        }); // Careful: RN currently depends on this prefix

	        argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it
	        // breaks IE9: https://github.com/facebook/react/issues/13610
	        // eslint-disable-next-line react-internal/no-production-logging

	        Function.prototype.apply.call(console[level], console, argsWithFormat);
	      }
	    }

	    var didWarnStateUpdateForUnmountedComponent = {};

	    function warnNoop(publicInstance, callerName) {
	      {
	        var _constructor = publicInstance.constructor;
	        var componentName = _constructor && (_constructor.displayName || _constructor.name) || 'ReactClass';
	        var warningKey = componentName + "." + callerName;

	        if (didWarnStateUpdateForUnmountedComponent[warningKey]) {
	          return;
	        }

	        error("Can't call %s on a component that is not yet mounted. " + 'This is a no-op, but it might indicate a bug in your application. ' + 'Instead, assign to `this.state` directly or define a `state = {};` ' + 'class property with the desired state in the %s component.', callerName, componentName);
	        didWarnStateUpdateForUnmountedComponent[warningKey] = true;
	      }
	    }
	    /**
	     * This is the abstract API for an update queue.
	     */


	    var ReactNoopUpdateQueue = {
	      /**
	       * Checks whether or not this composite component is mounted.
	       * @param {ReactClass} publicInstance The instance we want to test.
	       * @return {boolean} True if mounted, false otherwise.
	       * @protected
	       * @final
	       */
	      isMounted: function (publicInstance) {
	        return false;
	      },

	      /**
	       * Forces an update. This should only be invoked when it is known with
	       * certainty that we are **not** in a DOM transaction.
	       *
	       * You may want to call this when you know that some deeper aspect of the
	       * component's state has changed but `setState` was not called.
	       *
	       * This will not invoke `shouldComponentUpdate`, but it will invoke
	       * `componentWillUpdate` and `componentDidUpdate`.
	       *
	       * @param {ReactClass} publicInstance The instance that should rerender.
	       * @param {?function} callback Called after component is updated.
	       * @param {?string} callerName name of the calling function in the public API.
	       * @internal
	       */
	      enqueueForceUpdate: function (publicInstance, callback, callerName) {
	        warnNoop(publicInstance, 'forceUpdate');
	      },

	      /**
	       * Replaces all of the state. Always use this or `setState` to mutate state.
	       * You should treat `this.state` as immutable.
	       *
	       * There is no guarantee that `this.state` will be immediately updated, so
	       * accessing `this.state` after calling this method may return the old value.
	       *
	       * @param {ReactClass} publicInstance The instance that should rerender.
	       * @param {object} completeState Next state.
	       * @param {?function} callback Called after component is updated.
	       * @param {?string} callerName name of the calling function in the public API.
	       * @internal
	       */
	      enqueueReplaceState: function (publicInstance, completeState, callback, callerName) {
	        warnNoop(publicInstance, 'replaceState');
	      },

	      /**
	       * Sets a subset of the state. This only exists because _pendingState is
	       * internal. This provides a merging strategy that is not available to deep
	       * properties which is confusing. TODO: Expose pendingState or don't use it
	       * during the merge.
	       *
	       * @param {ReactClass} publicInstance The instance that should rerender.
	       * @param {object} partialState Next partial state to be merged with state.
	       * @param {?function} callback Called after component is updated.
	       * @param {?string} Name of the calling function in the public API.
	       * @internal
	       */
	      enqueueSetState: function (publicInstance, partialState, callback, callerName) {
	        warnNoop(publicInstance, 'setState');
	      }
	    };
	    var emptyObject = {};
	    {
	      Object.freeze(emptyObject);
	    }
	    /**
	     * Base class helpers for the updating state of a component.
	     */

	    function Component(props, context, updater) {
	      this.props = props;
	      this.context = context; // If a component has string refs, we will assign a different object later.

	      this.refs = emptyObject; // We initialize the default updater but the real one gets injected by the
	      // renderer.

	      this.updater = updater || ReactNoopUpdateQueue;
	    }

	    Component.prototype.isReactComponent = {};
	    /**
	     * Sets a subset of the state. Always use this to mutate
	     * state. You should treat `this.state` as immutable.
	     *
	     * There is no guarantee that `this.state` will be immediately updated, so
	     * accessing `this.state` after calling this method may return the old value.
	     *
	     * There is no guarantee that calls to `setState` will run synchronously,
	     * as they may eventually be batched together.  You can provide an optional
	     * callback that will be executed when the call to setState is actually
	     * completed.
	     *
	     * When a function is provided to setState, it will be called at some point in
	     * the future (not synchronously). It will be called with the up to date
	     * component arguments (state, props, context). These values can be different
	     * from this.* because your function may be called after receiveProps but before
	     * shouldComponentUpdate, and this new state, props, and context will not yet be
	     * assigned to this.
	     *
	     * @param {object|function} partialState Next partial state or function to
	     *        produce next partial state to be merged with current state.
	     * @param {?function} callback Called after state is updated.
	     * @final
	     * @protected
	     */

	    Component.prototype.setState = function (partialState, callback) {
	      if (!(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null)) {
	        {
	          throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");
	        }
	      }

	      this.updater.enqueueSetState(this, partialState, callback, 'setState');
	    };
	    /**
	     * Forces an update. This should only be invoked when it is known with
	     * certainty that we are **not** in a DOM transaction.
	     *
	     * You may want to call this when you know that some deeper aspect of the
	     * component's state has changed but `setState` was not called.
	     *
	     * This will not invoke `shouldComponentUpdate`, but it will invoke
	     * `componentWillUpdate` and `componentDidUpdate`.
	     *
	     * @param {?function} callback Called after update is complete.
	     * @final
	     * @protected
	     */


	    Component.prototype.forceUpdate = function (callback) {
	      this.updater.enqueueForceUpdate(this, callback, 'forceUpdate');
	    };
	    /**
	     * Deprecated APIs. These APIs used to exist on classic React classes but since
	     * we would like to deprecate them, we're not going to move them over to this
	     * modern base class. Instead, we define a getter that warns if it's accessed.
	     */


	    {
	      var deprecatedAPIs = {
	        isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],
	        replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']
	      };

	      var defineDeprecationWarning = function (methodName, info) {
	        Object.defineProperty(Component.prototype, methodName, {
	          get: function () {
	            warn('%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]);
	            return undefined;
	          }
	        });
	      };

	      for (var fnName in deprecatedAPIs) {
	        if (deprecatedAPIs.hasOwnProperty(fnName)) {
	          defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);
	        }
	      }
	    }

	    function ComponentDummy() {}

	    ComponentDummy.prototype = Component.prototype;
	    /**
	     * Convenience component with default shallow equality check for sCU.
	     */

	    function PureComponent(props, context, updater) {
	      this.props = props;
	      this.context = context; // If a component has string refs, we will assign a different object later.

	      this.refs = emptyObject;
	      this.updater = updater || ReactNoopUpdateQueue;
	    }

	    var pureComponentPrototype = PureComponent.prototype = new ComponentDummy();
	    pureComponentPrototype.constructor = PureComponent; // Avoid an extra prototype jump for these methods.

	    _assign(pureComponentPrototype, Component.prototype);

	    pureComponentPrototype.isPureReactComponent = true; // an immutable object with a single mutable value

	    function createRef() {
	      var refObject = {
	        current: null
	      };
	      {
	        Object.seal(refObject);
	      }
	      return refObject;
	    }

	    function getWrappedName(outerType, innerType, wrapperName) {
	      var functionName = innerType.displayName || innerType.name || '';
	      return outerType.displayName || (functionName !== '' ? wrapperName + "(" + functionName + ")" : wrapperName);
	    }

	    function getContextName(type) {
	      return type.displayName || 'Context';
	    }

	    function getComponentName(type) {
	      if (type == null) {
	        // Host root, text node or just invalid type.
	        return null;
	      }

	      {
	        if (typeof type.tag === 'number') {
	          error('Received an unexpected object in getComponentName(). ' + 'This is likely a bug in React. Please file an issue.');
	        }
	      }

	      if (typeof type === 'function') {
	        return type.displayName || type.name || null;
	      }

	      if (typeof type === 'string') {
	        return type;
	      }

	      switch (type) {
	        case exports.Fragment:
	          return 'Fragment';

	        case REACT_PORTAL_TYPE:
	          return 'Portal';

	        case exports.Profiler:
	          return 'Profiler';

	        case exports.StrictMode:
	          return 'StrictMode';

	        case exports.Suspense:
	          return 'Suspense';

	        case REACT_SUSPENSE_LIST_TYPE:
	          return 'SuspenseList';
	      }

	      if (typeof type === 'object') {
	        switch (type.$$typeof) {
	          case REACT_CONTEXT_TYPE:
	            var context = type;
	            return getContextName(context) + '.Consumer';

	          case REACT_PROVIDER_TYPE:
	            var provider = type;
	            return getContextName(provider._context) + '.Provider';

	          case REACT_FORWARD_REF_TYPE:
	            return getWrappedName(type, type.render, 'ForwardRef');

	          case REACT_MEMO_TYPE:
	            return getComponentName(type.type);

	          case REACT_BLOCK_TYPE:
	            return getComponentName(type._render);

	          case REACT_LAZY_TYPE:
	            {
	              var lazyComponent = type;
	              var payload = lazyComponent._payload;
	              var init = lazyComponent._init;

	              try {
	                return getComponentName(init(payload));
	              } catch (x) {
	                return null;
	              }
	            }
	        }
	      }

	      return null;
	    }

	    var hasOwnProperty = Object.prototype.hasOwnProperty;
	    var RESERVED_PROPS = {
	      key: true,
	      ref: true,
	      __self: true,
	      __source: true
	    };
	    var specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs;
	    {
	      didWarnAboutStringRefs = {};
	    }

	    function hasValidRef(config) {
	      {
	        if (hasOwnProperty.call(config, 'ref')) {
	          var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;

	          if (getter && getter.isReactWarning) {
	            return false;
	          }
	        }
	      }
	      return config.ref !== undefined;
	    }

	    function hasValidKey(config) {
	      {
	        if (hasOwnProperty.call(config, 'key')) {
	          var getter = Object.getOwnPropertyDescriptor(config, 'key').get;

	          if (getter && getter.isReactWarning) {
	            return false;
	          }
	        }
	      }
	      return config.key !== undefined;
	    }

	    function defineKeyPropWarningGetter(props, displayName) {
	      var warnAboutAccessingKey = function () {
	        {
	          if (!specialPropKeyWarningShown) {
	            specialPropKeyWarningShown = true;
	            error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);
	          }
	        }
	      };

	      warnAboutAccessingKey.isReactWarning = true;
	      Object.defineProperty(props, 'key', {
	        get: warnAboutAccessingKey,
	        configurable: true
	      });
	    }

	    function defineRefPropWarningGetter(props, displayName) {
	      var warnAboutAccessingRef = function () {
	        {
	          if (!specialPropRefWarningShown) {
	            specialPropRefWarningShown = true;
	            error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);
	          }
	        }
	      };

	      warnAboutAccessingRef.isReactWarning = true;
	      Object.defineProperty(props, 'ref', {
	        get: warnAboutAccessingRef,
	        configurable: true
	      });
	    }

	    function warnIfStringRefCannotBeAutoConverted(config) {
	      {
	        if (typeof config.ref === 'string' && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) {
	          var componentName = getComponentName(ReactCurrentOwner.current.type);

	          if (!didWarnAboutStringRefs[componentName]) {
	            error('Component "%s" contains the string ref "%s". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', componentName, config.ref);
	            didWarnAboutStringRefs[componentName] = true;
	          }
	        }
	      }
	    }
	    /**
	     * Factory method to create a new React element. This no longer adheres to
	     * the class pattern, so do not use new to call it. Also, instanceof check
	     * will not work. Instead test $$typeof field against Symbol.for('react.element') to check
	     * if something is a React Element.
	     *
	     * @param {*} type
	     * @param {*} props
	     * @param {*} key
	     * @param {string|object} ref
	     * @param {*} owner
	     * @param {*} self A *temporary* helper to detect places where `this` is
	     * different from the `owner` when React.createElement is called, so that we
	     * can warn. We want to get rid of owner and replace string `ref`s with arrow
	     * functions, and as long as `this` and owner are the same, there will be no
	     * change in behavior.
	     * @param {*} source An annotation object (added by a transpiler or otherwise)
	     * indicating filename, line number, and/or other information.
	     * @internal
	     */


	    var ReactElement = function (type, key, ref, self, source, owner, props) {
	      var element = {
	        // This tag allows us to uniquely identify this as a React Element
	        $$typeof: REACT_ELEMENT_TYPE,
	        // Built-in properties that belong on the element
	        type: type,
	        key: key,
	        ref: ref,
	        props: props,
	        // Record the component responsible for creating this element.
	        _owner: owner
	      };
	      {
	        // The validation flag is currently mutative. We put it on
	        // an external backing store so that we can freeze the whole object.
	        // This can be replaced with a WeakMap once they are implemented in
	        // commonly used development environments.
	        element._store = {}; // To make comparing ReactElements easier for testing purposes, we make
	        // the validation flag non-enumerable (where possible, which should
	        // include every environment we run tests in), so the test framework
	        // ignores it.

	        Object.defineProperty(element._store, 'validated', {
	          configurable: false,
	          enumerable: false,
	          writable: true,
	          value: false
	        }); // self and source are DEV only properties.

	        Object.defineProperty(element, '_self', {
	          configurable: false,
	          enumerable: false,
	          writable: false,
	          value: self
	        }); // Two elements created in two different places should be considered
	        // equal for testing purposes and therefore we hide it from enumeration.

	        Object.defineProperty(element, '_source', {
	          configurable: false,
	          enumerable: false,
	          writable: false,
	          value: source
	        });

	        if (Object.freeze) {
	          Object.freeze(element.props);
	          Object.freeze(element);
	        }
	      }
	      return element;
	    };
	    /**
	     * Create and return a new ReactElement of the given type.
	     * See https://reactjs.org/docs/react-api.html#createelement
	     */


	    function createElement(type, config, children) {
	      var propName; // Reserved names are extracted

	      var props = {};
	      var key = null;
	      var ref = null;
	      var self = null;
	      var source = null;

	      if (config != null) {
	        if (hasValidRef(config)) {
	          ref = config.ref;
	          {
	            warnIfStringRefCannotBeAutoConverted(config);
	          }
	        }

	        if (hasValidKey(config)) {
	          key = '' + config.key;
	        }

	        self = config.__self === undefined ? null : config.__self;
	        source = config.__source === undefined ? null : config.__source; // Remaining properties are added to a new props object

	        for (propName in config) {
	          if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {
	            props[propName] = config[propName];
	          }
	        }
	      } // Children can be more than one argument, and those are transferred onto
	      // the newly allocated props object.


	      var childrenLength = arguments.length - 2;

	      if (childrenLength === 1) {
	        props.children = children;
	      } else if (childrenLength > 1) {
	        var childArray = Array(childrenLength);

	        for (var i = 0; i < childrenLength; i++) {
	          childArray[i] = arguments[i + 2];
	        }

	        {
	          if (Object.freeze) {
	            Object.freeze(childArray);
	          }
	        }
	        props.children = childArray;
	      } // Resolve default props


	      if (type && type.defaultProps) {
	        var defaultProps = type.defaultProps;

	        for (propName in defaultProps) {
	          if (props[propName] === undefined) {
	            props[propName] = defaultProps[propName];
	          }
	        }
	      }

	      {
	        if (key || ref) {
	          var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;

	          if (key) {
	            defineKeyPropWarningGetter(props, displayName);
	          }

	          if (ref) {
	            defineRefPropWarningGetter(props, displayName);
	          }
	        }
	      }
	      return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);
	    }

	    function cloneAndReplaceKey(oldElement, newKey) {
	      var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);
	      return newElement;
	    }
	    /**
	     * Clone and return a new ReactElement using element as the starting point.
	     * See https://reactjs.org/docs/react-api.html#cloneelement
	     */


	    function cloneElement(element, config, children) {
	      if (!!(element === null || element === undefined)) {
	        {
	          throw Error("React.cloneElement(...): The argument must be a React element, but you passed " + element + ".");
	        }
	      }

	      var propName; // Original props are copied

	      var props = _assign({}, element.props); // Reserved names are extracted


	      var key = element.key;
	      var ref = element.ref; // Self is preserved since the owner is preserved.

	      var self = element._self; // Source is preserved since cloneElement is unlikely to be targeted by a
	      // transpiler, and the original source is probably a better indicator of the
	      // true owner.

	      var source = element._source; // Owner will be preserved, unless ref is overridden

	      var owner = element._owner;

	      if (config != null) {
	        if (hasValidRef(config)) {
	          // Silently steal the ref from the parent.
	          ref = config.ref;
	          owner = ReactCurrentOwner.current;
	        }

	        if (hasValidKey(config)) {
	          key = '' + config.key;
	        } // Remaining properties override existing props


	        var defaultProps;

	        if (element.type && element.type.defaultProps) {
	          defaultProps = element.type.defaultProps;
	        }

	        for (propName in config) {
	          if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {
	            if (config[propName] === undefined && defaultProps !== undefined) {
	              // Resolve default props
	              props[propName] = defaultProps[propName];
	            } else {
	              props[propName] = config[propName];
	            }
	          }
	        }
	      } // Children can be more than one argument, and those are transferred onto
	      // the newly allocated props object.


	      var childrenLength = arguments.length - 2;

	      if (childrenLength === 1) {
	        props.children = children;
	      } else if (childrenLength > 1) {
	        var childArray = Array(childrenLength);

	        for (var i = 0; i < childrenLength; i++) {
	          childArray[i] = arguments[i + 2];
	        }

	        props.children = childArray;
	      }

	      return ReactElement(element.type, key, ref, self, source, owner, props);
	    }
	    /**
	     * Verifies the object is a ReactElement.
	     * See https://reactjs.org/docs/react-api.html#isvalidelement
	     * @param {?object} object
	     * @return {boolean} True if `object` is a ReactElement.
	     * @final
	     */


	    function isValidElement(object) {
	      return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
	    }

	    var SEPARATOR = '.';
	    var SUBSEPARATOR = ':';
	    /**
	     * Escape and wrap key so it is safe to use as a reactid
	     *
	     * @param {string} key to be escaped.
	     * @return {string} the escaped key.
	     */

	    function escape(key) {
	      var escapeRegex = /[=:]/g;
	      var escaperLookup = {
	        '=': '=0',
	        ':': '=2'
	      };
	      var escapedString = key.replace(escapeRegex, function (match) {
	        return escaperLookup[match];
	      });
	      return '$' + escapedString;
	    }
	    /**
	     * TODO: Test that a single child and an array with one item have the same key
	     * pattern.
	     */


	    var didWarnAboutMaps = false;
	    var userProvidedKeyEscapeRegex = /\/+/g;

	    function escapeUserProvidedKey(text) {
	      return text.replace(userProvidedKeyEscapeRegex, '$&/');
	    }
	    /**
	     * Generate a key string that identifies a element within a set.
	     *
	     * @param {*} element A element that could contain a manual key.
	     * @param {number} index Index that is used if a manual key is not provided.
	     * @return {string}
	     */


	    function getElementKey(element, index) {
	      // Do some typechecking here since we call this blindly. We want to ensure
	      // that we don't block potential future ES APIs.
	      if (typeof element === 'object' && element !== null && element.key != null) {
	        // Explicit key
	        return escape('' + element.key);
	      } // Implicit key determined by the index in the set


	      return index.toString(36);
	    }

	    function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {
	      var type = typeof children;

	      if (type === 'undefined' || type === 'boolean') {
	        // All of the above are perceived as null.
	        children = null;
	      }

	      var invokeCallback = false;

	      if (children === null) {
	        invokeCallback = true;
	      } else {
	        switch (type) {
	          case 'string':
	          case 'number':
	            invokeCallback = true;
	            break;

	          case 'object':
	            switch (children.$$typeof) {
	              case REACT_ELEMENT_TYPE:
	              case REACT_PORTAL_TYPE:
	                invokeCallback = true;
	            }

	        }
	      }

	      if (invokeCallback) {
	        var _child = children;
	        var mappedChild = callback(_child); // If it's the only child, treat the name as if it was wrapped in an array
	        // so that it's consistent if the number of children grows:

	        var childKey = nameSoFar === '' ? SEPARATOR + getElementKey(_child, 0) : nameSoFar;

	        if (Array.isArray(mappedChild)) {
	          var escapedChildKey = '';

	          if (childKey != null) {
	            escapedChildKey = escapeUserProvidedKey(childKey) + '/';
	          }

	          mapIntoArray(mappedChild, array, escapedChildKey, '', function (c) {
	            return c;
	          });
	        } else if (mappedChild != null) {
	          if (isValidElement(mappedChild)) {
	            mappedChild = cloneAndReplaceKey(mappedChild, // Keep both the (mapped) and old keys if they differ, just as
	            // traverseAllChildren used to do for objects as children
	            escapedPrefix + ( // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key
	            mappedChild.key && (!_child || _child.key !== mappedChild.key) ? // $FlowFixMe Flow incorrectly thinks existing element's key can be a number
	            escapeUserProvidedKey('' + mappedChild.key) + '/' : '') + childKey);
	          }

	          array.push(mappedChild);
	        }

	        return 1;
	      }

	      var child;
	      var nextName;
	      var subtreeCount = 0; // Count of children found in the current subtree.

	      var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;

	      if (Array.isArray(children)) {
	        for (var i = 0; i < children.length; i++) {
	          child = children[i];
	          nextName = nextNamePrefix + getElementKey(child, i);
	          subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);
	        }
	      } else {
	        var iteratorFn = getIteratorFn(children);

	        if (typeof iteratorFn === 'function') {
	          var iterableChildren = children;
	          {
	            // Warn about using Maps as children
	            if (iteratorFn === iterableChildren.entries) {
	              if (!didWarnAboutMaps) {
	                warn('Using Maps as children is not supported. ' + 'Use an array of keyed ReactElements instead.');
	              }

	              didWarnAboutMaps = true;
	            }
	          }
	          var iterator = iteratorFn.call(iterableChildren);
	          var step;
	          var ii = 0;

	          while (!(step = iterator.next()).done) {
	            child = step.value;
	            nextName = nextNamePrefix + getElementKey(child, ii++);
	            subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);
	          }
	        } else if (type === 'object') {
	          var childrenString = '' + children;
	          {
	            {
	              throw Error("Objects are not valid as a React child (found: " + (childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString) + "). If you meant to render a collection of children, use an array instead.");
	            }
	          }
	        }
	      }

	      return subtreeCount;
	    }
	    /**
	     * Maps children that are typically specified as `props.children`.
	     *
	     * See https://reactjs.org/docs/react-api.html#reactchildrenmap
	     *
	     * The provided mapFunction(child, index) will be called for each
	     * leaf child.
	     *
	     * @param {?*} children Children tree container.
	     * @param {function(*, int)} func The map function.
	     * @param {*} context Context for mapFunction.
	     * @return {object} Object containing the ordered map of results.
	     */


	    function mapChildren(children, func, context) {
	      if (children == null) {
	        return children;
	      }

	      var result = [];
	      var count = 0;
	      mapIntoArray(children, result, '', '', function (child) {
	        return func.call(context, child, count++);
	      });
	      return result;
	    }
	    /**
	     * Count the number of children that are typically specified as
	     * `props.children`.
	     *
	     * See https://reactjs.org/docs/react-api.html#reactchildrencount
	     *
	     * @param {?*} children Children tree container.
	     * @return {number} The number of children.
	     */


	    function countChildren(children) {
	      var n = 0;
	      mapChildren(children, function () {
	        n++; // Don't return anything
	      });
	      return n;
	    }
	    /**
	     * Iterates through children that are typically specified as `props.children`.
	     *
	     * See https://reactjs.org/docs/react-api.html#reactchildrenforeach
	     *
	     * The provided forEachFunc(child, index) will be called for each
	     * leaf child.
	     *
	     * @param {?*} children Children tree container.
	     * @param {function(*, int)} forEachFunc
	     * @param {*} forEachContext Context for forEachContext.
	     */


	    function forEachChildren(children, forEachFunc, forEachContext) {
	      mapChildren(children, function () {
	        forEachFunc.apply(this, arguments); // Don't return anything.
	      }, forEachContext);
	    }
	    /**
	     * Flatten a children object (typically specified as `props.children`) and
	     * return an array with appropriately re-keyed children.
	     *
	     * See https://reactjs.org/docs/react-api.html#reactchildrentoarray
	     */


	    function toArray(children) {
	      return mapChildren(children, function (child) {
	        return child;
	      }) || [];
	    }
	    /**
	     * Returns the first child in a collection of children and verifies that there
	     * is only one child in the collection.
	     *
	     * See https://reactjs.org/docs/react-api.html#reactchildrenonly
	     *
	     * The current implementation of this function assumes that a single child gets
	     * passed without a wrapper, but the purpose of this helper function is to
	     * abstract away the particular structure of children.
	     *
	     * @param {?object} children Child collection structure.
	     * @return {ReactElement} The first and only `ReactElement` contained in the
	     * structure.
	     */


	    function onlyChild(children) {
	      if (!isValidElement(children)) {
	        {
	          throw Error("React.Children.only expected to receive a single React element child.");
	        }
	      }

	      return children;
	    }

	    function createContext(defaultValue, calculateChangedBits) {
	      if (calculateChangedBits === undefined) {
	        calculateChangedBits = null;
	      } else {
	        {
	          if (calculateChangedBits !== null && typeof calculateChangedBits !== 'function') {
	            error('createContext: Expected the optional second argument to be a ' + 'function. Instead received: %s', calculateChangedBits);
	          }
	        }
	      }

	      var context = {
	        $$typeof: REACT_CONTEXT_TYPE,
	        _calculateChangedBits: calculateChangedBits,
	        // As a workaround to support multiple concurrent renderers, we categorize
	        // some renderers as primary and others as secondary. We only expect
	        // there to be two concurrent renderers at most: React Native (primary) and
	        // Fabric (secondary); React DOM (primary) and React ART (secondary).
	        // Secondary renderers store their context values on separate fields.
	        _currentValue: defaultValue,
	        _currentValue2: defaultValue,
	        // Used to track how many concurrent renderers this context currently
	        // supports within in a single renderer. Such as parallel server rendering.
	        _threadCount: 0,
	        // These are circular
	        Provider: null,
	        Consumer: null
	      };
	      context.Provider = {
	        $$typeof: REACT_PROVIDER_TYPE,
	        _context: context
	      };
	      var hasWarnedAboutUsingNestedContextConsumers = false;
	      var hasWarnedAboutUsingConsumerProvider = false;
	      var hasWarnedAboutDisplayNameOnConsumer = false;
	      {
	        // A separate object, but proxies back to the original context object for
	        // backwards compatibility. It has a different $$typeof, so we can properly
	        // warn for the incorrect usage of Context as a Consumer.
	        var Consumer = {
	          $$typeof: REACT_CONTEXT_TYPE,
	          _context: context,
	          _calculateChangedBits: context._calculateChangedBits
	        }; // $FlowFixMe: Flow complains about not setting a value, which is intentional here

	        Object.defineProperties(Consumer, {
	          Provider: {
	            get: function () {
	              if (!hasWarnedAboutUsingConsumerProvider) {
	                hasWarnedAboutUsingConsumerProvider = true;
	                error('Rendering <Context.Consumer.Provider> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Provider> instead?');
	              }

	              return context.Provider;
	            },
	            set: function (_Provider) {
	              context.Provider = _Provider;
	            }
	          },
	          _currentValue: {
	            get: function () {
	              return context._currentValue;
	            },
	            set: function (_currentValue) {
	              context._currentValue = _currentValue;
	            }
	          },
	          _currentValue2: {
	            get: function () {
	              return context._currentValue2;
	            },
	            set: function (_currentValue2) {
	              context._currentValue2 = _currentValue2;
	            }
	          },
	          _threadCount: {
	            get: function () {
	              return context._threadCount;
	            },
	            set: function (_threadCount) {
	              context._threadCount = _threadCount;
	            }
	          },
	          Consumer: {
	            get: function () {
	              if (!hasWarnedAboutUsingNestedContextConsumers) {
	                hasWarnedAboutUsingNestedContextConsumers = true;
	                error('Rendering <Context.Consumer.Consumer> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Consumer> instead?');
	              }

	              return context.Consumer;
	            }
	          },
	          displayName: {
	            get: function () {
	              return context.displayName;
	            },
	            set: function (displayName) {
	              if (!hasWarnedAboutDisplayNameOnConsumer) {
	                warn('Setting `displayName` on Context.Consumer has no effect. ' + "You should set it directly on the context with Context.displayName = '%s'.", displayName);
	                hasWarnedAboutDisplayNameOnConsumer = true;
	              }
	            }
	          }
	        }); // $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty

	        context.Consumer = Consumer;
	      }
	      {
	        context._currentRenderer = null;
	        context._currentRenderer2 = null;
	      }
	      return context;
	    }

	    var Uninitialized = -1;
	    var Pending = 0;
	    var Resolved = 1;
	    var Rejected = 2;

	    function lazyInitializer(payload) {
	      if (payload._status === Uninitialized) {
	        var ctor = payload._result;
	        var thenable = ctor(); // Transition to the next state.

	        var pending = payload;
	        pending._status = Pending;
	        pending._result = thenable;
	        thenable.then(function (moduleObject) {
	          if (payload._status === Pending) {
	            var defaultExport = moduleObject.default;
	            {
	              if (defaultExport === undefined) {
	                error('lazy: Expected the result of a dynamic import() call. ' + 'Instead received: %s\n\nYour code should look like: \n  ' + // Break up imports to avoid accidentally parsing them as dependencies.
	                'const MyComponent = lazy(() => imp' + "ort('./MyComponent'))", moduleObject);
	              }
	            } // Transition to the next state.

	            var resolved = payload;
	            resolved._status = Resolved;
	            resolved._result = defaultExport;
	          }
	        }, function (error) {
	          if (payload._status === Pending) {
	            // Transition to the next state.
	            var rejected = payload;
	            rejected._status = Rejected;
	            rejected._result = error;
	          }
	        });
	      }

	      if (payload._status === Resolved) {
	        return payload._result;
	      } else {
	        throw payload._result;
	      }
	    }

	    function lazy(ctor) {
	      var payload = {
	        // We use these fields to store the result.
	        _status: -1,
	        _result: ctor
	      };
	      var lazyType = {
	        $$typeof: REACT_LAZY_TYPE,
	        _payload: payload,
	        _init: lazyInitializer
	      };
	      {
	        // In production, this would just set it on the object.
	        var defaultProps;
	        var propTypes; // $FlowFixMe

	        Object.defineProperties(lazyType, {
	          defaultProps: {
	            configurable: true,
	            get: function () {
	              return defaultProps;
	            },
	            set: function (newDefaultProps) {
	              error('React.lazy(...): It is not supported to assign `defaultProps` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');
	              defaultProps = newDefaultProps; // Match production behavior more closely:
	              // $FlowFixMe

	              Object.defineProperty(lazyType, 'defaultProps', {
	                enumerable: true
	              });
	            }
	          },
	          propTypes: {
	            configurable: true,
	            get: function () {
	              return propTypes;
	            },
	            set: function (newPropTypes) {
	              error('React.lazy(...): It is not supported to assign `propTypes` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');
	              propTypes = newPropTypes; // Match production behavior more closely:
	              // $FlowFixMe

	              Object.defineProperty(lazyType, 'propTypes', {
	                enumerable: true
	              });
	            }
	          }
	        });
	      }
	      return lazyType;
	    }

	    function forwardRef(render) {
	      {
	        if (render != null && render.$$typeof === REACT_MEMO_TYPE) {
	          error('forwardRef requires a render function but received a `memo` ' + 'component. Instead of forwardRef(memo(...)), use ' + 'memo(forwardRef(...)).');
	        } else if (typeof render !== 'function') {
	          error('forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render);
	        } else {
	          if (render.length !== 0 && render.length !== 2) {
	            error('forwardRef render functions accept exactly two parameters: props and ref. %s', render.length === 1 ? 'Did you forget to use the ref parameter?' : 'Any additional parameter will be undefined.');
	          }
	        }

	        if (render != null) {
	          if (render.defaultProps != null || render.propTypes != null) {
	            error('forwardRef render functions do not support propTypes or defaultProps. ' + 'Did you accidentally pass a React component?');
	          }
	        }
	      }
	      var elementType = {
	        $$typeof: REACT_FORWARD_REF_TYPE,
	        render: render
	      };
	      {
	        var ownName;
	        Object.defineProperty(elementType, 'displayName', {
	          enumerable: false,
	          configurable: true,
	          get: function () {
	            return ownName;
	          },
	          set: function (name) {
	            ownName = name;

	            if (render.displayName == null) {
	              render.displayName = name;
	            }
	          }
	        });
	      }
	      return elementType;
	    } // Filter certain DOM attributes (e.g. src, href) if their values are empty strings.


	    var enableScopeAPI = false; // Experimental Create Event Handle API.

	    function isValidElementType(type) {
	      if (typeof type === 'string' || typeof type === 'function') {
	        return true;
	      } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).


	      if (type === exports.Fragment || type === exports.Profiler || type === REACT_DEBUG_TRACING_MODE_TYPE || type === exports.StrictMode || type === exports.Suspense || type === REACT_SUSPENSE_LIST_TYPE || type === REACT_LEGACY_HIDDEN_TYPE || enableScopeAPI) {
	        return true;
	      }

	      if (typeof type === 'object' && type !== null) {
	        if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_BLOCK_TYPE || type[0] === REACT_SERVER_BLOCK_TYPE) {
	          return true;
	        }
	      }

	      return false;
	    }

	    function memo(type, compare) {
	      {
	        if (!isValidElementType(type)) {
	          error('memo: The first argument must be a component. Instead ' + 'received: %s', type === null ? 'null' : typeof type);
	        }
	      }
	      var elementType = {
	        $$typeof: REACT_MEMO_TYPE,
	        type: type,
	        compare: compare === undefined ? null : compare
	      };
	      {
	        var ownName;
	        Object.defineProperty(elementType, 'displayName', {
	          enumerable: false,
	          configurable: true,
	          get: function () {
	            return ownName;
	          },
	          set: function (name) {
	            ownName = name;

	            if (type.displayName == null) {
	              type.displayName = name;
	            }
	          }
	        });
	      }
	      return elementType;
	    }

	    function resolveDispatcher() {
	      var dispatcher = ReactCurrentDispatcher.current;

	      if (!(dispatcher !== null)) {
	        {
	          throw Error("Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.");
	        }
	      }

	      return dispatcher;
	    }

	    function useContext(Context, unstable_observedBits) {
	      var dispatcher = resolveDispatcher();
	      {
	        if (unstable_observedBits !== undefined) {
	          error('useContext() second argument is reserved for future ' + 'use in React. Passing it is not supported. ' + 'You passed: %s.%s', unstable_observedBits, typeof unstable_observedBits === 'number' && Array.isArray(arguments[2]) ? '\n\nDid you call array.map(useContext)? ' + 'Calling Hooks inside a loop is not supported. ' + 'Learn more at https://reactjs.org/link/rules-of-hooks' : '');
	        } // TODO: add a more generic warning for invalid values.


	        if (Context._context !== undefined) {
	          var realContext = Context._context; // Don't deduplicate because this legitimately causes bugs
	          // and nobody should be using this in existing code.

	          if (realContext.Consumer === Context) {
	            error('Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be ' + 'removed in a future major release. Did you mean to call useContext(Context) instead?');
	          } else if (realContext.Provider === Context) {
	            error('Calling useContext(Context.Provider) is not supported. ' + 'Did you mean to call useContext(Context) instead?');
	          }
	        }
	      }
	      return dispatcher.useContext(Context, unstable_observedBits);
	    }

	    function useState(initialState) {
	      var dispatcher = resolveDispatcher();
	      return dispatcher.useState(initialState);
	    }

	    function useReducer(reducer, initialArg, init) {
	      var dispatcher = resolveDispatcher();
	      return dispatcher.useReducer(reducer, initialArg, init);
	    }

	    function useRef(initialValue) {
	      var dispatcher = resolveDispatcher();
	      return dispatcher.useRef(initialValue);
	    }

	    function useEffect(create, deps) {
	      var dispatcher = resolveDispatcher();
	      return dispatcher.useEffect(create, deps);
	    }

	    function useLayoutEffect(create, deps) {
	      var dispatcher = resolveDispatcher();
	      return dispatcher.useLayoutEffect(create, deps);
	    }

	    function useCallback(callback, deps) {
	      var dispatcher = resolveDispatcher();
	      return dispatcher.useCallback(callback, deps);
	    }

	    function useMemo(create, deps) {
	      var dispatcher = resolveDispatcher();
	      return dispatcher.useMemo(create, deps);
	    }

	    function useImperativeHandle(ref, create, deps) {
	      var dispatcher = resolveDispatcher();
	      return dispatcher.useImperativeHandle(ref, create, deps);
	    }

	    function useDebugValue(value, formatterFn) {
	      {
	        var dispatcher = resolveDispatcher();
	        return dispatcher.useDebugValue(value, formatterFn);
	      }
	    } // Helpers to patch console.logs to avoid logging during side-effect free
	    // replaying on render function. This currently only patches the object
	    // lazily which won't cover if the log function was extracted eagerly.
	    // We could also eagerly patch the method.


	    var disabledDepth = 0;
	    var prevLog;
	    var prevInfo;
	    var prevWarn;
	    var prevError;
	    var prevGroup;
	    var prevGroupCollapsed;
	    var prevGroupEnd;

	    function disabledLog() {}

	    disabledLog.__reactDisabledLog = true;

	    function disableLogs() {
	      {
	        if (disabledDepth === 0) {
	          /* eslint-disable react-internal/no-production-logging */
	          prevLog = console.log;
	          prevInfo = console.info;
	          prevWarn = console.warn;
	          prevError = console.error;
	          prevGroup = console.group;
	          prevGroupCollapsed = console.groupCollapsed;
	          prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099

	          var props = {
	            configurable: true,
	            enumerable: true,
	            value: disabledLog,
	            writable: true
	          }; // $FlowFixMe Flow thinks console is immutable.

	          Object.defineProperties(console, {
	            info: props,
	            log: props,
	            warn: props,
	            error: props,
	            group: props,
	            groupCollapsed: props,
	            groupEnd: props
	          });
	          /* eslint-enable react-internal/no-production-logging */
	        }

	        disabledDepth++;
	      }
	    }

	    function reenableLogs() {
	      {
	        disabledDepth--;

	        if (disabledDepth === 0) {
	          /* eslint-disable react-internal/no-production-logging */
	          var props = {
	            configurable: true,
	            enumerable: true,
	            writable: true
	          }; // $FlowFixMe Flow thinks console is immutable.

	          Object.defineProperties(console, {
	            log: _assign({}, props, {
	              value: prevLog
	            }),
	            info: _assign({}, props, {
	              value: prevInfo
	            }),
	            warn: _assign({}, props, {
	              value: prevWarn
	            }),
	            error: _assign({}, props, {
	              value: prevError
	            }),
	            group: _assign({}, props, {
	              value: prevGroup
	            }),
	            groupCollapsed: _assign({}, props, {
	              value: prevGroupCollapsed
	            }),
	            groupEnd: _assign({}, props, {
	              value: prevGroupEnd
	            })
	          });
	          /* eslint-enable react-internal/no-production-logging */
	        }

	        if (disabledDepth < 0) {
	          error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');
	        }
	      }
	    }

	    var ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher;
	    var prefix;

	    function describeBuiltInComponentFrame(name, source, ownerFn) {
	      {
	        if (prefix === undefined) {
	          // Extract the VM specific prefix used by each line.
	          try {
	            throw Error();
	          } catch (x) {
	            var match = x.stack.trim().match(/\n( *(at )?)/);
	            prefix = match && match[1] || '';
	          }
	        } // We use the prefix to ensure our stacks line up with native stack frames.


	        return '\n' + prefix + name;
	      }
	    }

	    var reentry = false;
	    var componentFrameCache;
	    {
	      var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;
	      componentFrameCache = new PossiblyWeakMap();
	    }

	    function describeNativeComponentFrame(fn, construct) {
	      // If something asked for a stack inside a fake render, it should get ignored.
	      if (!fn || reentry) {
	        return '';
	      }

	      {
	        var frame = componentFrameCache.get(fn);

	        if (frame !== undefined) {
	          return frame;
	        }
	      }
	      var control;
	      reentry = true;
	      var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.

	      Error.prepareStackTrace = undefined;
	      var previousDispatcher;
	      {
	        previousDispatcher = ReactCurrentDispatcher$1.current; // Set the dispatcher in DEV because this might be call in the render function
	        // for warnings.

	        ReactCurrentDispatcher$1.current = null;
	        disableLogs();
	      }

	      try {
	        // This should throw.
	        if (construct) {
	          // Something should be setting the props in the constructor.
	          var Fake = function () {
	            throw Error();
	          }; // $FlowFixMe


	          Object.defineProperty(Fake.prototype, 'props', {
	            set: function () {
	              // We use a throwing setter instead of frozen or non-writable props
	              // because that won't throw in a non-strict mode function.
	              throw Error();
	            }
	          });

	          if (typeof Reflect === 'object' && Reflect.construct) {
	            // We construct a different control for this case to include any extra
	            // frames added by the construct call.
	            try {
	              Reflect.construct(Fake, []);
	            } catch (x) {
	              control = x;
	            }

	            Reflect.construct(fn, [], Fake);
	          } else {
	            try {
	              Fake.call();
	            } catch (x) {
	              control = x;
	            }

	            fn.call(Fake.prototype);
	          }
	        } else {
	          try {
	            throw Error();
	          } catch (x) {
	            control = x;
	          }

	          fn();
	        }
	      } catch (sample) {
	        // This is inlined manually because closure doesn't do it for us.
	        if (sample && control && typeof sample.stack === 'string') {
	          // This extracts the first frame from the sample that isn't also in the control.
	          // Skipping one frame that we assume is the frame that calls the two.
	          var sampleLines = sample.stack.split('\n');
	          var controlLines = control.stack.split('\n');
	          var s = sampleLines.length - 1;
	          var c = controlLines.length - 1;

	          while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {
	            // We expect at least one stack frame to be shared.
	            // Typically this will be the root most one. However, stack frames may be
	            // cut off due to maximum stack limits. In this case, one maybe cut off
	            // earlier than the other. We assume that the sample is longer or the same
	            // and there for cut off earlier. So we should find the root most frame in
	            // the sample somewhere in the control.
	            c--;
	          }

	          for (; s >= 1 && c >= 0; s--, c--) {
	            // Next we find the first one that isn't the same which should be the
	            // frame that called our sample function and the control.
	            if (sampleLines[s] !== controlLines[c]) {
	              // In V8, the first line is describing the message but other VMs don't.
	              // If we're about to return the first line, and the control is also on the same
	              // line, that's a pretty good indicator that our sample threw at same line as
	              // the control. I.e. before we entered the sample frame. So we ignore this result.
	              // This can happen if you passed a class to function component, or non-function.
	              if (s !== 1 || c !== 1) {
	                do {
	                  s--;
	                  c--; // We may still have similar intermediate frames from the construct call.
	                  // The next one that isn't the same should be our match though.

	                  if (c < 0 || sampleLines[s] !== controlLines[c]) {
	                    // V8 adds a "new" prefix for native classes. Let's remove it to make it prettier.
	                    var _frame = '\n' + sampleLines[s].replace(' at new ', ' at ');

	                    {
	                      if (typeof fn === 'function') {
	                        componentFrameCache.set(fn, _frame);
	                      }
	                    } // Return the line we found.

	                    return _frame;
	                  }
	                } while (s >= 1 && c >= 0);
	              }

	              break;
	            }
	          }
	        }
	      } finally {
	        reentry = false;
	        {
	          ReactCurrentDispatcher$1.current = previousDispatcher;
	          reenableLogs();
	        }
	        Error.prepareStackTrace = previousPrepareStackTrace;
	      } // Fallback to just using the name if we couldn't make it throw.


	      var name = fn ? fn.displayName || fn.name : '';
	      var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';
	      {
	        if (typeof fn === 'function') {
	          componentFrameCache.set(fn, syntheticFrame);
	        }
	      }
	      return syntheticFrame;
	    }

	    function describeFunctionComponentFrame(fn, source, ownerFn) {
	      {
	        return describeNativeComponentFrame(fn, false);
	      }
	    }

	    function shouldConstruct(Component) {
	      var prototype = Component.prototype;
	      return !!(prototype && prototype.isReactComponent);
	    }

	    function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {
	      if (type == null) {
	        return '';
	      }

	      if (typeof type === 'function') {
	        {
	          return describeNativeComponentFrame(type, shouldConstruct(type));
	        }
	      }

	      if (typeof type === 'string') {
	        return describeBuiltInComponentFrame(type);
	      }

	      switch (type) {
	        case exports.Suspense:
	          return describeBuiltInComponentFrame('Suspense');

	        case REACT_SUSPENSE_LIST_TYPE:
	          return describeBuiltInComponentFrame('SuspenseList');
	      }

	      if (typeof type === 'object') {
	        switch (type.$$typeof) {
	          case REACT_FORWARD_REF_TYPE:
	            return describeFunctionComponentFrame(type.render);

	          case REACT_MEMO_TYPE:
	            // Memo may contain any component type so we recursively resolve it.
	            return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);

	          case REACT_BLOCK_TYPE:
	            return describeFunctionComponentFrame(type._render);

	          case REACT_LAZY_TYPE:
	            {
	              var lazyComponent = type;
	              var payload = lazyComponent._payload;
	              var init = lazyComponent._init;

	              try {
	                // Lazy may contain any component type so we recursively resolve it.
	                return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);
	              } catch (x) {}
	            }
	        }
	      }

	      return '';
	    }

	    var loggedTypeFailures = {};
	    var ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;

	    function setCurrentlyValidatingElement(element) {
	      {
	        if (element) {
	          var owner = element._owner;
	          var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);
	          ReactDebugCurrentFrame$1.setExtraStackFrame(stack);
	        } else {
	          ReactDebugCurrentFrame$1.setExtraStackFrame(null);
	        }
	      }
	    }

	    function checkPropTypes(typeSpecs, values, location, componentName, element) {
	      {
	        // $FlowFixMe This is okay but Flow doesn't know it.
	        var has = Function.call.bind(Object.prototype.hasOwnProperty);

	        for (var typeSpecName in typeSpecs) {
	          if (has(typeSpecs, typeSpecName)) {
	            var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to
	            // fail the render phase where it didn't fail before. So we log it.
	            // After these have been cleaned up, we'll let them throw.

	            try {
	              // This is intentionally an invariant that gets caught. It's the same
	              // behavior as without this statement except with a better message.
	              if (typeof typeSpecs[typeSpecName] !== 'function') {
	                var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');
	                err.name = 'Invariant Violation';
	                throw err;
	              }

	              error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');
	            } catch (ex) {
	              error$1 = ex;
	            }

	            if (error$1 && !(error$1 instanceof Error)) {
	              setCurrentlyValidatingElement(element);
	              error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);
	              setCurrentlyValidatingElement(null);
	            }

	            if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {
	              // Only monitor this failure once because there tends to be a lot of the
	              // same error.
	              loggedTypeFailures[error$1.message] = true;
	              setCurrentlyValidatingElement(element);
	              error('Failed %s type: %s', location, error$1.message);
	              setCurrentlyValidatingElement(null);
	            }
	          }
	        }
	      }
	    }

	    function setCurrentlyValidatingElement$1(element) {
	      {
	        if (element) {
	          var owner = element._owner;
	          var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);
	          setExtraStackFrame(stack);
	        } else {
	          setExtraStackFrame(null);
	        }
	      }
	    }

	    var propTypesMisspellWarningShown;
	    {
	      propTypesMisspellWarningShown = false;
	    }

	    function getDeclarationErrorAddendum() {
	      if (ReactCurrentOwner.current) {
	        var name = getComponentName(ReactCurrentOwner.current.type);

	        if (name) {
	          return '\n\nCheck the render method of `' + name + '`.';
	        }
	      }

	      return '';
	    }

	    function getSourceInfoErrorAddendum(source) {
	      if (source !== undefined) {
	        var fileName = source.fileName.replace(/^.*[\\\/]/, '');
	        var lineNumber = source.lineNumber;
	        return '\n\nCheck your code at ' + fileName + ':' + lineNumber + '.';
	      }

	      return '';
	    }

	    function getSourceInfoErrorAddendumForProps(elementProps) {
	      if (elementProps !== null && elementProps !== undefined) {
	        return getSourceInfoErrorAddendum(elementProps.__source);
	      }

	      return '';
	    }
	    /**
	     * Warn if there's no key explicitly set on dynamic arrays of children or
	     * object keys are not valid. This allows us to keep track of children between
	     * updates.
	     */


	    var ownerHasKeyUseWarning = {};

	    function getCurrentComponentErrorInfo(parentType) {
	      var info = getDeclarationErrorAddendum();

	      if (!info) {
	        var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;

	        if (parentName) {
	          info = "\n\nCheck the top-level render call using <" + parentName + ">.";
	        }
	      }

	      return info;
	    }
	    /**
	     * Warn if the element doesn't have an explicit key assigned to it.
	     * This element is in an array. The array could grow and shrink or be
	     * reordered. All children that haven't already been validated are required to
	     * have a "key" property assigned to it. Error statuses are cached so a warning
	     * will only be shown once.
	     *
	     * @internal
	     * @param {ReactElement} element Element that requires a key.
	     * @param {*} parentType element's parent's type.
	     */


	    function validateExplicitKey(element, parentType) {
	      if (!element._store || element._store.validated || element.key != null) {
	        return;
	      }

	      element._store.validated = true;
	      var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);

	      if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {
	        return;
	      }

	      ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a
	      // property, it may be the creator of the child that's responsible for
	      // assigning it a key.

	      var childOwner = '';

	      if (element && element._owner && element._owner !== ReactCurrentOwner.current) {
	        // Give the component that originally created this child.
	        childOwner = " It was passed a child from " + getComponentName(element._owner.type) + ".";
	      }

	      {
	        setCurrentlyValidatingElement$1(element);
	        error('Each child in a list should have a unique "key" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);
	        setCurrentlyValidatingElement$1(null);
	      }
	    }
	    /**
	     * Ensure that every element either is passed in a static location, in an
	     * array with an explicit keys property defined, or in an object literal
	     * with valid key property.
	     *
	     * @internal
	     * @param {ReactNode} node Statically passed child of any type.
	     * @param {*} parentType node's parent's type.
	     */


	    function validateChildKeys(node, parentType) {
	      if (typeof node !== 'object') {
	        return;
	      }

	      if (Array.isArray(node)) {
	        for (var i = 0; i < node.length; i++) {
	          var child = node[i];

	          if (isValidElement(child)) {
	            validateExplicitKey(child, parentType);
	          }
	        }
	      } else if (isValidElement(node)) {
	        // This element was passed in a valid location.
	        if (node._store) {
	          node._store.validated = true;
	        }
	      } else if (node) {
	        var iteratorFn = getIteratorFn(node);

	        if (typeof iteratorFn === 'function') {
	          // Entry iterators used to provide implicit keys,
	          // but now we print a separate warning for them later.
	          if (iteratorFn !== node.entries) {
	            var iterator = iteratorFn.call(node);
	            var step;

	            while (!(step = iterator.next()).done) {
	              if (isValidElement(step.value)) {
	                validateExplicitKey(step.value, parentType);
	              }
	            }
	          }
	        }
	      }
	    }
	    /**
	     * Given an element, validate that its props follow the propTypes definition,
	     * provided by the type.
	     *
	     * @param {ReactElement} element
	     */


	    function validatePropTypes(element) {
	      {
	        var type = element.type;

	        if (type === null || type === undefined || typeof type === 'string') {
	          return;
	        }

	        var propTypes;

	        if (typeof type === 'function') {
	          propTypes = type.propTypes;
	        } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.
	        // Inner props are checked in the reconciler.
	        type.$$typeof === REACT_MEMO_TYPE)) {
	          propTypes = type.propTypes;
	        } else {
	          return;
	        }

	        if (propTypes) {
	          // Intentionally inside to avoid triggering lazy initializers:
	          var name = getComponentName(type);
	          checkPropTypes(propTypes, element.props, 'prop', name, element);
	        } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {
	          propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:

	          var _name = getComponentName(type);

	          error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');
	        }

	        if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {
	          error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');
	        }
	      }
	    }
	    /**
	     * Given a fragment, validate that it can only be provided with fragment props
	     * @param {ReactElement} fragment
	     */


	    function validateFragmentProps(fragment) {
	      {
	        var keys = Object.keys(fragment.props);

	        for (var i = 0; i < keys.length; i++) {
	          var key = keys[i];

	          if (key !== 'children' && key !== 'key') {
	            setCurrentlyValidatingElement$1(fragment);
	            error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);
	            setCurrentlyValidatingElement$1(null);
	            break;
	          }
	        }

	        if (fragment.ref !== null) {
	          setCurrentlyValidatingElement$1(fragment);
	          error('Invalid attribute `ref` supplied to `React.Fragment`.');
	          setCurrentlyValidatingElement$1(null);
	        }
	      }
	    }

	    function createElementWithValidation(type, props, children) {
	      var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to
	      // succeed and there will likely be errors in render.

	      if (!validType) {
	        var info = '';

	        if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {
	          info += ' You likely forgot to export your component from the file ' + "it's defined in, or you might have mixed up default and named imports.";
	        }

	        var sourceInfo = getSourceInfoErrorAddendumForProps(props);

	        if (sourceInfo) {
	          info += sourceInfo;
	        } else {
	          info += getDeclarationErrorAddendum();
	        }

	        var typeString;

	        if (type === null) {
	          typeString = 'null';
	        } else if (Array.isArray(type)) {
	          typeString = 'array';
	        } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {
	          typeString = "<" + (getComponentName(type.type) || 'Unknown') + " />";
	          info = ' Did you accidentally export a JSX literal instead of a component?';
	        } else {
	          typeString = typeof type;
	        }

	        {
	          error('React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);
	        }
	      }

	      var element = createElement.apply(this, arguments); // The result can be nullish if a mock or a custom function is used.
	      // TODO: Drop this when these are no longer allowed as the type argument.

	      if (element == null) {
	        return element;
	      } // Skip key warning if the type isn't valid since our key validation logic
	      // doesn't expect a non-string/function type and can throw confusing errors.
	      // We don't want exception behavior to differ between dev and prod.
	      // (Rendering will throw with a helpful message and as soon as the type is
	      // fixed, the key warnings will appear.)


	      if (validType) {
	        for (var i = 2; i < arguments.length; i++) {
	          validateChildKeys(arguments[i], type);
	        }
	      }

	      if (type === exports.Fragment) {
	        validateFragmentProps(element);
	      } else {
	        validatePropTypes(element);
	      }

	      return element;
	    }

	    var didWarnAboutDeprecatedCreateFactory = false;

	    function createFactoryWithValidation(type) {
	      var validatedFactory = createElementWithValidation.bind(null, type);
	      validatedFactory.type = type;
	      {
	        if (!didWarnAboutDeprecatedCreateFactory) {
	          didWarnAboutDeprecatedCreateFactory = true;
	          warn('React.createFactory() is deprecated and will be removed in ' + 'a future major release. Consider using JSX ' + 'or use React.createElement() directly instead.');
	        } // Legacy hook: remove it


	        Object.defineProperty(validatedFactory, 'type', {
	          enumerable: false,
	          get: function () {
	            warn('Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.');
	            Object.defineProperty(this, 'type', {
	              value: type
	            });
	            return type;
	          }
	        });
	      }
	      return validatedFactory;
	    }

	    function cloneElementWithValidation(element, props, children) {
	      var newElement = cloneElement.apply(this, arguments);

	      for (var i = 2; i < arguments.length; i++) {
	        validateChildKeys(arguments[i], newElement.type);
	      }

	      validatePropTypes(newElement);
	      return newElement;
	    }

	    {
	      try {
	        var frozenObject = Object.freeze({});
	        /* eslint-disable no-new */

	        new Map([[frozenObject, null]]);
	        new Set([frozenObject]);
	        /* eslint-enable no-new */
	      } catch (e) {}
	    }
	    var createElement$1 = createElementWithValidation;
	    var cloneElement$1 = cloneElementWithValidation;
	    var createFactory = createFactoryWithValidation;
	    var Children = {
	      map: mapChildren,
	      forEach: forEachChildren,
	      count: countChildren,
	      toArray: toArray,
	      only: onlyChild
	    };
	    exports.Children = Children;
	    exports.Component = Component;
	    exports.PureComponent = PureComponent;
	    exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals;
	    exports.cloneElement = cloneElement$1;
	    exports.createContext = createContext;
	    exports.createElement = createElement$1;
	    exports.createFactory = createFactory;
	    exports.createRef = createRef;
	    exports.forwardRef = forwardRef;
	    exports.isValidElement = isValidElement;
	    exports.lazy = lazy;
	    exports.memo = memo;
	    exports.useCallback = useCallback;
	    exports.useContext = useContext;
	    exports.useDebugValue = useDebugValue;
	    exports.useEffect = useEffect;
	    exports.useImperativeHandle = useImperativeHandle;
	    exports.useLayoutEffect = useLayoutEffect;
	    exports.useMemo = useMemo;
	    exports.useReducer = useReducer;
	    exports.useRef = useRef;
	    exports.useState = useState;
	    exports.version = ReactVersion;
	  })();
	}
	}(react_development));

	{
	  react.exports = react_development;
	}

	/** @jsx React.createElement */

	class Navs extends react.exports.Component {
	  constructor(props) {
	    super(props);
	    this.firstNavValue = this.firstNavValue.bind(this);
	    this.addChildProps = this.addChildProps.bind(this);
	    this.getContent = this.getContent.bind(this);
	    const tabsetId = this.newId();
	    const selected = props.selected ? props.selected : this.firstNavValue(props.children);
	    const children = this.addChildProps(props.children, tabsetId, selected);
	    const content = this.getContent(children);
	    this.state = {
	      tabsetId,
	      selected,
	      children,
	      content
	    };
	  }

	  render() {
	    const props = this.props;
	    const ulClass = `nav nav-${props.type} ${props.id ? 'shiny-tab-input' : ''}`;
	    return /*#__PURE__*/React.createElement(react.exports.Fragment, null, /*#__PURE__*/React.createElement("ul", {
	      id: props.id,
	      className: ulClass,
	      role: "tablist",
	      "data-tabsetid": this.state.tabsetId
	    }, this.state.children), /*#__PURE__*/React.createElement("div", {
	      className: "tab-content",
	      "data-tabsetid": this.state.tabsetId
	    }, props.header, this.state.content, props.footer));
	  }

	  firstNavValue(navs) {
	    for (var i = 0; i < navs.length; i++) {
	      let nav = navs[i];

	      if (nav.type.name === 'Nav') {
	        return nav.props.value;
	      }

	      if (nav.type.name === 'NavMenu') {
	        this.firstNavValue(nav);
	      }
	    }
	  }

	  getContent(navs) {
	    const result = [];
	    react.exports.Children.forEach(navs, x => {
	      if (x.type.name === 'NavMenu') {
	        result.push(this.getContent(x.props.children));
	      }

	      if (x.type.name === 'Nav') {
	        const className = `tab-pane ${x.props.selected === x.props.value ? 'active' : ''}`;
	        result.push( /*#__PURE__*/React.createElement("div", {
	          id: x.props.id,
	          role: "tabpanel",
	          className: className,
	          key: x.props.id
	        }, x.props.children));
	      }
	    });
	    return result;
	  }

	  addChildProps(children, tabsetId, selected) {
	    var self = this;
	    return react.exports.Children.map(children, (x, idx) => {
	      if (x.type.name === 'NavMenu') {
	        const tabsetId = self.newId();
	        const children_ = self.addChildProps(x.props.children, tabsetId, selected);
	        return react.exports.cloneElement(x, {
	          tabsetId,
	          selected
	        }, children_);
	      }

	      const id = `tab-${tabsetId}-${idx + 1}`;
	      return react.exports.cloneElement(x, {
	        id,
	        selected
	      });
	    });
	  }

	  newId() {
	    return Math.floor(1000 + Math.random() * 9000);
	  }

	}

	class NavsCard extends Navs {
	  render() {
	    const props = this.props;
	    const ulClass = `nav nav-${props.type} card-header-${props.type} ${props.id ? 'shiny-tab-input' : ''}`;
	    const ulTag = /*#__PURE__*/React.createElement("ul", {
	      id: props.id,
	      className: ulClass,
	      role: "tablist",
	      "data-tabsetid": this.state.tabsetId
	    }, this.state.children);
	    const divTag = /*#__PURE__*/React.createElement("div", {
	      className: "tab-content",
	      "data-tabsetid": this.state.tabsetId
	    }, props.header, this.state.content, props.footer);
	    const below = props.placement === "below";
	    return /*#__PURE__*/React.createElement("div", {
	      className: "card"
	    }, below ? null : /*#__PURE__*/React.createElement("div", {
	      className: "card-header"
	    }, " ", ulTag, " "), /*#__PURE__*/React.createElement("div", {
	      className: "card-body"
	    }, " ", divTag, " "), below ? /*#__PURE__*/React.createElement("div", {
	      className: "card-footer"
	    }, " ", ulTag, " ") : null);
	  }

	}

	class NavsBar extends Navs {
	  render() {
	    const props = this.props;
	    const collapseId = `#navbar-collapse-${this.newId()}`;
	    const collapseBtn = /*#__PURE__*/React.createElement("button", {
	      type: "button",
	      className: "navbar-toggle collapsed",
	      "data-toggle": "collapse",
	      "data-bs-toggle": "collapse",
	      "data-target": collapseId,
	      "data-bs-target": collapseId
	    }, /*#__PURE__*/React.createElement("span", {
	      className: "sr-only"
	    }, "Toggle navigation"), /*#__PURE__*/React.createElement("span", {
	      className: "icon-bar"
	    }), /*#__PURE__*/React.createElement("span", {
	      className: "icon-bar"
	    }), /*#__PURE__*/React.createElement("span", {
	      className: "icon-bar"
	    }));
	    const navbarHeader = /*#__PURE__*/React.createElement("div", {
	      className: "navbar-header"
	    }, props.collapse ? collapseBtn : null, /*#__PURE__*/React.createElement("span", {
	      className: "navbar-brand"
	    }, props.title));
	    const ulTag = /*#__PURE__*/React.createElement("ul", {
	      id: props.id,
	      className: `nav navbar-nav ${props.id ? 'shiny-tab-input' : ''}`,
	      role: "tablist",
	      "data-tabsetid": this.state.tabsetId
	    }, this.state.children);
	    const containerDiv = /*#__PURE__*/React.createElement("div", {
	      className: `container${props.fluid ? '-fluid' : ''}`
	    }, navbarHeader, collapseId ? /*#__PURE__*/React.createElement("div", {
	      className: "collapse navbar-collapse",
	      id: collapseId
	    }, ulTag) : ulTag);
	    const navbarClass = `navbar navbar-default ${props.inverse ? 'navbar-inverse' : ''} ${props.position ? 'navbar-' + props.position : ''}`; // TODO: re-implement this...
	    // https://github.com/rstudio/bslib/blob/d77f5ce61003307e7a6dc3c211e7ac6ee6896582/R/navs-legacy.R#L225

	    return /*#__PURE__*/React.createElement(react.exports.Fragment, null, /*#__PURE__*/React.createElement("nav", {
	      className: navbarClass,
	      role: "navigation",
	      ref: el => el && props.bg && el.style.setProperty("background-color", props.bg, "important")
	    }, containerDiv), /*#__PURE__*/React.createElement("div", {
	      className: "tab-content",
	      "data-tabsetid": this.state.tabsetId
	    }, props.header, this.state.content, props.footer));
	  }

	}

	function Nav(props) {
	  return /*#__PURE__*/React.createElement("li", {
	    key: props.id,
	    className: props.selected === props.value ? 'active' : ''
	  }, /*#__PURE__*/React.createElement("a", {
	    href: '#' + props.id,
	    role: "tab",
	    "data-toggle": "tab",
	    "data-value": props.value
	  }, props.title));
	}

	function NavSpacer(props) {
	  return /*#__PURE__*/React.createElement("div", {
	    className: "bslib-nav-spacer"
	  });
	}

	function NavItem(props) {
	  return /*#__PURE__*/React.createElement("li", {
	    className: "form-inline",
	    key: props.id
	  }, props.children);
	}

	function NavMenu(props) {
	  const toggleClass = `dropdown-toggle${props.selected === props.value ? ' active' : ''}`;
	  const ulClass = `dropdown-menu${props.align === "right" ? ' dropdown-menu-right' : ''}`;
	  return /*#__PURE__*/React.createElement("li", {
	    className: "dropdown",
	    key: props.tabsetId
	  }, /*#__PURE__*/React.createElement("a", {
	    className: toggleClass,
	    "data-toggle": "dropdown",
	    href: "#",
	    role: "button",
	    "aria-expanded": "false"
	  }, props.title), /*#__PURE__*/React.createElement("ul", {
	    className: ulClass,
	    "data-tabsetid": props.tabsetId
	  }, props.children));
	}

	exports.Nav = Nav;
	exports.NavItem = NavItem;
	exports.NavMenu = NavMenu;
	exports.NavSpacer = NavSpacer;
	exports.Navs = Navs;
	exports.NavsBar = NavsBar;
	exports.NavsCard = NavsCard;

	Object.defineProperty(exports, '__esModule', { value: true });

})));
//# sourceMappingURL=navs.min.js.map

shiny/www/shared/strftime/strftime-min.js METASEP
(function(){function k(b,a){s[b]||(typeof console!=="undefined"&&typeof console.warn=="function"&&console.warn("[WARNING] "+b+" is deprecated and will be removed in version 1.0. Instead, use `"+a+"`."),s[b]=!0)}function t(b){b.localize=i.localize.bind(i);b.timezone=i.timezone.bind(i);b.utc=i.utc.bind(i)}function r(b,a,e){a&&a.days&&(e=a,a=void 0);e&&k("`"+g+"(format, [date], [locale])`","var s = "+g+".localize(locale); s(format, [date])");return(e?i.localize(e):i)(b,a)}function u(b,a,e){e?k("`"+g+
".strftime(format, [date], [locale])`","var s = "+g+".localize(locale); s(format, [date])"):k("`"+g+".strftime(format, [date])`",g+"(format, [date])");return(e?i.localize(e):i)(b,a)}function p(b,a,e){function g(b,c,h,a){for(var d="",f=null,e=!1,i=b.length,j=!1,o=0;o<i;o++){var n=b.charCodeAt(o);if(e===!0)if(n===45)f="";else if(n===95)f=" ";else if(n===48)f="0";else if(n===58)j&&typeof console!=="undefined"&&typeof console.warn=="function"&&console.warn("[WARNING] detected use of unsupported %:: or %::: modifiers to strftime"),
j=!0;else{switch(n){case 65:d+=h.days[c.getDay()];break;case 66:d+=h.months[c.getMonth()];break;case 67:d+=l(Math.floor(c.getFullYear()/100),f);break;case 68:d+=g(h.formats.D,c,h,a);break;case 70:d+=g(h.formats.F,c,h,a);break;case 72:d+=l(c.getHours(),f);break;case 73:d+=l(v(c.getHours()),f);break;case 76:d+=Math.floor(a%1E3)>99?Math.floor(a%1E3):Math.floor(a%1E3)>9?"0"+Math.floor(a%1E3):"00"+Math.floor(a%1E3);break;case 77:d+=l(c.getMinutes(),f);break;case 80:d+=c.getHours()<12?h.am:h.pm;break;case 82:d+=
g(h.formats.R,c,h,a);break;case 83:d+=l(c.getSeconds(),f);break;case 84:d+=g(h.formats.T,c,h,a);break;case 85:d+=l(w(c,"sunday"),f);break;case 87:d+=l(w(c,"monday"),f);break;case 88:d+=g(h.formats.X,c,h,a);break;case 89:d+=c.getFullYear();break;case 90:k&&m===0?d+="GMT":(f=c.toString().match(/\(([\w\s]+)\)/),d+=f&&f[1]||"");break;case 97:d+=h.shortDays[c.getDay()];break;case 98:d+=h.shortMonths[c.getMonth()];break;case 99:d+=g(h.formats.c,c,h,a);break;case 100:d+=l(c.getDate(),f);break;case 101:d+=
l(c.getDate(),f==null?" ":f);break;case 104:d+=h.shortMonths[c.getMonth()];break;case 106:f=new Date(c.getFullYear(),0,1);f=Math.ceil((c.getTime()-f.getTime())/864E5);d+=f>99?f:f>9?"0"+f:"00"+f;break;case 107:d+=l(c.getHours(),f==null?" ":f);break;case 108:d+=l(v(c.getHours()),f==null?" ":f);break;case 109:d+=l(c.getMonth()+1,f);break;case 110:d+="\n";break;case 111:d+=String(c.getDate())+A(c.getDate());break;case 112:d+=c.getHours()<12?h.AM:h.PM;break;case 114:d+=g(h.formats.r,c,h,a);break;case 115:d+=
Math.floor(a/1E3);break;case 116:d+="\t";break;case 117:f=c.getDay();d+=f===0?7:f;break;case 118:d+=g(h.formats.v,c,h,a);break;case 119:d+=c.getDay();break;case 120:d+=g(h.formats.x,c,h,a);break;case 121:d+=(""+c.getFullYear()).slice(2);break;case 122:k&&m===0?d+=j?"+00:00":"+0000":(f=m!==0?m/6E4:-c.getTimezoneOffset(),e=j?":":"",n=Math.abs(f%60),d+=(f<0?"-":"+")+l(Math.floor(Math.abs(f/60)))+e+l(n));break;default:d+=b[o]}f=null;e=!1}else n===37?e=!0:d+=b[o]}return d}var i=b||x,m=a||0,k=e||!1,j=0,
q,b=function(b,c){var a;c?(a=c.getTime(),k&&(c=new Date(c.getTime()+(c.getTimezoneOffset()||0)*6E4+m))):(a=Date.now(),a>j?(j=a,q=new Date(j),a=j,k&&(q=new Date(j+(q.getTimezoneOffset()||0)*6E4+m))):a=j,c=q);return g(b,c,i,a)};b.localize=function(a){return new p(a||i,m,k)};b.timezone=function(a){var c=m,b=k,e=typeof a;if(e==="number"||e==="string")b=!0,e==="string"?(c=a[0]==="-"?-1:1,e=parseInt(a.slice(1,3),10),a=parseInt(a.slice(3,5),10),c=c*(60*e+a)*6E4):e==="number"&&(c=a*6E4);return new p(i,c,
b)};b.utc=function(){return new p(i,m,!0)};return b}function l(b,a){if(a===""||b>9)return b;a==null&&(a="0");return a+b}function v(b){if(b===0)return 12;else if(b>12)return b-12;return b}function w(b,a){var a=a||"sunday",e=b.getDay();a==="monday"&&(e===0?e=6:e--);var g=Date.UTC(b.getFullYear(),0,1),i=Date.UTC(b.getFullYear(),b.getMonth(),b.getDate());return Math.floor((Math.floor((i-g)/864E5)+7-e)/7)}function A(b){var a=b%10;b%=100;if(b>=11&&b<=13||a===0||a>=4)return"th";switch(a){case 1:return"st";
case 2:return"nd";case 3:return"rd"}}var x={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],AM:"AM",PM:"PM",am:"am",pm:"pm",formats:{D:"%m/%d/%y",F:"%Y-%m-%d",R:"%H:%M",T:"%H:%M:%S",X:"%T",c:"%a %b %d %X %Y",r:"%I:%M:%S %p",
v:"%e-%b-%Y",x:"%D"}},i=new p(x,0,!1),y=typeof module!=="undefined",j;y?(j=module.exports=r,j.strftime=u):(j=function(){return this||(0,eval)("this")}(),j.strftime=r);var g=y?"require('strftime')":"strftime",s={};j.strftimeTZ=function(b,a,e,j){if((typeof e=="number"||typeof e=="string")&&j==null)j=e,e=void 0;e?k("`"+g+".strftimeTZ(format, date, locale, tz)`","var s = "+g+".localize(locale).timezone(tz); s(format, [date])` or `var s = "+g+".localize(locale); s.timezone(tz)(format, [date])"):k("`"+
g+".strftimeTZ(format, date, tz)`","var s = "+g+".timezone(tz); s(format, [date])` or `"+g+".timezone(tz)(format, [date])");return(e?i.localize(e):i).timezone(j)(b,a)};j.strftimeUTC=function(b,a,e){e?k("`"+g+".strftimeUTC(format, date, locale)`","var s = "+g+".localize(locale).utc(); s(format, [date])"):k("`"+g+".strftimeUTC(format, [date])`","var s = "+g+".utc(); s(format, [date])");return(e?z.localize(e):z)(b,a)};j.localizedStrftime=function(b){k("`"+g+".localizedStrftime(locale)`",g+".localize(locale)");
return i.localize(b)};t(r);t(u);var z=i.utc();if(typeof Date.now!=="function")Date.now=function(){return+new Date}})();

shiny/www/shared/shiny_scss/shiny.scss METASEP
// DEFAULTS
$shiny-disconnected-bg:             #999 !default;
$shiny-table-na:                    #909090 !default;
$shiny-error-color:                 red !default;
$shiny-error-validated-color:       #888 !default;
$shiny-progress-text-bg-color:      #eef8ff !default; // TODO: what is this actually for?
$shiny-input-width:                 300px !default;
$shiny-input-panel-bg:              #f5f5f5 !default;
$shiny-input-panel-border:          1px solid #e3e3e3 !default;
$shiny-input-panel-border-radius:   2px !default;
$shiny-text-output-border-radius:   null !default;
$notification-bg-color:             #e8e8e8 !default;
$notification-color:                #333 !default;
$notification-border:               1px solid #ccc !default;
$notification-border-radius:        3px !default;
$notification-padding:              10px 8px 10px 10px !default;
$notification-message-bg:           #d9edf7 !default;
$notification-message-color:        #31708f !default;
$notification-message-border:       1px solid #bce8f1 !default;
$notification-warning-bg:           #fcf8e3 !default;
$notification-warning-color:        #8a6d3b !default;
$notification-warning-border:       1px solid #faebcc !default;
$notification-error-bg:             #f2dede !default;
$notification-error-color:          #a94442 !default;
$notification-error-border:         1px solid #ebccd1 !default;
$notification-close-color:          #444 !default;
$notification-close-hover-color:    #000 !default;
$notification-content-action-color: #337ab7 !default;
$datepicker-disabled-color:         #aaa !default;
$shiny-file-active-shadow:          inset 0 1px 1px rgba(black, .075), 0 0 8px rgba(102, 175, 233, .6) !default;
$shiny-file-over-shadow:            inset 0 1px 1px rgba(black, .075), 0 0 8px rgba(76, 174, 76, .6) !default;

// DECLARATIONS
@mixin table-padding($top: null, $right: null, $bottom: null, $left: null) {
  > thead, > tbody, > tfoot {
    > tr {
      > th, > td {
        padding-top: $top;
        padding-right: $right;
        padding-bottom: $bottom;
        padding-left: $left;
      }
    }
  }
}

// Both BS3 and BS4 define a border radius mixin, but just in case
// we're trying to compile this without bootstrapSass
@mixin border-radius-shim($radius) {
  @if mixin-exists("border-radius") {
    @include border-radius($radius);
  } @else {
    border-radius: $radius;
  }
}


// RULES

/* This is necessary so that an empty verbatimTextOutput slot
is the same height as a non-empty one (only important when
* placeholder = TRUE) */
pre.shiny-text-output:empty::before {
  content: " ";
}

pre.shiny-text-output.noplaceholder:empty {
  margin: 0;
  padding: 0;
  border-width: 0;
  height: 0;
}

/* Some browsers (like Safari) will wrap text in <pre> tags with Bootstrap's
   CSS. This changes the behavior to not wrap.
*/
pre.shiny-text-output {
  word-wrap: normal;
  @include border-radius-shim($shiny-text-output-border-radius);
}

.shiny-image-output, .shiny-plot-output {
  img.shiny-scalable {
    max-width: 100%;
    max-height: 100%;
  }
}

#shiny-disconnected-overlay {
  position: fixed;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  background-color: $shiny-disconnected-bg;
  opacity: 0.5;
  overflow: hidden;
  z-index: 99998;
  pointer-events: none;
}

.table.shiny-table {
  @include table-padding($left: 12px, $right: 12px);
}

.shiny-table {
  &.spacing {
    &-xs {
      @include table-padding($top: 3px, $bottom: 3px);
    }
    &-s {
      @include table-padding($top: 5px, $bottom: 5px);
    }
    &-m {
      @include table-padding($top: 8px, $bottom: 8px);
    }
    &-l {
      @include table-padding($top: 10px, $bottom: 10px);
    }
  }
  .NA {
    color: $shiny-table-na;
  }
}

.shiny-output-error {
  color: $shiny-error-color;
  white-space: pre-wrap;
  &:before {
    content: 'Error: ';
    font-weight: bold;
  }
  &-validation {
    color: $shiny-error-validated-color;
  }
  &-validation:before {
    content: '';
    font-weight: inherit;
  }
}


/* Work around MS Edge transition bug (issue #1637) */
@supports (-ms-ime-align:auto) {
  .shiny-bound-output {
    transition: 0;
  }
}

.recalculating {
  opacity: 0.3;
  transition: opacity 250ms ease 500ms;
}

.slider-animate-container {
  text-align: right;
  margin-top: -9px;
}
.slider-animate-button {
  opacity: 0.5;
  .pause {
    display: none;
  }
  &.playing .pause {
    display: inline;
  }
  .play {
    display: inline;
  }
  &.playing .play {
    display: none;
  }
}

.progress {
  &.shiny-file-input-progress {
    visibility: hidden;
    .progress-bar.bar-danger {
      transition: none;
    }
  }
}

/* Make sure the filename doesn't extend past the bounds of the container */
.shiny-input-container input[type=file] {
  overflow: hidden;
  max-width: 100%;
}

/* Old-style progress */
.shiny-progress-container {
  position: fixed;
  top: 0px;
  width: 100%;
  /* Make sure it draws above all Bootstrap components */
  z-index: 2000;
}

// TODO: should respect more Bootstrap Sass vars?
.shiny-progress {
  .progress {
    position: absolute;
    width: 100%;
    top: 0px;
    height: 3px;
    margin: 0px;
  }
  .bar {
    opacity: 0.6;
    transition-duration: 250ms;
  }
  .progress-text {
    position: absolute;
    right: 10px;
    width: 240px;
    background-color: $shiny-progress-text-bg-color;
    margin: 0px;
    padding: 2px 3px;
    opacity: 0.85;
    .progress-message {
      padding: 0px 3px;
      font-weight: bold;
      font-size: 90%;
    }
    .progress-detail {
      padding: 0px 3px;
      font-size: 80%;
    }
  }
}

/* New-style progress (uses notifications API) */
.shiny-progress-notification {
  .progress {
    margin-bottom: 5px;
    height: 10px;
  }
  .progress-text {
    .progress-message {
      font-weight: bold;
      font-size: 90%;
    }
    .progress-detail {
      font-size: 80%;
    }
  }
}

.shiny-label-null {
  display: none;
}

.crosshair {
  cursor: crosshair;
}

.grabbable {
  cursor: grab;
  cursor: -moz-grab;
  cursor: -webkit-grab;
}

.grabbing {
  cursor: grabbing;
  cursor: -moz-grabbing;
  cursor: -webkit-grabbing;
}

.ns-resize {
  cursor: ns-resize;
}

.ew-resize {
  cursor: ew-resize;
}

.nesw-resize {
  cursor: nesw-resize;
}

.nwse-resize {
  cursor: nwse-resize;
}


/* Workaround for Qt, which doesn't use font fallbacks */
.qt pre, .qt code {
  font-family: monospace !important;
}

/* Workaround for Qt 5, which draws its own margins around checks and radios;
   overrides the top margin on these elements set by Bootstrap */
.qt5 .radio input[type="radio"],
.qt5 .checkbox input[type="checkbox"] {
  margin-top: 0px;
}

/* Workaround for radio buttons and checkboxes not showing on Qt on Mac.
   This occurs in the RStudio IDE on macOS 11.5.
   https://github.com/rstudio/shiny/issues/3484
*/
.qtmac input[type="radio"],
.qtmac input[type="checkbox"] {
  zoom: 1.0000001;
}

/* consistency with bootstrap.css for selectize.js */
.selectize-control {
  margin-bottom: 10px;
}

.shiny-frame {
  border: none;
}

.shiny-flow-layout {
  > div {
    display: inline-block;
    vertical-align: top;
    padding-right: 12px;
    width: 220px;
  }
}
.shiny-split-layout {
  width: 100%;
  white-space: nowrap;
  > div {
    display: inline-block;
    vertical-align: top;
    box-sizing: border-box;
    overflow: auto;
  }
}

.shiny-input-panel {
  padding: 6px 8px;
  margin-top: 6px;
  margin-bottom: 6px;
  background-color: $shiny-input-panel-bg;
  border: $shiny-input-panel-border;
  @include border-radius-shim($shiny-input-panel-border-radius);
}

/* For checkbox groups and radio buttons, bring the options closer to label,
   if label is present. */
.shiny-input-checkboxgroup label ~ .shiny-options-group,
.shiny-input-radiogroup label ~ .shiny-options-group {
  margin-top: -10px;
}

/* Checkbox groups and radios that are inline need less negative margin to
   separate from label. */
.shiny-input-checkboxgroup.shiny-input-container-inline label ~ .shiny-options-group,
.shiny-input-radiogroup.shiny-input-container-inline label ~ .shiny-options-group {
  margin-top: -1px;
}

/* Limit the width of inputs in the general case. */
.shiny-input-container:not(.shiny-input-container-inline) {
  width: $shiny-input-width;
  max-width: 100%;
}

/* Don't limit the width of inputs in a sidebar. */
.well .shiny-input-container {
  width: auto;
}

/* Width of non-selectize select inputs */
.shiny-input-container > div > select:not(.selectized) {
  width: 100%;
}


#shiny-notification-panel {
  position: fixed;
  bottom: 0;
  right: 0;
  background-color: rgba(0,0,0,0);
  padding: 2px;
  width: 250px;
  z-index: 99999;
}

.shiny-notification {
  background-color: $notification-bg-color;
  color: $notification-color;
  border: $notification-border;
  @include border-radius-shim($notification-border-radius);
  opacity: 0.85;
  padding: $notification-padding;
  margin: 2px;
  &-message {
    color: $notification-message-color;
    background-color: $notification-message-bg;
    border: $notification-message-border;
  }
  &-warning {
    color: $notification-warning-color;
    background-color: $notification-warning-bg;
    border: $notification-warning-border;
  }
  &-error {
    color: $notification-error-color;
    background-color: $notification-error-bg;
    border: $notification-error-border;
  }
  &-close {
    float: right;
    font-weight: bold;
    font-size: 18px;
    bottom: 9px;
    position: relative;
    padding-left: 4px;
    color: $notification-close-color;
    cursor: default;
  }
  &-close:hover {
    color: $notification-close-hover-color;
  }
  &-content-action a {
    color: $notification-content-action-color;
    text-decoration: underline;
    font-weight: bold;
  }
}

.shiny-file-input {
  &-active {
    box-shadow: $shiny-file-active-shadow;
  }
  &-over {
    box-shadow: $shiny-file-over-shadow;
  }
}

/* Overrides bootstrap-datepicker3.css styling for invalid date ranges.
   See https://github.com/rstudio/shiny/issues/2042 for details. */
.datepicker table tbody tr td.disabled,
.datepicker table tbody tr td.disabled:hover,
.datepicker table tbody tr td span.disabled,
.datepicker table tbody tr td span.disabled:hover {
  color: $datepicker-disabled-color;
  cursor: not-allowed;
}

/* Hidden tabPanels */
.nav-hidden {
  /* override anything bootstrap sets for `.nav` */
  display: none !important;
}

shiny/www/shared/shiny_scss/bootstrap.scss METASEP
$bg: $body-bg !default;

$fg: null !default;
$theme-colors: null !default;
@if variable-exists('text-color') {
  $fg: $text-color !default; // BS3
  $theme-colors: ("primary": $brand-primary, "info": $brand-info, "warning": $brand-warning, "danger": $brand-danger) !default;
} @else {
  $fg: $body-color !default; // BS4
}
// No $border-width, $border-color, or $border-radius in BS3
$border-width: 1px !default;
$border-color: mix($bg, $fg, 70%) !default;
$border-radius: $border-radius-base !default;

$shiny-disconnected-bg:             mix($bg, $fg, 58%) !default;
$shiny-table-na:                    mix($bg, $fg, 54%) !default;
$shiny-error-validated-color:       mix($bg, $fg, 50%) !default;
// TODO: what should this be? mix of primary and bg?
$shiny-progress-text-bg-color:      #eef8ff !default;
$shiny-input-panel-bg:              mix($bg, $fg, 96%) !default;
$shiny-input-panel-border:          $border-width solid $border-color !default;
$shiny-input-panel-border-radius:   $border-radius !default;
$shiny-text-output-border-radius:   $border-radius !default;
$notification-bg-color:             mix($bg, $fg, 90%) !default;
$notification-color:                $fg !default;
$notification-border:               $border-width solid $border-color !default;
$notification-border-radius:        $border-radius !default;
$notification-message-bg:           mix($bg, map-get($theme-colors, "info"), 90%) !default;
$notification-message-color:        mix($fg, map-get($theme-colors, "info"), 10%) !default;
$notification-message-border:       $border-width solid mix($bg, map-get($theme-colors, "info"), 53%) !default;
$notification-warning-bg:           mix($bg, map-get($theme-colors, "warning"), 90%) !default;
$notification-warning-color:        mix($fg, map-get($theme-colors, "warning"), 10%) !default;
$notification-warning-border:       $border-width solid mix($bg, map-get($theme-colors, "warning"), 71%) !default;
$notification-error-bg:             mix($bg, map-get($theme-colors, "danger"), 90%) !default;
$notification-error-color:          mix($fg, map-get($theme-colors, "danger"), 10%) !default;
$notification-error-border:         $border-width solid mix($bg, map-get($theme-colors, "danger"), 79%) !default;
$notification-close-color:          mix($bg, $fg, 20%) !default;
$notification-close-hover-color:    $fg !default;
$notification-content-action-color: map-get($theme-colors, "primary") !default;
$datepicker-disabled-color:         $dropdown-link-disabled-color !default;

// I don't think BS3 has a file input box shadow setting
@if variable-exists('custom-file-focus-box-shadow') {
  $shiny-file-active-shadow: $custom-file-focus-box-shadow !default;
}

// TODO: should this be changed to danger?
//$shiny-error-color:                 red !default;

shiny/www/shared/jqueryui/jquery-ui.theme.min.css METASEP
/*! jQuery UI - v1.12.1 - 2016-09-14
* http://jqueryui.com
* Copyright jQuery Foundation and other contributors; Licensed MIT */

.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #c5c5c5}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#2b2b2b;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #003eff;background:#007fff;font-weight:normal;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#003eff;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-checked{border:1px solid #dad55e;background:#fffa90}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_555555_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_777620_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_777777_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.003;filter:Alpha(Opacity=.3)}.ui-widget-shadow{-webkit-box-shadow:0 0 5px #666;box-shadow:0 0 5px #666}
shiny/www/shared/jqueryui/jquery-ui.theme.css METASEP
/*!
 * jQuery UI CSS Framework 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 *
 * http://api.jqueryui.com/category/theming/
 *
 * To view and modify this theme, visit http://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=Alpha(Opacity%3D30)&opacityFilterOverlay=Alpha(Opacity%3D30)&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6
 */


/* Component containers
----------------------------------*/
.ui-widget {
	font-family: Arial,Helvetica,sans-serif;
	font-size: 1em;
}
.ui-widget .ui-widget {
	font-size: 1em;
}
.ui-widget input,
.ui-widget select,
.ui-widget textarea,
.ui-widget button {
	font-family: Arial,Helvetica,sans-serif;
	font-size: 1em;
}
.ui-widget.ui-widget-content {
	border: 1px solid #c5c5c5;
}
.ui-widget-content {
	border: 1px solid #dddddd;
	background: #ffffff;
	color: #333333;
}
.ui-widget-content a {
	color: #333333;
}
.ui-widget-header {
	border: 1px solid #dddddd;
	background: #e9e9e9;
	color: #333333;
	font-weight: bold;
}
.ui-widget-header a {
	color: #333333;
}

/* Interaction states
----------------------------------*/
.ui-state-default,
.ui-widget-content .ui-state-default,
.ui-widget-header .ui-state-default,
.ui-button,

/* We use html here because we need a greater specificity to make sure disabled
works properly when clicked or hovered */
html .ui-button.ui-state-disabled:hover,
html .ui-button.ui-state-disabled:active {
	border: 1px solid #c5c5c5;
	background: #f6f6f6;
	font-weight: normal;
	color: #454545;
}
.ui-state-default a,
.ui-state-default a:link,
.ui-state-default a:visited,
a.ui-button,
a:link.ui-button,
a:visited.ui-button,
.ui-button {
	color: #454545;
	text-decoration: none;
}
.ui-state-hover,
.ui-widget-content .ui-state-hover,
.ui-widget-header .ui-state-hover,
.ui-state-focus,
.ui-widget-content .ui-state-focus,
.ui-widget-header .ui-state-focus,
.ui-button:hover,
.ui-button:focus {
	border: 1px solid #cccccc;
	background: #ededed;
	font-weight: normal;
	color: #2b2b2b;
}
.ui-state-hover a,
.ui-state-hover a:hover,
.ui-state-hover a:link,
.ui-state-hover a:visited,
.ui-state-focus a,
.ui-state-focus a:hover,
.ui-state-focus a:link,
.ui-state-focus a:visited,
a.ui-button:hover,
a.ui-button:focus {
	color: #2b2b2b;
	text-decoration: none;
}

.ui-visual-focus {
	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
}
.ui-state-active,
.ui-widget-content .ui-state-active,
.ui-widget-header .ui-state-active,
a.ui-button:active,
.ui-button:active,
.ui-button.ui-state-active:hover {
	border: 1px solid #003eff;
	background: #007fff;
	font-weight: normal;
	color: #ffffff;
}
.ui-icon-background,
.ui-state-active .ui-icon-background {
	border: #003eff;
	background-color: #ffffff;
}
.ui-state-active a,
.ui-state-active a:link,
.ui-state-active a:visited {
	color: #ffffff;
	text-decoration: none;
}

/* Interaction Cues
----------------------------------*/
.ui-state-highlight,
.ui-widget-content .ui-state-highlight,
.ui-widget-header .ui-state-highlight {
	border: 1px solid #dad55e;
	background: #fffa90;
	color: #777620;
}
.ui-state-checked {
	border: 1px solid #dad55e;
	background: #fffa90;
}
.ui-state-highlight a,
.ui-widget-content .ui-state-highlight a,
.ui-widget-header .ui-state-highlight a {
	color: #777620;
}
.ui-state-error,
.ui-widget-content .ui-state-error,
.ui-widget-header .ui-state-error {
	border: 1px solid #f1a899;
	background: #fddfdf;
	color: #5f3f3f;
}
.ui-state-error a,
.ui-widget-content .ui-state-error a,
.ui-widget-header .ui-state-error a {
	color: #5f3f3f;
}
.ui-state-error-text,
.ui-widget-content .ui-state-error-text,
.ui-widget-header .ui-state-error-text {
	color: #5f3f3f;
}
.ui-priority-primary,
.ui-widget-content .ui-priority-primary,
.ui-widget-header .ui-priority-primary {
	font-weight: bold;
}
.ui-priority-secondary,
.ui-widget-content .ui-priority-secondary,
.ui-widget-header .ui-priority-secondary {
	opacity: .7;
	filter:Alpha(Opacity=70); /* support: IE8 */
	font-weight: normal;
}
.ui-state-disabled,
.ui-widget-content .ui-state-disabled,
.ui-widget-header .ui-state-disabled {
	opacity: .35;
	filter:Alpha(Opacity=35); /* support: IE8 */
	background-image: none;
}
.ui-state-disabled .ui-icon {
	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
}

/* Icons
----------------------------------*/

/* states and images */
.ui-icon {
	width: 16px;
	height: 16px;
}
.ui-icon,
.ui-widget-content .ui-icon {
	background-image: url("images/ui-icons_444444_256x240.png");
}
.ui-widget-header .ui-icon {
	background-image: url("images/ui-icons_444444_256x240.png");
}
.ui-state-hover .ui-icon,
.ui-state-focus .ui-icon,
.ui-button:hover .ui-icon,
.ui-button:focus .ui-icon {
	background-image: url("images/ui-icons_555555_256x240.png");
}
.ui-state-active .ui-icon,
.ui-button:active .ui-icon {
	background-image: url("images/ui-icons_ffffff_256x240.png");
}
.ui-state-highlight .ui-icon,
.ui-button .ui-state-highlight.ui-icon {
	background-image: url("images/ui-icons_777620_256x240.png");
}
.ui-state-error .ui-icon,
.ui-state-error-text .ui-icon {
	background-image: url("images/ui-icons_cc0000_256x240.png");
}
.ui-button .ui-icon {
	background-image: url("images/ui-icons_777777_256x240.png");
}

/* positioning */
.ui-icon-blank { background-position: 16px 16px; }
.ui-icon-caret-1-n { background-position: 0 0; }
.ui-icon-caret-1-ne { background-position: -16px 0; }
.ui-icon-caret-1-e { background-position: -32px 0; }
.ui-icon-caret-1-se { background-position: -48px 0; }
.ui-icon-caret-1-s { background-position: -65px 0; }
.ui-icon-caret-1-sw { background-position: -80px 0; }
.ui-icon-caret-1-w { background-position: -96px 0; }
.ui-icon-caret-1-nw { background-position: -112px 0; }
.ui-icon-caret-2-n-s { background-position: -128px 0; }
.ui-icon-caret-2-e-w { background-position: -144px 0; }
.ui-icon-triangle-1-n { background-position: 0 -16px; }
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
.ui-icon-triangle-1-e { background-position: -32px -16px; }
.ui-icon-triangle-1-se { background-position: -48px -16px; }
.ui-icon-triangle-1-s { background-position: -65px -16px; }
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
.ui-icon-triangle-1-w { background-position: -96px -16px; }
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
.ui-icon-arrow-1-n { background-position: 0 -32px; }
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
.ui-icon-arrow-1-e { background-position: -32px -32px; }
.ui-icon-arrow-1-se { background-position: -48px -32px; }
.ui-icon-arrow-1-s { background-position: -65px -32px; }
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
.ui-icon-arrow-1-w { background-position: -96px -32px; }
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
.ui-icon-arrow-4 { background-position: 0 -80px; }
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
.ui-icon-extlink { background-position: -32px -80px; }
.ui-icon-newwin { background-position: -48px -80px; }
.ui-icon-refresh { background-position: -64px -80px; }
.ui-icon-shuffle { background-position: -80px -80px; }
.ui-icon-transfer-e-w { background-position: -96px -80px; }
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
.ui-icon-folder-collapsed { background-position: 0 -96px; }
.ui-icon-folder-open { background-position: -16px -96px; }
.ui-icon-document { background-position: -32px -96px; }
.ui-icon-document-b { background-position: -48px -96px; }
.ui-icon-note { background-position: -64px -96px; }
.ui-icon-mail-closed { background-position: -80px -96px; }
.ui-icon-mail-open { background-position: -96px -96px; }
.ui-icon-suitcase { background-position: -112px -96px; }
.ui-icon-comment { background-position: -128px -96px; }
.ui-icon-person { background-position: -144px -96px; }
.ui-icon-print { background-position: -160px -96px; }
.ui-icon-trash { background-position: -176px -96px; }
.ui-icon-locked { background-position: -192px -96px; }
.ui-icon-unlocked { background-position: -208px -96px; }
.ui-icon-bookmark { background-position: -224px -96px; }
.ui-icon-tag { background-position: -240px -96px; }
.ui-icon-home { background-position: 0 -112px; }
.ui-icon-flag { background-position: -16px -112px; }
.ui-icon-calendar { background-position: -32px -112px; }
.ui-icon-cart { background-position: -48px -112px; }
.ui-icon-pencil { background-position: -64px -112px; }
.ui-icon-clock { background-position: -80px -112px; }
.ui-icon-disk { background-position: -96px -112px; }
.ui-icon-calculator { background-position: -112px -112px; }
.ui-icon-zoomin { background-position: -128px -112px; }
.ui-icon-zoomout { background-position: -144px -112px; }
.ui-icon-search { background-position: -160px -112px; }
.ui-icon-wrench { background-position: -176px -112px; }
.ui-icon-gear { background-position: -192px -112px; }
.ui-icon-heart { background-position: -208px -112px; }
.ui-icon-star { background-position: -224px -112px; }
.ui-icon-link { background-position: -240px -112px; }
.ui-icon-cancel { background-position: 0 -128px; }
.ui-icon-plus { background-position: -16px -128px; }
.ui-icon-plusthick { background-position: -32px -128px; }
.ui-icon-minus { background-position: -48px -128px; }
.ui-icon-minusthick { background-position: -64px -128px; }
.ui-icon-close { background-position: -80px -128px; }
.ui-icon-closethick { background-position: -96px -128px; }
.ui-icon-key { background-position: -112px -128px; }
.ui-icon-lightbulb { background-position: -128px -128px; }
.ui-icon-scissors { background-position: -144px -128px; }
.ui-icon-clipboard { background-position: -160px -128px; }
.ui-icon-copy { background-position: -176px -128px; }
.ui-icon-contact { background-position: -192px -128px; }
.ui-icon-image { background-position: -208px -128px; }
.ui-icon-video { background-position: -224px -128px; }
.ui-icon-script { background-position: -240px -128px; }
.ui-icon-alert { background-position: 0 -144px; }
.ui-icon-info { background-position: -16px -144px; }
.ui-icon-notice { background-position: -32px -144px; }
.ui-icon-help { background-position: -48px -144px; }
.ui-icon-check { background-position: -64px -144px; }
.ui-icon-bullet { background-position: -80px -144px; }
.ui-icon-radio-on { background-position: -96px -144px; }
.ui-icon-radio-off { background-position: -112px -144px; }
.ui-icon-pin-w { background-position: -128px -144px; }
.ui-icon-pin-s { background-position: -144px -144px; }
.ui-icon-play { background-position: 0 -160px; }
.ui-icon-pause { background-position: -16px -160px; }
.ui-icon-seek-next { background-position: -32px -160px; }
.ui-icon-seek-prev { background-position: -48px -160px; }
.ui-icon-seek-end { background-position: -64px -160px; }
.ui-icon-seek-start { background-position: -80px -160px; }
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
.ui-icon-seek-first { background-position: -80px -160px; }
.ui-icon-stop { background-position: -96px -160px; }
.ui-icon-eject { background-position: -112px -160px; }
.ui-icon-volume-off { background-position: -128px -160px; }
.ui-icon-volume-on { background-position: -144px -160px; }
.ui-icon-power { background-position: 0 -176px; }
.ui-icon-signal-diag { background-position: -16px -176px; }
.ui-icon-signal { background-position: -32px -176px; }
.ui-icon-battery-0 { background-position: -48px -176px; }
.ui-icon-battery-1 { background-position: -64px -176px; }
.ui-icon-battery-2 { background-position: -80px -176px; }
.ui-icon-battery-3 { background-position: -96px -176px; }
.ui-icon-circle-plus { background-position: 0 -192px; }
.ui-icon-circle-minus { background-position: -16px -192px; }
.ui-icon-circle-close { background-position: -32px -192px; }
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
.ui-icon-circle-zoomin { background-position: -176px -192px; }
.ui-icon-circle-zoomout { background-position: -192px -192px; }
.ui-icon-circle-check { background-position: -208px -192px; }
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
.ui-icon-circlesmall-close { background-position: -32px -208px; }
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
.ui-icon-squaresmall-close { background-position: -80px -208px; }
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }


/* Misc visuals
----------------------------------*/

/* Corner radius */
.ui-corner-all,
.ui-corner-top,
.ui-corner-left,
.ui-corner-tl {
	border-top-left-radius: 3px;
}
.ui-corner-all,
.ui-corner-top,
.ui-corner-right,
.ui-corner-tr {
	border-top-right-radius: 3px;
}
.ui-corner-all,
.ui-corner-bottom,
.ui-corner-left,
.ui-corner-bl {
	border-bottom-left-radius: 3px;
}
.ui-corner-all,
.ui-corner-bottom,
.ui-corner-right,
.ui-corner-br {
	border-bottom-right-radius: 3px;
}

/* Overlays */
.ui-widget-overlay {
	background: #aaaaaa;
	opacity: .003;
	filter: Alpha(Opacity=.3); /* support: IE8 */
}
.ui-widget-shadow {
	-webkit-box-shadow: 0px 0px 5px #666666;
	box-shadow: 0px 0px 5px #666666;
}

shiny/www/shared/jqueryui/jquery-ui.structure.min.css METASEP
/*! jQuery UI - v1.12.1 - 2016-09-14
* http://jqueryui.com
* Copyright jQuery Foundation and other contributors; Licensed MIT */

.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}
shiny/www/shared/jqueryui/jquery-ui.structure.css METASEP
/*!
 * jQuery UI CSS Framework 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 *
 * http://api.jqueryui.com/category/theming/
 */
/* Layout helpers
----------------------------------*/
.ui-helper-hidden {
	display: none;
}
.ui-helper-hidden-accessible {
	border: 0;
	clip: rect(0 0 0 0);
	height: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute;
	width: 1px;
}
.ui-helper-reset {
	margin: 0;
	padding: 0;
	border: 0;
	outline: 0;
	line-height: 1.3;
	text-decoration: none;
	font-size: 100%;
	list-style: none;
}
.ui-helper-clearfix:before,
.ui-helper-clearfix:after {
	content: "";
	display: table;
	border-collapse: collapse;
}
.ui-helper-clearfix:after {
	clear: both;
}
.ui-helper-zfix {
	width: 100%;
	height: 100%;
	top: 0;
	left: 0;
	position: absolute;
	opacity: 0;
	filter:Alpha(Opacity=0); /* support: IE8 */
}

.ui-front {
	z-index: 100;
}


/* Interaction Cues
----------------------------------*/
.ui-state-disabled {
	cursor: default !important;
	pointer-events: none;
}


/* Icons
----------------------------------*/
.ui-icon {
	display: inline-block;
	vertical-align: middle;
	margin-top: -.25em;
	position: relative;
	text-indent: -99999px;
	overflow: hidden;
	background-repeat: no-repeat;
}

.ui-widget-icon-block {
	left: 50%;
	margin-left: -8px;
	display: block;
}

/* Misc visuals
----------------------------------*/

/* Overlays */
.ui-widget-overlay {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
}
.ui-accordion .ui-accordion-header {
	display: block;
	cursor: pointer;
	position: relative;
	margin: 2px 0 0 0;
	padding: .5em .5em .5em .7em;
	font-size: 100%;
}
.ui-accordion .ui-accordion-content {
	padding: 1em 2.2em;
	border-top: 0;
	overflow: auto;
}
.ui-autocomplete {
	position: absolute;
	top: 0;
	left: 0;
	cursor: default;
}
.ui-menu {
	list-style: none;
	padding: 0;
	margin: 0;
	display: block;
	outline: 0;
}
.ui-menu .ui-menu {
	position: absolute;
}
.ui-menu .ui-menu-item {
	margin: 0;
	cursor: pointer;
	/* support: IE10, see #8844 */
	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
}
.ui-menu .ui-menu-item-wrapper {
	position: relative;
	padding: 3px 1em 3px .4em;
}
.ui-menu .ui-menu-divider {
	margin: 5px 0;
	height: 0;
	font-size: 0;
	line-height: 0;
	border-width: 1px 0 0 0;
}
.ui-menu .ui-state-focus,
.ui-menu .ui-state-active {
	margin: -1px;
}

/* icon support */
.ui-menu-icons {
	position: relative;
}
.ui-menu-icons .ui-menu-item-wrapper {
	padding-left: 2em;
}

/* left-aligned */
.ui-menu .ui-icon {
	position: absolute;
	top: 0;
	bottom: 0;
	left: .2em;
	margin: auto 0;
}

/* right-aligned */
.ui-menu .ui-menu-icon {
	left: auto;
	right: 0;
}
.ui-button {
	padding: .4em 1em;
	display: inline-block;
	position: relative;
	line-height: normal;
	margin-right: .1em;
	cursor: pointer;
	vertical-align: middle;
	text-align: center;
	-webkit-user-select: none;
	-moz-user-select: none;
	-ms-user-select: none;
	user-select: none;

	/* Support: IE <= 11 */
	overflow: visible;
}

.ui-button,
.ui-button:link,
.ui-button:visited,
.ui-button:hover,
.ui-button:active {
	text-decoration: none;
}

/* to make room for the icon, a width needs to be set here */
.ui-button-icon-only {
	width: 2em;
	box-sizing: border-box;
	text-indent: -9999px;
	white-space: nowrap;
}

/* no icon support for input elements */
input.ui-button.ui-button-icon-only {
	text-indent: 0;
}

/* button icon element(s) */
.ui-button-icon-only .ui-icon {
	position: absolute;
	top: 50%;
	left: 50%;
	margin-top: -8px;
	margin-left: -8px;
}

.ui-button.ui-icon-notext .ui-icon {
	padding: 0;
	width: 2.1em;
	height: 2.1em;
	text-indent: -9999px;
	white-space: nowrap;

}

input.ui-button.ui-icon-notext .ui-icon {
	width: auto;
	height: auto;
	text-indent: 0;
	white-space: normal;
	padding: .4em 1em;
}

/* workarounds */
/* Support: Firefox 5 - 40 */
input.ui-button::-moz-focus-inner,
button.ui-button::-moz-focus-inner {
	border: 0;
	padding: 0;
}
.ui-controlgroup {
	vertical-align: middle;
	display: inline-block;
}
.ui-controlgroup > .ui-controlgroup-item {
	float: left;
	margin-left: 0;
	margin-right: 0;
}
.ui-controlgroup > .ui-controlgroup-item:focus,
.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
	z-index: 9999;
}
.ui-controlgroup-vertical > .ui-controlgroup-item {
	display: block;
	float: none;
	width: 100%;
	margin-top: 0;
	margin-bottom: 0;
	text-align: left;
}
.ui-controlgroup-vertical .ui-controlgroup-item {
	box-sizing: border-box;
}
.ui-controlgroup .ui-controlgroup-label {
	padding: .4em 1em;
}
.ui-controlgroup .ui-controlgroup-label span {
	font-size: 80%;
}
.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
	border-left: none;
}
.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
	border-top: none;
}
.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
	border-right: none;
}
.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
	border-bottom: none;
}

/* Spinner specific style fixes */
.ui-controlgroup-vertical .ui-spinner-input {

	/* Support: IE8 only, Android < 4.4 only */
	width: 75%;
	width: calc( 100% - 2.4em );
}
.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
	border-top-style: solid;
}

.ui-checkboxradio-label .ui-icon-background {
	box-shadow: inset 1px 1px 1px #ccc;
	border-radius: .12em;
	border: none;
}
.ui-checkboxradio-radio-label .ui-icon-background {
	width: 16px;
	height: 16px;
	border-radius: 1em;
	overflow: visible;
	border: none;
}
.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
	background-image: none;
	width: 8px;
	height: 8px;
	border-width: 4px;
	border-style: solid;
}
.ui-checkboxradio-disabled {
	pointer-events: none;
}
.ui-datepicker {
	width: 17em;
	padding: .2em .2em 0;
	display: none;
}
.ui-datepicker .ui-datepicker-header {
	position: relative;
	padding: .2em 0;
}
.ui-datepicker .ui-datepicker-prev,
.ui-datepicker .ui-datepicker-next {
	position: absolute;
	top: 2px;
	width: 1.8em;
	height: 1.8em;
}
.ui-datepicker .ui-datepicker-prev-hover,
.ui-datepicker .ui-datepicker-next-hover {
	top: 1px;
}
.ui-datepicker .ui-datepicker-prev {
	left: 2px;
}
.ui-datepicker .ui-datepicker-next {
	right: 2px;
}
.ui-datepicker .ui-datepicker-prev-hover {
	left: 1px;
}
.ui-datepicker .ui-datepicker-next-hover {
	right: 1px;
}
.ui-datepicker .ui-datepicker-prev span,
.ui-datepicker .ui-datepicker-next span {
	display: block;
	position: absolute;
	left: 50%;
	margin-left: -8px;
	top: 50%;
	margin-top: -8px;
}
.ui-datepicker .ui-datepicker-title {
	margin: 0 2.3em;
	line-height: 1.8em;
	text-align: center;
}
.ui-datepicker .ui-datepicker-title select {
	font-size: 1em;
	margin: 1px 0;
}
.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year {
	width: 45%;
}
.ui-datepicker table {
	width: 100%;
	font-size: .9em;
	border-collapse: collapse;
	margin: 0 0 .4em;
}
.ui-datepicker th {
	padding: .7em .3em;
	text-align: center;
	font-weight: bold;
	border: 0;
}
.ui-datepicker td {
	border: 0;
	padding: 1px;
}
.ui-datepicker td span,
.ui-datepicker td a {
	display: block;
	padding: .2em;
	text-align: right;
	text-decoration: none;
}
.ui-datepicker .ui-datepicker-buttonpane {
	background-image: none;
	margin: .7em 0 0 0;
	padding: 0 .2em;
	border-left: 0;
	border-right: 0;
	border-bottom: 0;
}
.ui-datepicker .ui-datepicker-buttonpane button {
	float: right;
	margin: .5em .2em .4em;
	cursor: pointer;
	padding: .2em .6em .3em .6em;
	width: auto;
	overflow: visible;
}
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
	float: left;
}

/* with multiple calendars */
.ui-datepicker.ui-datepicker-multi {
	width: auto;
}
.ui-datepicker-multi .ui-datepicker-group {
	float: left;
}
.ui-datepicker-multi .ui-datepicker-group table {
	width: 95%;
	margin: 0 auto .4em;
}
.ui-datepicker-multi-2 .ui-datepicker-group {
	width: 50%;
}
.ui-datepicker-multi-3 .ui-datepicker-group {
	width: 33.3%;
}
.ui-datepicker-multi-4 .ui-datepicker-group {
	width: 25%;
}
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
	border-left-width: 0;
}
.ui-datepicker-multi .ui-datepicker-buttonpane {
	clear: left;
}
.ui-datepicker-row-break {
	clear: both;
	width: 100%;
	font-size: 0;
}

/* RTL support */
.ui-datepicker-rtl {
	direction: rtl;
}
.ui-datepicker-rtl .ui-datepicker-prev {
	right: 2px;
	left: auto;
}
.ui-datepicker-rtl .ui-datepicker-next {
	left: 2px;
	right: auto;
}
.ui-datepicker-rtl .ui-datepicker-prev:hover {
	right: 1px;
	left: auto;
}
.ui-datepicker-rtl .ui-datepicker-next:hover {
	left: 1px;
	right: auto;
}
.ui-datepicker-rtl .ui-datepicker-buttonpane {
	clear: right;
}
.ui-datepicker-rtl .ui-datepicker-buttonpane button {
	float: left;
}
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
.ui-datepicker-rtl .ui-datepicker-group {
	float: right;
}
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
	border-right-width: 0;
	border-left-width: 1px;
}

/* Icons */
.ui-datepicker .ui-icon {
	display: block;
	text-indent: -99999px;
	overflow: hidden;
	background-repeat: no-repeat;
	left: .5em;
	top: .3em;
}
.ui-dialog {
	position: absolute;
	top: 0;
	left: 0;
	padding: .2em;
	outline: 0;
}
.ui-dialog .ui-dialog-titlebar {
	padding: .4em 1em;
	position: relative;
}
.ui-dialog .ui-dialog-title {
	float: left;
	margin: .1em 0;
	white-space: nowrap;
	width: 90%;
	overflow: hidden;
	text-overflow: ellipsis;
}
.ui-dialog .ui-dialog-titlebar-close {
	position: absolute;
	right: .3em;
	top: 50%;
	width: 20px;
	margin: -10px 0 0 0;
	padding: 1px;
	height: 20px;
}
.ui-dialog .ui-dialog-content {
	position: relative;
	border: 0;
	padding: .5em 1em;
	background: none;
	overflow: auto;
}
.ui-dialog .ui-dialog-buttonpane {
	text-align: left;
	border-width: 1px 0 0 0;
	background-image: none;
	margin-top: .5em;
	padding: .3em 1em .5em .4em;
}
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
	float: right;
}
.ui-dialog .ui-dialog-buttonpane button {
	margin: .5em .4em .5em 0;
	cursor: pointer;
}
.ui-dialog .ui-resizable-n {
	height: 2px;
	top: 0;
}
.ui-dialog .ui-resizable-e {
	width: 2px;
	right: 0;
}
.ui-dialog .ui-resizable-s {
	height: 2px;
	bottom: 0;
}
.ui-dialog .ui-resizable-w {
	width: 2px;
	left: 0;
}
.ui-dialog .ui-resizable-se,
.ui-dialog .ui-resizable-sw,
.ui-dialog .ui-resizable-ne,
.ui-dialog .ui-resizable-nw {
	width: 7px;
	height: 7px;
}
.ui-dialog .ui-resizable-se {
	right: 0;
	bottom: 0;
}
.ui-dialog .ui-resizable-sw {
	left: 0;
	bottom: 0;
}
.ui-dialog .ui-resizable-ne {
	right: 0;
	top: 0;
}
.ui-dialog .ui-resizable-nw {
	left: 0;
	top: 0;
}
.ui-draggable .ui-dialog-titlebar {
	cursor: move;
}
.ui-draggable-handle {
	-ms-touch-action: none;
	touch-action: none;
}
.ui-resizable {
	position: relative;
}
.ui-resizable-handle {
	position: absolute;
	font-size: 0.1px;
	display: block;
	-ms-touch-action: none;
	touch-action: none;
}
.ui-resizable-disabled .ui-resizable-handle,
.ui-resizable-autohide .ui-resizable-handle {
	display: none;
}
.ui-resizable-n {
	cursor: n-resize;
	height: 7px;
	width: 100%;
	top: -5px;
	left: 0;
}
.ui-resizable-s {
	cursor: s-resize;
	height: 7px;
	width: 100%;
	bottom: -5px;
	left: 0;
}
.ui-resizable-e {
	cursor: e-resize;
	width: 7px;
	right: -5px;
	top: 0;
	height: 100%;
}
.ui-resizable-w {
	cursor: w-resize;
	width: 7px;
	left: -5px;
	top: 0;
	height: 100%;
}
.ui-resizable-se {
	cursor: se-resize;
	width: 12px;
	height: 12px;
	right: 1px;
	bottom: 1px;
}
.ui-resizable-sw {
	cursor: sw-resize;
	width: 9px;
	height: 9px;
	left: -5px;
	bottom: -5px;
}
.ui-resizable-nw {
	cursor: nw-resize;
	width: 9px;
	height: 9px;
	left: -5px;
	top: -5px;
}
.ui-resizable-ne {
	cursor: ne-resize;
	width: 9px;
	height: 9px;
	right: -5px;
	top: -5px;
}
.ui-progressbar {
	height: 2em;
	text-align: left;
	overflow: hidden;
}
.ui-progressbar .ui-progressbar-value {
	margin: -1px;
	height: 100%;
}
.ui-progressbar .ui-progressbar-overlay {
	background: url("data:image/gif;base64,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");
	height: 100%;
	filter: alpha(opacity=25); /* support: IE8 */
	opacity: 0.25;
}
.ui-progressbar-indeterminate .ui-progressbar-value {
	background-image: none;
}
.ui-selectable {
	-ms-touch-action: none;
	touch-action: none;
}
.ui-selectable-helper {
	position: absolute;
	z-index: 100;
	border: 1px dotted black;
}
.ui-selectmenu-menu {
	padding: 0;
	margin: 0;
	position: absolute;
	top: 0;
	left: 0;
	display: none;
}
.ui-selectmenu-menu .ui-menu {
	overflow: auto;
	overflow-x: hidden;
	padding-bottom: 1px;
}
.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
	font-size: 1em;
	font-weight: bold;
	line-height: 1.5;
	padding: 2px 0.4em;
	margin: 0.5em 0 0 0;
	height: auto;
	border: 0;
}
.ui-selectmenu-open {
	display: block;
}
.ui-selectmenu-text {
	display: block;
	margin-right: 20px;
	overflow: hidden;
	text-overflow: ellipsis;
}
.ui-selectmenu-button.ui-button {
	text-align: left;
	white-space: nowrap;
	width: 14em;
}
.ui-selectmenu-icon.ui-icon {
	float: right;
	margin-top: 0;
}
.ui-slider {
	position: relative;
	text-align: left;
}
.ui-slider .ui-slider-handle {
	position: absolute;
	z-index: 2;
	width: 1.2em;
	height: 1.2em;
	cursor: default;
	-ms-touch-action: none;
	touch-action: none;
}
.ui-slider .ui-slider-range {
	position: absolute;
	z-index: 1;
	font-size: .7em;
	display: block;
	border: 0;
	background-position: 0 0;
}

/* support: IE8 - See #6727 */
.ui-slider.ui-state-disabled .ui-slider-handle,
.ui-slider.ui-state-disabled .ui-slider-range {
	filter: inherit;
}

.ui-slider-horizontal {
	height: .8em;
}
.ui-slider-horizontal .ui-slider-handle {
	top: -.3em;
	margin-left: -.6em;
}
.ui-slider-horizontal .ui-slider-range {
	top: 0;
	height: 100%;
}
.ui-slider-horizontal .ui-slider-range-min {
	left: 0;
}
.ui-slider-horizontal .ui-slider-range-max {
	right: 0;
}

.ui-slider-vertical {
	width: .8em;
	height: 100px;
}
.ui-slider-vertical .ui-slider-handle {
	left: -.3em;
	margin-left: 0;
	margin-bottom: -.6em;
}
.ui-slider-vertical .ui-slider-range {
	left: 0;
	width: 100%;
}
.ui-slider-vertical .ui-slider-range-min {
	bottom: 0;
}
.ui-slider-vertical .ui-slider-range-max {
	top: 0;
}
.ui-sortable-handle {
	-ms-touch-action: none;
	touch-action: none;
}
.ui-spinner {
	position: relative;
	display: inline-block;
	overflow: hidden;
	padding: 0;
	vertical-align: middle;
}
.ui-spinner-input {
	border: none;
	background: none;
	color: inherit;
	padding: .222em 0;
	margin: .2em 0;
	vertical-align: middle;
	margin-left: .4em;
	margin-right: 2em;
}
.ui-spinner-button {
	width: 1.6em;
	height: 50%;
	font-size: .5em;
	padding: 0;
	margin: 0;
	text-align: center;
	position: absolute;
	cursor: default;
	display: block;
	overflow: hidden;
	right: 0;
}
/* more specificity required here to override default borders */
.ui-spinner a.ui-spinner-button {
	border-top-style: none;
	border-bottom-style: none;
	border-right-style: none;
}
.ui-spinner-up {
	top: 0;
}
.ui-spinner-down {
	bottom: 0;
}
.ui-tabs {
	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
	padding: .2em;
}
.ui-tabs .ui-tabs-nav {
	margin: 0;
	padding: .2em .2em 0;
}
.ui-tabs .ui-tabs-nav li {
	list-style: none;
	float: left;
	position: relative;
	top: 0;
	margin: 1px .2em 0 0;
	border-bottom-width: 0;
	padding: 0;
	white-space: nowrap;
}
.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
	float: left;
	padding: .5em 1em;
	text-decoration: none;
}
.ui-tabs .ui-tabs-nav li.ui-tabs-active {
	margin-bottom: -1px;
	padding-bottom: 1px;
}
.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
	cursor: text;
}
.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
	cursor: pointer;
}
.ui-tabs .ui-tabs-panel {
	display: block;
	border-width: 0;
	padding: 1em 1.4em;
	background: none;
}
.ui-tooltip {
	padding: 8px;
	position: absolute;
	z-index: 9999;
	max-width: 300px;
}
body .ui-tooltip {
	border-width: 2px;
}

shiny/www/shared/jqueryui/jquery-ui.min.js METASEP
/*! jQuery UI - v1.12.1 - 2016-09-14
* http://jqueryui.com
* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js
* Copyright jQuery Foundation and other contributors; Licensed MIT */

(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){function e(t){for(var e=t.css("visibility");"inherit"===e;)t=t.parent(),e=t.css("visibility");return"hidden"!==e}function i(t){for(var e,i;t.length&&t[0]!==document;){if(e=t.css("position"),("absolute"===e||"relative"===e||"fixed"===e)&&(i=parseInt(t.css("zIndex"),10),!isNaN(i)&&0!==i))return i;t=t.parent()}return 0}function s(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},t.extend(this._defaults,this.regional[""]),this.regional.en=t.extend(!0,{},this.regional[""]),this.regional["en-US"]=t.extend(!0,{},this.regional.en),this.dpDiv=n(t("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function n(e){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.on("mouseout",i,function(){t(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).removeClass("ui-datepicker-next-hover")}).on("mouseover",i,o)}function o(){t.datepicker._isDisabledDatepicker(m.inline?m.dpDiv.parent()[0]:m.input[0])||(t(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),t(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).addClass("ui-datepicker-next-hover"))}function a(e,i){t.extend(e,i);for(var s in i)null==i[s]&&(e[s]=i[s]);return e}function r(t){return function(){var e=this.element.val();t.apply(this,arguments),this._refresh(),e!==this.element.val()&&this._trigger("change")}}t.ui=t.ui||{},t.ui.version="1.12.1";var h=0,l=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r={},h=e.split(".")[0];e=e.split(".")[1];var l=h+"-"+e;return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][l.toLowerCase()]=function(e){return!!t.data(e,l)},t[h]=t[h]||{},n=t[h][e],o=t[h][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return t.isFunction(s)?(r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(r[e]=s,void 0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:h,widgetName:e,widgetFullName:l}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var i,s,n=l.call(arguments,1),o=0,a=n.length;a>o;o++)for(i in n[o])s=n[o][i],n[o].hasOwnProperty(i)&&void 0!==s&&(e[i]=t.isPlainObject(s)?t.isPlainObject(e[i])?t.widget.extend({},e[i],s):t.widget.extend({},s):s);return e},t.widget.bridge=function(e,i){var s=i.prototype.widgetFullName||e;t.fn[e]=function(n){var o="string"==typeof n,a=l.call(arguments,1),r=this;return o?this.length||"instance"!==n?this.each(function(){var i,o=t.data(this,s);return"instance"===n?(r=o,!1):o?t.isFunction(o[n])&&"_"!==n.charAt(0)?(i=o[n].apply(o,a),i!==o&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+n+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+n+"'")}):r=void 0:(a.length&&(n=t.widget.extend.apply(null,[n].concat(a))),this.each(function(){var e=t.data(this,s);e?(e.option(n||{}),e._init&&e._init()):t.data(this,s,new i(n,this))})),r}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,i){i=t(i||this.defaultElement||this)[0],this.element=t(i),this.uuid=h++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},i!==this&&(t.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===i&&this.destroy()}}),this.document=t(i.style?i.ownerDocument:i.document||i),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.width<e.element[0].scrollWidth,o="scroll"===s||"auto"===s&&e.height<e.element[0].scrollHeight;return{width:o?t.position.scrollbarWidth():0,height:n?t.position.scrollbarWidth():0}},getWithinInfo:function(e){var i=t(e||window),s=t.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType,o=!s&&!n;return{element:i,isWindow:s,isDocument:n,offset:o?t(e).offset():{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:i.outerWidth(),height:i.outerHeight()}}},t.fn.position=function(n){if(!n||!n.of)return d.apply(this,arguments);n=t.extend({},n);var u,p,f,g,m,_,v=t(n.of),b=t.position.getWithinInfo(n.within),y=t.position.getScrollInfo(b),w=(n.collision||"flip").split(" "),k={};return _=s(v),v[0].preventDefault&&(n.at="left top"),p=_.width,f=_.height,g=_.offset,m=t.extend({},g),t.each(["my","at"],function(){var t,e,i=(n[this]||"").split(" ");1===i.length&&(i=r.test(i[0])?i.concat(["center"]):h.test(i[0])?["center"].concat(i):["center","center"]),i[0]=r.test(i[0])?i[0]:"center",i[1]=h.test(i[1])?i[1]:"center",t=l.exec(i[0]),e=l.exec(i[1]),k[this]=[t?t[0]:0,e?e[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===w.length&&(w[1]=w[0]),"right"===n.at[0]?m.left+=p:"center"===n.at[0]&&(m.left+=p/2),"bottom"===n.at[1]?m.top+=f:"center"===n.at[1]&&(m.top+=f/2),u=e(k.at,p,f),m.left+=u[0],m.top+=u[1],this.each(function(){var s,r,h=t(this),l=h.outerWidth(),c=h.outerHeight(),d=i(this,"marginLeft"),_=i(this,"marginTop"),x=l+d+i(this,"marginRight")+y.width,C=c+_+i(this,"marginBottom")+y.height,D=t.extend({},m),I=e(k.my,h.outerWidth(),h.outerHeight());"right"===n.my[0]?D.left-=l:"center"===n.my[0]&&(D.left-=l/2),"bottom"===n.my[1]?D.top-=c:"center"===n.my[1]&&(D.top-=c/2),D.left+=I[0],D.top+=I[1],s={marginLeft:d,marginTop:_},t.each(["left","top"],function(e,i){t.ui.position[w[e]]&&t.ui.position[w[e]][i](D,{targetWidth:p,targetHeight:f,elemWidth:l,elemHeight:c,collisionPosition:s,collisionWidth:x,collisionHeight:C,offset:[u[0]+I[0],u[1]+I[1]],my:n.my,at:n.at,within:b,elem:h})}),n.using&&(r=function(t){var e=g.left-D.left,i=e+p-l,s=g.top-D.top,r=s+f-c,u={target:{element:v,left:g.left,top:g.top,width:p,height:f},element:{element:h,left:D.left,top:D.top,width:l,height:c},horizontal:0>i?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-h,(i>0||u>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}});var c="ui-effects-",u="ui-effects-style",d="ui-effects-animated",p=t;t.effects={effect:{}},function(t,e){function i(t,e,i){var s=u[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:0>t?0:t>s.max?s.max:t)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(t,o){var a,r=o.re.exec(i),h=r&&o.parse(r),l=o.space||"rgba";return h?(a=s[l](h),s[c[l].cache]=a[c[l].cache],n=s._rgba=a._rgba,!1):e}),n.length?("0,0,0,0"===n.join()&&t.extend(n,o.transparent),s):o[i]}function n(t,e,i){return i=(i+1)%1,1>6*i?t+6*(e-t)*i:1>2*i?e:2>3*i?t+6*(e-t)*(2/3-i):t}var o,a="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],l=t.Color=function(e,i,s,n){return new t.Color.fn.parse(e,i,s,n)},c={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},u={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},d=l.support={},p=t("<p>")[0],f=t.each;p.style.cssText="background-color:rgba(1,1,1,.5)",d.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(c,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),l.fn=t.extend(l.prototype,{parse:function(n,a,r,h){if(n===e)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=t(n).css(a),a=e);var u=this,d=t.type(n),p=this._rgba=[];return a!==e&&(n=[n,a,r,h],d="array"),"string"===d?this.parse(s(n)||o._default):"array"===d?(f(c.rgba.props,function(t,e){p[e.idx]=i(n[e.idx],e)}),this):"object"===d?(n instanceof l?f(c,function(t,e){n[e.cache]&&(u[e.cache]=n[e.cache].slice())}):f(c,function(e,s){var o=s.cache;f(s.props,function(t,e){if(!u[o]&&s.to){if("alpha"===t||null==n[t])return;u[o]=s.to(u._rgba)}u[o][e.idx]=i(n[t],e,!0)}),u[o]&&0>t.inArray(null,u[o].slice(0,3))&&(u[o][3]=1,s.from&&(u._rgba=s.from(u[o])))}),this):e},is:function(t){var i=l(t),s=!0,n=this;return f(c,function(t,o){var a,r=i[o.cache];return r&&(a=n[o.cache]||o.to&&o.to(n._rgba)||[],f(o.props,function(t,i){return null!=r[i.idx]?s=r[i.idx]===a[i.idx]:e})),s}),s},_space:function(){var t=[],e=this;return f(c,function(i,s){e[s.cache]&&t.push(i)}),t.pop()},transition:function(t,e){var s=l(t),n=s._space(),o=c[n],a=0===this.alpha()?l("transparent"):this,r=a[o.cache]||o.to(a._rgba),h=r.slice();return s=s[o.cache],f(o.props,function(t,n){var o=n.idx,a=r[o],l=s[o],c=u[n.type]||{};null!==l&&(null===a?h[o]=l:(c.mod&&(l-a>c.mod/2?a+=c.mod:a-l>c.mod/2&&(a-=c.mod)),h[o]=i((l-a)*e+a,n)))}),this[n](h)},blend:function(e){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(e)._rgba;return l(t.map(i,function(t,e){return(1-s)*n[e]+s*t}))},toRgbaString:function(){var e="rgba(",i=t.map(this._rgba,function(t,e){return null==t?e>2?1:0:t});return 1===i[3]&&(i.pop(),e="rgb("),e+i.join()+")"},toHslaString:function(){var e="hsla(",i=t.map(this.hsla(),function(t,e){return null==t&&(t=e>2?1:0),e&&3>e&&(t=Math.round(100*t)+"%"),t});return 1===i[3]&&(i.pop(),e="hsl("),e+i.join()+")"},toHexString:function(e){var i=this._rgba.slice(),s=i.pop();return e&&i.push(~~(255*s)),"#"+t.map(i,function(t){return t=(t||0).toString(16),1===t.length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,c.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e,i,s=t[0]/255,n=t[1]/255,o=t[2]/255,a=t[3],r=Math.max(s,n,o),h=Math.min(s,n,o),l=r-h,c=r+h,u=.5*c;return e=h===r?0:s===r?60*(n-o)/l+360:n===r?60*(o-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=u?l/c:l/(2-c),[Math.round(e)%360,i,u,null==a?1:a]},c.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],o=t[3],a=.5>=s?s*(1+i):s+i-s*i,r=2*s-a;return[Math.round(255*n(r,a,e+1/3)),Math.round(255*n(r,a,e)),Math.round(255*n(r,a,e-1/3)),o]},f(c,function(s,n){var o=n.props,a=n.cache,h=n.to,c=n.from;l.fn[s]=function(s){if(h&&!this[a]&&(this[a]=h(this._rgba)),s===e)return this[a].slice();var n,r=t.type(s),u="array"===r||"object"===r?s:arguments,d=this[a].slice();return f(o,function(t,e){var s=u["object"===r?t:e.idx];null==s&&(s=d[e.idx]),d[e.idx]=i(s,e)}),c?(n=l(c(d)),n[a]=d,n):l(d)},f(o,function(e,i){l.fn[e]||(l.fn[e]=function(n){var o,a=t.type(n),h="alpha"===e?this._hsla?"hsla":"rgba":s,l=this[h](),c=l[i.idx];return"undefined"===a?c:("function"===a&&(n=n.call(this,c),a=t.type(n)),null==n&&i.empty?this:("string"===a&&(o=r.exec(n),o&&(n=c+parseFloat(o[2])*("+"===o[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(e){var i=e.split(" ");f(i,function(e,i){t.cssHooks[i]={set:function(e,n){var o,a,r="";if("transparent"!==n&&("string"!==t.type(n)||(o=s(n)))){if(n=l(o||n),!d.rgba&&1!==n._rgba[3]){for(a="backgroundColor"===i?e.parentNode:e;(""===r||"transparent"===r)&&a&&a.style;)try{r=t.css(a,"backgroundColor"),a=a.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{e.style[i]=n}catch(h){}}},t.fx.step[i]=function(e){e.colorInit||(e.start=l(e.elem,i),e.end=l(e.end),e.colorInit=!0),t.cssHooks[i].set(e.elem,e.start.transition(e.end,e.pos))}})},l.hook(a),t.cssHooks.borderColor={expand:function(t){var e={};return f(["Top","Right","Bottom","Left"],function(i,s){e["border"+s+"Color"]=t}),e}},o=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(p),function(){function e(e){var i,s,n=e.ownerDocument.defaultView?e.ownerDocument.defaultView.getComputedStyle(e,null):e.currentStyle,o={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(o[t.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(o[i]=n[i]);return o}function i(e,i){var s,o,a={};for(s in i)o=i[s],e[s]!==o&&(n[s]||(t.fx.step[s]||!isNaN(parseFloat(o)))&&(a[s]=o));return a}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};t.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(e,i){t.fx.step[i]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(p.style(t.elem,i,t.end),t.setAttr=!0)}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.effects.animateClass=function(n,o,a,r){var h=t.speed(o,a,r);return this.queue(function(){var o,a=t(this),r=a.attr("class")||"",l=h.children?a.find("*").addBack():a;l=l.map(function(){var i=t(this);return{el:i,start:e(this)}}),o=function(){t.each(s,function(t,e){n[e]&&a[e+"Class"](n[e])})},o(),l=l.map(function(){return this.end=e(this.el[0]),this.diff=i(this.start,this.end),this}),a.attr("class",r),l=l.map(function(){var e=this,i=t.Deferred(),s=t.extend({},h,{queue:!1,complete:function(){i.resolve(e)}});return this.el.animate(this.diff,s),i.promise()}),t.when.apply(t,l.get()).done(function(){o(),t.each(arguments,function(){var e=this.el;t.each(this.diff,function(t){e.css(t,"")})}),h.complete.call(a[0])})})},t.fn.extend({addClass:function(e){return function(i,s,n,o){return s?t.effects.animateClass.call(this,{add:i},s,n,o):e.apply(this,arguments)}}(t.fn.addClass),removeClass:function(e){return function(i,s,n,o){return arguments.length>1?t.effects.animateClass.call(this,{remove:i},s,n,o):e.apply(this,arguments)}}(t.fn.removeClass),toggleClass:function(e){return function(i,s,n,o,a){return"boolean"==typeof s||void 0===s?n?t.effects.animateClass.call(this,s?{add:i}:{remove:i},n,o,a):e.apply(this,arguments):t.effects.animateClass.call(this,{toggle:i},s,n,o)}}(t.fn.toggleClass),switchClass:function(e,i,s,n,o){return t.effects.animateClass.call(this,{add:i,remove:e},s,n,o)}})}(),function(){function e(e,i,s,n){return t.isPlainObject(e)&&(i=e,e=e.effect),e={effect:e},null==i&&(i={}),t.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||t.fx.speeds[i])&&(n=s,s=i,i={}),t.isFunction(s)&&(n=s,s=null),i&&t.extend(e,i),s=s||i.duration,e.duration=t.fx.off?0:"number"==typeof s?s:s in t.fx.speeds?t.fx.speeds[s]:t.fx.speeds._default,e.complete=n||i.complete,e}function i(e){return!e||"number"==typeof e||t.fx.speeds[e]?!0:"string"!=typeof e||t.effects.effect[e]?t.isFunction(e)?!0:"object"!=typeof e||e.effect?!1:!0:!0}function s(t,e){var i=e.outerWidth(),s=e.outerHeight(),n=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/,o=n.exec(t)||["",0,i,s,0];return{top:parseFloat(o[1])||0,right:"auto"===o[2]?i:parseFloat(o[2]),bottom:"auto"===o[3]?s:parseFloat(o[3]),left:parseFloat(o[4])||0}}t.expr&&t.expr.filters&&t.expr.filters.animated&&(t.expr.filters.animated=function(e){return function(i){return!!t(i).data(d)||e(i)}}(t.expr.filters.animated)),t.uiBackCompat!==!1&&t.extend(t.effects,{save:function(t,e){for(var i=0,s=e.length;s>i;i++)null!==e[i]&&t.data(c+e[i],t[0].style[e[i]])},restore:function(t,e){for(var i,s=0,n=e.length;n>s;s++)null!==e[s]&&(i=t.data(c+e[s]),t.css(e[s],i))},setMode:function(t,e){return"toggle"===e&&(e=t.is(":hidden")?"show":"hide"),e},createWrapper:function(e){if(e.parent().is(".ui-effects-wrapper"))return e.parent();var i={width:e.outerWidth(!0),height:e.outerHeight(!0),"float":e.css("float")},s=t("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:e.width(),height:e.height()},o=document.activeElement;try{o.id}catch(a){o=document.body}return e.wrap(s),(e[0]===o||t.contains(e[0],o))&&t(o).trigger("focus"),s=e.parent(),"static"===e.css("position")?(s.css({position:"relative"}),e.css({position:"relative"})):(t.extend(i,{position:e.css("position"),zIndex:e.css("z-index")}),t.each(["top","left","bottom","right"],function(t,s){i[s]=e.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),e.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),e.css(n),s.css(i).show()},removeWrapper:function(e){var i=document.activeElement;return e.parent().is(".ui-effects-wrapper")&&(e.parent().replaceWith(e),(e[0]===i||t.contains(e[0],i))&&t(i).trigger("focus")),e}}),t.extend(t.effects,{version:"1.12.1",define:function(e,i,s){return s||(s=i,i="effect"),t.effects.effect[e]=s,t.effects.effect[e].mode=i,s},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,n="vertical"!==i?(e||100)/100:1;return{height:t.height()*n,width:t.width()*s,outerHeight:t.outerHeight()*n,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();e>1&&s.splice.apply(s,[1,0].concat(s.splice(e,i))),t.dequeue()},saveStyle:function(t){t.data(u,t[0].style.cssText)},restoreStyle:function(t){t[0].style.cssText=t.data(u)||"",t.removeData(u)},mode:function(t,e){var i=t.is(":hidden");return"toggle"===e&&(e=i?"show":"hide"),(i?"hide"===e:"show"===e)&&(e="none"),e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createPlaceholder:function(e){var i,s=e.css("position"),n=e.position();return e.css({marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()),/^(static|relative)/.test(s)&&(s="absolute",i=t("<"+e[0].nodeName+">").insertAfter(e).css({display:/^(inline|ruby)/.test(e.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight"),"float":e.css("float")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).addClass("ui-effects-placeholder"),e.data(c+"placeholder",i)),e.css({position:s,left:n.left,top:n.top}),i},removePlaceholder:function(t){var e=c+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(e){t.effects.restoreStyle(e),t.effects.removePlaceholder(e)},setTransition:function(e,i,s,n){return n=n||{},t.each(i,function(t,i){var o=e.cssUnit(i);o[0]>0&&(n[i]=o[0]*s+o[1])}),n}}),t.fn.extend({effect:function(){function i(e){function i(){r.removeData(d),t.effects.cleanUp(r),"hide"===s.mode&&r.hide(),a()}function a(){t.isFunction(h)&&h.call(r[0]),t.isFunction(e)&&e()}var r=t(this);s.mode=c.shift(),t.uiBackCompat===!1||o?"none"===s.mode?(r[l](),a()):n.call(r[0],s,i):(r.is(":hidden")?"hide"===l:"show"===l)?(r[l](),a()):n.call(r[0],s,a)}var s=e.apply(this,arguments),n=t.effects.effect[s.effect],o=n.mode,a=s.queue,r=a||"fx",h=s.complete,l=s.mode,c=[],u=function(e){var i=t(this),s=t.effects.mode(i,l)||o;i.data(d,!0),c.push(s),o&&("show"===s||s===o&&"hide"===s)&&i.show(),o&&"none"===s||t.effects.saveStyle(i),t.isFunction(e)&&e()};return t.fx.off||!n?l?this[l](s.duration,h):this.each(function(){h&&h.call(this)}):a===!1?this.each(u).each(i):this.queue(r,u).queue(r,i)},show:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="show",this.effect.call(this,n)
}}(t.fn.show),hide:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(t.fn.hide),toggle:function(t){return function(s){if(i(s)||"boolean"==typeof s)return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(t.fn.toggle),cssUnit:function(e){var i=this.css(e),s=[];return t.each(["em","px","%","pt"],function(t,e){i.indexOf(e)>0&&(s=[parseFloat(i),e])}),s},cssClip:function(t){return t?this.css("clip","rect("+t.top+"px "+t.right+"px "+t.bottom+"px "+t.left+"px)"):s(this.css("clip"),this)},transfer:function(e,i){var s=t(this),n=t(e.to),o="fixed"===n.css("position"),a=t("body"),r=o?a.scrollTop():0,h=o?a.scrollLeft():0,l=n.offset(),c={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},u=s.offset(),d=t("<div class='ui-effects-transfer'></div>").appendTo("body").addClass(e.className).css({top:u.top-r,left:u.left-h,height:s.innerHeight(),width:s.innerWidth(),position:o?"fixed":"absolute"}).animate(c,e.duration,e.easing,function(){d.remove(),t.isFunction(i)&&i()})}}),t.fx.step.clip=function(e){e.clipInit||(e.start=t(e.elem).cssClip(),"string"==typeof e.end&&(e.end=s(e.end,e.elem)),e.clipInit=!0),t(e.elem).cssClip({top:e.pos*(e.end.top-e.start.top)+e.start.top,right:e.pos*(e.end.right-e.start.right)+e.start.right,bottom:e.pos*(e.end.bottom-e.start.bottom)+e.start.bottom,left:e.pos*(e.end.left-e.start.left)+e.start.left})}}(),function(){var e={};t.each(["Quad","Cubic","Quart","Quint","Expo"],function(t,i){e[i]=function(e){return Math.pow(e,t+2)}}),t.extend(e,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;((e=Math.pow(2,--i))-1)/11>t;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),t.each(e,function(e,i){t.easing["easeIn"+e]=i,t.easing["easeOut"+e]=function(t){return 1-i(1-t)},t.easing["easeInOut"+e]=function(t){return.5>t?i(2*t)/2:1-i(-2*t+2)/2}})}();var f=t.effects;t.effects.define("blind","hide",function(e,i){var s={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},n=t(this),o=e.direction||"up",a=n.cssClip(),r={clip:t.extend({},a)},h=t.effects.createPlaceholder(n);r.clip[s[o][0]]=r.clip[s[o][1]],"show"===e.mode&&(n.cssClip(r.clip),h&&h.css(t.effects.clipToBox(r)),r.clip=a),h&&h.animate(t.effects.clipToBox(r),e.duration,e.easing),n.animate(r,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("bounce",function(e,i){var s,n,o,a=t(this),r=e.mode,h="hide"===r,l="show"===r,c=e.direction||"up",u=e.distance,d=e.times||5,p=2*d+(l||h?1:0),f=e.duration/p,g=e.easing,m="up"===c||"down"===c?"top":"left",_="up"===c||"left"===c,v=0,b=a.queue().length;for(t.effects.createPlaceholder(a),o=a.css(m),u||(u=a["top"===m?"outerHeight":"outerWidth"]()/3),l&&(n={opacity:1},n[m]=o,a.css("opacity",0).css(m,_?2*-u:2*u).animate(n,f,g)),h&&(u/=Math.pow(2,d-1)),n={},n[m]=o;d>v;v++)s={},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g).animate(n,f,g),u=h?2*u:u/2;h&&(s={opacity:0},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g)),a.queue(i),t.effects.unshift(a,b,p+1)}),t.effects.define("clip","hide",function(e,i){var s,n={},o=t(this),a=e.direction||"vertical",r="both"===a,h=r||"horizontal"===a,l=r||"vertical"===a;s=o.cssClip(),n.clip={top:l?(s.bottom-s.top)/2:s.top,right:h?(s.right-s.left)/2:s.right,bottom:l?(s.bottom-s.top)/2:s.bottom,left:h?(s.right-s.left)/2:s.left},t.effects.createPlaceholder(o),"show"===e.mode&&(o.cssClip(n.clip),n.clip=s),o.animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("drop","hide",function(e,i){var s,n=t(this),o=e.mode,a="show"===o,r=e.direction||"left",h="up"===r||"down"===r?"top":"left",l="up"===r||"left"===r?"-=":"+=",c="+="===l?"-=":"+=",u={opacity:0};t.effects.createPlaceholder(n),s=e.distance||n["top"===h?"outerHeight":"outerWidth"](!0)/2,u[h]=l+s,a&&(n.css(u),u[h]=c+s,u.opacity=1),n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("explode","hide",function(e,i){function s(){b.push(this),b.length===u*d&&n()}function n(){p.css({visibility:"visible"}),t(b).remove(),i()}var o,a,r,h,l,c,u=e.pieces?Math.round(Math.sqrt(e.pieces)):3,d=u,p=t(this),f=e.mode,g="show"===f,m=p.show().css("visibility","hidden").offset(),_=Math.ceil(p.outerWidth()/d),v=Math.ceil(p.outerHeight()/u),b=[];for(o=0;u>o;o++)for(h=m.top+o*v,c=o-(u-1)/2,a=0;d>a;a++)r=m.left+a*_,l=a-(d-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-a*_,top:-o*v}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:_,height:v,left:r+(g?l*_:0),top:h+(g?c*v:0),opacity:g?0:1}).animate({left:r+(g?0:l*_),top:h+(g?0:c*v),opacity:g?1:0},e.duration||500,e.easing,s)}),t.effects.define("fade","toggle",function(e,i){var s="show"===e.mode;t(this).css("opacity",s?0:1).animate({opacity:s?1:0},{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("fold","hide",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=e.size||15,h=/([0-9]+)%/.exec(r),l=!!e.horizFirst,c=l?["right","bottom"]:["bottom","right"],u=e.duration/2,d=t.effects.createPlaceholder(s),p=s.cssClip(),f={clip:t.extend({},p)},g={clip:t.extend({},p)},m=[p[c[0]],p[c[1]]],_=s.queue().length;h&&(r=parseInt(h[1],10)/100*m[a?0:1]),f.clip[c[0]]=r,g.clip[c[0]]=r,g.clip[c[1]]=0,o&&(s.cssClip(g.clip),d&&d.css(t.effects.clipToBox(g)),g.clip=p),s.queue(function(i){d&&d.animate(t.effects.clipToBox(f),u,e.easing).animate(t.effects.clipToBox(g),u,e.easing),i()}).animate(f,u,e.easing).animate(g,u,e.easing).queue(i),t.effects.unshift(s,_,4)}),t.effects.define("highlight","show",function(e,i){var s=t(this),n={backgroundColor:s.css("backgroundColor")};"hide"===e.mode&&(n.opacity=0),t.effects.saveStyle(s),s.css({backgroundImage:"none",backgroundColor:e.color||"#ffff99"}).animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("size",function(e,i){var s,n,o,a=t(this),r=["fontSize"],h=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],l=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],c=e.mode,u="effect"!==c,d=e.scale||"both",p=e.origin||["middle","center"],f=a.css("position"),g=a.position(),m=t.effects.scaledDimensions(a),_=e.from||m,v=e.to||t.effects.scaledDimensions(a,0);t.effects.createPlaceholder(a),"show"===c&&(o=_,_=v,v=o),n={from:{y:_.height/m.height,x:_.width/m.width},to:{y:v.height/m.height,x:v.width/m.width}},("box"===d||"both"===d)&&(n.from.y!==n.to.y&&(_=t.effects.setTransition(a,h,n.from.y,_),v=t.effects.setTransition(a,h,n.to.y,v)),n.from.x!==n.to.x&&(_=t.effects.setTransition(a,l,n.from.x,_),v=t.effects.setTransition(a,l,n.to.x,v))),("content"===d||"both"===d)&&n.from.y!==n.to.y&&(_=t.effects.setTransition(a,r,n.from.y,_),v=t.effects.setTransition(a,r,n.to.y,v)),p&&(s=t.effects.getBaseline(p,m),_.top=(m.outerHeight-_.outerHeight)*s.y+g.top,_.left=(m.outerWidth-_.outerWidth)*s.x+g.left,v.top=(m.outerHeight-v.outerHeight)*s.y+g.top,v.left=(m.outerWidth-v.outerWidth)*s.x+g.left),a.css(_),("content"===d||"both"===d)&&(h=h.concat(["marginTop","marginBottom"]).concat(r),l=l.concat(["marginLeft","marginRight"]),a.find("*[width]").each(function(){var i=t(this),s=t.effects.scaledDimensions(i),o={height:s.height*n.from.y,width:s.width*n.from.x,outerHeight:s.outerHeight*n.from.y,outerWidth:s.outerWidth*n.from.x},a={height:s.height*n.to.y,width:s.width*n.to.x,outerHeight:s.height*n.to.y,outerWidth:s.width*n.to.x};n.from.y!==n.to.y&&(o=t.effects.setTransition(i,h,n.from.y,o),a=t.effects.setTransition(i,h,n.to.y,a)),n.from.x!==n.to.x&&(o=t.effects.setTransition(i,l,n.from.x,o),a=t.effects.setTransition(i,l,n.to.x,a)),u&&t.effects.saveStyle(i),i.css(o),i.animate(a,e.duration,e.easing,function(){u&&t.effects.restoreStyle(i)})})),a.animate(v,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){var e=a.offset();0===v.opacity&&a.css("opacity",_.opacity),u||(a.css("position","static"===f?"relative":f).offset(e),t.effects.saveStyle(a)),i()}})}),t.effects.define("scale",function(e,i){var s=t(this),n=e.mode,o=parseInt(e.percent,10)||(0===parseInt(e.percent,10)?0:"effect"!==n?0:100),a=t.extend(!0,{from:t.effects.scaledDimensions(s),to:t.effects.scaledDimensions(s,o,e.direction||"both"),origin:e.origin||["middle","center"]},e);e.fade&&(a.from.opacity=1,a.to.opacity=0),t.effects.effect.size.call(this,a,i)}),t.effects.define("puff","hide",function(e,i){var s=t.extend(!0,{},e,{fade:!0,percent:parseInt(e.percent,10)||150});t.effects.effect.scale.call(this,s,i)}),t.effects.define("pulsate","show",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=o||a,h=2*(e.times||5)+(r?1:0),l=e.duration/h,c=0,u=1,d=s.queue().length;for((o||!s.is(":visible"))&&(s.css("opacity",0).show(),c=1);h>u;u++)s.animate({opacity:c},l,e.easing),c=1-c;s.animate({opacity:c},l,e.easing),s.queue(i),t.effects.unshift(s,d,h+1)}),t.effects.define("shake",function(e,i){var s=1,n=t(this),o=e.direction||"left",a=e.distance||20,r=e.times||3,h=2*r+1,l=Math.round(e.duration/h),c="up"===o||"down"===o?"top":"left",u="up"===o||"left"===o,d={},p={},f={},g=n.queue().length;for(t.effects.createPlaceholder(n),d[c]=(u?"-=":"+=")+a,p[c]=(u?"+=":"-=")+2*a,f[c]=(u?"-=":"+=")+2*a,n.animate(d,l,e.easing);r>s;s++)n.animate(p,l,e.easing).animate(f,l,e.easing);n.animate(p,l,e.easing).animate(d,l/2,e.easing).queue(i),t.effects.unshift(n,g,h+1)}),t.effects.define("slide","show",function(e,i){var s,n,o=t(this),a={up:["bottom","top"],down:["top","bottom"],left:["right","left"],right:["left","right"]},r=e.mode,h=e.direction||"left",l="up"===h||"down"===h?"top":"left",c="up"===h||"left"===h,u=e.distance||o["top"===l?"outerHeight":"outerWidth"](!0),d={};t.effects.createPlaceholder(o),s=o.cssClip(),n=o.position()[l],d[l]=(c?-1:1)*u+n,d.clip=o.cssClip(),d.clip[a[h][1]]=d.clip[a[h][0]],"show"===r&&(o.cssClip(d.clip),o.css(l,d[l]),d.clip=s,d[l]=n),o.animate(d,{queue:!1,duration:e.duration,easing:e.easing,complete:i})});var f;t.uiBackCompat!==!1&&(f=t.effects.define("transfer",function(e,i){t(this).transfer(e,i)})),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,.\/:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.widget("ui.accordion",{version:"1.12.1",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:"> li > :first-child, > :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var e=this.options;this.prevShow=this.prevHide=t(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),e.collapsible||e.active!==!1&&null!=e.active||(e.active=0),this._processPanels(),0>e.active&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():t()}},_createIcons:function(){var e,i,s=this.options.icons;s&&(e=t("<span>"),this._addClass(e,"ui-accordion-header-icon","ui-icon "+s.header),e.prependTo(this.headers),i=this.active.children(".ui-accordion-header-icon"),this._removeClass(i,s.header)._addClass(i,null,s.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||this.options.active!==!1||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons()),void 0)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var i=t.ui.keyCode,s=this.headers.length,n=this.headers.index(e.target),o=!1;switch(e.keyCode){case i.RIGHT:case i.DOWN:o=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:o=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(e);break;case i.HOME:o=this.headers[0];break;case i.END:o=this.headers[s-1]}o&&(t(e.target).attr("tabIndex",-1),t(o).attr("tabIndex",0),t(o).trigger("focus"),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===t.ui.keyCode.UP&&e.ctrlKey&&t(e.currentTarget).prev().trigger("focus")},refresh:function(){var e=this.options;this._processPanels(),e.active===!1&&e.collapsible===!0||!this.headers.length?(e.active=!1,this.active=t()):e.active===!1?this._activate(0):this.active.length&&!t.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(e.active=!1,this.active=t()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var e,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var e=t(this),i=e.uniqueId().attr("id"),s=e.next(),n=s.uniqueId().attr("id");e.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(e=n.height(),this.element.siblings(":visible").each(function(){var i=t(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(e-=i.outerHeight(!0))}),this.headers.each(function(){e-=t(this).outerHeight(!0)}),this.headers.next().each(function(){t(this).height(Math.max(0,e-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===s&&(e=0,this.headers.next().each(function(){var i=t(this).is(":visible");i||t(this).show(),e=Math.max(e,t(this).css("height","").height()),i||t(this).hide()}).height(e))},_activate:function(e){var i=this._findActive(e)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return"number"==typeof e?this.headers.eq(e):t()},_setupEvents:function(e){var i={keydown:"_keydown"};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var i,s,n=this.options,o=this.active,a=t(e.currentTarget),r=a[0]===o[0],h=r&&n.collapsible,l=h?t():a.next(),c=o.next(),u={oldHeader:o,oldPanel:c,newHeader:h?t():a,newPanel:l};e.preventDefault(),r&&!n.collapsible||this._trigger("beforeActivate",e,u)===!1||(n.active=h?!1:this.headers.index(a),this.active=r?t():a,this._toggle(u),this._removeClass(o,"ui-accordion-header-active","ui-state-active"),n.icons&&(i=o.children(".ui-accordion-header-icon"),this._removeClass(i,null,n.icons.activeHeader)._addClass(i,null,n.icons.header)),r||(this._removeClass(a,"ui-accordion-header-collapsed")._addClass(a,"ui-accordion-header-active","ui-state-active"),n.icons&&(s=a.children(".ui-accordion-header-icon"),this._removeClass(s,null,n.icons.header)._addClass(s,null,n.icons.activeHeader)),this._addClass(a.next(),"ui-accordion-content-active")))},_toggle:function(e){var i=e.newPanel,s=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,e):(s.hide(),i.show(),this._toggleComplete(e)),s.attr({"aria-hidden":"true"}),s.prev().attr({"aria-selected":"false","aria-expanded":"false"}),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===parseInt(t(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,e,i){var s,n,o,a=this,r=0,h=t.css("box-sizing"),l=t.length&&(!e.length||t.index()<e.index()),c=this.options.animate||{},u=l&&c.down||c,d=function(){a._toggleComplete(i)};return"number"==typeof u&&(o=u),"string"==typeof u&&(n=u),n=n||u.easing||c.easing,o=o||u.duration||c.duration,e.length?t.length?(s=t.show().outerHeight(),e.animate(this.hideProps,{duration:o,easing:n,step:function(t,e){e.now=Math.round(t)}}),t.hide().animate(this.showProps,{duration:o,easing:n,complete:d,step:function(t,i){i.now=Math.round(t),"height"!==i.prop?"content-box"===h&&(r+=i.now):"content"!==a.options.heightStyle&&(i.now=Math.round(s-e.outerHeight()-r),r=0)}}),void 0):e.animate(this.hideProps,o,n,d):t.animate(this.showProps,o,n,d)},_toggleComplete:function(t){var e=t.oldPanel,i=e.prev();this._removeClass(e,"ui-accordion-content-active"),this._removeClass(i,"ui-accordion-header-active")._addClass(i,"ui-accordion-header-collapsed"),e.length&&(e.parent()[0].className=e.parent()[0].className),this._trigger("activate",null,t)}}),t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return e||(e=t.body),e.nodeName||(e=t.body),e},t.widget("ui.menu",{version:"1.12.1",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){if(!this.previousFilter){var i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget);i[0]===s[0]&&(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){var i=!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]));i&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),i=e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),i.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,s,n,o,a=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:a=!1,s=this.previousFilter||"",o=!1,n=e.keyCode>=96&&105>=e.keyCode?""+(e.keyCode-96):String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===s?o=!0:n=s+n,i=this._filterMenuItems(n),i=o&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}a&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s,n,o,a=this,r=this.options.icons.submenu,h=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),s=h.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),s=t("<span>").data("ui-menu-submenu-caret",!0);a._addClass(s,"ui-menu-icon","ui-icon "+r),i.attr("aria-haspopup","true").prepend(s),e.attr("aria-labelledby",i.attr("id"))}),this._addClass(s,"ui-menu","ui-widget ui-widget-content ui-front"),e=h.add(this.element),i=e.find(this.options.items),i.not(".ui-menu-item").each(function(){var e=t(this);a._isDivider(e)&&a._addClass(e,"ui-menu-divider","ui-widget-content")}),n=i.not(".ui-menu-item, .ui-menu-divider"),o=n.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(n,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t+""),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.outerHeight(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this._removeClass(s.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(e),void 0)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())),void 0):(this.next(e),void 0)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(e){this.active=this.active||t(e.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(e,!0),this._trigger("select",e,i)},_filterMenuItems:function(e){var i=e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),s=RegExp("^"+i,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return s.test(t.trim(t(this).children(".ui-menu-item-wrapper").text()))})}}),t.widget("ui.autocomplete",{version:"1.12.1",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n;
this.isMultiLine=o||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,void 0;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),void 0):(this._searchTimeout(t),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(t),this._change(t),void 0)}}),this._initSource(),this.menu=t("<ul>").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==t.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(e,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&t.trim(s).length&&(this.liveRegion.children().hide(),t("<div>").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,i){var s=i.item.data("ui-autocomplete-item"),n=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=n,this._delay(function(){this.previous=n,this.selectedItem=s})),!1!==this._trigger("select",e,{item:s})&&this._value(s.value),this.term=this._value(),this.close(e),this.selectedItem=s}}),this.liveRegion=t("<div>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[0];return e.target===this.element[0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(":visible"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;(!e||e&&!i&&!s)&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length<this.options.minLength?this.close(e):this._trigger("search",e)!==!1?this._search(t):void 0},_search:function(t){this.pending++,this._addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:t},this._response())},_response:function(){var e=++this.requestIndex;return t.proxy(function(t){e===this.requestIndex&&this.__response(t),this.pending--,this.pending||this._removeClass("ui-autocomplete-loading")},this)},__response:function(t){t&&(t=this._normalize(t)),this._trigger("response",null,{content:t}),!this.options.disabled&&t&&t.length&&!this.cancelSearch?(this._suggest(t),this._trigger("open")):this._close()},close:function(t){this.cancelSearch=!0,this._close(t)},_close:function(t){this._off(this.document,"mousedown"),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",t))},_change:function(t){this.previous!==this._value()&&this._trigger("change",t,{item:this.selectedItem})},_normalize:function(e){return e.length&&e[0].label&&e[0].value?e:t.map(e,function(e){return"string"==typeof e?{label:e,value:e}:t.extend({},e,{label:e.label||e.value,value:e.value||e.label})})},_suggest:function(e){var i=this.menu.element.empty();this._renderMenu(i,e),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(t.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(),this._on(this.document,{mousedown:"_closeOnClickOutside"})},_resizeMenu:function(){var t=this.menu.element;t.outerWidth(Math.max(t.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(e,i){var s=this;t.each(i,function(t,i){s._renderItemData(e,i)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-autocomplete-item",e)},_renderItem:function(e,i){return t("<li>").append(t("<div>").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[t](e),void 0):(this.search(null,e),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("<div>").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete;var g=/ui-corner-([a-z]){2,6}/g;t.widget("ui.controlgroup",{version:"1.12.1",defaultElement:"<div>",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var e=this,i=[];t.each(this.options.items,function(s,n){var o,a={};return n?"controlgroupLabel"===s?(o=e.element.find(n),o.each(function(){var e=t(this);e.children(".ui-controlgroup-label-contents").length||e.contents().wrapAll("<span class='ui-controlgroup-label-contents'></span>")}),e._addClass(o,null,"ui-widget ui-widget-content ui-state-default"),i=i.concat(o.get()),void 0):(t.fn[s]&&(a=e["_"+s+"Options"]?e["_"+s+"Options"]("middle"):{classes:{}},e.element.find(n).each(function(){var n=t(this),o=n[s]("instance"),r=t.widget.extend({},a);if("button"!==s||!n.parent(".ui-spinner").length){o||(o=n[s]()[s]("instance")),o&&(r.classes=e._resolveClassesValues(r.classes,o)),n[s](r);var h=n[s]("widget");t.data(h[0],"ui-controlgroup-data",o?o:n[s]("instance")),i.push(h[0])}})),void 0):void 0}),this.childWidgets=t(t.unique(i)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var i=t(this),s=i.data("ui-controlgroup-data");s&&s[e]&&s[e]()})},_updateCornerClass:function(t,e){var i="ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all",s=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,i),this._addClass(t,null,s)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){var e=this._buildSimpleOptions(t,"ui-spinner");return e.classes["ui-spinner-up"]="",e.classes["ui-spinner-down"]="",e},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e?"auto":!1,classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(e,i){var s={};return t.each(e,function(n){var o=i.options.classes[n]||"";o=t.trim(o.replace(g,"")),s[n]=(o+" "+e[n]).replace(/\s+/g," ")}),s},_setOption:function(t,e){return"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"===t?(this._callChildMethod(e?"disable":"enable"),void 0):(this.refresh(),void 0)},refresh:function(){var e,i=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),e=this.childWidgets,this.options.onlyVisible&&(e=e.filter(":visible")),e.length&&(t.each(["first","last"],function(t,s){var n=e[s]().data("ui-controlgroup-data");if(n&&i["_"+n.widgetName+"Options"]){var o=i["_"+n.widgetName+"Options"](1===e.length?"only":s);o.classes=i._resolveClassesValues(o.classes,n),n.element[n.widgetName](o)}else i._updateCornerClass(e[s](),s)}),this._callChildMethod("refresh"))}}),t.widget("ui.checkboxradio",[t.ui.formResetMixin,{version:"1.12.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var e,i,s=this,n=this._super()||{};return this._readType(),i=this.element.labels(),this.label=t(i[i.length-1]),this.label.length||t.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element[0]).each(function(){s.originalLabel+=3===this.nodeType?t(this).text():this.outerHTML}),this.originalLabel&&(n.label=this.originalLabel),e=this.element[0].disabled,null!=e&&(n.disabled=e),n},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&(this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this.icon&&this._addClass(this.icon,null,"ui-state-hover")),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var e=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===e&&/radio|checkbox/.test(this.type)||t.error("Can't create checkboxradio on element.nodeName="+e+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var e,i=this.element[0].name,s="input[name='"+t.ui.escapeSelector(i)+"']";return i?(e=this.form.length?t(this.form[0].elements).filter(s):t(s).filter(function(){return 0===t(this).form().length}),e.not(this.element)):t([])},_toggleClasses:function(){var e=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",e),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",e)._toggleClass(this.icon,null,"ui-icon-blank",!e),"radio"===this.type&&this._getRadioGroup().each(function(){var e=t(this).checkboxradio("instance");e&&e._removeClass(e.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){return"label"!==t||e?(this._super(t,e),"disabled"===t?(this._toggleClass(this.label,null,"ui-state-disabled",e),this.element[0].disabled=e,void 0):(this.refresh(),void 0)):void 0},_updateIcon:function(e){var i="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=t("<span>"),this.iconSpace=t("<span> </span>"),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(i+=e?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,e?"ui-icon-blank":"ui-icon-check")):i+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",i),e||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),this.iconSpace&&(t=t.not(this.iconSpace[0])),t.remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]),t.ui.checkboxradio,t.widget("ui.button",{version:"1.12.1",defaultElement:"<button>",options:{classes:{"ui-button":"ui-corner-all"},disabled:null,icon:null,iconPosition:"beginning",label:null,showLabel:!0},_getCreateOptions:function(){var t,e=this._super()||{};return this.isInput=this.element.is("input"),t=this.element[0].disabled,null!=t&&(e.disabled=t),this.originalLabel=this.isInput?this.element.val():this.element.html(),this.originalLabel&&(e.label=this.originalLabel),e},_create:function(){!this.option.showLabel&!this.options.icon&&(this.options.showLabel=!0),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled||!1),this.hasTitle=!!this.element.attr("title"),this.options.label&&this.options.label!==this.originalLabel&&(this.isInput?this.element.val(this.options.label):this.element.html(this.options.label)),this._addClass("ui-button","ui-widget"),this._setOption("disabled",this.options.disabled),this._enhance(),this.element.is("a")&&this._on({keyup:function(e){e.keyCode===t.ui.keyCode.SPACE&&(e.preventDefault(),this.element[0].click?this.element[0].click():this.element.trigger("click"))}})},_enhance:function(){this.element.is("button")||this.element.attr("role","button"),this.options.icon&&(this._updateIcon("icon",this.options.icon),this._updateTooltip())},_updateTooltip:function(){this.title=this.element.attr("title"),this.options.showLabel||this.title||this.element.attr("title",this.options.label)},_updateIcon:function(e,i){var s="iconPosition"!==e,n=s?this.options.iconPosition:i,o="top"===n||"bottom"===n;this.icon?s&&this._removeClass(this.icon,null,this.options.icon):(this.icon=t("<span>"),this._addClass(this.icon,"ui-button-icon","ui-icon"),this.options.showLabel||this._addClass("ui-button-icon-only")),s&&this._addClass(this.icon,null,i),this._attachIcon(n),o?(this._addClass(this.icon,null,"ui-widget-icon-block"),this.iconSpace&&this.iconSpace.remove()):(this.iconSpace||(this.iconSpace=t("<span> </span>"),this._addClass(this.iconSpace,"ui-button-icon-space")),this._removeClass(this.icon,null,"ui-wiget-icon-block"),this._attachIconSpace(n))},_destroy:function(){this.element.removeAttr("role"),this.icon&&this.icon.remove(),this.iconSpace&&this.iconSpace.remove(),this.hasTitle||this.element.removeAttr("title")},_attachIconSpace:function(t){this.icon[/^(?:end|bottom)/.test(t)?"before":"after"](this.iconSpace)},_attachIcon:function(t){this.element[/^(?:end|bottom)/.test(t)?"append":"prepend"](this.icon)},_setOptions:function(t){var e=void 0===t.showLabel?this.options.showLabel:t.showLabel,i=void 0===t.icon?this.options.icon:t.icon;e||i||(t.showLabel=!0),this._super(t)},_setOption:function(t,e){"icon"===t&&(e?this._updateIcon(t,e):this.icon&&(this.icon.remove(),this.iconSpace&&this.iconSpace.remove())),"iconPosition"===t&&this._updateIcon(t,e),"showLabel"===t&&(this._toggleClass("ui-button-icon-only",null,!e),this._updateTooltip()),"label"===t&&(this.isInput?this.element.val(e):(this.element.html(e),this.icon&&(this._attachIcon(this.options.iconPosition),this._attachIconSpace(this.options.iconPosition)))),this._super(t,e),"disabled"===t&&(this._toggleClass(null,"ui-state-disabled",e),this.element[0].disabled=e,e&&this.element.blur())},refresh:function(){var t=this.element.is("input, button")?this.element[0].disabled:this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOptions({disabled:t}),this._updateTooltip()}}),t.uiBackCompat!==!1&&(t.widget("ui.button",t.ui.button,{options:{text:!0,icons:{primary:null,secondary:null}},_create:function(){this.options.showLabel&&!this.options.text&&(this.options.showLabel=this.options.text),!this.options.showLabel&&this.options.text&&(this.options.text=this.options.showLabel),this.options.icon||!this.options.icons.primary&&!this.options.icons.secondary?this.options.icon&&(this.options.icons.primary=this.options.icon):this.options.icons.primary?this.options.icon=this.options.icons.primary:(this.options.icon=this.options.icons.secondary,this.options.iconPosition="end"),this._super()},_setOption:function(t,e){return"text"===t?(this._super("showLabel",e),void 0):("showLabel"===t&&(this.options.text=e),"icon"===t&&(this.options.icons.primary=e),"icons"===t&&(e.primary?(this._super("icon",e.primary),this._super("iconPosition","beginning")):e.secondary&&(this._super("icon",e.secondary),this._super("iconPosition","end"))),this._superApply(arguments),void 0)}}),t.fn.button=function(e){return function(){return!this.length||this.length&&"INPUT"!==this[0].tagName||this.length&&"INPUT"===this[0].tagName&&"checkbox"!==this.attr("type")&&"radio"!==this.attr("type")?e.apply(this,arguments):(t.ui.checkboxradio||t.error("Checkboxradio widget missing"),0===arguments.length?this.checkboxradio({icon:!1}):this.checkboxradio.apply(this,arguments))}}(t.fn.button),t.fn.buttonset=function(){return t.ui.controlgroup||t.error("Controlgroup widget missing"),"option"===arguments[0]&&"items"===arguments[1]&&arguments[2]?this.controlgroup.apply(this,[arguments[0],"items.button",arguments[2]]):"option"===arguments[0]&&"items"===arguments[1]?this.controlgroup.apply(this,[arguments[0],"items.button"]):("object"==typeof arguments[0]&&arguments[0].items&&(arguments[0].items={button:arguments[0].items}),this.controlgroup.apply(this,arguments))}),t.ui.button,t.extend(t.ui,{datepicker:{version:"1.12.1"}});var m;t.extend(s.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(t){return a(this._defaults,t||{}),this},_attachDatepicker:function(e,i){var s,n,o;s=e.nodeName.toLowerCase(),n="div"===s||"span"===s,e.id||(this.uuid+=1,e.id="dp"+this.uuid),o=this._newInst(t(e),n),o.settings=t.extend({},i||{}),"input"===s?this._connectDatepicker(e,o):n&&this._inlineDatepicker(e,o)},_newInst:function(e,i){var s=e[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:s,input:e,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?n(t("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(e,i){var s=t(e);i.append=t([]),i.trigger=t([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).on("keydown",this._doKeyDown).on("keypress",this._doKeyPress).on("keyup",this._doKeyUp),this._autoSize(i),t.data(e,"datepicker",i),i.settings.disabled&&this._disableDatepicker(e))},_attachments:function(e,i){var s,n,o,a=this._get(i,"appendText"),r=this._get(i,"isRTL");i.append&&i.append.remove(),a&&(i.append=t("<span class='"+this._appendClass+"'>"+a+"</span>"),e[r?"before":"after"](i.append)),e.off("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,"showOn"),("focus"===s||"both"===s)&&e.on("focus",this._showDatepicker),("button"===s||"both"===s)&&(n=this._get(i,"buttonText"),o=this._get(i,"buttonImage"),i.trigger=t(this._get(i,"buttonImageOnly")?t("<img/>").addClass(this._triggerClass).attr({src:o,alt:n,title:n}):t("<button type='button'></button>").addClass(this._triggerClass).html(o?t("<img/>").attr({src:o,alt:n,title:n}):n)),e[r?"before":"after"](i.trigger),i.trigger.on("click",function(){return t.datepicker._datepickerShowing&&t.datepicker._lastInput===e[0]?t.datepicker._hideDatepicker():t.datepicker._datepickerShowing&&t.datepicker._lastInput!==e[0]?(t.datepicker._hideDatepicker(),t.datepicker._showDatepicker(e[0])):t.datepicker._showDatepicker(e[0]),!1}))},_autoSize:function(t){if(this._get(t,"autoSize")&&!t.inline){var e,i,s,n,o=new Date(2009,11,20),a=this._get(t,"dateFormat");a.match(/[DM]/)&&(e=function(t){for(i=0,s=0,n=0;t.length>n;n++)t[n].length>i&&(i=t[n].length,s=n);return s},o.setMonth(e(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length)}},_inlineDatepicker:function(e,i){var s=t(e);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),t.data(e,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(e),i.dpDiv.css("display","block"))},_dialogDatepicker:function(e,i,s,n,o){var r,h,l,c,u,d=this._dialogInst;return d||(this.uuid+=1,r="dp"+this.uuid,this._dialogInput=t("<input type='text' id='"+r+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.on("keydown",this._doKeyDown),t("body").append(this._dialogInput),d=this._dialogInst=this._newInst(this._dialogInput,!1),d.settings={},t.data(this._dialogInput[0],"datepicker",d)),a(d.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(d,i):i,this._dialogInput.val(i),this._pos=o?o.length?o:[o.pageX,o.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,c=document.documentElement.scrollLeft||document.body.scrollLeft,u=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+c,l/2-150+u]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),d.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),t.blockUI&&t.blockUI(this.dpDiv),t.data(this._dialogInput[0],"datepicker",d),this},_destroyDatepicker:function(e){var i,s=t(e),n=t.data(e,"datepicker");s.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),t.removeData(e,"datepicker"),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty(),m===n&&(m=null))},_enableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!1,o.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!0,o.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;this._disabledInputs.length>e;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(e){try{return t.data(e,"datepicker")}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(e,i,s){var n,o,r,h,l=this._getInst(e);return 2===arguments.length&&"string"==typeof i?"defaults"===i?t.extend({},t.datepicker._defaults):l?"all"===i?t.extend({},l.settings):this._get(l,i):null:(n=i||{},"string"==typeof i&&(n={},n[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),o=this._getDateDatepicker(e,!0),r=this._getMinMaxDate(l,"min"),h=this._getMinMaxDate(l,"max"),a(l.settings,n),null!==r&&void 0!==n.dateFormat&&void 0===n.minDate&&(l.settings.minDate=this._formatDate(l,r)),null!==h&&void 0!==n.dateFormat&&void 0===n.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),"disabled"in n&&(n.disabled?this._disableDatepicker(e):this._enableDatepicker(e)),this._attachments(t(e),l),this._autoSize(l),this._setDate(l,o),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){var e=this._getInst(t);e&&this._updateDatepicker(e)},_setDateDatepicker:function(t,e){var i=this._getInst(t);i&&(this._setDate(i,e),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(t,e){var i=this._getInst(t);return i&&!i.inline&&this._setDateFromField(i,e),i?this._getDate(i):null},_doKeyDown:function(e){var i,s,n,o=t.datepicker._getInst(e.target),a=!0,r=o.dpDiv.is(".ui-datepicker-rtl");if(o._keyEvent=!0,t.datepicker._datepickerShowing)switch(e.keyCode){case 9:t.datepicker._hideDatepicker(),a=!1;break;case 13:return n=t("td."+t.datepicker._dayOverClass+":not(."+t.datepicker._currentClass+")",o.dpDiv),n[0]&&t.datepicker._selectDay(e.target,o.selectedMonth,o.selectedYear,n[0]),i=t.datepicker._get(o,"onSelect"),i?(s=t.datepicker._formatDate(o),i.apply(o.input?o.input[0]:null,[s,o])):t.datepicker._hideDatepicker(),!1;case 27:t.datepicker._hideDatepicker();break;case 33:t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 34:t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 35:(e.ctrlKey||e.metaKey)&&t.datepicker._clearDate(e.target),a=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&t.datepicker._gotoToday(e.target),a=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?1:-1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,-7,"D"),a=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?-1:1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,7,"D"),a=e.ctrlKey||e.metaKey;break;default:a=!1}else 36===e.keyCode&&e.ctrlKey?t.datepicker._showDatepicker(this):a=!1;a&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(e){var i,s,n=t.datepicker._getInst(e.target);return t.datepicker._get(n,"constrainInput")?(i=t.datepicker._possibleChars(t.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),e.ctrlKey||e.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0},_doKeyUp:function(e){var i,s=t.datepicker._getInst(e.target);if(s.input.val()!==s.lastVal)try{i=t.datepicker.parseDate(t.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,t.datepicker._getFormatConfig(s)),i&&(t.datepicker._setDateFromField(s),t.datepicker._updateAlternate(s),t.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(e){if(e=e.target||e,"input"!==e.nodeName.toLowerCase()&&(e=t("input",e.parentNode)[0]),!t.datepicker._isDisabledDatepicker(e)&&t.datepicker._lastInput!==e){var s,n,o,r,h,l,c;s=t.datepicker._getInst(e),t.datepicker._curInst&&t.datepicker._curInst!==s&&(t.datepicker._curInst.dpDiv.stop(!0,!0),s&&t.datepicker._datepickerShowing&&t.datepicker._hideDatepicker(t.datepicker._curInst.input[0])),n=t.datepicker._get(s,"beforeShow"),o=n?n.apply(e,[e,s]):{},o!==!1&&(a(s.settings,o),s.lastVal=null,t.datepicker._lastInput=e,t.datepicker._setDateFromField(s),t.datepicker._inDialog&&(e.value=""),t.datepicker._pos||(t.datepicker._pos=t.datepicker._findPos(e),t.datepicker._pos[1]+=e.offsetHeight),r=!1,t(e).parents().each(function(){return r|="fixed"===t(this).css("position"),!r}),h={left:t.datepicker._pos[0],top:t.datepicker._pos[1]},t.datepicker._pos=null,s.dpDiv.empty(),s.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),t.datepicker._updateDatepicker(s),h=t.datepicker._checkOffset(s,h,r),s.dpDiv.css({position:t.datepicker._inDialog&&t.blockUI?"static":r?"fixed":"absolute",display:"none",left:h.left+"px",top:h.top+"px"}),s.inline||(l=t.datepicker._get(s,"showAnim"),c=t.datepicker._get(s,"duration"),s.dpDiv.css("z-index",i(t(e))+1),t.datepicker._datepickerShowing=!0,t.effects&&t.effects.effect[l]?s.dpDiv.show(l,t.datepicker._get(s,"showOptions"),c):s.dpDiv[l||"show"](l?c:null),t.datepicker._shouldFocusInput(s)&&s.input.trigger("focus"),t.datepicker._curInst=s))
}},_updateDatepicker:function(e){this.maxRows=4,m=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e);var i,s=this._getNumberOfMonths(e),n=s[1],a=17,r=e.dpDiv.find("."+this._dayOverClass+" a");r.length>0&&o.apply(r.get(0)),e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&e.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),e.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e===t.datepicker._curInst&&t.datepicker._datepickerShowing&&t.datepicker._shouldFocusInput(e)&&e.input.trigger("focus"),e.yearshtml&&(i=e.yearshtml,setTimeout(function(){i===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml),i=e.yearshtml=null},0))},_shouldFocusInput:function(t){return t.input&&t.input.is(":visible")&&!t.input.is(":disabled")&&!t.input.is(":focus")},_checkOffset:function(e,i,s){var n=e.dpDiv.outerWidth(),o=e.dpDiv.outerHeight(),a=e.input?e.input.outerWidth():0,r=e.input?e.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:t(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:t(document).scrollTop());return i.left-=this._get(e,"isRTL")?n-a:0,i.left-=s&&i.left===e.input.offset().left?t(document).scrollLeft():0,i.top-=s&&i.top===e.input.offset().top+r?t(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+o>l&&l>o?Math.abs(o+r):0),i},_findPos:function(e){for(var i,s=this._getInst(e),n=this._get(s,"isRTL");e&&("hidden"===e.type||1!==e.nodeType||t.expr.filters.hidden(e));)e=e[n?"previousSibling":"nextSibling"];return i=t(e).offset(),[i.left,i.top]},_hideDatepicker:function(e){var i,s,n,o,a=this._curInst;!a||e&&a!==t.data(e,"datepicker")||this._datepickerShowing&&(i=this._get(a,"showAnim"),s=this._get(a,"duration"),n=function(){t.datepicker._tidyDialog(a)},t.effects&&(t.effects.effect[i]||t.effects[i])?a.dpDiv.hide(i,t.datepicker._get(a,"showOptions"),s,n):a.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,o=this._get(a,"onClose"),o&&o.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),t.blockUI&&(t.unblockUI(),t("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")},_checkExternalClick:function(e){if(t.datepicker._curInst){var i=t(e.target),s=t.datepicker._getInst(i[0]);(i[0].id!==t.datepicker._mainDivId&&0===i.parents("#"+t.datepicker._mainDivId).length&&!i.hasClass(t.datepicker.markerClassName)&&!i.closest("."+t.datepicker._triggerClass).length&&t.datepicker._datepickerShowing&&(!t.datepicker._inDialog||!t.blockUI)||i.hasClass(t.datepicker.markerClassName)&&t.datepicker._curInst!==s)&&t.datepicker._hideDatepicker()}},_adjustDate:function(e,i,s){var n=t(e),o=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(o,i+("M"===s?this._get(o,"showCurrentAtPos"):0),s),this._updateDatepicker(o))},_gotoToday:function(e){var i,s=t(e),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(e,i,s){var n=t(e),o=this._getInst(n[0]);o["selected"+("M"===s?"Month":"Year")]=o["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(o),this._adjustDate(n)},_selectDay:function(e,i,s,n){var o,a=t(e);t(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(a[0])||(o=this._getInst(a[0]),o.selectedDay=o.currentDay=t("a",n).html(),o.selectedMonth=o.currentMonth=i,o.selectedYear=o.currentYear=s,this._selectDate(e,this._formatDate(o,o.currentDay,o.currentMonth,o.currentYear)))},_clearDate:function(e){var i=t(e);this._selectDate(i,"")},_selectDate:function(e,i){var s,n=t(e),o=this._getInst(n[0]);i=null!=i?i:this._formatDate(o),o.input&&o.input.val(i),this._updateAlternate(o),s=this._get(o,"onSelect"),s?s.apply(o.input?o.input[0]:null,[i,o]):o.input&&o.input.trigger("change"),o.inline?this._updateDatepicker(o):(this._hideDatepicker(),this._lastInput=o.input[0],"object"!=typeof o.input[0]&&o.input.trigger("focus"),this._lastInput=null)},_updateAlternate:function(e){var i,s,n,o=this._get(e,"altField");o&&(i=this._get(e,"altFormat")||this._get(e,"dateFormat"),s=this._getDate(e),n=this.formatDate(i,s,this._getFormatConfig(e)),t(o).val(n))},noWeekends:function(t){var e=t.getDay();return[e>0&&6>e,""]},iso8601Week:function(t){var e,i=new Date(t.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),e=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((e-i)/864e5)/7)+1},parseDate:function(e,i,s){if(null==e||null==i)throw"Invalid arguments";if(i="object"==typeof i?""+i:i+"",""===i)return null;var n,o,a,r,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,c="string"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),u=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,d=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,g=-1,m=-1,_=-1,v=-1,b=!1,y=function(t){var i=e.length>n+1&&e.charAt(n+1)===t;return i&&n++,i},w=function(t){var e=y(t),s="@"===t?14:"!"===t?20:"y"===t&&e?4:"o"===t?3:2,n="y"===t?s:1,o=RegExp("^\\d{"+n+","+s+"}"),a=i.substring(h).match(o);if(!a)throw"Missing number at position "+h;return h+=a[0].length,parseInt(a[0],10)},k=function(e,s,n){var o=-1,a=t.map(y(e)?n:s,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[1].length-e[1].length)});if(t.each(a,function(t,e){var s=e[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(o=e[0],h+=s.length,!1):void 0}),-1!==o)return o+1;throw"Unknown name at position "+h},x=function(){if(i.charAt(h)!==e.charAt(n))throw"Unexpected literal at position "+h;h++};for(n=0;e.length>n;n++)if(b)"'"!==e.charAt(n)||y("'")?x():b=!1;else switch(e.charAt(n)){case"d":_=w("d");break;case"D":k("D",u,d);break;case"o":v=w("o");break;case"m":m=w("m");break;case"M":m=k("M",p,f);break;case"y":g=w("y");break;case"@":r=new Date(w("@")),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"!":r=new Date((w("!")-this._ticksTo1970)/1e4),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"'":y("'")?x():b=!0;break;default:x()}if(i.length>h&&(a=i.substr(h),!/^\s+/.test(a)))throw"Extra/unparsed characters found in date: "+a;if(-1===g?g=(new Date).getFullYear():100>g&&(g+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c>=g?0:-100)),v>-1)for(m=1,_=v;;){if(o=this._getDaysInMonth(g,m-1),o>=_)break;m++,_-=o}if(r=this._daylightSavingAdjust(new Date(g,m-1,_)),r.getFullYear()!==g||r.getMonth()+1!==m||r.getDate()!==_)throw"Invalid date";return r},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(t,e,i){if(!e)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,o=(i?i.dayNames:null)||this._defaults.dayNames,a=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(e){var i=t.length>s+1&&t.charAt(s+1)===e;return i&&s++,i},l=function(t,e,i){var s=""+e;if(h(t))for(;i>s.length;)s="0"+s;return s},c=function(t,e,i,s){return h(t)?s[e]:i[e]},u="",d=!1;if(e)for(s=0;t.length>s;s++)if(d)"'"!==t.charAt(s)||h("'")?u+=t.charAt(s):d=!1;else switch(t.charAt(s)){case"d":u+=l("d",e.getDate(),2);break;case"D":u+=c("D",e.getDay(),n,o);break;case"o":u+=l("o",Math.round((new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()-new Date(e.getFullYear(),0,0).getTime())/864e5),3);break;case"m":u+=l("m",e.getMonth()+1,2);break;case"M":u+=c("M",e.getMonth(),a,r);break;case"y":u+=h("y")?e.getFullYear():(10>e.getFullYear()%100?"0":"")+e.getFullYear()%100;break;case"@":u+=e.getTime();break;case"!":u+=1e4*e.getTime()+this._ticksTo1970;break;case"'":h("'")?u+="'":d=!0;break;default:u+=t.charAt(s)}return u},_possibleChars:function(t){var e,i="",s=!1,n=function(i){var s=t.length>e+1&&t.charAt(e+1)===i;return s&&e++,s};for(e=0;t.length>e;e++)if(s)"'"!==t.charAt(e)||n("'")?i+=t.charAt(e):s=!1;else switch(t.charAt(e)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=t.charAt(e)}return i},_get:function(t,e){return void 0!==t.settings[e]?t.settings[e]:this._defaults[e]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,"dateFormat"),s=t.lastVal=t.input?t.input.val():null,n=this._getDefaultDate(t),o=n,a=this._getFormatConfig(t);try{o=this.parseDate(i,s,a)||n}catch(r){s=e?"":s}t.selectedDay=o.getDate(),t.drawMonth=t.selectedMonth=o.getMonth(),t.drawYear=t.selectedYear=o.getFullYear(),t.currentDay=s?o.getDate():0,t.currentMonth=s?o.getMonth():0,t.currentYear=s?o.getFullYear():0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,"defaultDate"),new Date))},_determineDate:function(e,i,s){var n=function(t){var e=new Date;return e.setDate(e.getDate()+t),e},o=function(i){try{return t.datepicker.parseDate(t.datepicker._get(e,"dateFormat"),i,t.datepicker._getFormatConfig(e))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?t.datepicker._getDate(e):null)||new Date,o=n.getFullYear(),a=n.getMonth(),r=n.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":r+=parseInt(l[1],10);break;case"w":case"W":r+=7*parseInt(l[1],10);break;case"m":case"M":a+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a));break;case"y":case"Y":o+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a))}l=h.exec(i)}return new Date(o,a,r)},a=null==i||""===i?s:"string"==typeof i?o(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return a=a&&"Invalid Date"==""+a?s:a,a&&(a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0)),this._daylightSavingAdjust(a)},_daylightSavingAdjust:function(t){return t?(t.setHours(t.getHours()>12?t.getHours()+2:0),t):null},_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,o=t.selectedYear,a=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=a.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=a.getMonth(),t.drawYear=t.selectedYear=t.currentYear=a.getFullYear(),n===t.selectedMonth&&o===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?"":this._formatDate(t))},_getDate:function(t){var e=!t.currentYear||t.input&&""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return e},_attachHandlers:function(e){var i=this._get(e,"stepMonths"),s="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){t.datepicker._adjustDate(s,-i,"M")},next:function(){t.datepicker._adjustDate(s,+i,"M")},hide:function(){t.datepicker._hideDatepicker()},today:function(){t.datepicker._gotoToday(s)},selectDay:function(){return t.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return t.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return t.datepicker._selectMonthYear(s,this,"Y"),!1}};t(this).on(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(t){var e,i,s,n,o,a,r,h,l,c,u,d,p,f,g,m,_,v,b,y,w,k,x,C,D,I,T,P,M,S,H,z,O,A,N,W,E,F,L,R=new Date,B=this._daylightSavingAdjust(new Date(R.getFullYear(),R.getMonth(),R.getDate())),Y=this._get(t,"isRTL"),j=this._get(t,"showButtonPanel"),q=this._get(t,"hideIfNoPrevNext"),K=this._get(t,"navigationAsDateFormat"),U=this._getNumberOfMonths(t),V=this._get(t,"showCurrentAtPos"),$=this._get(t,"stepMonths"),X=1!==U[0]||1!==U[1],G=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(9999,9,9)),Q=this._getMinMaxDate(t,"min"),J=this._getMinMaxDate(t,"max"),Z=t.drawMonth-V,te=t.drawYear;if(0>Z&&(Z+=12,te--),J)for(e=this._daylightSavingAdjust(new Date(J.getFullYear(),J.getMonth()-U[0]*U[1]+1,J.getDate())),e=Q&&Q>e?Q:e;this._daylightSavingAdjust(new Date(te,Z,1))>e;)Z--,0>Z&&(Z=11,te--);for(t.drawMonth=Z,t.drawYear=te,i=this._get(t,"prevText"),i=K?this.formatDate(i,this._daylightSavingAdjust(new Date(te,Z-$,1)),this._getFormatConfig(t)):i,s=this._canAdjustMonth(t,-1,te,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>":q?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>",n=this._get(t,"nextText"),n=K?this.formatDate(n,this._daylightSavingAdjust(new Date(te,Z+$,1)),this._getFormatConfig(t)):n,o=this._canAdjustMonth(t,1,te,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>":q?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>",a=this._get(t,"currentText"),r=this._get(t,"gotoCurrent")&&t.currentDay?G:B,a=K?this.formatDate(a,r,this._getFormatConfig(t)):a,h=t.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(t,"closeText")+"</button>",l=j?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(Y?h:"")+(this._isInRange(t,r)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+a+"</button>":"")+(Y?"":h)+"</div>":"",c=parseInt(this._get(t,"firstDay"),10),c=isNaN(c)?0:c,u=this._get(t,"showWeek"),d=this._get(t,"dayNames"),p=this._get(t,"dayNamesMin"),f=this._get(t,"monthNames"),g=this._get(t,"monthNamesShort"),m=this._get(t,"beforeShowDay"),_=this._get(t,"showOtherMonths"),v=this._get(t,"selectOtherMonths"),b=this._getDefaultDate(t),y="",k=0;U[0]>k;k++){for(x="",this.maxRows=4,C=0;U[1]>C;C++){if(D=this._daylightSavingAdjust(new Date(te,Z,t.selectedDay)),I=" ui-corner-all",T="",X){if(T+="<div class='ui-datepicker-group",U[1]>1)switch(C){case 0:T+=" ui-datepicker-group-first",I=" ui-corner-"+(Y?"right":"left");break;case U[1]-1:T+=" ui-datepicker-group-last",I=" ui-corner-"+(Y?"left":"right");break;default:T+=" ui-datepicker-group-middle",I=""}T+="'>"}for(T+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+I+"'>"+(/all|left/.test(I)&&0===k?Y?o:s:"")+(/all|right/.test(I)&&0===k?Y?s:o:"")+this._generateMonthYearHeader(t,Z,te,Q,J,k>0||C>0,f,g)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",P=u?"<th class='ui-datepicker-week-col'>"+this._get(t,"weekHeader")+"</th>":"",w=0;7>w;w++)M=(w+c)%7,P+="<th scope='col'"+((w+c+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+d[M]+"'>"+p[M]+"</span></th>";for(T+=P+"</tr></thead><tbody>",S=this._getDaysInMonth(te,Z),te===t.selectedYear&&Z===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,S)),H=(this._getFirstDayOfMonth(te,Z)-c+7)%7,z=Math.ceil((H+S)/7),O=X?this.maxRows>z?this.maxRows:z:z,this.maxRows=O,A=this._daylightSavingAdjust(new Date(te,Z,1-H)),N=0;O>N;N++){for(T+="<tr>",W=u?"<td class='ui-datepicker-week-col'>"+this._get(t,"calculateWeek")(A)+"</td>":"",w=0;7>w;w++)E=m?m.apply(t.input?t.input[0]:null,[A]):[!0,""],F=A.getMonth()!==Z,L=F&&!v||!E[0]||Q&&Q>A||J&&A>J,W+="<td class='"+((w+c+6)%7>=5?" ui-datepicker-week-end":"")+(F?" ui-datepicker-other-month":"")+(A.getTime()===D.getTime()&&Z===t.selectedMonth&&t._keyEvent||b.getTime()===A.getTime()&&b.getTime()===D.getTime()?" "+this._dayOverClass:"")+(L?" "+this._unselectableClass+" ui-state-disabled":"")+(F&&!_?"":" "+E[1]+(A.getTime()===G.getTime()?" "+this._currentClass:"")+(A.getTime()===B.getTime()?" ui-datepicker-today":""))+"'"+(F&&!_||!E[2]?"":" title='"+E[2].replace(/'/g,"&#39;")+"'")+(L?"":" data-handler='selectDay' data-event='click' data-month='"+A.getMonth()+"' data-year='"+A.getFullYear()+"'")+">"+(F&&!_?"&#xa0;":L?"<span class='ui-state-default'>"+A.getDate()+"</span>":"<a class='ui-state-default"+(A.getTime()===B.getTime()?" ui-state-highlight":"")+(A.getTime()===G.getTime()?" ui-state-active":"")+(F?" ui-priority-secondary":"")+"' href='#'>"+A.getDate()+"</a>")+"</td>",A.setDate(A.getDate()+1),A=this._daylightSavingAdjust(A);T+=W+"</tr>"}Z++,Z>11&&(Z=0,te++),T+="</tbody></table>"+(X?"</div>"+(U[0]>0&&C===U[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),x+=T}y+=x}return y+=l,t._keyEvent=!1,y},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var h,l,c,u,d,p,f,g,m=this._get(t,"changeMonth"),_=this._get(t,"changeYear"),v=this._get(t,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",y="";if(o||!m)y+="<span class='ui-datepicker-month'>"+a[e]+"</span>";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,y+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",c=0;12>c;c++)(!h||c>=s.getMonth())&&(!l||n.getMonth()>=c)&&(y+="<option value='"+c+"'"+(c===e?" selected='selected'":"")+">"+r[c]+"</option>");y+="</select>"}if(v||(b+=y+(!o&&m&&_?"":"&#xa0;")),!t.yearshtml)if(t.yearshtml="",o||!_)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(u=this._get(t,"yearRange").split(":"),d=(new Date).getFullYear(),p=function(t){var e=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?d+parseInt(t,10):parseInt(t,10);return isNaN(e)?d:e},f=p(u[0]),g=Math.max(f,p(u[1]||"")),f=s?Math.max(f,s.getFullYear()):f,g=n?Math.min(g,n.getFullYear()):g,t.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";g>=f;f++)t.yearshtml+="<option value='"+f+"'"+(f===i?" selected='selected'":"")+">"+f+"</option>";t.yearshtml+="</select>",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),v&&(b+=(!o&&m&&_?"":"&#xa0;")+y),b+="</div>"},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),o=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),a=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,o)));t.selectedDay=a.getDate(),t.drawMonth=t.selectedMonth=a.getMonth(),t.drawYear=t.selectedYear=a.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),s=this._getMinMaxDate(t,"max"),n=i&&i>e?i:e;return s&&n>s?s:n},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){var e=this._get(t,"numberOfMonths");return null==e?[1,1]:"number"==typeof e?[1,e]:e},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),o=this._daylightSavingAdjust(new Date(i,s+(0>e?e:n[0]*n[1]),1));return 0>e&&o.setDate(this._getDaysInMonth(o.getFullYear(),o.getMonth())),this._isInRange(t,o)},_isInRange:function(t,e){var i,s,n=this._getMinMaxDate(t,"min"),o=this._getMinMaxDate(t,"max"),a=null,r=null,h=this._get(t,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),a=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(a+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||e.getTime()>=n.getTime())&&(!o||e.getTime()<=o.getTime())&&(!a||e.getFullYear()>=a)&&(!r||r>=e.getFullYear())},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),{shortYearCutoff:e,dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);var n=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),n,this._getFormatConfig(t))}}),t.fn.datepicker=function(e){if(!this.length)return this;t.datepicker.initialized||(t(document).on("mousedown",t.datepicker._checkExternalClick),t.datepicker.initialized=!0),0===t("#"+t.datepicker._mainDivId).length&&t("body").append(t.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof e||"isDisabled"!==e&&"getDate"!==e&&"widget"!==e?"option"===e&&2===arguments.length&&"string"==typeof arguments[1]?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof e?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this].concat(i)):t.datepicker._attachDatepicker(this,e)}):t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i))},t.datepicker=new s,t.datepicker.initialized=!1,t.datepicker.uuid=(new Date).getTime(),t.datepicker.version="1.12.1",t.datepicker,t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var _=!1;t(document).on("mouseup",function(){_=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!_){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,n="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),_=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,_=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.ui.safeBlur=function(e){e&&"body"!==e.nodeName.toLowerCase()&&t(e).trigger("blur")},t.widget("ui.draggable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(e){var i=this.options;return this.helper||i.disabled||t(e.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(e),this.handle?(this._blurActiveElement(e),this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(e){this.iframeBlocks=this.document.find(e).map(function(){var e=t(this);return t("<div>").css("position","absolute").appendTo(e.parent()).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(e){var i=t.ui.safeActiveElement(this.document[0]),s=t(e.target);s.closest(i).length||t.ui.safeBlur(i)},_mouseStart:function(e){var i=this.options;return this.helper=this._createHelper(e),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===t(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(e),this.originalPosition=this.position=this._generatePosition(e,!1),this.originalPageX=e.pageX,this.originalPageY=e.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",e)===!1?(this._clear(),!1):(this._cacheHelperProportions(),t.ui.ddmanager&&!i.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this._mouseDrag(e,!0),t.ui.ddmanager&&t.ui.ddmanager.dragStart(this,e),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(e,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(e,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",e,s)===!1)return this._mouseUp(new t.Event("mouseup",e)),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),!1},_mouseStop:function(e){var i=this,s=!1;return t.ui.ddmanager&&!this.options.dropBehaviour&&(s=t.ui.ddmanager.drop(this,e)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||t.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?t(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",e)!==!1&&i._clear()}):this._trigger("stop",e)!==!1&&this._clear(),!1},_mouseUp:function(e){return this._unblockFrames(),t.ui.ddmanager&&t.ui.ddmanager.dragStop(this,e),this.handleElement.is(e.target)&&this.element.trigger("focus"),t.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new t.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(e){return this.options.handle?!!t(e.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper),n=s?t(i.helper.apply(this.element[0],[e])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var e=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[0]);return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())}
},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options,o=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[t(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,t(window).scrollLeft()+t(window).width()-this.helperProportions.width-this.margins.left,t(window).scrollTop()+(t(window).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,t(o).width()-this.helperProportions.width-this.margins.left,(t(o).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=t(n.containment),s=i[0],s&&(e=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(e?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)},_convertPositionTo:function(t,e){e||(e=this.position);var i="absolute"===t?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(t,e){var i,s,n,o,a=this.options,r=this._isRootNode(this.scrollParent[0]),h=t.pageX,l=t.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,t.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),t.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),t.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),a.grid&&(n=a.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/a.grid[1])*a.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-a.grid[1]:n+a.grid[1]:n,o=a.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/a.grid[0])*a.grid[0]:this.originalPageX,h=i?o-this.offset.click.left>=i[0]||o-this.offset.click.left>i[2]?o:o-this.offset.click.left>=i[0]?o-a.grid[0]:o+a.grid[0]:o),"y"===a.axis&&(h=this.originalPageX),"x"===a.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(e,i,s){return s=s||this._uiHash(),t.ui.plugin.call(this,e,[i,s,this],!0),/^(drag|start|stop)/.test(e)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),t.Widget.prototype._trigger.call(this,e,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add("draggable","connectToSortable",{start:function(e,i,s){var n=t.extend({},i,{item:s.element});s.sortables=[],t(s.options.connectToSortable).each(function(){var i=t(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",e,n))})},stop:function(e,i,s){var n=t.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,t.each(s.sortables,function(){var t=this;t.isOver?(t.isOver=0,s.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,n))})},drag:function(e,i,s){t.each(s.sortables,function(){var n=!1,o=this;o.positionAbs=s.positionAbs,o.helperProportions=s.helperProportions,o.offset.click=s.offset.click,o._intersectsWith(o.containerCache)&&(n=!0,t.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==o&&this._intersectsWith(this.containerCache)&&t.contains(o.element[0],this.element[0])&&(n=!1),n})),n?(o.isOver||(o.isOver=1,s._parent=i.helper.parent(),o.currentItem=i.helper.appendTo(o.element).data("ui-sortable-item",!0),o.options._helper=o.options.helper,o.options.helper=function(){return i.helper[0]},e.target=o.currentItem[0],o._mouseCapture(e,!0),o._mouseStart(e,!0,!0),o.offset.click.top=s.offset.click.top,o.offset.click.left=s.offset.click.left,o.offset.parent.left-=s.offset.parent.left-o.offset.parent.left,o.offset.parent.top-=s.offset.parent.top-o.offset.parent.top,s._trigger("toSortable",e),s.dropped=o.element,t.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,o.fromOutside=s),o.currentItem&&(o._mouseDrag(e),i.position=o.position)):o.isOver&&(o.isOver=0,o.cancelHelperRemoval=!0,o.options._revert=o.options.revert,o.options.revert=!1,o._trigger("out",e,o._uiHash(o)),o._mouseStop(e,!0),o.options.revert=o.options._revert,o.options.helper=o.options._helper,o.placeholder&&o.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(e),i.position=s._generatePosition(e,!0),s._trigger("fromSortable",e),s.dropped=!1,t.each(s.sortables,function(){this.refreshPositions()}))})}}),t.ui.plugin.add("draggable","cursor",{start:function(e,i,s){var n=t("body"),o=s.options;n.css("cursor")&&(o._cursor=n.css("cursor")),n.css("cursor",o.cursor)},stop:function(e,i,s){var n=s.options;n._cursor&&t("body").css("cursor",n._cursor)}}),t.ui.plugin.add("draggable","opacity",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("opacity")&&(o._opacity=n.css("opacity")),n.css("opacity",o.opacity)},stop:function(e,i,s){var n=s.options;n._opacity&&t(i.helper).css("opacity",n._opacity)}}),t.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(e,i,s){var n=s.options,o=!1,a=s.scrollParentNotHidden[0],r=s.document[0];a!==r&&"HTML"!==a.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+a.offsetHeight-e.pageY<n.scrollSensitivity?a.scrollTop=o=a.scrollTop+n.scrollSpeed:e.pageY-s.overflowOffset.top<n.scrollSensitivity&&(a.scrollTop=o=a.scrollTop-n.scrollSpeed)),n.axis&&"y"===n.axis||(s.overflowOffset.left+a.offsetWidth-e.pageX<n.scrollSensitivity?a.scrollLeft=o=a.scrollLeft+n.scrollSpeed:e.pageX-s.overflowOffset.left<n.scrollSensitivity&&(a.scrollLeft=o=a.scrollLeft-n.scrollSpeed))):(n.axis&&"x"===n.axis||(e.pageY-t(r).scrollTop()<n.scrollSensitivity?o=t(r).scrollTop(t(r).scrollTop()-n.scrollSpeed):t(window).height()-(e.pageY-t(r).scrollTop())<n.scrollSensitivity&&(o=t(r).scrollTop(t(r).scrollTop()+n.scrollSpeed))),n.axis&&"y"===n.axis||(e.pageX-t(r).scrollLeft()<n.scrollSensitivity?o=t(r).scrollLeft(t(r).scrollLeft()-n.scrollSpeed):t(window).width()-(e.pageX-t(r).scrollLeft())<n.scrollSensitivity&&(o=t(r).scrollLeft(t(r).scrollLeft()+n.scrollSpeed)))),o!==!1&&t.ui.ddmanager&&!n.dropBehaviour&&t.ui.ddmanager.prepareOffsets(s,e)}}),t.ui.plugin.add("draggable","snap",{start:function(e,i,s){var n=s.options;s.snapElements=[],t(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var e=t(this),i=e.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:e.outerWidth(),height:e.outerHeight(),top:i.top,left:i.left})})},drag:function(e,i,s){var n,o,a,r,h,l,c,u,d,p,f=s.options,g=f.snapTolerance,m=i.offset.left,_=m+s.helperProportions.width,v=i.offset.top,b=v+s.helperProportions.height;for(d=s.snapElements.length-1;d>=0;d--)h=s.snapElements[d].left-s.margins.left,l=h+s.snapElements[d].width,c=s.snapElements[d].top-s.margins.top,u=c+s.snapElements[d].height,h-g>_||m>l+g||c-g>b||v>u+g||!t.contains(s.snapElements[d].item.ownerDocument,s.snapElements[d].item)?(s.snapElements[d].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=!1):("inner"!==f.snapMode&&(n=g>=Math.abs(c-b),o=g>=Math.abs(u-v),a=g>=Math.abs(h-_),r=g>=Math.abs(l-m),n&&(i.position.top=s._convertPositionTo("relative",{top:c-s.helperProportions.height,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=n||o||a||r,"outer"!==f.snapMode&&(n=g>=Math.abs(c-v),o=g>=Math.abs(u-b),a=g>=Math.abs(h-m),r=g>=Math.abs(l-_),n&&(i.position.top=s._convertPositionTo("relative",{top:c,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[d].snapping&&(n||o||a||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=n||o||a||r||p)}}),t.ui.plugin.add("draggable","stack",{start:function(e,i,s){var n,o=s.options,a=t.makeArray(t(o.stack)).sort(function(e,i){return(parseInt(t(e).css("zIndex"),10)||0)-(parseInt(t(i).css("zIndex"),10)||0)});a.length&&(n=parseInt(t(a[0]).css("zIndex"),10)||0,t(a).each(function(e){t(this).css("zIndex",n+e)}),this.css("zIndex",n+a.length))}}),t.ui.plugin.add("draggable","zIndex",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("zIndex")&&(o._zIndex=n.css("zIndex")),n.css("zIndex",o.zIndex)},stop:function(e,i,s){var n=s.options;n._zIndex&&t(i.helper).css("zIndex",n._zIndex)}}),t.ui.draggable,t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("<div>"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("<div style='overflow:hidden;'></div>"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,g=s.maxWidth&&p>s.maxWidth,m=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),g&&(p-=l),m&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable,t.widget("ui.dialog",{version:"1.12.1",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(e){var i=t(this).css(e).offset().top;0>i&&t(this).css("top",e.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&t.fn.draggable&&this._makeDraggable(),this.options.resizable&&t.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var e=this.options.appendTo;return e&&(e.jquery||e.nodeType)?t(e):this.document.find(e||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),t=e.parent.children().eq(e.index),t.length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog
},disable:t.noop,enable:t.noop,close:function(e){var i=this;this._isOpen&&this._trigger("beforeClose",e)!==!1&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||t.ui.safeBlur(t.ui.safeActiveElement(this.document[0])),this._hide(this.uiDialog,this.options.hide,function(){i._trigger("close",e)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(e,i){var s=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+t(this).css("z-index")}).get(),o=Math.max.apply(null,n);return o>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",o+1),s=!0),s&&!i&&this._trigger("focus",e),s},open:function(){var e=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=t(t.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){e._focusTabbable(),e._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void 0)},_focusTabbable:function(){var t=this._focusedElement;t||(t=this.element.find("[autofocus]")),t.length||(t=this.element.find(":tabbable")),t.length||(t=this.uiDialogButtonPane.find(":tabbable")),t.length||(t=this.uiDialogTitlebarClose.filter(":tabbable")),t.length||(t=this.uiDialog),t.eq(0).trigger("focus")},_keepFocus:function(e){function i(){var e=t.ui.safeActiveElement(this.document[0]),i=this.uiDialog[0]===e||t.contains(this.uiDialog[0],e);i||this._focusTabbable()}e.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=t("<div>").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(e){if(this.options.closeOnEscape&&!e.isDefaultPrevented()&&e.keyCode&&e.keyCode===t.ui.keyCode.ESCAPE)return e.preventDefault(),this.close(e),void 0;if(e.keyCode===t.ui.keyCode.TAB&&!e.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");e.target!==n[0]&&e.target!==this.uiDialog[0]||e.shiftKey?e.target!==s[0]&&e.target!==this.uiDialog[0]||!e.shiftKey||(this._delay(function(){n.trigger("focus")}),e.preventDefault()):(this._delay(function(){s.trigger("focus")}),e.preventDefault())}},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var e;this.uiDialogTitlebar=t("<div>"),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(e){t(e.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=t("<button type='button'></button>").button({label:t("<a>").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),e=t("<span>").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(e,"ui-dialog-title"),this._title(e),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":e.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html("&#160;")},_createButtonPane:function(){this.uiDialogButtonPane=t("<div>"),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=t("<div>").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var e=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),t.isEmptyObject(i)||t.isArray(i)&&!i.length?(this._removeClass(this.uiDialog,"ui-dialog-buttons"),void 0):(t.each(i,function(i,s){var n,o;s=t.isFunction(s)?{click:s,text:i}:s,s=t.extend({type:"button"},s),n=s.click,o={icon:s.icon,iconPosition:s.iconPosition,showLabel:s.showLabel,icons:s.icons,text:s.text},delete s.click,delete s.icon,delete s.iconPosition,delete s.showLabel,delete s.icons,"boolean"==typeof s.text&&delete s.text,t("<button></button>",s).button(o).appendTo(e.uiButtonSet).on("click",function(){n.apply(e.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function e(t){return{position:t.position,offset:t.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){i._addClass(t(this),"ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,e(n))},drag:function(t,s){i._trigger("drag",t,e(s))},stop:function(n,o){var a=o.offset.left-i.document.scrollLeft(),r=o.offset.top-i.document.scrollTop();s.position={my:"left top",at:"left"+(a>=0?"+":"")+a+" "+"top"+(r>=0?"+":"")+r,of:i.window},i._removeClass(t(this),"ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,e(o))}})},_makeResizable:function(){function e(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}var i=this,s=this.options,n=s.resizable,o=this.uiDialog.css("position"),a="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:a,start:function(s,n){i._addClass(t(this),"ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,e(n))},resize:function(t,s){i._trigger("resize",t,e(s))},stop:function(n,o){var a=i.uiDialog.offset(),r=a.left-i.document.scrollLeft(),h=a.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" "+"top"+(h>=0?"+":"")+h,of:i.window},i._removeClass(t(this),"ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,e(o))}}).css("position",o)},_trackFocus:function(){this._on(this.widget(),{focusin:function(e){this._makeFocusTarget(),this._focusedElement=t(e.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var e=this._trackingInstances(),i=t.inArray(this,e);-1!==i&&e.splice(i,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||(t=[],this.document.data("ui-dialog-instances",t)),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(e){var i=this,s=!1,n={};t.each(e,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,i){var s,n,o=this.uiDialog;"disabled"!==e&&(this._super(e,i),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:t("<a>").text(""+this.options.closeText).html()}),"draggable"===e&&(s=o.is(":data(ui-draggable)"),s&&!i&&o.draggable("destroy"),!s&&i&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(n=o.is(":data(ui-resizable)"),n&&!i&&o.resizable("destroy"),n&&"string"==typeof i&&o.resizable("option","handles",i),n||i===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var e=t(this);return t("<div>").css({position:"absolute",width:e.outerWidth(),height:e.outerHeight()}).appendTo(e.parent()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(e){return t(e.target).closest(".ui-dialog").length?!0:!!t(e.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var e=!0;this._delay(function(){e=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(t){e||this._allowInteraction(t)||(t.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=t("<div>").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var t=this.document.data("ui-dialog-overlays")-1;t?this.document.data("ui-dialog-overlays",t):(this._off(this.document,"focusin"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null}}}),t.uiBackCompat!==!1&&t.widget("ui.dialog",t.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}}),t.ui.dialog,t.widget("ui.droppable",{version:"1.12.1",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var e,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=t.isFunction(s)?s:function(t){return t.is(s)},this.proportions=function(){return arguments.length?(e=arguments[0],void 0):e?e:e={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this._addClass("ui-droppable")},_addToManager:function(e){t.ui.ddmanager.droppables[e]=t.ui.ddmanager.droppables[e]||[],t.ui.ddmanager.droppables[e].push(this)},_splice:function(t){for(var e=0;t.length>e;e++)t[e]===this&&t.splice(e,1)},_destroy:function(){var e=t.ui.ddmanager.droppables[this.options.scope];this._splice(e)},_setOption:function(e,i){if("accept"===e)this.accept=t.isFunction(i)?i:function(t){return t.is(i)};else if("scope"===e){var s=t.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(e,i)},_activate:function(e){var i=t.ui.ddmanager.current;this._addActiveClass(),i&&this._trigger("activate",e,this.ui(i))},_deactivate:function(e){var i=t.ui.ddmanager.current;this._removeActiveClass(),i&&this._trigger("deactivate",e,this.ui(i))},_over:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._addHoverClass(),this._trigger("over",e,this.ui(i)))},_out:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._removeHoverClass(),this._trigger("out",e,this.ui(i)))},_drop:function(e,i){var s=i||t.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=t(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&v(s,t.extend(i,{offset:i.element.offset()}),i.options.tolerance,e)?(n=!0,!1):void 0}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this._removeActiveClass(),this._removeHoverClass(),this._trigger("drop",e,this.ui(s)),this.element):!1):!1},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}},_addHoverClass:function(){this._addClass("ui-droppable-hover")},_removeHoverClass:function(){this._removeClass("ui-droppable-hover")},_addActiveClass:function(){this._addClass("ui-droppable-active")},_removeActiveClass:function(){this._removeClass("ui-droppable-active")}});var v=t.ui.intersect=function(){function t(t,e,i){return t>=e&&e+i>t}return function(e,i,s,n){if(!i.offset)return!1;var o=(e.positionAbs||e.position.absolute).left+e.margins.left,a=(e.positionAbs||e.position.absolute).top+e.margins.top,r=o+e.helperProportions.width,h=a+e.helperProportions.height,l=i.offset.left,c=i.offset.top,u=l+i.proportions().width,d=c+i.proportions().height;switch(s){case"fit":return o>=l&&u>=r&&a>=c&&d>=h;case"intersect":return o+e.helperProportions.width/2>l&&u>r-e.helperProportions.width/2&&a+e.helperProportions.height/2>c&&d>h-e.helperProportions.height/2;case"pointer":return t(n.pageY,c,i.proportions().height)&&t(n.pageX,l,i.proportions().width);case"touch":return(a>=c&&d>=a||h>=c&&d>=h||c>a&&h>d)&&(o>=l&&u>=o||r>=l&&u>=r||l>o&&r>u);default:return!1}}}();t.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(e,i){var s,n,o=t.ui.ddmanager.droppables[e.options.scope]||[],a=i?i.type:null,r=(e.currentItem||e.element).find(":data(ui-droppable)").addBack();t:for(s=0;o.length>s;s++)if(!(o[s].options.disabled||e&&!o[s].accept.call(o[s].element[0],e.currentItem||e.element))){for(n=0;r.length>n;n++)if(r[n]===o[s].element[0]){o[s].proportions().height=0;continue t}o[s].visible="none"!==o[s].element.css("display"),o[s].visible&&("mousedown"===a&&o[s]._activate.call(o[s],i),o[s].offset=o[s].element.offset(),o[s].proportions({width:o[s].element[0].offsetWidth,height:o[s].element[0].offsetHeight}))}},drop:function(e,i){var s=!1;return t.each((t.ui.ddmanager.droppables[e.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&v(e,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(e,i){e.element.parentsUntil("body").on("scroll.droppable",function(){e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)})},drag:function(e,i){e.options.refreshPositions&&t.ui.ddmanager.prepareOffsets(e,i),t.each(t.ui.ddmanager.droppables[e.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,o,a=v(e,this,this.options.tolerance,i),r=!a&&this.isover?"isout":a&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,o=this.element.parents(":data(ui-droppable)").filter(function(){return t(this).droppable("instance").options.scope===n}),o.length&&(s=t(o[0]).droppable("instance"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(e,i){e.element.parentsUntil("body").off("scroll.droppable"),e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)}},t.uiBackCompat!==!1&&t.widget("ui.droppable",t.ui.droppable,{options:{hoverClass:!1,activeClass:!1},_addActiveClass:function(){this._super(),this.options.activeClass&&this.element.addClass(this.options.activeClass)},_removeActiveClass:function(){this._super(),this.options.activeClass&&this.element.removeClass(this.options.activeClass)},_addHoverClass:function(){this._super(),this.options.hoverClass&&this.element.addClass(this.options.hoverClass)},_removeHoverClass:function(){this._super(),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass)}}),t.ui.droppable,t.widget("ui.progressbar",{version:"1.12.1",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=t("<div>").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){return void 0===t?this.options.value:(this.options.value=this._constrainedValue(t),this._refreshValue(),void 0)},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=t===!1,"number"!=typeof t&&(t=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).width(i.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,e===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=t("<div>").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),e===this.options.max&&this._trigger("complete")}}),t.widget("ui.selectable",t.ui.mouse,{version:"1.12.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var e=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){e.elementPos=t(e.element[0]).offset(),e.selectees=t(e.options.filter,e.element[0]),e._addClass(e.selectees,"ui-selectee"),e.selectees.each(function(){var i=t(this),s=i.offset(),n={left:s.left-e.elementPos.left,top:s.top-e.elementPos.top};t.data(this,"selectable-item",{element:this,$element:i,left:n.left,top:n.top,right:n.left+i.outerWidth(),bottom:n.top+i.outerHeight(),startselected:!1,selected:i.hasClass("ui-selected"),selecting:i.hasClass("ui-selecting"),unselecting:i.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=t("<div>"),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(e){var i=this,s=this.options;this.opos=[e.pageX,e.pageY],this.elementPos=t(this.element[0]).offset(),this.options.disabled||(this.selectees=t(s.filter,this.element[0]),this._trigger("start",e),t(s.appendTo).append(this.helper),this.helper.css({left:e.pageX,top:e.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=t.data(this,"selectable-item");s.startselected=!0,e.metaKey||e.ctrlKey||(i._removeClass(s.$element,"ui-selected"),s.selected=!1,i._addClass(s.$element,"ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",e,{unselecting:s.element}))}),t(e.target).parents().addBack().each(function(){var s,n=t.data(this,"selectable-item");return n?(s=!e.metaKey&&!e.ctrlKey||!n.$element.hasClass("ui-selected"),i._removeClass(n.$element,s?"ui-unselecting":"ui-selected")._addClass(n.$element,s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",e,{selecting:n.element}):i._trigger("unselecting",e,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(e){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,o=this.opos[0],a=this.opos[1],r=e.pageX,h=e.pageY;return o>r&&(i=r,r=o,o=i),a>h&&(i=h,h=a,a=i),this.helper.css({left:o,top:a,width:r-o,height:h-a}),this.selectees.each(function(){var i=t.data(this,"selectable-item"),l=!1,c={};i&&i.element!==s.element[0]&&(c.left=i.left+s.elementPos.left,c.right=i.right+s.elementPos.left,c.top=i.top+s.elementPos.top,c.bottom=i.bottom+s.elementPos.top,"touch"===n.tolerance?l=!(c.left>r||o>c.right||c.top>h||a>c.bottom):"fit"===n.tolerance&&(l=c.left>o&&r>c.right&&c.top>a&&h>c.bottom),l?(i.selected&&(s._removeClass(i.$element,"ui-selected"),i.selected=!1),i.unselecting&&(s._removeClass(i.$element,"ui-unselecting"),i.unselecting=!1),i.selecting||(s._addClass(i.$element,"ui-selecting"),i.selecting=!0,s._trigger("selecting",e,{selecting:i.element}))):(i.selecting&&((e.metaKey||e.ctrlKey)&&i.startselected?(s._removeClass(i.$element,"ui-selecting"),i.selecting=!1,s._addClass(i.$element,"ui-selected"),i.selected=!0):(s._removeClass(i.$element,"ui-selecting"),i.selecting=!1,i.startselected&&(s._addClass(i.$element,"ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",e,{unselecting:i.element}))),i.selected&&(e.metaKey||e.ctrlKey||i.startselected||(s._removeClass(i.$element,"ui-selected"),i.selected=!1,s._addClass(i.$element,"ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",e,{unselecting:i.element})))))}),!1}},_mouseStop:function(e){var i=this;return this.dragged=!1,t(".ui-unselecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",e,{unselected:s.element})}),t(".ui-selecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-selecting")._addClass(s.$element,"ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",e,{selected:s.element})}),this._trigger("stop",e),this.helper.remove(),!1}}),t.widget("ui.selectmenu",[t.ui.formResetMixin,{version:"1.12.1",defaultElement:"<select>",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var e=this.element.uniqueId().attr("id");this.ids={element:e,button:e+"-button",menu:e+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=t()},_drawButton:function(){var e,i=this,s=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(t){this.button.focus(),t.preventDefault()}}),this.element.hide(),this.button=t("<span>",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),e=t("<span>").appendTo(this.button),this._addClass(e,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(s).appendTo(this.button),this.options.width!==!1&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){i._rendered||i._refreshMenu()})},_drawMenu:function(){var e=this;this.menu=t("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=t("<div>").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(t,i){t.preventDefault(),e._setSelection(),e._select(i.item.data("ui-selectmenu-item"),t)},focus:function(t,i){var s=i.item.data("ui-selectmenu-item");null!=e.focusIndex&&s.index!==e.focusIndex&&(e._trigger("focus",t,{item:s}),e.isOpen||e._select(s,t)),e.focusIndex=s.index,e.button.attr("aria-activedescendant",e.menuItems.eq(s.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var t,e=this.element.find("option");this.menu.empty(),this._parseOptions(e),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,e.length&&(t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(t){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",t)))},_position:function(){this.menuWrap.position(t.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(e){var i=t("<span>");return this._setText(i,e.label),this._addClass(i,"ui-selectmenu-text"),i},_renderMenu:function(e,i){var s=this,n="";t.each(i,function(i,o){var a;o.optgroup!==n&&(a=t("<li>",{text:o.optgroup}),s._addClass(a,"ui-selectmenu-optgroup","ui-menu-divider"+(o.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),a.appendTo(e),n=o.optgroup),s._renderItemData(e,o)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-selectmenu-item",e)},_renderItem:function(e,i){var s=t("<li>"),n=t("<div>",{title:i.element.attr("title")});return i.disabled&&this._addClass(s,null,"ui-state-disabled"),this._setText(n,i.label),s.append(n).appendTo(e)},_setText:function(t,e){e?t.text(e):t.html("&#160;")},_move:function(t,e){var i,s,n=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex).parent("li"):(i=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),n+=":not(.ui-state-disabled)"),s="first"===t||"last"===t?i["first"===t?"prevAll":"nextAll"](n).eq(-1):i[t+"All"](n).eq(0),s.length&&this.menuInstance.focus(e,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(t){this[this.isOpen?"close":"open"](t)},_setSelection:function(){var t;this.range&&(window.getSelection?(t=window.getSelection(),t.removeAllRanges(),t.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(e){this.isOpen&&(t(e.target).closest(".ui-selectmenu-menu, #"+t.ui.escapeSelector(this.ids.button)).length||this.close(e))}},_buttonEvents:{mousedown:function(){var t;window.getSelection?(t=window.getSelection(),t.rangeCount&&(this.range=t.getRangeAt(0))):this.range=document.selection.createRange()},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(e){var i=!0;switch(e.keyCode){case t.ui.keyCode.TAB:case t.ui.keyCode.ESCAPE:this.close(e),i=!1;break;case t.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(e);break;case t.ui.keyCode.UP:e.altKey?this._toggle(e):this._move("prev",e);break;case t.ui.keyCode.DOWN:e.altKey?this._toggle(e):this._move("next",e);break;case t.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(e):this._toggle(e);break;case t.ui.keyCode.LEFT:this._move("prev",e);break;case t.ui.keyCode.RIGHT:this._move("next",e);break;case t.ui.keyCode.HOME:case t.ui.keyCode.PAGE_UP:this._move("first",e);break;case t.ui.keyCode.END:case t.ui.keyCode.PAGE_DOWN:this._move("last",e);break;default:this.menu.trigger(e),i=!1}i&&e.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex).parent("li");e.hasClass("ui-state-disabled")||this._select(e.data("ui-selectmenu-item"),t)},_select:function(t,e){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(t)),this._setAria(t),this._trigger("select",e,{item:t}),t.index!==i&&this._trigger("change",e,{item:t}),this.close(e)},_setAria:function(t){var e=this.menuItems.eq(t.index).attr("id");this.button.attr({"aria-labelledby":e,"aria-activedescendant":e}),this.menu.attr("aria-activedescendant",e)},_setOption:function(t,e){if("icons"===t){var i=this.button.find("span.ui-icon");this._removeClass(i,null,this.options.icons.button)._addClass(i,null,e.button)}this._super(t,e),"appendTo"===t&&this.menuWrap.appendTo(this._appendTo()),"width"===t&&this._resizeButton()},_setOptionDisabled:function(t){this._super(t),this.menuInstance.option("disabled",t),this.button.attr("aria-disabled",t),this._toggleClass(this.button,null,"ui-state-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var t=this.options.width;return t===!1?(this.button.css("width",""),void 0):(null===t&&(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t),void 0)},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var t=this._super();return t.disabled=this.element.prop("disabled"),t},_parseOptions:function(e){var i=this,s=[];e.each(function(e,n){s.push(i._parseOption(t(n),e))}),this.items=s},_parseOption:function(t,e){var i=t.parent("optgroup");return{element:t,index:e,value:t.val(),label:t.text(),optgroup:i.attr("label")||"",disabled:i.prop("disabled")||t.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}]),t.widget("ui.slider",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1
},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var e,i,s=this.options,n=this.element.find(".ui-slider-handle"),o="<span tabindex='0'></span>",a=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),e=n.length;i>e;e++)a.push(o);this.handles=n.add(t(a.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(e){t(this).data("ui-slider-handle-index",e).attr("tabIndex",0)})},_createRange:function(){var e=this.options;e.range?(e.range===!0&&(e.values?e.values.length&&2!==e.values.length?e.values=[e.values[0],e.values[0]]:t.isArray(e.values)&&(e.values=e.values.slice(0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=t("<div>").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),("min"===e.range||"max"===e.range)&&this._addClass(this.range,"ui-slider-range-"+e.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(e){var i,s,n,o,a,r,h,l,c=this,u=this.options;return u.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:e.pageX,y:e.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(e){var i=Math.abs(s-c.values(e));(n>i||n===i&&(e===c._lastChangedValue||c.values(e)===u.min))&&(n=i,o=t(this),a=e)}),r=this._start(e,a),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=a,this._addClass(o,null,"ui-state-active"),o.trigger("focus"),h=o.offset(),l=!t(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:e.pageX-h.left-o.width()/2,top:e.pageY-h.top-o.height()/2-(parseInt(o.css("borderTopWidth"),10)||0)-(parseInt(o.css("borderBottomWidth"),10)||0)+(parseInt(o.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,a,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,i),!1},_mouseStop:function(t){return this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,i,s,n,o;return"horizontal"===this.orientation?(e=this.elementSize.width,i=t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,i=t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/e,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),o=this._valueMin()+s*n,this._trimAlignValue(o)},_uiHash:function(t,e,i){var s={handle:this.handles[t],handleIndex:t,value:void 0!==e?e:this.value()};return this._hasMultipleValues()&&(s.value=void 0!==e?e:this.values(t),s.values=i||this.values()),s},_hasMultipleValues:function(){return this.options.values&&this.options.values.length},_start:function(t,e){return this._trigger("start",t,this._uiHash(e))},_slide:function(t,e,i){var s,n,o=this.value(),a=this.values();this._hasMultipleValues()&&(n=this.values(e?0:1),o=this.values(e),2===this.options.values.length&&this.options.range===!0&&(i=0===e?Math.min(n,i):Math.max(n,i)),a[e]=i),i!==o&&(s=this._trigger("slide",t,this._uiHash(e,i,a)),s!==!1&&(this._hasMultipleValues()?this.values(e,i):this.value(i)))},_stop:function(t,e){this._trigger("stop",t,this._uiHash(e))},_change:function(t,e){this._keySliding||this._mouseSliding||(this._lastChangedValue=e,this._trigger("change",t,this._uiHash(e)))},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),this._change(null,0),void 0):this._value()},values:function(e,i){var s,n,o;if(arguments.length>1)return this.options.values[e]=this._trimAlignValue(i),this._refreshValue(),this._change(null,e),void 0;if(!arguments.length)return this._values();if(!t.isArray(arguments[0]))return this._hasMultipleValues()?this._values(e):this.value();for(s=this.options.values,n=arguments[0],o=0;s.length>o;o+=1)s[o]=this._trimAlignValue(n[o]),this._change(null,o);this._refreshValue()},_setOption:function(e,i){var s,n=0;switch("range"===e&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),t.isArray(this.options.values)&&(n=this.options.values.length),this._super(e,i),e){case"orientation":this._detectOrientation(),this._removeClass("ui-slider-horizontal ui-slider-vertical")._addClass("ui-slider-"+this.orientation),this._refreshValue(),this.options.range&&this._refreshRange(i),this.handles.css("horizontal"===i?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=n-1;s>=0;s--)this._change(null,s);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(t){this._super(t),this._toggleClass(null,"ui-state-disabled",!!t)},_value:function(){var t=this.options.value;return t=this._trimAlignValue(t)},_values:function(t){var e,i,s;if(arguments.length)return e=this.options.values[t],e=this._trimAlignValue(e);if(this._hasMultipleValues()){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(t){if(this._valueMin()>=t)return this._valueMin();if(t>=this._valueMax())return this._valueMax();var e=this.options.step>0?this.options.step:1,i=(t-this._valueMin())%e,s=t-i;return 2*Math.abs(i)>=e&&(s+=i>0?e:-e),parseFloat(s.toFixed(5))},_calculateNewMax:function(){var t=this.options.max,e=this._valueMin(),i=this.options.step,s=Math.round((t-e)/i)*i;t=s+e,t>this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,s,n,o,a=this.options.range,r=this.options,h=this,l=this._animateOff?!1:r.animate,c={};this._hasMultipleValues()?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),c["horizontal"===h.orientation?"left":"bottom"]=i+"%",t(this).stop(1,1)[l?"animate":"css"](c,r.animate),h.options.range===!0&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:r.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:r.animate}))),e=i}):(s=this.value(),n=this._valueMin(),o=this._valueMax(),i=o!==n?100*((s-n)/(o-n)):0,c["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](c,r.animate),"min"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},r.animate),"max"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:100-i+"%"},r.animate),"min"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},r.animate),"max"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:100-i+"%"},r.animate))},_handleEvents:{keydown:function(e){var i,s,n,o,a=t(e.target).data("ui-slider-handle-index");switch(e.keyCode){case t.ui.keyCode.HOME:case t.ui.keyCode.END:case t.ui.keyCode.PAGE_UP:case t.ui.keyCode.PAGE_DOWN:case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(e.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(t(e.target),null,"ui-state-active"),i=this._start(e,a),i===!1))return}switch(o=this.options.step,s=n=this._hasMultipleValues()?this.values(a):this.value(),e.keyCode){case t.ui.keyCode.HOME:n=this._valueMin();break;case t.ui.keyCode.END:n=this._valueMax();break;case t.ui.keyCode.PAGE_UP:n=this._trimAlignValue(s+(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(s-(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:if(s===this._valueMax())return;n=this._trimAlignValue(s+o);break;case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(s===this._valueMin())return;n=this._trimAlignValue(s-o)}this._slide(e,a,n)},keyup:function(e){var i=t(e.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(e,i),this._change(e,i),this._removeClass(t(e.target),null,"ui-state-active"))}}}),t.widget("ui.sortable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return t>=e&&e+i>t},_isFloating:function(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))},_create:function(){this.containerCache={},this._addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(t,e){this._super(t,e),"handle"===t&&this._setHandleClassName()},_setHandleClassName:function(){var e=this;this._removeClass(this.element.find(".ui-sortable-handle"),"ui-sortable-handle"),t.each(this.items,function(){e._addClass(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item,"ui-sortable-handle")})},_destroy:function(){this._mouseDestroy();for(var t=this.items.length-1;t>=0;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(e,i){var s=null,n=!1,o=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(e),t(e.target).parents().each(function(){return t.data(this,o.widgetName+"-item")===o?(s=t(this),!1):void 0}),t.data(e.target,o.widgetName+"-item")===o&&(s=t(e.target)),s?!this.options.handle||i||(t(this.options.handle,s).find("*").addBack().each(function(){this===e.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(e,i,s){var n,o,a=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(e),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,a.cursorAt&&this._adjustOffsetFromHelper(a.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),a.containment&&this._setContainment(),a.cursor&&"auto"!==a.cursor&&(o=this.document.find("body"),this.storedCursor=o.css("cursor"),o.css("cursor",a.cursor),this.storedStylesheet=t("<style>*{ cursor: "+a.cursor+" !important; }</style>").appendTo(o)),a.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",a.opacity)),a.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",a.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",e,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",e,this._uiHash(this));return t.ui.ddmanager&&(t.ui.ddmanager.current=this),t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this._mouseDrag(e),!0},_mouseDrag:function(e){var i,s,n,o,a=this.options,r=!1;for(this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-e.pageY<a.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+a.scrollSpeed:e.pageY-this.overflowOffset.top<a.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-a.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-e.pageX<a.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+a.scrollSpeed:e.pageX-this.overflowOffset.left<a.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-a.scrollSpeed)):(e.pageY-this.document.scrollTop()<a.scrollSensitivity?r=this.document.scrollTop(this.document.scrollTop()-a.scrollSpeed):this.window.height()-(e.pageY-this.document.scrollTop())<a.scrollSensitivity&&(r=this.document.scrollTop(this.document.scrollTop()+a.scrollSpeed)),e.pageX-this.document.scrollLeft()<a.scrollSensitivity?r=this.document.scrollLeft(this.document.scrollLeft()-a.scrollSpeed):this.window.width()-(e.pageX-this.document.scrollLeft())<a.scrollSensitivity&&(r=this.document.scrollLeft(this.document.scrollLeft()+a.scrollSpeed))),r!==!1&&t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],n=s.item[0],o=this._intersectsWithPointer(s),o&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===o?"next":"prev"]()[0]!==n&&!t.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!t.contains(this.element[0],n):!0)){if(this.direction=1===o?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(e,s),this._trigger("change",e,this._uiHash());break}return this._contactContainers(e),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),this._trigger("sort",e,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(e,i){if(e){if(t.ui.ddmanager&&!this.options.dropBehaviour&&t.ui.ddmanager.drop(this,e),this.options.revert){var s=this,n=this.placeholder.offset(),o=this.options.axis,a={};o&&"x"!==o||(a.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),o&&"y"!==o||(a.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,t(this.helper).animate(a,parseInt(this.options.revert,10)||500,function(){s._clear(e)})}else this._clear(e,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp(new t.Event("mouseup",{target:null})),"original"===this.options.helper?(this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")):this.currentItem.show();for(var e=this.containers.length-1;e>=0;e--)this.containers[e]._trigger("deactivate",null,this._uiHash(this)),this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",null,this._uiHash(this)),this.containers[e].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),t.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?t(this.domPosition.prev).after(this.currentItem):t(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},t(i).each(function(){var i=(t(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);i&&s.push((e.key||i[1]+"[]")+"="+(e.key&&e.expression?i[1]:i[2]))}),!s.length&&e.key&&s.push(e.key+"="),s.join("&")},toArray:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},i.each(function(){s.push(t(e.item||this).attr(e.attribute||"id")||"")}),s},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,o=t.left,a=o+t.width,r=t.top,h=r+t.height,l=this.offset.click.top,c=this.offset.click.left,u="x"===this.options.axis||s+l>r&&h>s+l,d="y"===this.options.axis||e+c>o&&a>e+c,p=u&&d;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?p:e+this.helperProportions.width/2>o&&a>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(t){var e,i,s="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),n="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width),o=s&&n;return o?(e=this._getDragVerticalDirection(),i=this._getDragHorizontalDirection(),this.floating?"right"===i||"down"===e?2:1:e&&("down"===e?2:1)):!1},_intersectsWithSides:function(t){var e=this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&e||"up"===s&&!e)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!==t&&(t>0?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!==t&&(t>0?"right":"left")},refresh:function(t){return this._refreshItems(t),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(e){function i(){r.push(this)}var s,n,o,a,r=[],h=[],l=this._connectWith();if(l&&e)for(s=l.length-1;s>=0;s--)for(o=t(l[s],this.document[0]),n=o.length-1;n>=0;n--)a=t.data(o[n],this.widgetFullName),a&&a!==this&&!a.options.disabled&&h.push([t.isFunction(a.options.items)?a.options.items.call(a.element):t(a.options.items,a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),a]);for(h.push([t.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):t(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return t(r)},_removeCurrentsFromItems:function(){var e=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=t.grep(this.items,function(t){for(var i=0;e.length>i;i++)if(e[i]===t.item[0])return!1;return!0})},_refreshItems:function(e){this.items=[],this.containers=[this];var i,s,n,o,a,r,h,l,c=this.items,u=[[t.isFunction(this.options.items)?this.options.items.call(this.element[0],e,{item:this.currentItem}):t(this.options.items,this.element),this]],d=this._connectWith();if(d&&this.ready)for(i=d.length-1;i>=0;i--)for(n=t(d[i],this.document[0]),s=n.length-1;s>=0;s--)o=t.data(n[s],this.widgetFullName),o&&o!==this&&!o.options.disabled&&(u.push([t.isFunction(o.options.items)?o.options.items.call(o.element[0],e,{item:this.currentItem}):t(o.options.items,o.element),o]),this.containers.push(o));for(i=u.length-1;i>=0;i--)for(a=u[i][1],r=u[i][0],s=0,l=r.length;l>s;s++)h=t(r[s]),h.data(this.widgetName+"-item",a),c.push({item:h,instance:a,width:0,height:0,left:0,top:0})},refreshPositions:function(e){this.floating=this.items.length?"x"===this.options.axis||this._isFloating(this.items[0].item):!1,this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,o;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?t(this.options.toleranceElement,s.item):s.item,e||(s.width=n.outerWidth(),s.height=n.outerHeight()),o=n.offset(),s.left=o.left,s.top=o.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)o=this.containers[i].element.offset(),this.containers[i].containerCache.left=o.left,this.containers[i].containerCache.top=o.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(e){e=e||this;var i,s=e.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=e.currentItem[0].nodeName.toLowerCase(),n=t("<"+s+">",e.document[0]);return e._addClass(n,"ui-sortable-placeholder",i||e.currentItem[0].className)._removeClass(n,"ui-sortable-helper"),"tbody"===s?e._createTrPlaceholder(e.currentItem.find("tr").eq(0),t("<tr>",e.document[0]).appendTo(n)):"tr"===s?e._createTrPlaceholder(e.currentItem,n):"img"===s&&n.attr("src",e.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(t,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(e.currentItem.innerHeight()-parseInt(e.currentItem.css("paddingTop")||0,10)-parseInt(e.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(e.currentItem.innerWidth()-parseInt(e.currentItem.css("paddingLeft")||0,10)-parseInt(e.currentItem.css("paddingRight")||0,10)))}}),e.placeholder=t(s.placeholder.element.call(e.element,e.currentItem)),e.currentItem.after(e.placeholder),s.placeholder.update(e,e.placeholder)},_createTrPlaceholder:function(e,i){var s=this;e.children().each(function(){t("<td>&#160;</td>",s.document[0]).attr("colspan",t(this).attr("colspan")||1).appendTo(i)})},_contactContainers:function(e){var i,s,n,o,a,r,h,l,c,u,d=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!t.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(d&&t.contains(this.containers[i].element[0],d.element[0]))continue;d=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",e,this._uiHash(this)),this.containers[i].containerCache.over=0);if(d)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,o=null,c=d.floating||this._isFloating(this.currentItem),a=c?"left":"top",r=c?"width":"height",u=c?"pageX":"pageY",s=this.items.length-1;s>=0;s--)t.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(h=this.items[s].item.offset()[a],l=!1,e[u]-h>this.items[s][r]/2&&(l=!0),n>Math.abs(e[u]-h)&&(n=Math.abs(e[u]-h),o=this.items[s],this.direction=l?"up":"down"));if(!o&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;o?this._rearrange(e,o,null,!0):this._rearrange(e,null,this.containers[p].element,!0),this._trigger("change",e,this._uiHash()),this.containers[p]._trigger("change",e,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper)?t(i.helper.apply(this.element[0],[e,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||t("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var e=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&t.ui.ie)&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===n.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===n.containment?this.document.height()||document.body.parentNode.scrollHeight:this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(e=t(n.containment)[0],i=t(n.containment).offset(),s="hidden"!==t(e).css("overflow"),this.containment=[i.left+(parseInt(t(e).css("borderLeftWidth"),10)||0)+(parseInt(t(e).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(t(e).css("borderTopWidth"),10)||0)+(parseInt(t(e).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(e.scrollWidth,e.offsetWidth):e.offsetWidth)-(parseInt(t(e).css("borderLeftWidth"),10)||0)-(parseInt(t(e).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(e.scrollHeight,e.offsetHeight):e.offsetHeight)-(parseInt(t(e).css("borderTopWidth"),10)||0)-(parseInt(t(e).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(e,i){i||(i=this.position);var s="absolute"===e?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())*s}},_generatePosition:function(e){var i,s,n=this.options,o=e.pageX,a=e.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(e.pageX-this.offset.click.left<this.containment[0]&&(o=this.containment[0]+this.offset.click.left),e.pageY-this.offset.click.top<this.containment[1]&&(a=this.containment[1]+this.offset.click.top),e.pageX-this.offset.click.left>this.containment[2]&&(o=this.containment[2]+this.offset.click.left),e.pageY-this.offset.click.top>this.containment[3]&&(a=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((a-this.originalPageY)/n.grid[1])*n.grid[1],a=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((o-this.originalPageX)/n.grid[0])*n.grid[0],o=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;
this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){function i(t,e,i){return function(s){i._trigger(t,s,e._uiHash(e))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!e&&n.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||n.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(n.push(function(t){this._trigger("remove",t,this._uiHash())}),n.push(function(t){return function(e){t._trigger("receive",e,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(t){return function(e){t._trigger("update",e,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)e||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(s=0;n.length>s;s++)n[s].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){t.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(e){var i=e||this;return{helper:i.helper,placeholder:i.placeholder||t([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:e?e.element:null}}}),t.widget("ui.spinner",{version:"1.12.1",defaultElement:"<input>",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var e=this._super(),i=this.element;return t.each(["min","max","step"],function(t,s){var n=i.attr(s);null!=n&&n.length&&(e[s]=n)}),e},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t),void 0)},mousewheel:function(t,e){if(e){if(!this.spinning&&!this._start(t))return!1;this._spin((e>0?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(e){function i(){var e=this.element[0]===t.ui.safeActiveElement(this.document[0]);e||(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===t.ui.safeActiveElement(this.document[0])?this.previous:this.element.val(),e.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(e)!==!1&&this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(e){return t(e.currentTarget).hasClass("ui-state-active")?this._start(e)===!1?!1:(this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap("<span>").parent().append("<a></a><a></a>")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&this.uiSpinner.height()>0&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(e){var i=this.options,s=t.ui.keyCode;switch(e.keyCode){case s.UP:return this._repeat(null,1,e),!0;case s.DOWN:return this._repeat(null,-1,e),!0;case s.PAGE_UP:return this._repeat(null,i.page,e),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,e),!0}return!1},_start:function(t){return this.spinning||this._trigger("start",t)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&this._trigger("spin",e,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(e){var i=this.options.incremental;return i?t.isFunction(i)?i(e):Math.floor(e*e*e/5e4-e*e/500+17*e/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_adjustValue:function(t){var e,i,s=this.options;return e=null!==s.min?s.min:0,i=t-e,i=Math.round(i/s.step)*s.step,t=e+i,t=parseFloat(t.toFixed(this._precision())),null!==s.max&&t>s.max?s.max:null!==s.min&&s.min>t?s.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){var i,s,n;return"culture"===t||"numberFormat"===t?(i=this._parse(this.element.val()),this.options[t]=e,this.element.val(this._format(i)),void 0):(("max"===t||"min"===t||"step"===t)&&"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(s=this.buttons.first().find(".ui-icon"),this._removeClass(s,null,this.options.icons.up),this._addClass(s,null,e.up),n=this.buttons.last().find(".ui-icon"),this._removeClass(n,null,this.options.icons.down),this._addClass(n,null,e.down)),this._super(t,e),void 0)},_setOptionDisabled:function(t){this._super(t),this._toggleClass(this.uiSpinner,null,"ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable")},_setOptions:r(function(t){this._super(t)}),_parse:function(t){return"string"==typeof t&&""!==t&&(t=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t),""===t||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var t=this.value();return null===t?!1:t===this._adjustValue(t)},_value:function(t,e){var i;""!==t&&(i=this._parse(t),null!==i&&(e||(i=this._adjustValue(i)),t=this._format(i))),this.element.val(t),this._refresh()},_destroy:function(){this.element.prop("disabled",!1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:r(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:r(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:r(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:r(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){return arguments.length?(r(this._value).call(this,t),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),t.uiBackCompat!==!1&&t.widget("ui.spinner",t.ui.spinner,{_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml())},_uiSpinnerHtml:function(){return"<span>"},_buttonHtml:function(){return"<a></a><a></a>"}}),t.ui.spinner,t.widget("ui.tabs",{version:"1.12.1",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var t=/#.*$/;return function(e){var i,s;i=e.href.replace(t,""),s=location.href.replace(t,"");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return e.hash.length>1&&i===s}}(),_create:function(){var e=this,i=this.options;this.running=!1,this._addClass("ui-tabs","ui-widget ui-widget-content"),this._toggleClass("ui-tabs-collapsible",null,i.collapsible),this._processTabs(),i.active=this._initialActive(),t.isArray(i.disabled)&&(i.disabled=t.unique(i.disabled.concat(t.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):t(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var e=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===e&&(s&&this.tabs.each(function(i,n){return t(n).attr("aria-controls")===s?(e=i,!1):void 0}),null===e&&(e=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===e||-1===e)&&(e=this.tabs.length?0:!1)),e!==!1&&(e=this.tabs.index(this.tabs.eq(e)),-1===e&&(e=i?!1:0)),!i&&e===!1&&this.anchors.length&&(e=0),e},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):t()}},_tabKeydown:function(e){var i=t(t.ui.safeActiveElement(this.document[0])).closest("li"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(e)){switch(e.keyCode){case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:s++;break;case t.ui.keyCode.UP:case t.ui.keyCode.LEFT:n=!1,s--;break;case t.ui.keyCode.END:s=this.anchors.length-1;break;case t.ui.keyCode.HOME:s=0;break;case t.ui.keyCode.SPACE:return e.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case t.ui.keyCode.ENTER:return e.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}e.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),e.ctrlKey||e.metaKey||(i.attr("aria-selected","false"),this.tabs.eq(s).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",s)},this.delay))}},_panelKeydown:function(e){this._handlePageNav(e)||e.ctrlKey&&e.keyCode===t.ui.keyCode.UP&&(e.preventDefault(),this.active.trigger("focus"))},_handlePageNav:function(e){return e.altKey&&e.keyCode===t.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):e.altKey&&e.keyCode===t.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(e,i){function s(){return e>n&&(e=0),0>e&&(e=n),e}for(var n=this.tabs.length-1;-1!==t.inArray(s(),this.options.disabled);)e=i?e+1:e-1;return e},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).trigger("focus"),t},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):(this._super(t,e),"collapsible"===t&&(this._toggleClass("ui-tabs-collapsible",null,e),e||this.options.active!==!1||this._activate(0)),"event"===t&&this._setupEvents(e),"heightStyle"===t&&this._setupHeightStyle(e),void 0)},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var e=this.options,i=this.tablist.children(":has(a[href])");e.disabled=t.map(i.filter(".ui-state-disabled"),function(t){return i.index(t)}),this._processTabs(),e.active!==!1&&this.anchors.length?this.active.length&&!t.contains(this.tablist[0],this.active[0])?this.tabs.length===e.disabled.length?(e.active=!1,this.active=t()):this._activate(this._findNextTab(Math.max(0,e.active-1),!1)):e.active=this.tabs.index(this.active):(e.active=!1,this.active=t()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var e=this,i=this.tabs,s=this.anchors,n=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(e){t(this).is(".ui-state-disabled")&&e.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){t(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return t("a",this)[0]}).attr({role:"presentation",tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=t(),this.anchors.each(function(i,s){var n,o,a,r=t(s).uniqueId().attr("id"),h=t(s).closest("li"),l=h.attr("aria-controls");e._isLocal(s)?(n=s.hash,a=n.substring(1),o=e.element.find(e._sanitizeSelector(n))):(a=h.attr("aria-controls")||t({}).uniqueId()[0].id,n="#"+a,o=e.element.find(n),o.length||(o=e._createPanel(a),o.insertAfter(e.panels[i-1]||e.tablist)),o.attr("aria-live","polite")),o.length&&(e.panels=e.panels.add(o)),l&&h.data("ui-tabs-aria-controls",l),h.attr({"aria-controls":a,"aria-labelledby":r}),o.attr("aria-labelledby",r)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(n.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(e){return t("<div>").attr("id",e).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(e){var i,s,n;for(t.isArray(e)&&(e.length?e.length===this.anchors.length&&(e=!0):e=!1),n=0;s=this.tabs[n];n++)i=t(s),e===!0||-1!==t.inArray(n,e)?(i.attr("aria-disabled","true"),this._addClass(i,null,"ui-state-disabled")):(i.removeAttr("aria-disabled"),this._removeClass(i,null,"ui-state-disabled"));this.options.disabled=e,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,e===!0)},_setupEvents:function(e){var i={};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(e){var i,s=this.element.parent();"fill"===e?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var e=t(this),s=e.css("position");"absolute"!==s&&"fixed"!==s&&(i-=e.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=t(this).outerHeight(!0)}),this.panels.each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.panels.each(function(){i=Math.max(i,t(this).height("").height())}).height(i))},_eventHandler:function(e){var i=this.options,s=this.active,n=t(e.currentTarget),o=n.closest("li"),a=o[0]===s[0],r=a&&i.collapsible,h=r?t():this._getPanelForTab(o),l=s.length?this._getPanelForTab(s):t(),c={oldTab:s,oldPanel:l,newTab:r?t():o,newPanel:h};e.preventDefault(),o.hasClass("ui-state-disabled")||o.hasClass("ui-tabs-loading")||this.running||a&&!i.collapsible||this._trigger("beforeActivate",e,c)===!1||(i.active=r?!1:this.tabs.index(o),this.active=a?t():o,this.xhr&&this.xhr.abort(),l.length||h.length||t.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(o),e),this._toggle(e,c))},_toggle:function(e,i){function s(){o.running=!1,o._trigger("activate",e,i)}function n(){o._addClass(i.newTab.closest("li"),"ui-tabs-active","ui-state-active"),a.length&&o.options.show?o._show(a,o.options.show,s):(a.show(),s())}var o=this,a=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){o._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n()}):(this._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),r.hide(),n()),r.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),a.length&&r.length?i.oldTab.attr("tabIndex",-1):a.length&&this.tabs.filter(function(){return 0===t(this).attr("tabIndex")}).attr("tabIndex",-1),a.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(e){var i,s=this._findActive(e);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return e===!1?t():this.tabs.eq(e)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+t.ui.escapeSelector(e)+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){t.data(this,"ui-tabs-destroy")?t(this).remove():t(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var e=t(this),i=e.data("ui-tabs-aria-controls");i?e.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):e.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(e){var i=this.options.disabled;i!==!1&&(void 0===e?i=!1:(e=this._getIndex(e),i=t.isArray(i)?t.map(i,function(t){return t!==e?t:null}):t.map(this.tabs,function(t,i){return i!==e?i:null})),this._setOptionDisabled(i))},disable:function(e){var i=this.options.disabled;if(i!==!0){if(void 0===e)i=!0;else{if(e=this._getIndex(e),-1!==t.inArray(e,i))return;i=t.isArray(i)?t.merge([e],i).sort():[e]}this._setOptionDisabled(i)}},load:function(e,i){e=this._getIndex(e);var s=this,n=this.tabs.eq(e),o=n.find(".ui-tabs-anchor"),a=this._getPanelForTab(n),r={tab:n,panel:a},h=function(t,e){"abort"===e&&s.panels.stop(!1,!0),s._removeClass(n,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===s.xhr&&delete s.xhr};this._isLocal(o[0])||(this.xhr=t.ajax(this._ajaxSettings(o,i,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(n,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,n){setTimeout(function(){a.html(t),s._trigger("load",i,r),h(n,e)},1)}).fail(function(t,e){setTimeout(function(){h(t,e)},1)})))},_ajaxSettings:function(e,i,s){var n=this;return{url:e.attr("href").replace(/#.*$/,""),beforeSend:function(e,o){return n._trigger("beforeLoad",i,t.extend({jqXHR:e,ajaxSettings:o},s))}}},_getPanelForTab:function(e){var i=t(e).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),t.uiBackCompat!==!1&&t.widget("ui.tabs",t.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}}),t.ui.tabs,t.widget("ui.tooltip",{version:"1.12.1",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var e=t(this).attr("title")||"";return t("<a>").text(e).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(e,i){var s=(e.attr("aria-describedby")||"").split(/\s+/);s.push(i),e.data("ui-tooltip-id",i).attr("aria-describedby",t.trim(s.join(" ")))},_removeDescribedBy:function(e){var i=e.data("ui-tooltip-id"),s=(e.attr("aria-describedby")||"").split(/\s+/),n=t.inArray(i,s);-1!==n&&s.splice(n,1),e.removeData("ui-tooltip-id"),s=t.trim(s.join(" ")),s?e.attr("aria-describedby",s):e.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=t("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=t([])},_setOption:function(e,i){var s=this;this._super(e,i),"content"===e&&t.each(this.tooltips,function(t,e){s._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur");n.target=n.currentTarget=s.element[0],e.close(n,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var e=t(this);return e.is("[title]")?e.data("ui-tooltip-title",e.attr("title")).removeAttr("title"):void 0}))},_enable:function(){this.disabledTitles.each(function(){var e=t(this);e.data("ui-tooltip-title")&&e.attr("title",e.data("ui-tooltip-title"))}),this.disabledTitles=t([])},open:function(e){var i=this,s=t(e?e.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),e&&"mouseover"===e.type&&s.parents().each(function(){var e,s=t(this);s.data("ui-tooltip-open")&&(e=t.Event("blur"),e.target=e.currentTarget=this,i.close(e,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._registerCloseHandlers(e,s),this._updateContent(s,e))},_updateContent:function(t,e){var i,s=this.options.content,n=this,o=e?e.type:null;return"string"==typeof s||s.nodeType||s.jquery?this._open(e,t,s):(i=s.call(t[0],function(i){n._delay(function(){t.data("ui-tooltip-open")&&(e&&(e.type=o),this._open(e,t,i))})}),i&&this._open(e,t,i),void 0)},_open:function(e,i,s){function n(t){l.of=t,a.is(":hidden")||a.position(l)}var o,a,r,h,l=t.extend({},this.options.position);if(s){if(o=this._find(i))return o.tooltip.find(".ui-tooltip-content").html(s),void 0;i.is("[title]")&&(e&&"mouseover"===e.type?i.attr("title",""):i.removeAttr("title")),o=this._tooltip(i),a=o.tooltip,this._addDescribedBy(i,a.attr("id")),a.find(".ui-tooltip-content").html(s),this.liveRegion.children().hide(),h=t("<div>").html(a.find(".ui-tooltip-content").html()),h.removeAttr("name").find("[name]").removeAttr("name"),h.removeAttr("id").find("[id]").removeAttr("id"),h.appendTo(this.liveRegion),this.options.track&&e&&/^mouse/.test(e.type)?(this._on(this.document,{mousemove:n}),n(e)):a.position(t.extend({of:i},this.options.position)),a.hide(),this._show(a,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(r=this.delayedShow=setInterval(function(){a.is(":visible")&&(n(l.of),clearInterval(r))},t.fx.interval)),this._trigger("open",e,{tooltip:a})}},_registerCloseHandlers:function(e,i){var s={keyup:function(e){if(e.keyCode===t.ui.keyCode.ESCAPE){var s=t.Event(e);s.currentTarget=i[0],this.close(s,!0)}}};i[0]!==this.element[0]&&(s.remove=function(){this._removeTooltip(this._find(i).tooltip)}),e&&"mouseover"!==e.type||(s.mouseleave="close"),e&&"focusin"!==e.type||(s.focusout="close"),this._on(!0,i,s)},close:function(e){var i,s=this,n=t(e?e.currentTarget:this.element),o=this._find(n);return o?(i=o.tooltip,o.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&!n.attr("title")&&n.attr("title",n.data("ui-tooltip-title")),this._removeDescribedBy(n),o.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(t(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),e&&"mouseleave"===e.type&&t.each(this.parents,function(e,i){t(i.element).attr("title",i.title),delete s.parents[e]}),o.closing=!0,this._trigger("close",e,{tooltip:i}),o.hiding||(o.closing=!1)),void 0):(n.removeData("ui-tooltip-open"),void 0)},_tooltip:function(e){var i=t("<div>").attr("role","tooltip"),s=t("<div>").appendTo(i),n=i.uniqueId().attr("id");return this._addClass(s,"ui-tooltip-content"),this._addClass(i,"ui-tooltip","ui-widget ui-widget-content"),i.appendTo(this._appendTo(e)),this.tooltips[n]={element:e,tooltip:i}},_find:function(t){var e=t.data("ui-tooltip-id");return e?this.tooltips[e]:null},_removeTooltip:function(t){t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){var e=t.closest(".ui-front, dialog");return e.length||(e=this.document[0].body),e},_destroy:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur"),o=s.element;n.target=n.currentTarget=o[0],e.close(n,!0),t("#"+i).remove(),o.data("ui-tooltip-title")&&(o.attr("title")||o.attr("title",o.data("ui-tooltip-title")),o.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),t.uiBackCompat!==!1&&t.widget("ui.tooltip",t.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}}),t.ui.tooltip});
shiny/www/shared/jqueryui/jquery-ui.min.css METASEP
/*! jQuery UI - v1.12.1 - 2016-09-14
* http://jqueryui.com
* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
* To view and modify this theme, visit http://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=Alpha(Opacity%3D30)&opacityFilterOverlay=Alpha(Opacity%3D30)&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6
* Copyright jQuery Foundation and other contributors; Licensed MIT */

.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #c5c5c5}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#2b2b2b;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #003eff;background:#007fff;font-weight:normal;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#003eff;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-checked{border:1px solid #dad55e;background:#fffa90}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_555555_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_777620_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_777777_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.003;filter:Alpha(Opacity=.3)}.ui-widget-shadow{-webkit-box-shadow:0 0 5px #666;box-shadow:0 0 5px #666}
shiny/www/shared/jqueryui/jquery-ui.js METASEP
/*! jQuery UI - v1.12.1 - 2016-09-14
* http://jqueryui.com
* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js
* Copyright jQuery Foundation and other contributors; Licensed MIT */

(function( factory ) {
	if ( typeof define === "function" && define.amd ) {

		// AMD. Register as an anonymous module.
		define([ "jquery" ], factory );
	} else {

		// Browser globals
		factory( jQuery );
	}
}(function( $ ) {

$.ui = $.ui || {};

var version = $.ui.version = "1.12.1";


/*!
 * jQuery UI Widget 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Widget
//>>group: Core
//>>description: Provides a factory for creating stateful widgets with a common API.
//>>docs: http://api.jqueryui.com/jQuery.widget/
//>>demos: http://jqueryui.com/widget/



var widgetUuid = 0;
var widgetSlice = Array.prototype.slice;

$.cleanData = ( function( orig ) {
	return function( elems ) {
		var events, elem, i;
		for ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {
			try {

				// Only trigger remove when necessary to save time
				events = $._data( elem, "events" );
				if ( events && events.remove ) {
					$( elem ).triggerHandler( "remove" );
				}

			// Http://bugs.jquery.com/ticket/8235
			} catch ( e ) {}
		}
		orig( elems );
	};
} )( $.cleanData );

$.widget = function( name, base, prototype ) {
	var existingConstructor, constructor, basePrototype;

	// ProxiedPrototype allows the provided prototype to remain unmodified
	// so that it can be used as a mixin for multiple widgets (#8876)
	var proxiedPrototype = {};

	var namespace = name.split( "." )[ 0 ];
	name = name.split( "." )[ 1 ];
	var fullName = namespace + "-" + name;

	if ( !prototype ) {
		prototype = base;
		base = $.Widget;
	}

	if ( $.isArray( prototype ) ) {
		prototype = $.extend.apply( null, [ {} ].concat( prototype ) );
	}

	// Create selector for plugin
	$.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) {
		return !!$.data( elem, fullName );
	};

	$[ namespace ] = $[ namespace ] || {};
	existingConstructor = $[ namespace ][ name ];
	constructor = $[ namespace ][ name ] = function( options, element ) {

		// Allow instantiation without "new" keyword
		if ( !this._createWidget ) {
			return new constructor( options, element );
		}

		// Allow instantiation without initializing for simple inheritance
		// must use "new" keyword (the code above always passes args)
		if ( arguments.length ) {
			this._createWidget( options, element );
		}
	};

	// Extend with the existing constructor to carry over any static properties
	$.extend( constructor, existingConstructor, {
		version: prototype.version,

		// Copy the object used to create the prototype in case we need to
		// redefine the widget later
		_proto: $.extend( {}, prototype ),

		// Track widgets that inherit from this widget in case this widget is
		// redefined after a widget inherits from it
		_childConstructors: []
	} );

	basePrototype = new base();

	// We need to make the options hash a property directly on the new instance
	// otherwise we'll modify the options hash on the prototype that we're
	// inheriting from
	basePrototype.options = $.widget.extend( {}, basePrototype.options );
	$.each( prototype, function( prop, value ) {
		if ( !$.isFunction( value ) ) {
			proxiedPrototype[ prop ] = value;
			return;
		}
		proxiedPrototype[ prop ] = ( function() {
			function _super() {
				return base.prototype[ prop ].apply( this, arguments );
			}

			function _superApply( args ) {
				return base.prototype[ prop ].apply( this, args );
			}

			return function() {
				var __super = this._super;
				var __superApply = this._superApply;
				var returnValue;

				this._super = _super;
				this._superApply = _superApply;

				returnValue = value.apply( this, arguments );

				this._super = __super;
				this._superApply = __superApply;

				return returnValue;
			};
		} )();
	} );
	constructor.prototype = $.widget.extend( basePrototype, {

		// TODO: remove support for widgetEventPrefix
		// always use the name + a colon as the prefix, e.g., draggable:start
		// don't prefix for widgets that aren't DOM-based
		widgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name
	}, proxiedPrototype, {
		constructor: constructor,
		namespace: namespace,
		widgetName: name,
		widgetFullName: fullName
	} );

	// If this widget is being redefined then we need to find all widgets that
	// are inheriting from it and redefine all of them so that they inherit from
	// the new version of this widget. We're essentially trying to replace one
	// level in the prototype chain.
	if ( existingConstructor ) {
		$.each( existingConstructor._childConstructors, function( i, child ) {
			var childPrototype = child.prototype;

			// Redefine the child widget using the same prototype that was
			// originally used, but inherit from the new version of the base
			$.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor,
				child._proto );
		} );

		// Remove the list of existing child constructors from the old constructor
		// so the old child constructors can be garbage collected
		delete existingConstructor._childConstructors;
	} else {
		base._childConstructors.push( constructor );
	}

	$.widget.bridge( name, constructor );

	return constructor;
};

$.widget.extend = function( target ) {
	var input = widgetSlice.call( arguments, 1 );
	var inputIndex = 0;
	var inputLength = input.length;
	var key;
	var value;

	for ( ; inputIndex < inputLength; inputIndex++ ) {
		for ( key in input[ inputIndex ] ) {
			value = input[ inputIndex ][ key ];
			if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {

				// Clone objects
				if ( $.isPlainObject( value ) ) {
					target[ key ] = $.isPlainObject( target[ key ] ) ?
						$.widget.extend( {}, target[ key ], value ) :

						// Don't extend strings, arrays, etc. with objects
						$.widget.extend( {}, value );

				// Copy everything else by reference
				} else {
					target[ key ] = value;
				}
			}
		}
	}
	return target;
};

$.widget.bridge = function( name, object ) {
	var fullName = object.prototype.widgetFullName || name;
	$.fn[ name ] = function( options ) {
		var isMethodCall = typeof options === "string";
		var args = widgetSlice.call( arguments, 1 );
		var returnValue = this;

		if ( isMethodCall ) {

			// If this is an empty collection, we need to have the instance method
			// return undefined instead of the jQuery instance
			if ( !this.length && options === "instance" ) {
				returnValue = undefined;
			} else {
				this.each( function() {
					var methodValue;
					var instance = $.data( this, fullName );

					if ( options === "instance" ) {
						returnValue = instance;
						return false;
					}

					if ( !instance ) {
						return $.error( "cannot call methods on " + name +
							" prior to initialization; " +
							"attempted to call method '" + options + "'" );
					}

					if ( !$.isFunction( instance[ options ] ) || options.charAt( 0 ) === "_" ) {
						return $.error( "no such method '" + options + "' for " + name +
							" widget instance" );
					}

					methodValue = instance[ options ].apply( instance, args );

					if ( methodValue !== instance && methodValue !== undefined ) {
						returnValue = methodValue && methodValue.jquery ?
							returnValue.pushStack( methodValue.get() ) :
							methodValue;
						return false;
					}
				} );
			}
		} else {

			// Allow multiple hashes to be passed on init
			if ( args.length ) {
				options = $.widget.extend.apply( null, [ options ].concat( args ) );
			}

			this.each( function() {
				var instance = $.data( this, fullName );
				if ( instance ) {
					instance.option( options || {} );
					if ( instance._init ) {
						instance._init();
					}
				} else {
					$.data( this, fullName, new object( options, this ) );
				}
			} );
		}

		return returnValue;
	};
};

$.Widget = function( /* options, element */ ) {};
$.Widget._childConstructors = [];

$.Widget.prototype = {
	widgetName: "widget",
	widgetEventPrefix: "",
	defaultElement: "<div>",

	options: {
		classes: {},
		disabled: false,

		// Callbacks
		create: null
	},

	_createWidget: function( options, element ) {
		element = $( element || this.defaultElement || this )[ 0 ];
		this.element = $( element );
		this.uuid = widgetUuid++;
		this.eventNamespace = "." + this.widgetName + this.uuid;

		this.bindings = $();
		this.hoverable = $();
		this.focusable = $();
		this.classesElementLookup = {};

		if ( element !== this ) {
			$.data( element, this.widgetFullName, this );
			this._on( true, this.element, {
				remove: function( event ) {
					if ( event.target === element ) {
						this.destroy();
					}
				}
			} );
			this.document = $( element.style ?

				// Element within the document
				element.ownerDocument :

				// Element is window or document
				element.document || element );
			this.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow );
		}

		this.options = $.widget.extend( {},
			this.options,
			this._getCreateOptions(),
			options );

		this._create();

		if ( this.options.disabled ) {
			this._setOptionDisabled( this.options.disabled );
		}

		this._trigger( "create", null, this._getCreateEventData() );
		this._init();
	},

	_getCreateOptions: function() {
		return {};
	},

	_getCreateEventData: $.noop,

	_create: $.noop,

	_init: $.noop,

	destroy: function() {
		var that = this;

		this._destroy();
		$.each( this.classesElementLookup, function( key, value ) {
			that._removeClass( value, key );
		} );

		// We can probably remove the unbind calls in 2.0
		// all event bindings should go through this._on()
		this.element
			.off( this.eventNamespace )
			.removeData( this.widgetFullName );
		this.widget()
			.off( this.eventNamespace )
			.removeAttr( "aria-disabled" );

		// Clean up events and states
		this.bindings.off( this.eventNamespace );
	},

	_destroy: $.noop,

	widget: function() {
		return this.element;
	},

	option: function( key, value ) {
		var options = key;
		var parts;
		var curOption;
		var i;

		if ( arguments.length === 0 ) {

			// Don't return a reference to the internal hash
			return $.widget.extend( {}, this.options );
		}

		if ( typeof key === "string" ) {

			// Handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } }
			options = {};
			parts = key.split( "." );
			key = parts.shift();
			if ( parts.length ) {
				curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );
				for ( i = 0; i < parts.length - 1; i++ ) {
					curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};
					curOption = curOption[ parts[ i ] ];
				}
				key = parts.pop();
				if ( arguments.length === 1 ) {
					return curOption[ key ] === undefined ? null : curOption[ key ];
				}
				curOption[ key ] = value;
			} else {
				if ( arguments.length === 1 ) {
					return this.options[ key ] === undefined ? null : this.options[ key ];
				}
				options[ key ] = value;
			}
		}

		this._setOptions( options );

		return this;
	},

	_setOptions: function( options ) {
		var key;

		for ( key in options ) {
			this._setOption( key, options[ key ] );
		}

		return this;
	},

	_setOption: function( key, value ) {
		if ( key === "classes" ) {
			this._setOptionClasses( value );
		}

		this.options[ key ] = value;

		if ( key === "disabled" ) {
			this._setOptionDisabled( value );
		}

		return this;
	},

	_setOptionClasses: function( value ) {
		var classKey, elements, currentElements;

		for ( classKey in value ) {
			currentElements = this.classesElementLookup[ classKey ];
			if ( value[ classKey ] === this.options.classes[ classKey ] ||
					!currentElements ||
					!currentElements.length ) {
				continue;
			}

			// We are doing this to create a new jQuery object because the _removeClass() call
			// on the next line is going to destroy the reference to the current elements being
			// tracked. We need to save a copy of this collection so that we can add the new classes
			// below.
			elements = $( currentElements.get() );
			this._removeClass( currentElements, classKey );

			// We don't use _addClass() here, because that uses this.options.classes
			// for generating the string of classes. We want to use the value passed in from
			// _setOption(), this is the new value of the classes option which was passed to
			// _setOption(). We pass this value directly to _classes().
			elements.addClass( this._classes( {
				element: elements,
				keys: classKey,
				classes: value,
				add: true
			} ) );
		}
	},

	_setOptionDisabled: function( value ) {
		this._toggleClass( this.widget(), this.widgetFullName + "-disabled", null, !!value );

		// If the widget is becoming disabled, then nothing is interactive
		if ( value ) {
			this._removeClass( this.hoverable, null, "ui-state-hover" );
			this._removeClass( this.focusable, null, "ui-state-focus" );
		}
	},

	enable: function() {
		return this._setOptions( { disabled: false } );
	},

	disable: function() {
		return this._setOptions( { disabled: true } );
	},

	_classes: function( options ) {
		var full = [];
		var that = this;

		options = $.extend( {
			element: this.element,
			classes: this.options.classes || {}
		}, options );

		function processClassString( classes, checkOption ) {
			var current, i;
			for ( i = 0; i < classes.length; i++ ) {
				current = that.classesElementLookup[ classes[ i ] ] || $();
				if ( options.add ) {
					current = $( $.unique( current.get().concat( options.element.get() ) ) );
				} else {
					current = $( current.not( options.element ).get() );
				}
				that.classesElementLookup[ classes[ i ] ] = current;
				full.push( classes[ i ] );
				if ( checkOption && options.classes[ classes[ i ] ] ) {
					full.push( options.classes[ classes[ i ] ] );
				}
			}
		}

		this._on( options.element, {
			"remove": "_untrackClassesElement"
		} );

		if ( options.keys ) {
			processClassString( options.keys.match( /\S+/g ) || [], true );
		}
		if ( options.extra ) {
			processClassString( options.extra.match( /\S+/g ) || [] );
		}

		return full.join( " " );
	},

	_untrackClassesElement: function( event ) {
		var that = this;
		$.each( that.classesElementLookup, function( key, value ) {
			if ( $.inArray( event.target, value ) !== -1 ) {
				that.classesElementLookup[ key ] = $( value.not( event.target ).get() );
			}
		} );
	},

	_removeClass: function( element, keys, extra ) {
		return this._toggleClass( element, keys, extra, false );
	},

	_addClass: function( element, keys, extra ) {
		return this._toggleClass( element, keys, extra, true );
	},

	_toggleClass: function( element, keys, extra, add ) {
		add = ( typeof add === "boolean" ) ? add : extra;
		var shift = ( typeof element === "string" || element === null ),
			options = {
				extra: shift ? keys : extra,
				keys: shift ? element : keys,
				element: shift ? this.element : element,
				add: add
			};
		options.element.toggleClass( this._classes( options ), add );
		return this;
	},

	_on: function( suppressDisabledCheck, element, handlers ) {
		var delegateElement;
		var instance = this;

		// No suppressDisabledCheck flag, shuffle arguments
		if ( typeof suppressDisabledCheck !== "boolean" ) {
			handlers = element;
			element = suppressDisabledCheck;
			suppressDisabledCheck = false;
		}

		// No element argument, shuffle and use this.element
		if ( !handlers ) {
			handlers = element;
			element = this.element;
			delegateElement = this.widget();
		} else {
			element = delegateElement = $( element );
			this.bindings = this.bindings.add( element );
		}

		$.each( handlers, function( event, handler ) {
			function handlerProxy() {

				// Allow widgets to customize the disabled handling
				// - disabled as an array instead of boolean
				// - disabled class as method for disabling individual parts
				if ( !suppressDisabledCheck &&
						( instance.options.disabled === true ||
						$( this ).hasClass( "ui-state-disabled" ) ) ) {
					return;
				}
				return ( typeof handler === "string" ? instance[ handler ] : handler )
					.apply( instance, arguments );
			}

			// Copy the guid so direct unbinding works
			if ( typeof handler !== "string" ) {
				handlerProxy.guid = handler.guid =
					handler.guid || handlerProxy.guid || $.guid++;
			}

			var match = event.match( /^([\w:-]*)\s*(.*)$/ );
			var eventName = match[ 1 ] + instance.eventNamespace;
			var selector = match[ 2 ];

			if ( selector ) {
				delegateElement.on( eventName, selector, handlerProxy );
			} else {
				element.on( eventName, handlerProxy );
			}
		} );
	},

	_off: function( element, eventName ) {
		eventName = ( eventName || "" ).split( " " ).join( this.eventNamespace + " " ) +
			this.eventNamespace;
		element.off( eventName ).off( eventName );

		// Clear the stack to avoid memory leaks (#10056)
		this.bindings = $( this.bindings.not( element ).get() );
		this.focusable = $( this.focusable.not( element ).get() );
		this.hoverable = $( this.hoverable.not( element ).get() );
	},

	_delay: function( handler, delay ) {
		function handlerProxy() {
			return ( typeof handler === "string" ? instance[ handler ] : handler )
				.apply( instance, arguments );
		}
		var instance = this;
		return setTimeout( handlerProxy, delay || 0 );
	},

	_hoverable: function( element ) {
		this.hoverable = this.hoverable.add( element );
		this._on( element, {
			mouseenter: function( event ) {
				this._addClass( $( event.currentTarget ), null, "ui-state-hover" );
			},
			mouseleave: function( event ) {
				this._removeClass( $( event.currentTarget ), null, "ui-state-hover" );
			}
		} );
	},

	_focusable: function( element ) {
		this.focusable = this.focusable.add( element );
		this._on( element, {
			focusin: function( event ) {
				this._addClass( $( event.currentTarget ), null, "ui-state-focus" );
			},
			focusout: function( event ) {
				this._removeClass( $( event.currentTarget ), null, "ui-state-focus" );
			}
		} );
	},

	_trigger: function( type, event, data ) {
		var prop, orig;
		var callback = this.options[ type ];

		data = data || {};
		event = $.Event( event );
		event.type = ( type === this.widgetEventPrefix ?
			type :
			this.widgetEventPrefix + type ).toLowerCase();

		// The original event may come from any element
		// so we need to reset the target on the new event
		event.target = this.element[ 0 ];

		// Copy original event properties over to the new event
		orig = event.originalEvent;
		if ( orig ) {
			for ( prop in orig ) {
				if ( !( prop in event ) ) {
					event[ prop ] = orig[ prop ];
				}
			}
		}

		this.element.trigger( event, data );
		return !( $.isFunction( callback ) &&
			callback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false ||
			event.isDefaultPrevented() );
	}
};

$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) {
	$.Widget.prototype[ "_" + method ] = function( element, options, callback ) {
		if ( typeof options === "string" ) {
			options = { effect: options };
		}

		var hasOptions;
		var effectName = !options ?
			method :
			options === true || typeof options === "number" ?
				defaultEffect :
				options.effect || defaultEffect;

		options = options || {};
		if ( typeof options === "number" ) {
			options = { duration: options };
		}

		hasOptions = !$.isEmptyObject( options );
		options.complete = callback;

		if ( options.delay ) {
			element.delay( options.delay );
		}

		if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {
			element[ method ]( options );
		} else if ( effectName !== method && element[ effectName ] ) {
			element[ effectName ]( options.duration, options.easing, callback );
		} else {
			element.queue( function( next ) {
				$( this )[ method ]();
				if ( callback ) {
					callback.call( element[ 0 ] );
				}
				next();
			} );
		}
	};
} );

var widget = $.widget;


/*!
 * jQuery UI Position 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 *
 * http://api.jqueryui.com/position/
 */

//>>label: Position
//>>group: Core
//>>description: Positions elements relative to other elements.
//>>docs: http://api.jqueryui.com/position/
//>>demos: http://jqueryui.com/position/


( function() {
var cachedScrollbarWidth,
	max = Math.max,
	abs = Math.abs,
	rhorizontal = /left|center|right/,
	rvertical = /top|center|bottom/,
	roffset = /[\+\-]\d+(\.[\d]+)?%?/,
	rposition = /^\w+/,
	rpercent = /%$/,
	_position = $.fn.position;

function getOffsets( offsets, width, height ) {
	return [
		parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),
		parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )
	];
}

function parseCss( element, property ) {
	return parseInt( $.css( element, property ), 10 ) || 0;
}

function getDimensions( elem ) {
	var raw = elem[ 0 ];
	if ( raw.nodeType === 9 ) {
		return {
			width: elem.width(),
			height: elem.height(),
			offset: { top: 0, left: 0 }
		};
	}
	if ( $.isWindow( raw ) ) {
		return {
			width: elem.width(),
			height: elem.height(),
			offset: { top: elem.scrollTop(), left: elem.scrollLeft() }
		};
	}
	if ( raw.preventDefault ) {
		return {
			width: 0,
			height: 0,
			offset: { top: raw.pageY, left: raw.pageX }
		};
	}
	return {
		width: elem.outerWidth(),
		height: elem.outerHeight(),
		offset: elem.offset()
	};
}

$.position = {
	scrollbarWidth: function() {
		if ( cachedScrollbarWidth !== undefined ) {
			return cachedScrollbarWidth;
		}
		var w1, w2,
			div = $( "<div " +
				"style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'>" +
				"<div style='height:100px;width:auto;'></div></div>" ),
			innerDiv = div.children()[ 0 ];

		$( "body" ).append( div );
		w1 = innerDiv.offsetWidth;
		div.css( "overflow", "scroll" );

		w2 = innerDiv.offsetWidth;

		if ( w1 === w2 ) {
			w2 = div[ 0 ].clientWidth;
		}

		div.remove();

		return ( cachedScrollbarWidth = w1 - w2 );
	},
	getScrollInfo: function( within ) {
		var overflowX = within.isWindow || within.isDocument ? "" :
				within.element.css( "overflow-x" ),
			overflowY = within.isWindow || within.isDocument ? "" :
				within.element.css( "overflow-y" ),
			hasOverflowX = overflowX === "scroll" ||
				( overflowX === "auto" && within.width < within.element[ 0 ].scrollWidth ),
			hasOverflowY = overflowY === "scroll" ||
				( overflowY === "auto" && within.height < within.element[ 0 ].scrollHeight );
		return {
			width: hasOverflowY ? $.position.scrollbarWidth() : 0,
			height: hasOverflowX ? $.position.scrollbarWidth() : 0
		};
	},
	getWithinInfo: function( element ) {
		var withinElement = $( element || window ),
			isWindow = $.isWindow( withinElement[ 0 ] ),
			isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9,
			hasOffset = !isWindow && !isDocument;
		return {
			element: withinElement,
			isWindow: isWindow,
			isDocument: isDocument,
			offset: hasOffset ? $( element ).offset() : { left: 0, top: 0 },
			scrollLeft: withinElement.scrollLeft(),
			scrollTop: withinElement.scrollTop(),
			width: withinElement.outerWidth(),
			height: withinElement.outerHeight()
		};
	}
};

$.fn.position = function( options ) {
	if ( !options || !options.of ) {
		return _position.apply( this, arguments );
	}

	// Make a copy, we don't want to modify arguments
	options = $.extend( {}, options );

	var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,
		target = $( options.of ),
		within = $.position.getWithinInfo( options.within ),
		scrollInfo = $.position.getScrollInfo( within ),
		collision = ( options.collision || "flip" ).split( " " ),
		offsets = {};

	dimensions = getDimensions( target );
	if ( target[ 0 ].preventDefault ) {

		// Force left top to allow flipping
		options.at = "left top";
	}
	targetWidth = dimensions.width;
	targetHeight = dimensions.height;
	targetOffset = dimensions.offset;

	// Clone to reuse original targetOffset later
	basePosition = $.extend( {}, targetOffset );

	// Force my and at to have valid horizontal and vertical positions
	// if a value is missing or invalid, it will be converted to center
	$.each( [ "my", "at" ], function() {
		var pos = ( options[ this ] || "" ).split( " " ),
			horizontalOffset,
			verticalOffset;

		if ( pos.length === 1 ) {
			pos = rhorizontal.test( pos[ 0 ] ) ?
				pos.concat( [ "center" ] ) :
				rvertical.test( pos[ 0 ] ) ?
					[ "center" ].concat( pos ) :
					[ "center", "center" ];
		}
		pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center";
		pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center";

		// Calculate offsets
		horizontalOffset = roffset.exec( pos[ 0 ] );
		verticalOffset = roffset.exec( pos[ 1 ] );
		offsets[ this ] = [
			horizontalOffset ? horizontalOffset[ 0 ] : 0,
			verticalOffset ? verticalOffset[ 0 ] : 0
		];

		// Reduce to just the positions without the offsets
		options[ this ] = [
			rposition.exec( pos[ 0 ] )[ 0 ],
			rposition.exec( pos[ 1 ] )[ 0 ]
		];
	} );

	// Normalize collision option
	if ( collision.length === 1 ) {
		collision[ 1 ] = collision[ 0 ];
	}

	if ( options.at[ 0 ] === "right" ) {
		basePosition.left += targetWidth;
	} else if ( options.at[ 0 ] === "center" ) {
		basePosition.left += targetWidth / 2;
	}

	if ( options.at[ 1 ] === "bottom" ) {
		basePosition.top += targetHeight;
	} else if ( options.at[ 1 ] === "center" ) {
		basePosition.top += targetHeight / 2;
	}

	atOffset = getOffsets( offsets.at, targetWidth, targetHeight );
	basePosition.left += atOffset[ 0 ];
	basePosition.top += atOffset[ 1 ];

	return this.each( function() {
		var collisionPosition, using,
			elem = $( this ),
			elemWidth = elem.outerWidth(),
			elemHeight = elem.outerHeight(),
			marginLeft = parseCss( this, "marginLeft" ),
			marginTop = parseCss( this, "marginTop" ),
			collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) +
				scrollInfo.width,
			collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) +
				scrollInfo.height,
			position = $.extend( {}, basePosition ),
			myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );

		if ( options.my[ 0 ] === "right" ) {
			position.left -= elemWidth;
		} else if ( options.my[ 0 ] === "center" ) {
			position.left -= elemWidth / 2;
		}

		if ( options.my[ 1 ] === "bottom" ) {
			position.top -= elemHeight;
		} else if ( options.my[ 1 ] === "center" ) {
			position.top -= elemHeight / 2;
		}

		position.left += myOffset[ 0 ];
		position.top += myOffset[ 1 ];

		collisionPosition = {
			marginLeft: marginLeft,
			marginTop: marginTop
		};

		$.each( [ "left", "top" ], function( i, dir ) {
			if ( $.ui.position[ collision[ i ] ] ) {
				$.ui.position[ collision[ i ] ][ dir ]( position, {
					targetWidth: targetWidth,
					targetHeight: targetHeight,
					elemWidth: elemWidth,
					elemHeight: elemHeight,
					collisionPosition: collisionPosition,
					collisionWidth: collisionWidth,
					collisionHeight: collisionHeight,
					offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],
					my: options.my,
					at: options.at,
					within: within,
					elem: elem
				} );
			}
		} );

		if ( options.using ) {

			// Adds feedback as second argument to using callback, if present
			using = function( props ) {
				var left = targetOffset.left - position.left,
					right = left + targetWidth - elemWidth,
					top = targetOffset.top - position.top,
					bottom = top + targetHeight - elemHeight,
					feedback = {
						target: {
							element: target,
							left: targetOffset.left,
							top: targetOffset.top,
							width: targetWidth,
							height: targetHeight
						},
						element: {
							element: elem,
							left: position.left,
							top: position.top,
							width: elemWidth,
							height: elemHeight
						},
						horizontal: right < 0 ? "left" : left > 0 ? "right" : "center",
						vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle"
					};
				if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {
					feedback.horizontal = "center";
				}
				if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {
					feedback.vertical = "middle";
				}
				if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {
					feedback.important = "horizontal";
				} else {
					feedback.important = "vertical";
				}
				options.using.call( this, props, feedback );
			};
		}

		elem.offset( $.extend( position, { using: using } ) );
	} );
};

$.ui.position = {
	fit: {
		left: function( position, data ) {
			var within = data.within,
				withinOffset = within.isWindow ? within.scrollLeft : within.offset.left,
				outerWidth = within.width,
				collisionPosLeft = position.left - data.collisionPosition.marginLeft,
				overLeft = withinOffset - collisionPosLeft,
				overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,
				newOverRight;

			// Element is wider than within
			if ( data.collisionWidth > outerWidth ) {

				// Element is initially over the left side of within
				if ( overLeft > 0 && overRight <= 0 ) {
					newOverRight = position.left + overLeft + data.collisionWidth - outerWidth -
						withinOffset;
					position.left += overLeft - newOverRight;

				// Element is initially over right side of within
				} else if ( overRight > 0 && overLeft <= 0 ) {
					position.left = withinOffset;

				// Element is initially over both left and right sides of within
				} else {
					if ( overLeft > overRight ) {
						position.left = withinOffset + outerWidth - data.collisionWidth;
					} else {
						position.left = withinOffset;
					}
				}

			// Too far left -> align with left edge
			} else if ( overLeft > 0 ) {
				position.left += overLeft;

			// Too far right -> align with right edge
			} else if ( overRight > 0 ) {
				position.left -= overRight;

			// Adjust based on position and margin
			} else {
				position.left = max( position.left - collisionPosLeft, position.left );
			}
		},
		top: function( position, data ) {
			var within = data.within,
				withinOffset = within.isWindow ? within.scrollTop : within.offset.top,
				outerHeight = data.within.height,
				collisionPosTop = position.top - data.collisionPosition.marginTop,
				overTop = withinOffset - collisionPosTop,
				overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,
				newOverBottom;

			// Element is taller than within
			if ( data.collisionHeight > outerHeight ) {

				// Element is initially over the top of within
				if ( overTop > 0 && overBottom <= 0 ) {
					newOverBottom = position.top + overTop + data.collisionHeight - outerHeight -
						withinOffset;
					position.top += overTop - newOverBottom;

				// Element is initially over bottom of within
				} else if ( overBottom > 0 && overTop <= 0 ) {
					position.top = withinOffset;

				// Element is initially over both top and bottom of within
				} else {
					if ( overTop > overBottom ) {
						position.top = withinOffset + outerHeight - data.collisionHeight;
					} else {
						position.top = withinOffset;
					}
				}

			// Too far up -> align with top
			} else if ( overTop > 0 ) {
				position.top += overTop;

			// Too far down -> align with bottom edge
			} else if ( overBottom > 0 ) {
				position.top -= overBottom;

			// Adjust based on position and margin
			} else {
				position.top = max( position.top - collisionPosTop, position.top );
			}
		}
	},
	flip: {
		left: function( position, data ) {
			var within = data.within,
				withinOffset = within.offset.left + within.scrollLeft,
				outerWidth = within.width,
				offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,
				collisionPosLeft = position.left - data.collisionPosition.marginLeft,
				overLeft = collisionPosLeft - offsetLeft,
				overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,
				myOffset = data.my[ 0 ] === "left" ?
					-data.elemWidth :
					data.my[ 0 ] === "right" ?
						data.elemWidth :
						0,
				atOffset = data.at[ 0 ] === "left" ?
					data.targetWidth :
					data.at[ 0 ] === "right" ?
						-data.targetWidth :
						0,
				offset = -2 * data.offset[ 0 ],
				newOverRight,
				newOverLeft;

			if ( overLeft < 0 ) {
				newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth -
					outerWidth - withinOffset;
				if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {
					position.left += myOffset + atOffset + offset;
				}
			} else if ( overRight > 0 ) {
				newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset +
					atOffset + offset - offsetLeft;
				if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {
					position.left += myOffset + atOffset + offset;
				}
			}
		},
		top: function( position, data ) {
			var within = data.within,
				withinOffset = within.offset.top + within.scrollTop,
				outerHeight = within.height,
				offsetTop = within.isWindow ? within.scrollTop : within.offset.top,
				collisionPosTop = position.top - data.collisionPosition.marginTop,
				overTop = collisionPosTop - offsetTop,
				overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,
				top = data.my[ 1 ] === "top",
				myOffset = top ?
					-data.elemHeight :
					data.my[ 1 ] === "bottom" ?
						data.elemHeight :
						0,
				atOffset = data.at[ 1 ] === "top" ?
					data.targetHeight :
					data.at[ 1 ] === "bottom" ?
						-data.targetHeight :
						0,
				offset = -2 * data.offset[ 1 ],
				newOverTop,
				newOverBottom;
			if ( overTop < 0 ) {
				newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight -
					outerHeight - withinOffset;
				if ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) {
					position.top += myOffset + atOffset + offset;
				}
			} else if ( overBottom > 0 ) {
				newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset +
					offset - offsetTop;
				if ( newOverTop > 0 || abs( newOverTop ) < overBottom ) {
					position.top += myOffset + atOffset + offset;
				}
			}
		}
	},
	flipfit: {
		left: function() {
			$.ui.position.flip.left.apply( this, arguments );
			$.ui.position.fit.left.apply( this, arguments );
		},
		top: function() {
			$.ui.position.flip.top.apply( this, arguments );
			$.ui.position.fit.top.apply( this, arguments );
		}
	}
};

} )();

var position = $.ui.position;


/*!
 * jQuery UI :data 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: :data Selector
//>>group: Core
//>>description: Selects elements which have data stored under the specified key.
//>>docs: http://api.jqueryui.com/data-selector/


var data = $.extend( $.expr[ ":" ], {
	data: $.expr.createPseudo ?
		$.expr.createPseudo( function( dataName ) {
			return function( elem ) {
				return !!$.data( elem, dataName );
			};
		} ) :

		// Support: jQuery <1.8
		function( elem, i, match ) {
			return !!$.data( elem, match[ 3 ] );
		}
} );

/*!
 * jQuery UI Disable Selection 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: disableSelection
//>>group: Core
//>>description: Disable selection of text content within the set of matched elements.
//>>docs: http://api.jqueryui.com/disableSelection/

// This file is deprecated


var disableSelection = $.fn.extend( {
	disableSelection: ( function() {
		var eventType = "onselectstart" in document.createElement( "div" ) ?
			"selectstart" :
			"mousedown";

		return function() {
			return this.on( eventType + ".ui-disableSelection", function( event ) {
				event.preventDefault();
			} );
		};
	} )(),

	enableSelection: function() {
		return this.off( ".ui-disableSelection" );
	}
} );


/*!
 * jQuery UI Effects 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Effects Core
//>>group: Effects
// jscs:disable maximumLineLength
//>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects.
// jscs:enable maximumLineLength
//>>docs: http://api.jqueryui.com/category/effects-core/
//>>demos: http://jqueryui.com/effect/



var dataSpace = "ui-effects-",
	dataSpaceStyle = "ui-effects-style",
	dataSpaceAnimated = "ui-effects-animated",

	// Create a local jQuery because jQuery Color relies on it and the
	// global may not exist with AMD and a custom build (#10199)
	jQuery = $;

$.effects = {
	effect: {}
};

/*!
 * jQuery Color Animations v2.1.2
 * https://github.com/jquery/jquery-color
 *
 * Copyright 2014 jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 *
 * Date: Wed Jan 16 08:47:09 2013 -0600
 */
( function( jQuery, undefined ) {

	var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor " +
		"borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",

	// Plusequals test for += 100 -= 100
	rplusequals = /^([\-+])=\s*(\d+\.?\d*)/,

	// A set of RE's that can match strings and generate color tuples.
	stringParsers = [ {
			re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
			parse: function( execResult ) {
				return [
					execResult[ 1 ],
					execResult[ 2 ],
					execResult[ 3 ],
					execResult[ 4 ]
				];
			}
		}, {
			re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
			parse: function( execResult ) {
				return [
					execResult[ 1 ] * 2.55,
					execResult[ 2 ] * 2.55,
					execResult[ 3 ] * 2.55,
					execResult[ 4 ]
				];
			}
		}, {

			// This regex ignores A-F because it's compared against an already lowercased string
			re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,
			parse: function( execResult ) {
				return [
					parseInt( execResult[ 1 ], 16 ),
					parseInt( execResult[ 2 ], 16 ),
					parseInt( execResult[ 3 ], 16 )
				];
			}
		}, {

			// This regex ignores A-F because it's compared against an already lowercased string
			re: /#([a-f0-9])([a-f0-9])([a-f0-9])/,
			parse: function( execResult ) {
				return [
					parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),
					parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),
					parseInt( execResult[ 3 ] + execResult[ 3 ], 16 )
				];
			}
		}, {
			re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
			space: "hsla",
			parse: function( execResult ) {
				return [
					execResult[ 1 ],
					execResult[ 2 ] / 100,
					execResult[ 3 ] / 100,
					execResult[ 4 ]
				];
			}
		} ],

	// JQuery.Color( )
	color = jQuery.Color = function( color, green, blue, alpha ) {
		return new jQuery.Color.fn.parse( color, green, blue, alpha );
	},
	spaces = {
		rgba: {
			props: {
				red: {
					idx: 0,
					type: "byte"
				},
				green: {
					idx: 1,
					type: "byte"
				},
				blue: {
					idx: 2,
					type: "byte"
				}
			}
		},

		hsla: {
			props: {
				hue: {
					idx: 0,
					type: "degrees"
				},
				saturation: {
					idx: 1,
					type: "percent"
				},
				lightness: {
					idx: 2,
					type: "percent"
				}
			}
		}
	},
	propTypes = {
		"byte": {
			floor: true,
			max: 255
		},
		"percent": {
			max: 1
		},
		"degrees": {
			mod: 360,
			floor: true
		}
	},
	support = color.support = {},

	// Element for support tests
	supportElem = jQuery( "<p>" )[ 0 ],

	// Colors = jQuery.Color.names
	colors,

	// Local aliases of functions called often
	each = jQuery.each;

// Determine rgba support immediately
supportElem.style.cssText = "background-color:rgba(1,1,1,.5)";
support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1;

// Define cache name and alpha properties
// for rgba and hsla spaces
each( spaces, function( spaceName, space ) {
	space.cache = "_" + spaceName;
	space.props.alpha = {
		idx: 3,
		type: "percent",
		def: 1
	};
} );

function clamp( value, prop, allowEmpty ) {
	var type = propTypes[ prop.type ] || {};

	if ( value == null ) {
		return ( allowEmpty || !prop.def ) ? null : prop.def;
	}

	// ~~ is an short way of doing floor for positive numbers
	value = type.floor ? ~~value : parseFloat( value );

	// IE will pass in empty strings as value for alpha,
	// which will hit this case
	if ( isNaN( value ) ) {
		return prop.def;
	}

	if ( type.mod ) {

		// We add mod before modding to make sure that negatives values
		// get converted properly: -10 -> 350
		return ( value + type.mod ) % type.mod;
	}

	// For now all property types without mod have min and max
	return 0 > value ? 0 : type.max < value ? type.max : value;
}

function stringParse( string ) {
	var inst = color(),
		rgba = inst._rgba = [];

	string = string.toLowerCase();

	each( stringParsers, function( i, parser ) {
		var parsed,
			match = parser.re.exec( string ),
			values = match && parser.parse( match ),
			spaceName = parser.space || "rgba";

		if ( values ) {
			parsed = inst[ spaceName ]( values );

			// If this was an rgba parse the assignment might happen twice
			// oh well....
			inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];
			rgba = inst._rgba = parsed._rgba;

			// Exit each( stringParsers ) here because we matched
			return false;
		}
	} );

	// Found a stringParser that handled it
	if ( rgba.length ) {

		// If this came from a parsed string, force "transparent" when alpha is 0
		// chrome, (and maybe others) return "transparent" as rgba(0,0,0,0)
		if ( rgba.join() === "0,0,0,0" ) {
			jQuery.extend( rgba, colors.transparent );
		}
		return inst;
	}

	// Named colors
	return colors[ string ];
}

color.fn = jQuery.extend( color.prototype, {
	parse: function( red, green, blue, alpha ) {
		if ( red === undefined ) {
			this._rgba = [ null, null, null, null ];
			return this;
		}
		if ( red.jquery || red.nodeType ) {
			red = jQuery( red ).css( green );
			green = undefined;
		}

		var inst = this,
			type = jQuery.type( red ),
			rgba = this._rgba = [];

		// More than 1 argument specified - assume ( red, green, blue, alpha )
		if ( green !== undefined ) {
			red = [ red, green, blue, alpha ];
			type = "array";
		}

		if ( type === "string" ) {
			return this.parse( stringParse( red ) || colors._default );
		}

		if ( type === "array" ) {
			each( spaces.rgba.props, function( key, prop ) {
				rgba[ prop.idx ] = clamp( red[ prop.idx ], prop );
			} );
			return this;
		}

		if ( type === "object" ) {
			if ( red instanceof color ) {
				each( spaces, function( spaceName, space ) {
					if ( red[ space.cache ] ) {
						inst[ space.cache ] = red[ space.cache ].slice();
					}
				} );
			} else {
				each( spaces, function( spaceName, space ) {
					var cache = space.cache;
					each( space.props, function( key, prop ) {

						// If the cache doesn't exist, and we know how to convert
						if ( !inst[ cache ] && space.to ) {

							// If the value was null, we don't need to copy it
							// if the key was alpha, we don't need to copy it either
							if ( key === "alpha" || red[ key ] == null ) {
								return;
							}
							inst[ cache ] = space.to( inst._rgba );
						}

						// This is the only case where we allow nulls for ALL properties.
						// call clamp with alwaysAllowEmpty
						inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );
					} );

					// Everything defined but alpha?
					if ( inst[ cache ] &&
							jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {

						// Use the default of 1
						inst[ cache ][ 3 ] = 1;
						if ( space.from ) {
							inst._rgba = space.from( inst[ cache ] );
						}
					}
				} );
			}
			return this;
		}
	},
	is: function( compare ) {
		var is = color( compare ),
			same = true,
			inst = this;

		each( spaces, function( _, space ) {
			var localCache,
				isCache = is[ space.cache ];
			if ( isCache ) {
				localCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || [];
				each( space.props, function( _, prop ) {
					if ( isCache[ prop.idx ] != null ) {
						same = ( isCache[ prop.idx ] === localCache[ prop.idx ] );
						return same;
					}
				} );
			}
			return same;
		} );
		return same;
	},
	_space: function() {
		var used = [],
			inst = this;
		each( spaces, function( spaceName, space ) {
			if ( inst[ space.cache ] ) {
				used.push( spaceName );
			}
		} );
		return used.pop();
	},
	transition: function( other, distance ) {
		var end = color( other ),
			spaceName = end._space(),
			space = spaces[ spaceName ],
			startColor = this.alpha() === 0 ? color( "transparent" ) : this,
			start = startColor[ space.cache ] || space.to( startColor._rgba ),
			result = start.slice();

		end = end[ space.cache ];
		each( space.props, function( key, prop ) {
			var index = prop.idx,
				startValue = start[ index ],
				endValue = end[ index ],
				type = propTypes[ prop.type ] || {};

			// If null, don't override start value
			if ( endValue === null ) {
				return;
			}

			// If null - use end
			if ( startValue === null ) {
				result[ index ] = endValue;
			} else {
				if ( type.mod ) {
					if ( endValue - startValue > type.mod / 2 ) {
						startValue += type.mod;
					} else if ( startValue - endValue > type.mod / 2 ) {
						startValue -= type.mod;
					}
				}
				result[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop );
			}
		} );
		return this[ spaceName ]( result );
	},
	blend: function( opaque ) {

		// If we are already opaque - return ourself
		if ( this._rgba[ 3 ] === 1 ) {
			return this;
		}

		var rgb = this._rgba.slice(),
			a = rgb.pop(),
			blend = color( opaque )._rgba;

		return color( jQuery.map( rgb, function( v, i ) {
			return ( 1 - a ) * blend[ i ] + a * v;
		} ) );
	},
	toRgbaString: function() {
		var prefix = "rgba(",
			rgba = jQuery.map( this._rgba, function( v, i ) {
				return v == null ? ( i > 2 ? 1 : 0 ) : v;
			} );

		if ( rgba[ 3 ] === 1 ) {
			rgba.pop();
			prefix = "rgb(";
		}

		return prefix + rgba.join() + ")";
	},
	toHslaString: function() {
		var prefix = "hsla(",
			hsla = jQuery.map( this.hsla(), function( v, i ) {
				if ( v == null ) {
					v = i > 2 ? 1 : 0;
				}

				// Catch 1 and 2
				if ( i && i < 3 ) {
					v = Math.round( v * 100 ) + "%";
				}
				return v;
			} );

		if ( hsla[ 3 ] === 1 ) {
			hsla.pop();
			prefix = "hsl(";
		}
		return prefix + hsla.join() + ")";
	},
	toHexString: function( includeAlpha ) {
		var rgba = this._rgba.slice(),
			alpha = rgba.pop();

		if ( includeAlpha ) {
			rgba.push( ~~( alpha * 255 ) );
		}

		return "#" + jQuery.map( rgba, function( v ) {

			// Default to 0 when nulls exist
			v = ( v || 0 ).toString( 16 );
			return v.length === 1 ? "0" + v : v;
		} ).join( "" );
	},
	toString: function() {
		return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString();
	}
} );
color.fn.parse.prototype = color.fn;

// Hsla conversions adapted from:
// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021

function hue2rgb( p, q, h ) {
	h = ( h + 1 ) % 1;
	if ( h * 6 < 1 ) {
		return p + ( q - p ) * h * 6;
	}
	if ( h * 2 < 1 ) {
		return q;
	}
	if ( h * 3 < 2 ) {
		return p + ( q - p ) * ( ( 2 / 3 ) - h ) * 6;
	}
	return p;
}

spaces.hsla.to = function( rgba ) {
	if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {
		return [ null, null, null, rgba[ 3 ] ];
	}
	var r = rgba[ 0 ] / 255,
		g = rgba[ 1 ] / 255,
		b = rgba[ 2 ] / 255,
		a = rgba[ 3 ],
		max = Math.max( r, g, b ),
		min = Math.min( r, g, b ),
		diff = max - min,
		add = max + min,
		l = add * 0.5,
		h, s;

	if ( min === max ) {
		h = 0;
	} else if ( r === max ) {
		h = ( 60 * ( g - b ) / diff ) + 360;
	} else if ( g === max ) {
		h = ( 60 * ( b - r ) / diff ) + 120;
	} else {
		h = ( 60 * ( r - g ) / diff ) + 240;
	}

	// Chroma (diff) == 0 means greyscale which, by definition, saturation = 0%
	// otherwise, saturation is based on the ratio of chroma (diff) to lightness (add)
	if ( diff === 0 ) {
		s = 0;
	} else if ( l <= 0.5 ) {
		s = diff / add;
	} else {
		s = diff / ( 2 - add );
	}
	return [ Math.round( h ) % 360, s, l, a == null ? 1 : a ];
};

spaces.hsla.from = function( hsla ) {
	if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {
		return [ null, null, null, hsla[ 3 ] ];
	}
	var h = hsla[ 0 ] / 360,
		s = hsla[ 1 ],
		l = hsla[ 2 ],
		a = hsla[ 3 ],
		q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,
		p = 2 * l - q;

	return [
		Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),
		Math.round( hue2rgb( p, q, h ) * 255 ),
		Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),
		a
	];
};

each( spaces, function( spaceName, space ) {
	var props = space.props,
		cache = space.cache,
		to = space.to,
		from = space.from;

	// Makes rgba() and hsla()
	color.fn[ spaceName ] = function( value ) {

		// Generate a cache for this space if it doesn't exist
		if ( to && !this[ cache ] ) {
			this[ cache ] = to( this._rgba );
		}
		if ( value === undefined ) {
			return this[ cache ].slice();
		}

		var ret,
			type = jQuery.type( value ),
			arr = ( type === "array" || type === "object" ) ? value : arguments,
			local = this[ cache ].slice();

		each( props, function( key, prop ) {
			var val = arr[ type === "object" ? key : prop.idx ];
			if ( val == null ) {
				val = local[ prop.idx ];
			}
			local[ prop.idx ] = clamp( val, prop );
		} );

		if ( from ) {
			ret = color( from( local ) );
			ret[ cache ] = local;
			return ret;
		} else {
			return color( local );
		}
	};

	// Makes red() green() blue() alpha() hue() saturation() lightness()
	each( props, function( key, prop ) {

		// Alpha is included in more than one space
		if ( color.fn[ key ] ) {
			return;
		}
		color.fn[ key ] = function( value ) {
			var vtype = jQuery.type( value ),
				fn = ( key === "alpha" ? ( this._hsla ? "hsla" : "rgba" ) : spaceName ),
				local = this[ fn ](),
				cur = local[ prop.idx ],
				match;

			if ( vtype === "undefined" ) {
				return cur;
			}

			if ( vtype === "function" ) {
				value = value.call( this, cur );
				vtype = jQuery.type( value );
			}
			if ( value == null && prop.empty ) {
				return this;
			}
			if ( vtype === "string" ) {
				match = rplusequals.exec( value );
				if ( match ) {
					value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 );
				}
			}
			local[ prop.idx ] = value;
			return this[ fn ]( local );
		};
	} );
} );

// Add cssHook and .fx.step function for each named hook.
// accept a space separated string of properties
color.hook = function( hook ) {
	var hooks = hook.split( " " );
	each( hooks, function( i, hook ) {
		jQuery.cssHooks[ hook ] = {
			set: function( elem, value ) {
				var parsed, curElem,
					backgroundColor = "";

				if ( value !== "transparent" && ( jQuery.type( value ) !== "string" ||
						( parsed = stringParse( value ) ) ) ) {
					value = color( parsed || value );
					if ( !support.rgba && value._rgba[ 3 ] !== 1 ) {
						curElem = hook === "backgroundColor" ? elem.parentNode : elem;
						while (
							( backgroundColor === "" || backgroundColor === "transparent" ) &&
							curElem && curElem.style
						) {
							try {
								backgroundColor = jQuery.css( curElem, "backgroundColor" );
								curElem = curElem.parentNode;
							} catch ( e ) {
							}
						}

						value = value.blend( backgroundColor && backgroundColor !== "transparent" ?
							backgroundColor :
							"_default" );
					}

					value = value.toRgbaString();
				}
				try {
					elem.style[ hook ] = value;
				} catch ( e ) {

					// Wrapped to prevent IE from throwing errors on "invalid" values like
					// 'auto' or 'inherit'
				}
			}
		};
		jQuery.fx.step[ hook ] = function( fx ) {
			if ( !fx.colorInit ) {
				fx.start = color( fx.elem, hook );
				fx.end = color( fx.end );
				fx.colorInit = true;
			}
			jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );
		};
	} );

};

color.hook( stepHooks );

jQuery.cssHooks.borderColor = {
	expand: function( value ) {
		var expanded = {};

		each( [ "Top", "Right", "Bottom", "Left" ], function( i, part ) {
			expanded[ "border" + part + "Color" ] = value;
		} );
		return expanded;
	}
};

// Basic color names only.
// Usage of any of the other color names requires adding yourself or including
// jquery.color.svg-names.js.
colors = jQuery.Color.names = {

	// 4.1. Basic color keywords
	aqua: "#00ffff",
	black: "#000000",
	blue: "#0000ff",
	fuchsia: "#ff00ff",
	gray: "#808080",
	green: "#008000",
	lime: "#00ff00",
	maroon: "#800000",
	navy: "#000080",
	olive: "#808000",
	purple: "#800080",
	red: "#ff0000",
	silver: "#c0c0c0",
	teal: "#008080",
	white: "#ffffff",
	yellow: "#ffff00",

	// 4.2.3. "transparent" color keyword
	transparent: [ null, null, null, 0 ],

	_default: "#ffffff"
};

} )( jQuery );

/******************************************************************************/
/****************************** CLASS ANIMATIONS ******************************/
/******************************************************************************/
( function() {

var classAnimationActions = [ "add", "remove", "toggle" ],
	shorthandStyles = {
		border: 1,
		borderBottom: 1,
		borderColor: 1,
		borderLeft: 1,
		borderRight: 1,
		borderTop: 1,
		borderWidth: 1,
		margin: 1,
		padding: 1
	};

$.each(
	[ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ],
	function( _, prop ) {
		$.fx.step[ prop ] = function( fx ) {
			if ( fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) {
				jQuery.style( fx.elem, prop, fx.end );
				fx.setAttr = true;
			}
		};
	}
);

function getElementStyles( elem ) {
	var key, len,
		style = elem.ownerDocument.defaultView ?
			elem.ownerDocument.defaultView.getComputedStyle( elem, null ) :
			elem.currentStyle,
		styles = {};

	if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {
		len = style.length;
		while ( len-- ) {
			key = style[ len ];
			if ( typeof style[ key ] === "string" ) {
				styles[ $.camelCase( key ) ] = style[ key ];
			}
		}

	// Support: Opera, IE <9
	} else {
		for ( key in style ) {
			if ( typeof style[ key ] === "string" ) {
				styles[ key ] = style[ key ];
			}
		}
	}

	return styles;
}

function styleDifference( oldStyle, newStyle ) {
	var diff = {},
		name, value;

	for ( name in newStyle ) {
		value = newStyle[ name ];
		if ( oldStyle[ name ] !== value ) {
			if ( !shorthandStyles[ name ] ) {
				if ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) {
					diff[ name ] = value;
				}
			}
		}
	}

	return diff;
}

// Support: jQuery <1.8
if ( !$.fn.addBack ) {
	$.fn.addBack = function( selector ) {
		return this.add( selector == null ?
			this.prevObject : this.prevObject.filter( selector )
		);
	};
}

$.effects.animateClass = function( value, duration, easing, callback ) {
	var o = $.speed( duration, easing, callback );

	return this.queue( function() {
		var animated = $( this ),
			baseClass = animated.attr( "class" ) || "",
			applyClassChange,
			allAnimations = o.children ? animated.find( "*" ).addBack() : animated;

		// Map the animated objects to store the original styles.
		allAnimations = allAnimations.map( function() {
			var el = $( this );
			return {
				el: el,
				start: getElementStyles( this )
			};
		} );

		// Apply class change
		applyClassChange = function() {
			$.each( classAnimationActions, function( i, action ) {
				if ( value[ action ] ) {
					animated[ action + "Class" ]( value[ action ] );
				}
			} );
		};
		applyClassChange();

		// Map all animated objects again - calculate new styles and diff
		allAnimations = allAnimations.map( function() {
			this.end = getElementStyles( this.el[ 0 ] );
			this.diff = styleDifference( this.start, this.end );
			return this;
		} );

		// Apply original class
		animated.attr( "class", baseClass );

		// Map all animated objects again - this time collecting a promise
		allAnimations = allAnimations.map( function() {
			var styleInfo = this,
				dfd = $.Deferred(),
				opts = $.extend( {}, o, {
					queue: false,
					complete: function() {
						dfd.resolve( styleInfo );
					}
				} );

			this.el.animate( this.diff, opts );
			return dfd.promise();
		} );

		// Once all animations have completed:
		$.when.apply( $, allAnimations.get() ).done( function() {

			// Set the final class
			applyClassChange();

			// For each animated element,
			// clear all css properties that were animated
			$.each( arguments, function() {
				var el = this.el;
				$.each( this.diff, function( key ) {
					el.css( key, "" );
				} );
			} );

			// This is guarnteed to be there if you use jQuery.speed()
			// it also handles dequeuing the next anim...
			o.complete.call( animated[ 0 ] );
		} );
	} );
};

$.fn.extend( {
	addClass: ( function( orig ) {
		return function( classNames, speed, easing, callback ) {
			return speed ?
				$.effects.animateClass.call( this,
					{ add: classNames }, speed, easing, callback ) :
				orig.apply( this, arguments );
		};
	} )( $.fn.addClass ),

	removeClass: ( function( orig ) {
		return function( classNames, speed, easing, callback ) {
			return arguments.length > 1 ?
				$.effects.animateClass.call( this,
					{ remove: classNames }, speed, easing, callback ) :
				orig.apply( this, arguments );
		};
	} )( $.fn.removeClass ),

	toggleClass: ( function( orig ) {
		return function( classNames, force, speed, easing, callback ) {
			if ( typeof force === "boolean" || force === undefined ) {
				if ( !speed ) {

					// Without speed parameter
					return orig.apply( this, arguments );
				} else {
					return $.effects.animateClass.call( this,
						( force ? { add: classNames } : { remove: classNames } ),
						speed, easing, callback );
				}
			} else {

				// Without force parameter
				return $.effects.animateClass.call( this,
					{ toggle: classNames }, force, speed, easing );
			}
		};
	} )( $.fn.toggleClass ),

	switchClass: function( remove, add, speed, easing, callback ) {
		return $.effects.animateClass.call( this, {
			add: add,
			remove: remove
		}, speed, easing, callback );
	}
} );

} )();

/******************************************************************************/
/*********************************** EFFECTS **********************************/
/******************************************************************************/

( function() {

if ( $.expr && $.expr.filters && $.expr.filters.animated ) {
	$.expr.filters.animated = ( function( orig ) {
		return function( elem ) {
			return !!$( elem ).data( dataSpaceAnimated ) || orig( elem );
		};
	} )( $.expr.filters.animated );
}

if ( $.uiBackCompat !== false ) {
	$.extend( $.effects, {

		// Saves a set of properties in a data storage
		save: function( element, set ) {
			var i = 0, length = set.length;
			for ( ; i < length; i++ ) {
				if ( set[ i ] !== null ) {
					element.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] );
				}
			}
		},

		// Restores a set of previously saved properties from a data storage
		restore: function( element, set ) {
			var val, i = 0, length = set.length;
			for ( ; i < length; i++ ) {
				if ( set[ i ] !== null ) {
					val = element.data( dataSpace + set[ i ] );
					element.css( set[ i ], val );
				}
			}
		},

		setMode: function( el, mode ) {
			if ( mode === "toggle" ) {
				mode = el.is( ":hidden" ) ? "show" : "hide";
			}
			return mode;
		},

		// Wraps the element around a wrapper that copies position properties
		createWrapper: function( element ) {

			// If the element is already wrapped, return it
			if ( element.parent().is( ".ui-effects-wrapper" ) ) {
				return element.parent();
			}

			// Wrap the element
			var props = {
					width: element.outerWidth( true ),
					height: element.outerHeight( true ),
					"float": element.css( "float" )
				},
				wrapper = $( "<div></div>" )
					.addClass( "ui-effects-wrapper" )
					.css( {
						fontSize: "100%",
						background: "transparent",
						border: "none",
						margin: 0,
						padding: 0
					} ),

				// Store the size in case width/height are defined in % - Fixes #5245
				size = {
					width: element.width(),
					height: element.height()
				},
				active = document.activeElement;

			// Support: Firefox
			// Firefox incorrectly exposes anonymous content
			// https://bugzilla.mozilla.org/show_bug.cgi?id=561664
			try {
				active.id;
			} catch ( e ) {
				active = document.body;
			}

			element.wrap( wrapper );

			// Fixes #7595 - Elements lose focus when wrapped.
			if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
				$( active ).trigger( "focus" );
			}

			// Hotfix for jQuery 1.4 since some change in wrap() seems to actually
			// lose the reference to the wrapped element
			wrapper = element.parent();

			// Transfer positioning properties to the wrapper
			if ( element.css( "position" ) === "static" ) {
				wrapper.css( { position: "relative" } );
				element.css( { position: "relative" } );
			} else {
				$.extend( props, {
					position: element.css( "position" ),
					zIndex: element.css( "z-index" )
				} );
				$.each( [ "top", "left", "bottom", "right" ], function( i, pos ) {
					props[ pos ] = element.css( pos );
					if ( isNaN( parseInt( props[ pos ], 10 ) ) ) {
						props[ pos ] = "auto";
					}
				} );
				element.css( {
					position: "relative",
					top: 0,
					left: 0,
					right: "auto",
					bottom: "auto"
				} );
			}
			element.css( size );

			return wrapper.css( props ).show();
		},

		removeWrapper: function( element ) {
			var active = document.activeElement;

			if ( element.parent().is( ".ui-effects-wrapper" ) ) {
				element.parent().replaceWith( element );

				// Fixes #7595 - Elements lose focus when wrapped.
				if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
					$( active ).trigger( "focus" );
				}
			}

			return element;
		}
	} );
}

$.extend( $.effects, {
	version: "1.12.1",

	define: function( name, mode, effect ) {
		if ( !effect ) {
			effect = mode;
			mode = "effect";
		}

		$.effects.effect[ name ] = effect;
		$.effects.effect[ name ].mode = mode;

		return effect;
	},

	scaledDimensions: function( element, percent, direction ) {
		if ( percent === 0 ) {
			return {
				height: 0,
				width: 0,
				outerHeight: 0,
				outerWidth: 0
			};
		}

		var x = direction !== "horizontal" ? ( ( percent || 100 ) / 100 ) : 1,
			y = direction !== "vertical" ? ( ( percent || 100 ) / 100 ) : 1;

		return {
			height: element.height() * y,
			width: element.width() * x,
			outerHeight: element.outerHeight() * y,
			outerWidth: element.outerWidth() * x
		};

	},

	clipToBox: function( animation ) {
		return {
			width: animation.clip.right - animation.clip.left,
			height: animation.clip.bottom - animation.clip.top,
			left: animation.clip.left,
			top: animation.clip.top
		};
	},

	// Injects recently queued functions to be first in line (after "inprogress")
	unshift: function( element, queueLength, count ) {
		var queue = element.queue();

		if ( queueLength > 1 ) {
			queue.splice.apply( queue,
				[ 1, 0 ].concat( queue.splice( queueLength, count ) ) );
		}
		element.dequeue();
	},

	saveStyle: function( element ) {
		element.data( dataSpaceStyle, element[ 0 ].style.cssText );
	},

	restoreStyle: function( element ) {
		element[ 0 ].style.cssText = element.data( dataSpaceStyle ) || "";
		element.removeData( dataSpaceStyle );
	},

	mode: function( element, mode ) {
		var hidden = element.is( ":hidden" );

		if ( mode === "toggle" ) {
			mode = hidden ? "show" : "hide";
		}
		if ( hidden ? mode === "hide" : mode === "show" ) {
			mode = "none";
		}
		return mode;
	},

	// Translates a [top,left] array into a baseline value
	getBaseline: function( origin, original ) {
		var y, x;

		switch ( origin[ 0 ] ) {
		case "top":
			y = 0;
			break;
		case "middle":
			y = 0.5;
			break;
		case "bottom":
			y = 1;
			break;
		default:
			y = origin[ 0 ] / original.height;
		}

		switch ( origin[ 1 ] ) {
		case "left":
			x = 0;
			break;
		case "center":
			x = 0.5;
			break;
		case "right":
			x = 1;
			break;
		default:
			x = origin[ 1 ] / original.width;
		}

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

	// Creates a placeholder element so that the original element can be made absolute
	createPlaceholder: function( element ) {
		var placeholder,
			cssPosition = element.css( "position" ),
			position = element.position();

		// Lock in margins first to account for form elements, which
		// will change margin if you explicitly set height
		// see: http://jsfiddle.net/JZSMt/3/ https://bugs.webkit.org/show_bug.cgi?id=107380
		// Support: Safari
		element.css( {
			marginTop: element.css( "marginTop" ),
			marginBottom: element.css( "marginBottom" ),
			marginLeft: element.css( "marginLeft" ),
			marginRight: element.css( "marginRight" )
		} )
		.outerWidth( element.outerWidth() )
		.outerHeight( element.outerHeight() );

		if ( /^(static|relative)/.test( cssPosition ) ) {
			cssPosition = "absolute";

			placeholder = $( "<" + element[ 0 ].nodeName + ">" ).insertAfter( element ).css( {

				// Convert inline to inline block to account for inline elements
				// that turn to inline block based on content (like img)
				display: /^(inline|ruby)/.test( element.css( "display" ) ) ?
					"inline-block" :
					"block",
				visibility: "hidden",

				// Margins need to be set to account for margin collapse
				marginTop: element.css( "marginTop" ),
				marginBottom: element.css( "marginBottom" ),
				marginLeft: element.css( "marginLeft" ),
				marginRight: element.css( "marginRight" ),
				"float": element.css( "float" )
			} )
			.outerWidth( element.outerWidth() )
			.outerHeight( element.outerHeight() )
			.addClass( "ui-effects-placeholder" );

			element.data( dataSpace + "placeholder", placeholder );
		}

		element.css( {
			position: cssPosition,
			left: position.left,
			top: position.top
		} );

		return placeholder;
	},

	removePlaceholder: function( element ) {
		var dataKey = dataSpace + "placeholder",
				placeholder = element.data( dataKey );

		if ( placeholder ) {
			placeholder.remove();
			element.removeData( dataKey );
		}
	},

	// Removes a placeholder if it exists and restores
	// properties that were modified during placeholder creation
	cleanUp: function( element ) {
		$.effects.restoreStyle( element );
		$.effects.removePlaceholder( element );
	},

	setTransition: function( element, list, factor, value ) {
		value = value || {};
		$.each( list, function( i, x ) {
			var unit = element.cssUnit( x );
			if ( unit[ 0 ] > 0 ) {
				value[ x ] = unit[ 0 ] * factor + unit[ 1 ];
			}
		} );
		return value;
	}
} );

// Return an effect options object for the given parameters:
function _normalizeArguments( effect, options, speed, callback ) {

	// Allow passing all options as the first parameter
	if ( $.isPlainObject( effect ) ) {
		options = effect;
		effect = effect.effect;
	}

	// Convert to an object
	effect = { effect: effect };

	// Catch (effect, null, ...)
	if ( options == null ) {
		options = {};
	}

	// Catch (effect, callback)
	if ( $.isFunction( options ) ) {
		callback = options;
		speed = null;
		options = {};
	}

	// Catch (effect, speed, ?)
	if ( typeof options === "number" || $.fx.speeds[ options ] ) {
		callback = speed;
		speed = options;
		options = {};
	}

	// Catch (effect, options, callback)
	if ( $.isFunction( speed ) ) {
		callback = speed;
		speed = null;
	}

	// Add options to effect
	if ( options ) {
		$.extend( effect, options );
	}

	speed = speed || options.duration;
	effect.duration = $.fx.off ? 0 :
		typeof speed === "number" ? speed :
		speed in $.fx.speeds ? $.fx.speeds[ speed ] :
		$.fx.speeds._default;

	effect.complete = callback || options.complete;

	return effect;
}

function standardAnimationOption( option ) {

	// Valid standard speeds (nothing, number, named speed)
	if ( !option || typeof option === "number" || $.fx.speeds[ option ] ) {
		return true;
	}

	// Invalid strings - treat as "normal" speed
	if ( typeof option === "string" && !$.effects.effect[ option ] ) {
		return true;
	}

	// Complete callback
	if ( $.isFunction( option ) ) {
		return true;
	}

	// Options hash (but not naming an effect)
	if ( typeof option === "object" && !option.effect ) {
		return true;
	}

	// Didn't match any standard API
	return false;
}

$.fn.extend( {
	effect: function( /* effect, options, speed, callback */ ) {
		var args = _normalizeArguments.apply( this, arguments ),
			effectMethod = $.effects.effect[ args.effect ],
			defaultMode = effectMethod.mode,
			queue = args.queue,
			queueName = queue || "fx",
			complete = args.complete,
			mode = args.mode,
			modes = [],
			prefilter = function( next ) {
				var el = $( this ),
					normalizedMode = $.effects.mode( el, mode ) || defaultMode;

				// Sentinel for duck-punching the :animated psuedo-selector
				el.data( dataSpaceAnimated, true );

				// Save effect mode for later use,
				// we can't just call $.effects.mode again later,
				// as the .show() below destroys the initial state
				modes.push( normalizedMode );

				// See $.uiBackCompat inside of run() for removal of defaultMode in 1.13
				if ( defaultMode && ( normalizedMode === "show" ||
						( normalizedMode === defaultMode && normalizedMode === "hide" ) ) ) {
					el.show();
				}

				if ( !defaultMode || normalizedMode !== "none" ) {
					$.effects.saveStyle( el );
				}

				if ( $.isFunction( next ) ) {
					next();
				}
			};

		if ( $.fx.off || !effectMethod ) {

			// Delegate to the original method (e.g., .show()) if possible
			if ( mode ) {
				return this[ mode ]( args.duration, complete );
			} else {
				return this.each( function() {
					if ( complete ) {
						complete.call( this );
					}
				} );
			}
		}

		function run( next ) {
			var elem = $( this );

			function cleanup() {
				elem.removeData( dataSpaceAnimated );

				$.effects.cleanUp( elem );

				if ( args.mode === "hide" ) {
					elem.hide();
				}

				done();
			}

			function done() {
				if ( $.isFunction( complete ) ) {
					complete.call( elem[ 0 ] );
				}

				if ( $.isFunction( next ) ) {
					next();
				}
			}

			// Override mode option on a per element basis,
			// as toggle can be either show or hide depending on element state
			args.mode = modes.shift();

			if ( $.uiBackCompat !== false && !defaultMode ) {
				if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) {

					// Call the core method to track "olddisplay" properly
					elem[ mode ]();
					done();
				} else {
					effectMethod.call( elem[ 0 ], args, done );
				}
			} else {
				if ( args.mode === "none" ) {

					// Call the core method to track "olddisplay" properly
					elem[ mode ]();
					done();
				} else {
					effectMethod.call( elem[ 0 ], args, cleanup );
				}
			}
		}

		// Run prefilter on all elements first to ensure that
		// any showing or hiding happens before placeholder creation,
		// which ensures that any layout changes are correctly captured.
		return queue === false ?
			this.each( prefilter ).each( run ) :
			this.queue( queueName, prefilter ).queue( queueName, run );
	},

	show: ( function( orig ) {
		return function( option ) {
			if ( standardAnimationOption( option ) ) {
				return orig.apply( this, arguments );
			} else {
				var args = _normalizeArguments.apply( this, arguments );
				args.mode = "show";
				return this.effect.call( this, args );
			}
		};
	} )( $.fn.show ),

	hide: ( function( orig ) {
		return function( option ) {
			if ( standardAnimationOption( option ) ) {
				return orig.apply( this, arguments );
			} else {
				var args = _normalizeArguments.apply( this, arguments );
				args.mode = "hide";
				return this.effect.call( this, args );
			}
		};
	} )( $.fn.hide ),

	toggle: ( function( orig ) {
		return function( option ) {
			if ( standardAnimationOption( option ) || typeof option === "boolean" ) {
				return orig.apply( this, arguments );
			} else {
				var args = _normalizeArguments.apply( this, arguments );
				args.mode = "toggle";
				return this.effect.call( this, args );
			}
		};
	} )( $.fn.toggle ),

	cssUnit: function( key ) {
		var style = this.css( key ),
			val = [];

		$.each( [ "em", "px", "%", "pt" ], function( i, unit ) {
			if ( style.indexOf( unit ) > 0 ) {
				val = [ parseFloat( style ), unit ];
			}
		} );
		return val;
	},

	cssClip: function( clipObj ) {
		if ( clipObj ) {
			return this.css( "clip", "rect(" + clipObj.top + "px " + clipObj.right + "px " +
				clipObj.bottom + "px " + clipObj.left + "px)" );
		}
		return parseClip( this.css( "clip" ), this );
	},

	transfer: function( options, done ) {
		var element = $( this ),
			target = $( options.to ),
			targetFixed = target.css( "position" ) === "fixed",
			body = $( "body" ),
			fixTop = targetFixed ? body.scrollTop() : 0,
			fixLeft = targetFixed ? body.scrollLeft() : 0,
			endPosition = target.offset(),
			animation = {
				top: endPosition.top - fixTop,
				left: endPosition.left - fixLeft,
				height: target.innerHeight(),
				width: target.innerWidth()
			},
			startPosition = element.offset(),
			transfer = $( "<div class='ui-effects-transfer'></div>" )
				.appendTo( "body" )
				.addClass( options.className )
				.css( {
					top: startPosition.top - fixTop,
					left: startPosition.left - fixLeft,
					height: element.innerHeight(),
					width: element.innerWidth(),
					position: targetFixed ? "fixed" : "absolute"
				} )
				.animate( animation, options.duration, options.easing, function() {
					transfer.remove();
					if ( $.isFunction( done ) ) {
						done();
					}
				} );
	}
} );

function parseClip( str, element ) {
		var outerWidth = element.outerWidth(),
			outerHeight = element.outerHeight(),
			clipRegex = /^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/,
			values = clipRegex.exec( str ) || [ "", 0, outerWidth, outerHeight, 0 ];

		return {
			top: parseFloat( values[ 1 ] ) || 0,
			right: values[ 2 ] === "auto" ? outerWidth : parseFloat( values[ 2 ] ),
			bottom: values[ 3 ] === "auto" ? outerHeight : parseFloat( values[ 3 ] ),
			left: parseFloat( values[ 4 ] ) || 0
		};
}

$.fx.step.clip = function( fx ) {
	if ( !fx.clipInit ) {
		fx.start = $( fx.elem ).cssClip();
		if ( typeof fx.end === "string" ) {
			fx.end = parseClip( fx.end, fx.elem );
		}
		fx.clipInit = true;
	}

	$( fx.elem ).cssClip( {
		top: fx.pos * ( fx.end.top - fx.start.top ) + fx.start.top,
		right: fx.pos * ( fx.end.right - fx.start.right ) + fx.start.right,
		bottom: fx.pos * ( fx.end.bottom - fx.start.bottom ) + fx.start.bottom,
		left: fx.pos * ( fx.end.left - fx.start.left ) + fx.start.left
	} );
};

} )();

/******************************************************************************/
/*********************************** EASING ***********************************/
/******************************************************************************/

( function() {

// Based on easing equations from Robert Penner (http://www.robertpenner.com/easing)

var baseEasings = {};

$.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) {
	baseEasings[ name ] = function( p ) {
		return Math.pow( p, i + 2 );
	};
} );

$.extend( baseEasings, {
	Sine: function( p ) {
		return 1 - Math.cos( p * Math.PI / 2 );
	},
	Circ: function( p ) {
		return 1 - Math.sqrt( 1 - p * p );
	},
	Elastic: function( p ) {
		return p === 0 || p === 1 ? p :
			-Math.pow( 2, 8 * ( p - 1 ) ) * Math.sin( ( ( p - 1 ) * 80 - 7.5 ) * Math.PI / 15 );
	},
	Back: function( p ) {
		return p * p * ( 3 * p - 2 );
	},
	Bounce: function( p ) {
		var pow2,
			bounce = 4;

		while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}
		return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );
	}
} );

$.each( baseEasings, function( name, easeIn ) {
	$.easing[ "easeIn" + name ] = easeIn;
	$.easing[ "easeOut" + name ] = function( p ) {
		return 1 - easeIn( 1 - p );
	};
	$.easing[ "easeInOut" + name ] = function( p ) {
		return p < 0.5 ?
			easeIn( p * 2 ) / 2 :
			1 - easeIn( p * -2 + 2 ) / 2;
	};
} );

} )();

var effect = $.effects;


/*!
 * jQuery UI Effects Blind 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Blind Effect
//>>group: Effects
//>>description: Blinds the element.
//>>docs: http://api.jqueryui.com/blind-effect/
//>>demos: http://jqueryui.com/effect/



var effectsEffectBlind = $.effects.define( "blind", "hide", function( options, done ) {
	var map = {
			up: [ "bottom", "top" ],
			vertical: [ "bottom", "top" ],
			down: [ "top", "bottom" ],
			left: [ "right", "left" ],
			horizontal: [ "right", "left" ],
			right: [ "left", "right" ]
		},
		element = $( this ),
		direction = options.direction || "up",
		start = element.cssClip(),
		animate = { clip: $.extend( {}, start ) },
		placeholder = $.effects.createPlaceholder( element );

	animate.clip[ map[ direction ][ 0 ] ] = animate.clip[ map[ direction ][ 1 ] ];

	if ( options.mode === "show" ) {
		element.cssClip( animate.clip );
		if ( placeholder ) {
			placeholder.css( $.effects.clipToBox( animate ) );
		}

		animate.clip = start;
	}

	if ( placeholder ) {
		placeholder.animate( $.effects.clipToBox( animate ), options.duration, options.easing );
	}

	element.animate( animate, {
		queue: false,
		duration: options.duration,
		easing: options.easing,
		complete: done
	} );
} );


/*!
 * jQuery UI Effects Bounce 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Bounce Effect
//>>group: Effects
//>>description: Bounces an element horizontally or vertically n times.
//>>docs: http://api.jqueryui.com/bounce-effect/
//>>demos: http://jqueryui.com/effect/



var effectsEffectBounce = $.effects.define( "bounce", function( options, done ) {
	var upAnim, downAnim, refValue,
		element = $( this ),

		// Defaults:
		mode = options.mode,
		hide = mode === "hide",
		show = mode === "show",
		direction = options.direction || "up",
		distance = options.distance,
		times = options.times || 5,

		// Number of internal animations
		anims = times * 2 + ( show || hide ? 1 : 0 ),
		speed = options.duration / anims,
		easing = options.easing,

		// Utility:
		ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
		motion = ( direction === "up" || direction === "left" ),
		i = 0,

		queuelen = element.queue().length;

	$.effects.createPlaceholder( element );

	refValue = element.css( ref );

	// Default distance for the BIGGEST bounce is the outer Distance / 3
	if ( !distance ) {
		distance = element[ ref === "top" ? "outerHeight" : "outerWidth" ]() / 3;
	}

	if ( show ) {
		downAnim = { opacity: 1 };
		downAnim[ ref ] = refValue;

		// If we are showing, force opacity 0 and set the initial position
		// then do the "first" animation
		element
			.css( "opacity", 0 )
			.css( ref, motion ? -distance * 2 : distance * 2 )
			.animate( downAnim, speed, easing );
	}

	// Start at the smallest distance if we are hiding
	if ( hide ) {
		distance = distance / Math.pow( 2, times - 1 );
	}

	downAnim = {};
	downAnim[ ref ] = refValue;

	// Bounces up/down/left/right then back to 0 -- times * 2 animations happen here
	for ( ; i < times; i++ ) {
		upAnim = {};
		upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance;

		element
			.animate( upAnim, speed, easing )
			.animate( downAnim, speed, easing );

		distance = hide ? distance * 2 : distance / 2;
	}

	// Last Bounce when Hiding
	if ( hide ) {
		upAnim = { opacity: 0 };
		upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance;

		element.animate( upAnim, speed, easing );
	}

	element.queue( done );

	$.effects.unshift( element, queuelen, anims + 1 );
} );


/*!
 * jQuery UI Effects Clip 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Clip Effect
//>>group: Effects
//>>description: Clips the element on and off like an old TV.
//>>docs: http://api.jqueryui.com/clip-effect/
//>>demos: http://jqueryui.com/effect/



var effectsEffectClip = $.effects.define( "clip", "hide", function( options, done ) {
	var start,
		animate = {},
		element = $( this ),
		direction = options.direction || "vertical",
		both = direction === "both",
		horizontal = both || direction === "horizontal",
		vertical = both || direction === "vertical";

	start = element.cssClip();
	animate.clip = {
		top: vertical ? ( start.bottom - start.top ) / 2 : start.top,
		right: horizontal ? ( start.right - start.left ) / 2 : start.right,
		bottom: vertical ? ( start.bottom - start.top ) / 2 : start.bottom,
		left: horizontal ? ( start.right - start.left ) / 2 : start.left
	};

	$.effects.createPlaceholder( element );

	if ( options.mode === "show" ) {
		element.cssClip( animate.clip );
		animate.clip = start;
	}

	element.animate( animate, {
		queue: false,
		duration: options.duration,
		easing: options.easing,
		complete: done
	} );

} );


/*!
 * jQuery UI Effects Drop 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Drop Effect
//>>group: Effects
//>>description: Moves an element in one direction and hides it at the same time.
//>>docs: http://api.jqueryui.com/drop-effect/
//>>demos: http://jqueryui.com/effect/



var effectsEffectDrop = $.effects.define( "drop", "hide", function( options, done ) {

	var distance,
		element = $( this ),
		mode = options.mode,
		show = mode === "show",
		direction = options.direction || "left",
		ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
		motion = ( direction === "up" || direction === "left" ) ? "-=" : "+=",
		oppositeMotion = ( motion === "+=" ) ? "-=" : "+=",
		animation = {
			opacity: 0
		};

	$.effects.createPlaceholder( element );

	distance = options.distance ||
		element[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ) / 2;

	animation[ ref ] = motion + distance;

	if ( show ) {
		element.css( animation );

		animation[ ref ] = oppositeMotion + distance;
		animation.opacity = 1;
	}

	// Animate
	element.animate( animation, {
		queue: false,
		duration: options.duration,
		easing: options.easing,
		complete: done
	} );
} );


/*!
 * jQuery UI Effects Explode 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Explode Effect
//>>group: Effects
// jscs:disable maximumLineLength
//>>description: Explodes an element in all directions into n pieces. Implodes an element to its original wholeness.
// jscs:enable maximumLineLength
//>>docs: http://api.jqueryui.com/explode-effect/
//>>demos: http://jqueryui.com/effect/



var effectsEffectExplode = $.effects.define( "explode", "hide", function( options, done ) {

	var i, j, left, top, mx, my,
		rows = options.pieces ? Math.round( Math.sqrt( options.pieces ) ) : 3,
		cells = rows,
		element = $( this ),
		mode = options.mode,
		show = mode === "show",

		// Show and then visibility:hidden the element before calculating offset
		offset = element.show().css( "visibility", "hidden" ).offset(),

		// Width and height of a piece
		width = Math.ceil( element.outerWidth() / cells ),
		height = Math.ceil( element.outerHeight() / rows ),
		pieces = [];

	// Children animate complete:
	function childComplete() {
		pieces.push( this );
		if ( pieces.length === rows * cells ) {
			animComplete();
		}
	}

	// Clone the element for each row and cell.
	for ( i = 0; i < rows; i++ ) { // ===>
		top = offset.top + i * height;
		my = i - ( rows - 1 ) / 2;

		for ( j = 0; j < cells; j++ ) { // |||
			left = offset.left + j * width;
			mx = j - ( cells - 1 ) / 2;

			// Create a clone of the now hidden main element that will be absolute positioned
			// within a wrapper div off the -left and -top equal to size of our pieces
			element
				.clone()
				.appendTo( "body" )
				.wrap( "<div></div>" )
				.css( {
					position: "absolute",
					visibility: "visible",
					left: -j * width,
					top: -i * height
				} )

				// Select the wrapper - make it overflow: hidden and absolute positioned based on
				// where the original was located +left and +top equal to the size of pieces
				.parent()
					.addClass( "ui-effects-explode" )
					.css( {
						position: "absolute",
						overflow: "hidden",
						width: width,
						height: height,
						left: left + ( show ? mx * width : 0 ),
						top: top + ( show ? my * height : 0 ),
						opacity: show ? 0 : 1
					} )
					.animate( {
						left: left + ( show ? 0 : mx * width ),
						top: top + ( show ? 0 : my * height ),
						opacity: show ? 1 : 0
					}, options.duration || 500, options.easing, childComplete );
		}
	}

	function animComplete() {
		element.css( {
			visibility: "visible"
		} );
		$( pieces ).remove();
		done();
	}
} );


/*!
 * jQuery UI Effects Fade 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Fade Effect
//>>group: Effects
//>>description: Fades the element.
//>>docs: http://api.jqueryui.com/fade-effect/
//>>demos: http://jqueryui.com/effect/



var effectsEffectFade = $.effects.define( "fade", "toggle", function( options, done ) {
	var show = options.mode === "show";

	$( this )
		.css( "opacity", show ? 0 : 1 )
		.animate( {
			opacity: show ? 1 : 0
		}, {
			queue: false,
			duration: options.duration,
			easing: options.easing,
			complete: done
		} );
} );


/*!
 * jQuery UI Effects Fold 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Fold Effect
//>>group: Effects
//>>description: Folds an element first horizontally and then vertically.
//>>docs: http://api.jqueryui.com/fold-effect/
//>>demos: http://jqueryui.com/effect/



var effectsEffectFold = $.effects.define( "fold", "hide", function( options, done ) {

	// Create element
	var element = $( this ),
		mode = options.mode,
		show = mode === "show",
		hide = mode === "hide",
		size = options.size || 15,
		percent = /([0-9]+)%/.exec( size ),
		horizFirst = !!options.horizFirst,
		ref = horizFirst ? [ "right", "bottom" ] : [ "bottom", "right" ],
		duration = options.duration / 2,

		placeholder = $.effects.createPlaceholder( element ),

		start = element.cssClip(),
		animation1 = { clip: $.extend( {}, start ) },
		animation2 = { clip: $.extend( {}, start ) },

		distance = [ start[ ref[ 0 ] ], start[ ref[ 1 ] ] ],

		queuelen = element.queue().length;

	if ( percent ) {
		size = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ];
	}
	animation1.clip[ ref[ 0 ] ] = size;
	animation2.clip[ ref[ 0 ] ] = size;
	animation2.clip[ ref[ 1 ] ] = 0;

	if ( show ) {
		element.cssClip( animation2.clip );
		if ( placeholder ) {
			placeholder.css( $.effects.clipToBox( animation2 ) );
		}

		animation2.clip = start;
	}

	// Animate
	element
		.queue( function( next ) {
			if ( placeholder ) {
				placeholder
					.animate( $.effects.clipToBox( animation1 ), duration, options.easing )
					.animate( $.effects.clipToBox( animation2 ), duration, options.easing );
			}

			next();
		} )
		.animate( animation1, duration, options.easing )
		.animate( animation2, duration, options.easing )
		.queue( done );

	$.effects.unshift( element, queuelen, 4 );
} );


/*!
 * jQuery UI Effects Highlight 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Highlight Effect
//>>group: Effects
//>>description: Highlights the background of an element in a defined color for a custom duration.
//>>docs: http://api.jqueryui.com/highlight-effect/
//>>demos: http://jqueryui.com/effect/



var effectsEffectHighlight = $.effects.define( "highlight", "show", function( options, done ) {
	var element = $( this ),
		animation = {
			backgroundColor: element.css( "backgroundColor" )
		};

	if ( options.mode === "hide" ) {
		animation.opacity = 0;
	}

	$.effects.saveStyle( element );

	element
		.css( {
			backgroundImage: "none",
			backgroundColor: options.color || "#ffff99"
		} )
		.animate( animation, {
			queue: false,
			duration: options.duration,
			easing: options.easing,
			complete: done
		} );
} );


/*!
 * jQuery UI Effects Size 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Size Effect
//>>group: Effects
//>>description: Resize an element to a specified width and height.
//>>docs: http://api.jqueryui.com/size-effect/
//>>demos: http://jqueryui.com/effect/



var effectsEffectSize = $.effects.define( "size", function( options, done ) {

	// Create element
	var baseline, factor, temp,
		element = $( this ),

		// Copy for children
		cProps = [ "fontSize" ],
		vProps = [ "borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom" ],
		hProps = [ "borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight" ],

		// Set options
		mode = options.mode,
		restore = mode !== "effect",
		scale = options.scale || "both",
		origin = options.origin || [ "middle", "center" ],
		position = element.css( "position" ),
		pos = element.position(),
		original = $.effects.scaledDimensions( element ),
		from = options.from || original,
		to = options.to || $.effects.scaledDimensions( element, 0 );

	$.effects.createPlaceholder( element );

	if ( mode === "show" ) {
		temp = from;
		from = to;
		to = temp;
	}

	// Set scaling factor
	factor = {
		from: {
			y: from.height / original.height,
			x: from.width / original.width
		},
		to: {
			y: to.height / original.height,
			x: to.width / original.width
		}
	};

	// Scale the css box
	if ( scale === "box" || scale === "both" ) {

		// Vertical props scaling
		if ( factor.from.y !== factor.to.y ) {
			from = $.effects.setTransition( element, vProps, factor.from.y, from );
			to = $.effects.setTransition( element, vProps, factor.to.y, to );
		}

		// Horizontal props scaling
		if ( factor.from.x !== factor.to.x ) {
			from = $.effects.setTransition( element, hProps, factor.from.x, from );
			to = $.effects.setTransition( element, hProps, factor.to.x, to );
		}
	}

	// Scale the content
	if ( scale === "content" || scale === "both" ) {

		// Vertical props scaling
		if ( factor.from.y !== factor.to.y ) {
			from = $.effects.setTransition( element, cProps, factor.from.y, from );
			to = $.effects.setTransition( element, cProps, factor.to.y, to );
		}
	}

	// Adjust the position properties based on the provided origin points
	if ( origin ) {
		baseline = $.effects.getBaseline( origin, original );
		from.top = ( original.outerHeight - from.outerHeight ) * baseline.y + pos.top;
		from.left = ( original.outerWidth - from.outerWidth ) * baseline.x + pos.left;
		to.top = ( original.outerHeight - to.outerHeight ) * baseline.y + pos.top;
		to.left = ( original.outerWidth - to.outerWidth ) * baseline.x + pos.left;
	}
	element.css( from );

	// Animate the children if desired
	if ( scale === "content" || scale === "both" ) {

		vProps = vProps.concat( [ "marginTop", "marginBottom" ] ).concat( cProps );
		hProps = hProps.concat( [ "marginLeft", "marginRight" ] );

		// Only animate children with width attributes specified
		// TODO: is this right? should we include anything with css width specified as well
		element.find( "*[width]" ).each( function() {
			var child = $( this ),
				childOriginal = $.effects.scaledDimensions( child ),
				childFrom = {
					height: childOriginal.height * factor.from.y,
					width: childOriginal.width * factor.from.x,
					outerHeight: childOriginal.outerHeight * factor.from.y,
					outerWidth: childOriginal.outerWidth * factor.from.x
				},
				childTo = {
					height: childOriginal.height * factor.to.y,
					width: childOriginal.width * factor.to.x,
					outerHeight: childOriginal.height * factor.to.y,
					outerWidth: childOriginal.width * factor.to.x
				};

			// Vertical props scaling
			if ( factor.from.y !== factor.to.y ) {
				childFrom = $.effects.setTransition( child, vProps, factor.from.y, childFrom );
				childTo = $.effects.setTransition( child, vProps, factor.to.y, childTo );
			}

			// Horizontal props scaling
			if ( factor.from.x !== factor.to.x ) {
				childFrom = $.effects.setTransition( child, hProps, factor.from.x, childFrom );
				childTo = $.effects.setTransition( child, hProps, factor.to.x, childTo );
			}

			if ( restore ) {
				$.effects.saveStyle( child );
			}

			// Animate children
			child.css( childFrom );
			child.animate( childTo, options.duration, options.easing, function() {

				// Restore children
				if ( restore ) {
					$.effects.restoreStyle( child );
				}
			} );
		} );
	}

	// Animate
	element.animate( to, {
		queue: false,
		duration: options.duration,
		easing: options.easing,
		complete: function() {

			var offset = element.offset();

			if ( to.opacity === 0 ) {
				element.css( "opacity", from.opacity );
			}

			if ( !restore ) {
				element
					.css( "position", position === "static" ? "relative" : position )
					.offset( offset );

				// Need to save style here so that automatic style restoration
				// doesn't restore to the original styles from before the animation.
				$.effects.saveStyle( element );
			}

			done();
		}
	} );

} );


/*!
 * jQuery UI Effects Scale 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Scale Effect
//>>group: Effects
//>>description: Grows or shrinks an element and its content.
//>>docs: http://api.jqueryui.com/scale-effect/
//>>demos: http://jqueryui.com/effect/



var effectsEffectScale = $.effects.define( "scale", function( options, done ) {

	// Create element
	var el = $( this ),
		mode = options.mode,
		percent = parseInt( options.percent, 10 ) ||
			( parseInt( options.percent, 10 ) === 0 ? 0 : ( mode !== "effect" ? 0 : 100 ) ),

		newOptions = $.extend( true, {
			from: $.effects.scaledDimensions( el ),
			to: $.effects.scaledDimensions( el, percent, options.direction || "both" ),
			origin: options.origin || [ "middle", "center" ]
		}, options );

	// Fade option to support puff
	if ( options.fade ) {
		newOptions.from.opacity = 1;
		newOptions.to.opacity = 0;
	}

	$.effects.effect.size.call( this, newOptions, done );
} );


/*!
 * jQuery UI Effects Puff 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Puff Effect
//>>group: Effects
//>>description: Creates a puff effect by scaling the element up and hiding it at the same time.
//>>docs: http://api.jqueryui.com/puff-effect/
//>>demos: http://jqueryui.com/effect/



var effectsEffectPuff = $.effects.define( "puff", "hide", function( options, done ) {
	var newOptions = $.extend( true, {}, options, {
		fade: true,
		percent: parseInt( options.percent, 10 ) || 150
	} );

	$.effects.effect.scale.call( this, newOptions, done );
} );


/*!
 * jQuery UI Effects Pulsate 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Pulsate Effect
//>>group: Effects
//>>description: Pulsates an element n times by changing the opacity to zero and back.
//>>docs: http://api.jqueryui.com/pulsate-effect/
//>>demos: http://jqueryui.com/effect/



var effectsEffectPulsate = $.effects.define( "pulsate", "show", function( options, done ) {
	var element = $( this ),
		mode = options.mode,
		show = mode === "show",
		hide = mode === "hide",
		showhide = show || hide,

		// Showing or hiding leaves off the "last" animation
		anims = ( ( options.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ),
		duration = options.duration / anims,
		animateTo = 0,
		i = 1,
		queuelen = element.queue().length;

	if ( show || !element.is( ":visible" ) ) {
		element.css( "opacity", 0 ).show();
		animateTo = 1;
	}

	// Anims - 1 opacity "toggles"
	for ( ; i < anims; i++ ) {
		element.animate( { opacity: animateTo }, duration, options.easing );
		animateTo = 1 - animateTo;
	}

	element.animate( { opacity: animateTo }, duration, options.easing );

	element.queue( done );

	$.effects.unshift( element, queuelen, anims + 1 );
} );


/*!
 * jQuery UI Effects Shake 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Shake Effect
//>>group: Effects
//>>description: Shakes an element horizontally or vertically n times.
//>>docs: http://api.jqueryui.com/shake-effect/
//>>demos: http://jqueryui.com/effect/



var effectsEffectShake = $.effects.define( "shake", function( options, done ) {

	var i = 1,
		element = $( this ),
		direction = options.direction || "left",
		distance = options.distance || 20,
		times = options.times || 3,
		anims = times * 2 + 1,
		speed = Math.round( options.duration / anims ),
		ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
		positiveMotion = ( direction === "up" || direction === "left" ),
		animation = {},
		animation1 = {},
		animation2 = {},

		queuelen = element.queue().length;

	$.effects.createPlaceholder( element );

	// Animation
	animation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance;
	animation1[ ref ] = ( positiveMotion ? "+=" : "-=" ) + distance * 2;
	animation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2;

	// Animate
	element.animate( animation, speed, options.easing );

	// Shakes
	for ( ; i < times; i++ ) {
		element
			.animate( animation1, speed, options.easing )
			.animate( animation2, speed, options.easing );
	}

	element
		.animate( animation1, speed, options.easing )
		.animate( animation, speed / 2, options.easing )
		.queue( done );

	$.effects.unshift( element, queuelen, anims + 1 );
} );


/*!
 * jQuery UI Effects Slide 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Slide Effect
//>>group: Effects
//>>description: Slides an element in and out of the viewport.
//>>docs: http://api.jqueryui.com/slide-effect/
//>>demos: http://jqueryui.com/effect/



var effectsEffectSlide = $.effects.define( "slide", "show", function( options, done ) {
	var startClip, startRef,
		element = $( this ),
		map = {
			up: [ "bottom", "top" ],
			down: [ "top", "bottom" ],
			left: [ "right", "left" ],
			right: [ "left", "right" ]
		},
		mode = options.mode,
		direction = options.direction || "left",
		ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
		positiveMotion = ( direction === "up" || direction === "left" ),
		distance = options.distance ||
			element[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ),
		animation = {};

	$.effects.createPlaceholder( element );

	startClip = element.cssClip();
	startRef = element.position()[ ref ];

	// Define hide animation
	animation[ ref ] = ( positiveMotion ? -1 : 1 ) * distance + startRef;
	animation.clip = element.cssClip();
	animation.clip[ map[ direction ][ 1 ] ] = animation.clip[ map[ direction ][ 0 ] ];

	// Reverse the animation if we're showing
	if ( mode === "show" ) {
		element.cssClip( animation.clip );
		element.css( ref, animation[ ref ] );
		animation.clip = startClip;
		animation[ ref ] = startRef;
	}

	// Actually animate
	element.animate( animation, {
		queue: false,
		duration: options.duration,
		easing: options.easing,
		complete: done
	} );
} );


/*!
 * jQuery UI Effects Transfer 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Transfer Effect
//>>group: Effects
//>>description: Displays a transfer effect from one element to another.
//>>docs: http://api.jqueryui.com/transfer-effect/
//>>demos: http://jqueryui.com/effect/



var effect;
if ( $.uiBackCompat !== false ) {
	effect = $.effects.define( "transfer", function( options, done ) {
		$( this ).transfer( options, done );
	} );
}
var effectsEffectTransfer = effect;


/*!
 * jQuery UI Focusable 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: :focusable Selector
//>>group: Core
//>>description: Selects elements which can be focused.
//>>docs: http://api.jqueryui.com/focusable-selector/



// Selectors
$.ui.focusable = function( element, hasTabindex ) {
	var map, mapName, img, focusableIfVisible, fieldset,
		nodeName = element.nodeName.toLowerCase();

	if ( "area" === nodeName ) {
		map = element.parentNode;
		mapName = map.name;
		if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {
			return false;
		}
		img = $( "img[usemap='#" + mapName + "']" );
		return img.length > 0 && img.is( ":visible" );
	}

	if ( /^(input|select|textarea|button|object)$/.test( nodeName ) ) {
		focusableIfVisible = !element.disabled;

		if ( focusableIfVisible ) {

			// Form controls within a disabled fieldset are disabled.
			// However, controls within the fieldset's legend do not get disabled.
			// Since controls generally aren't placed inside legends, we skip
			// this portion of the check.
			fieldset = $( element ).closest( "fieldset" )[ 0 ];
			if ( fieldset ) {
				focusableIfVisible = !fieldset.disabled;
			}
		}
	} else if ( "a" === nodeName ) {
		focusableIfVisible = element.href || hasTabindex;
	} else {
		focusableIfVisible = hasTabindex;
	}

	return focusableIfVisible && $( element ).is( ":visible" ) && visible( $( element ) );
};

// Support: IE 8 only
// IE 8 doesn't resolve inherit to visible/hidden for computed values
function visible( element ) {
	var visibility = element.css( "visibility" );
	while ( visibility === "inherit" ) {
		element = element.parent();
		visibility = element.css( "visibility" );
	}
	return visibility !== "hidden";
}

$.extend( $.expr[ ":" ], {
	focusable: function( element ) {
		return $.ui.focusable( element, $.attr( element, "tabindex" ) != null );
	}
} );

var focusable = $.ui.focusable;




// Support: IE8 Only
// IE8 does not support the form attribute and when it is supplied. It overwrites the form prop
// with a string, so we need to find the proper form.
var form = $.fn.form = function() {
	return typeof this[ 0 ].form === "string" ? this.closest( "form" ) : $( this[ 0 ].form );
};


/*!
 * jQuery UI Form Reset Mixin 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Form Reset Mixin
//>>group: Core
//>>description: Refresh input widgets when their form is reset
//>>docs: http://api.jqueryui.com/form-reset-mixin/



var formResetMixin = $.ui.formResetMixin = {
	_formResetHandler: function() {
		var form = $( this );

		// Wait for the form reset to actually happen before refreshing
		setTimeout( function() {
			var instances = form.data( "ui-form-reset-instances" );
			$.each( instances, function() {
				this.refresh();
			} );
		} );
	},

	_bindFormResetHandler: function() {
		this.form = this.element.form();
		if ( !this.form.length ) {
			return;
		}

		var instances = this.form.data( "ui-form-reset-instances" ) || [];
		if ( !instances.length ) {

			// We don't use _on() here because we use a single event handler per form
			this.form.on( "reset.ui-form-reset", this._formResetHandler );
		}
		instances.push( this );
		this.form.data( "ui-form-reset-instances", instances );
	},

	_unbindFormResetHandler: function() {
		if ( !this.form.length ) {
			return;
		}

		var instances = this.form.data( "ui-form-reset-instances" );
		instances.splice( $.inArray( this, instances ), 1 );
		if ( instances.length ) {
			this.form.data( "ui-form-reset-instances", instances );
		} else {
			this.form
				.removeData( "ui-form-reset-instances" )
				.off( "reset.ui-form-reset" );
		}
	}
};


/*!
 * jQuery UI Support for jQuery core 1.7.x 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 *
 */

//>>label: jQuery 1.7 Support
//>>group: Core
//>>description: Support version 1.7.x of jQuery core



// Support: jQuery 1.7 only
// Not a great way to check versions, but since we only support 1.7+ and only
// need to detect <1.8, this is a simple check that should suffice. Checking
// for "1.7." would be a bit safer, but the version string is 1.7, not 1.7.0
// and we'll never reach 1.70.0 (if we do, we certainly won't be supporting
// 1.7 anymore). See #11197 for why we're not using feature detection.
if ( $.fn.jquery.substring( 0, 3 ) === "1.7" ) {

	// Setters for .innerWidth(), .innerHeight(), .outerWidth(), .outerHeight()
	// Unlike jQuery Core 1.8+, these only support numeric values to set the
	// dimensions in pixels
	$.each( [ "Width", "Height" ], function( i, name ) {
		var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ],
			type = name.toLowerCase(),
			orig = {
				innerWidth: $.fn.innerWidth,
				innerHeight: $.fn.innerHeight,
				outerWidth: $.fn.outerWidth,
				outerHeight: $.fn.outerHeight
			};

		function reduce( elem, size, border, margin ) {
			$.each( side, function() {
				size -= parseFloat( $.css( elem, "padding" + this ) ) || 0;
				if ( border ) {
					size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0;
				}
				if ( margin ) {
					size -= parseFloat( $.css( elem, "margin" + this ) ) || 0;
				}
			} );
			return size;
		}

		$.fn[ "inner" + name ] = function( size ) {
			if ( size === undefined ) {
				return orig[ "inner" + name ].call( this );
			}

			return this.each( function() {
				$( this ).css( type, reduce( this, size ) + "px" );
			} );
		};

		$.fn[ "outer" + name ] = function( size, margin ) {
			if ( typeof size !== "number" ) {
				return orig[ "outer" + name ].call( this, size );
			}

			return this.each( function() {
				$( this ).css( type, reduce( this, size, true, margin ) + "px" );
			} );
		};
	} );

	$.fn.addBack = function( selector ) {
		return this.add( selector == null ?
			this.prevObject : this.prevObject.filter( selector )
		);
	};
}

;
/*!
 * jQuery UI Keycode 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Keycode
//>>group: Core
//>>description: Provide keycodes as keynames
//>>docs: http://api.jqueryui.com/jQuery.ui.keyCode/


var keycode = $.ui.keyCode = {
	BACKSPACE: 8,
	COMMA: 188,
	DELETE: 46,
	DOWN: 40,
	END: 35,
	ENTER: 13,
	ESCAPE: 27,
	HOME: 36,
	LEFT: 37,
	PAGE_DOWN: 34,
	PAGE_UP: 33,
	PERIOD: 190,
	RIGHT: 39,
	SPACE: 32,
	TAB: 9,
	UP: 38
};




// Internal use only
var escapeSelector = $.ui.escapeSelector = ( function() {
	var selectorEscape = /([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;
	return function( selector ) {
		return selector.replace( selectorEscape, "\\$1" );
	};
} )();


/*!
 * jQuery UI Labels 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: labels
//>>group: Core
//>>description: Find all the labels associated with a given input
//>>docs: http://api.jqueryui.com/labels/



var labels = $.fn.labels = function() {
	var ancestor, selector, id, labels, ancestors;

	// Check control.labels first
	if ( this[ 0 ].labels && this[ 0 ].labels.length ) {
		return this.pushStack( this[ 0 ].labels );
	}

	// Support: IE <= 11, FF <= 37, Android <= 2.3 only
	// Above browsers do not support control.labels. Everything below is to support them
	// as well as document fragments. control.labels does not work on document fragments
	labels = this.eq( 0 ).parents( "label" );

	// Look for the label based on the id
	id = this.attr( "id" );
	if ( id ) {

		// We don't search against the document in case the element
		// is disconnected from the DOM
		ancestor = this.eq( 0 ).parents().last();

		// Get a full set of top level ancestors
		ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() );

		// Create a selector for the label based on the id
		selector = "label[for='" + $.ui.escapeSelector( id ) + "']";

		labels = labels.add( ancestors.find( selector ).addBack( selector ) );

	}

	// Return whatever we have found for labels
	return this.pushStack( labels );
};


/*!
 * jQuery UI Scroll Parent 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: scrollParent
//>>group: Core
//>>description: Get the closest ancestor element that is scrollable.
//>>docs: http://api.jqueryui.com/scrollParent/



var scrollParent = $.fn.scrollParent = function( includeHidden ) {
	var position = this.css( "position" ),
		excludeStaticParent = position === "absolute",
		overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,
		scrollParent = this.parents().filter( function() {
			var parent = $( this );
			if ( excludeStaticParent && parent.css( "position" ) === "static" ) {
				return false;
			}
			return overflowRegex.test( parent.css( "overflow" ) + parent.css( "overflow-y" ) +
				parent.css( "overflow-x" ) );
		} ).eq( 0 );

	return position === "fixed" || !scrollParent.length ?
		$( this[ 0 ].ownerDocument || document ) :
		scrollParent;
};


/*!
 * jQuery UI Tabbable 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: :tabbable Selector
//>>group: Core
//>>description: Selects elements which can be tabbed to.
//>>docs: http://api.jqueryui.com/tabbable-selector/



var tabbable = $.extend( $.expr[ ":" ], {
	tabbable: function( element ) {
		var tabIndex = $.attr( element, "tabindex" ),
			hasTabindex = tabIndex != null;
		return ( !hasTabindex || tabIndex >= 0 ) && $.ui.focusable( element, hasTabindex );
	}
} );


/*!
 * jQuery UI Unique ID 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: uniqueId
//>>group: Core
//>>description: Functions to generate and remove uniqueId's
//>>docs: http://api.jqueryui.com/uniqueId/



var uniqueId = $.fn.extend( {
	uniqueId: ( function() {
		var uuid = 0;

		return function() {
			return this.each( function() {
				if ( !this.id ) {
					this.id = "ui-id-" + ( ++uuid );
				}
			} );
		};
	} )(),

	removeUniqueId: function() {
		return this.each( function() {
			if ( /^ui-id-\d+$/.test( this.id ) ) {
				$( this ).removeAttr( "id" );
			}
		} );
	}
} );


/*!
 * jQuery UI Accordion 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Accordion
//>>group: Widgets
// jscs:disable maximumLineLength
//>>description: Displays collapsible content panels for presenting information in a limited amount of space.
// jscs:enable maximumLineLength
//>>docs: http://api.jqueryui.com/accordion/
//>>demos: http://jqueryui.com/accordion/
//>>css.structure: ../../themes/base/core.css
//>>css.structure: ../../themes/base/accordion.css
//>>css.theme: ../../themes/base/theme.css



var widgetsAccordion = $.widget( "ui.accordion", {
	version: "1.12.1",
	options: {
		active: 0,
		animate: {},
		classes: {
			"ui-accordion-header": "ui-corner-top",
			"ui-accordion-header-collapsed": "ui-corner-all",
			"ui-accordion-content": "ui-corner-bottom"
		},
		collapsible: false,
		event: "click",
		header: "> li > :first-child, > :not(li):even",
		heightStyle: "auto",
		icons: {
			activeHeader: "ui-icon-triangle-1-s",
			header: "ui-icon-triangle-1-e"
		},

		// Callbacks
		activate: null,
		beforeActivate: null
	},

	hideProps: {
		borderTopWidth: "hide",
		borderBottomWidth: "hide",
		paddingTop: "hide",
		paddingBottom: "hide",
		height: "hide"
	},

	showProps: {
		borderTopWidth: "show",
		borderBottomWidth: "show",
		paddingTop: "show",
		paddingBottom: "show",
		height: "show"
	},

	_create: function() {
		var options = this.options;

		this.prevShow = this.prevHide = $();
		this._addClass( "ui-accordion", "ui-widget ui-helper-reset" );
		this.element.attr( "role", "tablist" );

		// Don't allow collapsible: false and active: false / null
		if ( !options.collapsible && ( options.active === false || options.active == null ) ) {
			options.active = 0;
		}

		this._processPanels();

		// handle negative values
		if ( options.active < 0 ) {
			options.active += this.headers.length;
		}
		this._refresh();
	},

	_getCreateEventData: function() {
		return {
			header: this.active,
			panel: !this.active.length ? $() : this.active.next()
		};
	},

	_createIcons: function() {
		var icon, children,
			icons = this.options.icons;

		if ( icons ) {
			icon = $( "<span>" );
			this._addClass( icon, "ui-accordion-header-icon", "ui-icon " + icons.header );
			icon.prependTo( this.headers );
			children = this.active.children( ".ui-accordion-header-icon" );
			this._removeClass( children, icons.header )
				._addClass( children, null, icons.activeHeader )
				._addClass( this.headers, "ui-accordion-icons" );
		}
	},

	_destroyIcons: function() {
		this._removeClass( this.headers, "ui-accordion-icons" );
		this.headers.children( ".ui-accordion-header-icon" ).remove();
	},

	_destroy: function() {
		var contents;

		// Clean up main element
		this.element.removeAttr( "role" );

		// Clean up headers
		this.headers
			.removeAttr( "role aria-expanded aria-selected aria-controls tabIndex" )
			.removeUniqueId();

		this._destroyIcons();

		// Clean up content panels
		contents = this.headers.next()
			.css( "display", "" )
			.removeAttr( "role aria-hidden aria-labelledby" )
			.removeUniqueId();

		if ( this.options.heightStyle !== "content" ) {
			contents.css( "height", "" );
		}
	},

	_setOption: function( key, value ) {
		if ( key === "active" ) {

			// _activate() will handle invalid values and update this.options
			this._activate( value );
			return;
		}

		if ( key === "event" ) {
			if ( this.options.event ) {
				this._off( this.headers, this.options.event );
			}
			this._setupEvents( value );
		}

		this._super( key, value );

		// Setting collapsible: false while collapsed; open first panel
		if ( key === "collapsible" && !value && this.options.active === false ) {
			this._activate( 0 );
		}

		if ( key === "icons" ) {
			this._destroyIcons();
			if ( value ) {
				this._createIcons();
			}
		}
	},

	_setOptionDisabled: function( value ) {
		this._super( value );

		this.element.attr( "aria-disabled", value );

		// Support: IE8 Only
		// #5332 / #6059 - opacity doesn't cascade to positioned elements in IE
		// so we need to add the disabled class to the headers and panels
		this._toggleClass( null, "ui-state-disabled", !!value );
		this._toggleClass( this.headers.add( this.headers.next() ), null, "ui-state-disabled",
			!!value );
	},

	_keydown: function( event ) {
		if ( event.altKey || event.ctrlKey ) {
			return;
		}

		var keyCode = $.ui.keyCode,
			length = this.headers.length,
			currentIndex = this.headers.index( event.target ),
			toFocus = false;

		switch ( event.keyCode ) {
		case keyCode.RIGHT:
		case keyCode.DOWN:
			toFocus = this.headers[ ( currentIndex + 1 ) % length ];
			break;
		case keyCode.LEFT:
		case keyCode.UP:
			toFocus = this.headers[ ( currentIndex - 1 + length ) % length ];
			break;
		case keyCode.SPACE:
		case keyCode.ENTER:
			this._eventHandler( event );
			break;
		case keyCode.HOME:
			toFocus = this.headers[ 0 ];
			break;
		case keyCode.END:
			toFocus = this.headers[ length - 1 ];
			break;
		}

		if ( toFocus ) {
			$( event.target ).attr( "tabIndex", -1 );
			$( toFocus ).attr( "tabIndex", 0 );
			$( toFocus ).trigger( "focus" );
			event.preventDefault();
		}
	},

	_panelKeyDown: function( event ) {
		if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) {
			$( event.currentTarget ).prev().trigger( "focus" );
		}
	},

	refresh: function() {
		var options = this.options;
		this._processPanels();

		// Was collapsed or no panel
		if ( ( options.active === false && options.collapsible === true ) ||
				!this.headers.length ) {
			options.active = false;
			this.active = $();

		// active false only when collapsible is true
		} else if ( options.active === false ) {
			this._activate( 0 );

		// was active, but active panel is gone
		} else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {

			// all remaining panel are disabled
			if ( this.headers.length === this.headers.find( ".ui-state-disabled" ).length ) {
				options.active = false;
				this.active = $();

			// activate previous panel
			} else {
				this._activate( Math.max( 0, options.active - 1 ) );
			}

		// was active, active panel still exists
		} else {

			// make sure active index is correct
			options.active = this.headers.index( this.active );
		}

		this._destroyIcons();

		this._refresh();
	},

	_processPanels: function() {
		var prevHeaders = this.headers,
			prevPanels = this.panels;

		this.headers = this.element.find( this.options.header );
		this._addClass( this.headers, "ui-accordion-header ui-accordion-header-collapsed",
			"ui-state-default" );

		this.panels = this.headers.next().filter( ":not(.ui-accordion-content-active)" ).hide();
		this._addClass( this.panels, "ui-accordion-content", "ui-helper-reset ui-widget-content" );

		// Avoid memory leaks (#10056)
		if ( prevPanels ) {
			this._off( prevHeaders.not( this.headers ) );
			this._off( prevPanels.not( this.panels ) );
		}
	},

	_refresh: function() {
		var maxHeight,
			options = this.options,
			heightStyle = options.heightStyle,
			parent = this.element.parent();

		this.active = this._findActive( options.active );
		this._addClass( this.active, "ui-accordion-header-active", "ui-state-active" )
			._removeClass( this.active, "ui-accordion-header-collapsed" );
		this._addClass( this.active.next(), "ui-accordion-content-active" );
		this.active.next().show();

		this.headers
			.attr( "role", "tab" )
			.each( function() {
				var header = $( this ),
					headerId = header.uniqueId().attr( "id" ),
					panel = header.next(),
					panelId = panel.uniqueId().attr( "id" );
				header.attr( "aria-controls", panelId );
				panel.attr( "aria-labelledby", headerId );
			} )
			.next()
				.attr( "role", "tabpanel" );

		this.headers
			.not( this.active )
				.attr( {
					"aria-selected": "false",
					"aria-expanded": "false",
					tabIndex: -1
				} )
				.next()
					.attr( {
						"aria-hidden": "true"
					} )
					.hide();

		// Make sure at least one header is in the tab order
		if ( !this.active.length ) {
			this.headers.eq( 0 ).attr( "tabIndex", 0 );
		} else {
			this.active.attr( {
				"aria-selected": "true",
				"aria-expanded": "true",
				tabIndex: 0
			} )
				.next()
					.attr( {
						"aria-hidden": "false"
					} );
		}

		this._createIcons();

		this._setupEvents( options.event );

		if ( heightStyle === "fill" ) {
			maxHeight = parent.height();
			this.element.siblings( ":visible" ).each( function() {
				var elem = $( this ),
					position = elem.css( "position" );

				if ( position === "absolute" || position === "fixed" ) {
					return;
				}
				maxHeight -= elem.outerHeight( true );
			} );

			this.headers.each( function() {
				maxHeight -= $( this ).outerHeight( true );
			} );

			this.headers.next()
				.each( function() {
					$( this ).height( Math.max( 0, maxHeight -
						$( this ).innerHeight() + $( this ).height() ) );
				} )
				.css( "overflow", "auto" );
		} else if ( heightStyle === "auto" ) {
			maxHeight = 0;
			this.headers.next()
				.each( function() {
					var isVisible = $( this ).is( ":visible" );
					if ( !isVisible ) {
						$( this ).show();
					}
					maxHeight = Math.max( maxHeight, $( this ).css( "height", "" ).height() );
					if ( !isVisible ) {
						$( this ).hide();
					}
				} )
				.height( maxHeight );
		}
	},

	_activate: function( index ) {
		var active = this._findActive( index )[ 0 ];

		// Trying to activate the already active panel
		if ( active === this.active[ 0 ] ) {
			return;
		}

		// Trying to collapse, simulate a click on the currently active header
		active = active || this.active[ 0 ];

		this._eventHandler( {
			target: active,
			currentTarget: active,
			preventDefault: $.noop
		} );
	},

	_findActive: function( selector ) {
		return typeof selector === "number" ? this.headers.eq( selector ) : $();
	},

	_setupEvents: function( event ) {
		var events = {
			keydown: "_keydown"
		};
		if ( event ) {
			$.each( event.split( " " ), function( index, eventName ) {
				events[ eventName ] = "_eventHandler";
			} );
		}

		this._off( this.headers.add( this.headers.next() ) );
		this._on( this.headers, events );
		this._on( this.headers.next(), { keydown: "_panelKeyDown" } );
		this._hoverable( this.headers );
		this._focusable( this.headers );
	},

	_eventHandler: function( event ) {
		var activeChildren, clickedChildren,
			options = this.options,
			active = this.active,
			clicked = $( event.currentTarget ),
			clickedIsActive = clicked[ 0 ] === active[ 0 ],
			collapsing = clickedIsActive && options.collapsible,
			toShow = collapsing ? $() : clicked.next(),
			toHide = active.next(),
			eventData = {
				oldHeader: active,
				oldPanel: toHide,
				newHeader: collapsing ? $() : clicked,
				newPanel: toShow
			};

		event.preventDefault();

		if (

				// click on active header, but not collapsible
				( clickedIsActive && !options.collapsible ) ||

				// allow canceling activation
				( this._trigger( "beforeActivate", event, eventData ) === false ) ) {
			return;
		}

		options.active = collapsing ? false : this.headers.index( clicked );

		// When the call to ._toggle() comes after the class changes
		// it causes a very odd bug in IE 8 (see #6720)
		this.active = clickedIsActive ? $() : clicked;
		this._toggle( eventData );

		// Switch classes
		// corner classes on the previously active header stay after the animation
		this._removeClass( active, "ui-accordion-header-active", "ui-state-active" );
		if ( options.icons ) {
			activeChildren = active.children( ".ui-accordion-header-icon" );
			this._removeClass( activeChildren, null, options.icons.activeHeader )
				._addClass( activeChildren, null, options.icons.header );
		}

		if ( !clickedIsActive ) {
			this._removeClass( clicked, "ui-accordion-header-collapsed" )
				._addClass( clicked, "ui-accordion-header-active", "ui-state-active" );
			if ( options.icons ) {
				clickedChildren = clicked.children( ".ui-accordion-header-icon" );
				this._removeClass( clickedChildren, null, options.icons.header )
					._addClass( clickedChildren, null, options.icons.activeHeader );
			}

			this._addClass( clicked.next(), "ui-accordion-content-active" );
		}
	},

	_toggle: function( data ) {
		var toShow = data.newPanel,
			toHide = this.prevShow.length ? this.prevShow : data.oldPanel;

		// Handle activating a panel during the animation for another activation
		this.prevShow.add( this.prevHide ).stop( true, true );
		this.prevShow = toShow;
		this.prevHide = toHide;

		if ( this.options.animate ) {
			this._animate( toShow, toHide, data );
		} else {
			toHide.hide();
			toShow.show();
			this._toggleComplete( data );
		}

		toHide.attr( {
			"aria-hidden": "true"
		} );
		toHide.prev().attr( {
			"aria-selected": "false",
			"aria-expanded": "false"
		} );

		// if we're switching panels, remove the old header from the tab order
		// if we're opening from collapsed state, remove the previous header from the tab order
		// if we're collapsing, then keep the collapsing header in the tab order
		if ( toShow.length && toHide.length ) {
			toHide.prev().attr( {
				"tabIndex": -1,
				"aria-expanded": "false"
			} );
		} else if ( toShow.length ) {
			this.headers.filter( function() {
				return parseInt( $( this ).attr( "tabIndex" ), 10 ) === 0;
			} )
				.attr( "tabIndex", -1 );
		}

		toShow
			.attr( "aria-hidden", "false" )
			.prev()
				.attr( {
					"aria-selected": "true",
					"aria-expanded": "true",
					tabIndex: 0
				} );
	},

	_animate: function( toShow, toHide, data ) {
		var total, easing, duration,
			that = this,
			adjust = 0,
			boxSizing = toShow.css( "box-sizing" ),
			down = toShow.length &&
				( !toHide.length || ( toShow.index() < toHide.index() ) ),
			animate = this.options.animate || {},
			options = down && animate.down || animate,
			complete = function() {
				that._toggleComplete( data );
			};

		if ( typeof options === "number" ) {
			duration = options;
		}
		if ( typeof options === "string" ) {
			easing = options;
		}

		// fall back from options to animation in case of partial down settings
		easing = easing || options.easing || animate.easing;
		duration = duration || options.duration || animate.duration;

		if ( !toHide.length ) {
			return toShow.animate( this.showProps, duration, easing, complete );
		}
		if ( !toShow.length ) {
			return toHide.animate( this.hideProps, duration, easing, complete );
		}

		total = toShow.show().outerHeight();
		toHide.animate( this.hideProps, {
			duration: duration,
			easing: easing,
			step: function( now, fx ) {
				fx.now = Math.round( now );
			}
		} );
		toShow
			.hide()
			.animate( this.showProps, {
				duration: duration,
				easing: easing,
				complete: complete,
				step: function( now, fx ) {
					fx.now = Math.round( now );
					if ( fx.prop !== "height" ) {
						if ( boxSizing === "content-box" ) {
							adjust += fx.now;
						}
					} else if ( that.options.heightStyle !== "content" ) {
						fx.now = Math.round( total - toHide.outerHeight() - adjust );
						adjust = 0;
					}
				}
			} );
	},

	_toggleComplete: function( data ) {
		var toHide = data.oldPanel,
			prev = toHide.prev();

		this._removeClass( toHide, "ui-accordion-content-active" );
		this._removeClass( prev, "ui-accordion-header-active" )
			._addClass( prev, "ui-accordion-header-collapsed" );

		// Work around for rendering bug in IE (#5421)
		if ( toHide.length ) {
			toHide.parent()[ 0 ].className = toHide.parent()[ 0 ].className;
		}
		this._trigger( "activate", null, data );
	}
} );



var safeActiveElement = $.ui.safeActiveElement = function( document ) {
	var activeElement;

	// Support: IE 9 only
	// IE9 throws an "Unspecified error" accessing document.activeElement from an <iframe>
	try {
		activeElement = document.activeElement;
	} catch ( error ) {
		activeElement = document.body;
	}

	// Support: IE 9 - 11 only
	// IE may return null instead of an element
	// Interestingly, this only seems to occur when NOT in an iframe
	if ( !activeElement ) {
		activeElement = document.body;
	}

	// Support: IE 11 only
	// IE11 returns a seemingly empty object in some cases when accessing
	// document.activeElement from an <iframe>
	if ( !activeElement.nodeName ) {
		activeElement = document.body;
	}

	return activeElement;
};


/*!
 * jQuery UI Menu 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Menu
//>>group: Widgets
//>>description: Creates nestable menus.
//>>docs: http://api.jqueryui.com/menu/
//>>demos: http://jqueryui.com/menu/
//>>css.structure: ../../themes/base/core.css
//>>css.structure: ../../themes/base/menu.css
//>>css.theme: ../../themes/base/theme.css



var widgetsMenu = $.widget( "ui.menu", {
	version: "1.12.1",
	defaultElement: "<ul>",
	delay: 300,
	options: {
		icons: {
			submenu: "ui-icon-caret-1-e"
		},
		items: "> *",
		menus: "ul",
		position: {
			my: "left top",
			at: "right top"
		},
		role: "menu",

		// Callbacks
		blur: null,
		focus: null,
		select: null
	},

	_create: function() {
		this.activeMenu = this.element;

		// Flag used to prevent firing of the click handler
		// as the event bubbles up through nested menus
		this.mouseHandled = false;
		this.element
			.uniqueId()
			.attr( {
				role: this.options.role,
				tabIndex: 0
			} );

		this._addClass( "ui-menu", "ui-widget ui-widget-content" );
		this._on( {

			// Prevent focus from sticking to links inside menu after clicking
			// them (focus should always stay on UL during navigation).
			"mousedown .ui-menu-item": function( event ) {
				event.preventDefault();
			},
			"click .ui-menu-item": function( event ) {
				var target = $( event.target );
				var active = $( $.ui.safeActiveElement( this.document[ 0 ] ) );
				if ( !this.mouseHandled && target.not( ".ui-state-disabled" ).length ) {
					this.select( event );

					// Only set the mouseHandled flag if the event will bubble, see #9469.
					if ( !event.isPropagationStopped() ) {
						this.mouseHandled = true;
					}

					// Open submenu on click
					if ( target.has( ".ui-menu" ).length ) {
						this.expand( event );
					} else if ( !this.element.is( ":focus" ) &&
							active.closest( ".ui-menu" ).length ) {

						// Redirect focus to the menu
						this.element.trigger( "focus", [ true ] );

						// If the active item is on the top level, let it stay active.
						// Otherwise, blur the active item since it is no longer visible.
						if ( this.active && this.active.parents( ".ui-menu" ).length === 1 ) {
							clearTimeout( this.timer );
						}
					}
				}
			},
			"mouseenter .ui-menu-item": function( event ) {

				// Ignore mouse events while typeahead is active, see #10458.
				// Prevents focusing the wrong item when typeahead causes a scroll while the mouse
				// is over an item in the menu
				if ( this.previousFilter ) {
					return;
				}

				var actualTarget = $( event.target ).closest( ".ui-menu-item" ),
					target = $( event.currentTarget );

				// Ignore bubbled events on parent items, see #11641
				if ( actualTarget[ 0 ] !== target[ 0 ] ) {
					return;
				}

				// Remove ui-state-active class from siblings of the newly focused menu item
				// to avoid a jump caused by adjacent elements both having a class with a border
				this._removeClass( target.siblings().children( ".ui-state-active" ),
					null, "ui-state-active" );
				this.focus( event, target );
			},
			mouseleave: "collapseAll",
			"mouseleave .ui-menu": "collapseAll",
			focus: function( event, keepActiveItem ) {

				// If there's already an active item, keep it active
				// If not, activate the first item
				var item = this.active || this.element.find( this.options.items ).eq( 0 );

				if ( !keepActiveItem ) {
					this.focus( event, item );
				}
			},
			blur: function( event ) {
				this._delay( function() {
					var notContained = !$.contains(
						this.element[ 0 ],
						$.ui.safeActiveElement( this.document[ 0 ] )
					);
					if ( notContained ) {
						this.collapseAll( event );
					}
				} );
			},
			keydown: "_keydown"
		} );

		this.refresh();

		// Clicks outside of a menu collapse any open menus
		this._on( this.document, {
			click: function( event ) {
				if ( this._closeOnDocumentClick( event ) ) {
					this.collapseAll( event );
				}

				// Reset the mouseHandled flag
				this.mouseHandled = false;
			}
		} );
	},

	_destroy: function() {
		var items = this.element.find( ".ui-menu-item" )
				.removeAttr( "role aria-disabled" ),
			submenus = items.children( ".ui-menu-item-wrapper" )
				.removeUniqueId()
				.removeAttr( "tabIndex role aria-haspopup" );

		// Destroy (sub)menus
		this.element
			.removeAttr( "aria-activedescendant" )
			.find( ".ui-menu" ).addBack()
				.removeAttr( "role aria-labelledby aria-expanded aria-hidden aria-disabled " +
					"tabIndex" )
				.removeUniqueId()
				.show();

		submenus.children().each( function() {
			var elem = $( this );
			if ( elem.data( "ui-menu-submenu-caret" ) ) {
				elem.remove();
			}
		} );
	},

	_keydown: function( event ) {
		var match, prev, character, skip,
			preventDefault = true;

		switch ( event.keyCode ) {
		case $.ui.keyCode.PAGE_UP:
			this.previousPage( event );
			break;
		case $.ui.keyCode.PAGE_DOWN:
			this.nextPage( event );
			break;
		case $.ui.keyCode.HOME:
			this._move( "first", "first", event );
			break;
		case $.ui.keyCode.END:
			this._move( "last", "last", event );
			break;
		case $.ui.keyCode.UP:
			this.previous( event );
			break;
		case $.ui.keyCode.DOWN:
			this.next( event );
			break;
		case $.ui.keyCode.LEFT:
			this.collapse( event );
			break;
		case $.ui.keyCode.RIGHT:
			if ( this.active && !this.active.is( ".ui-state-disabled" ) ) {
				this.expand( event );
			}
			break;
		case $.ui.keyCode.ENTER:
		case $.ui.keyCode.SPACE:
			this._activate( event );
			break;
		case $.ui.keyCode.ESCAPE:
			this.collapse( event );
			break;
		default:
			preventDefault = false;
			prev = this.previousFilter || "";
			skip = false;

			// Support number pad values
			character = event.keyCode >= 96 && event.keyCode <= 105 ?
				( event.keyCode - 96 ).toString() : String.fromCharCode( event.keyCode );

			clearTimeout( this.filterTimer );

			if ( character === prev ) {
				skip = true;
			} else {
				character = prev + character;
			}

			match = this._filterMenuItems( character );
			match = skip && match.index( this.active.next() ) !== -1 ?
				this.active.nextAll( ".ui-menu-item" ) :
				match;

			// If no matches on the current filter, reset to the last character pressed
			// to move down the menu to the first item that starts with that character
			if ( !match.length ) {
				character = String.fromCharCode( event.keyCode );
				match = this._filterMenuItems( character );
			}

			if ( match.length ) {
				this.focus( event, match );
				this.previousFilter = character;
				this.filterTimer = this._delay( function() {
					delete this.previousFilter;
				}, 1000 );
			} else {
				delete this.previousFilter;
			}
		}

		if ( preventDefault ) {
			event.preventDefault();
		}
	},

	_activate: function( event ) {
		if ( this.active && !this.active.is( ".ui-state-disabled" ) ) {
			if ( this.active.children( "[aria-haspopup='true']" ).length ) {
				this.expand( event );
			} else {
				this.select( event );
			}
		}
	},

	refresh: function() {
		var menus, items, newSubmenus, newItems, newWrappers,
			that = this,
			icon = this.options.icons.submenu,
			submenus = this.element.find( this.options.menus );

		this._toggleClass( "ui-menu-icons", null, !!this.element.find( ".ui-icon" ).length );

		// Initialize nested menus
		newSubmenus = submenus.filter( ":not(.ui-menu)" )
			.hide()
			.attr( {
				role: this.options.role,
				"aria-hidden": "true",
				"aria-expanded": "false"
			} )
			.each( function() {
				var menu = $( this ),
					item = menu.prev(),
					submenuCaret = $( "<span>" ).data( "ui-menu-submenu-caret", true );

				that._addClass( submenuCaret, "ui-menu-icon", "ui-icon " + icon );
				item
					.attr( "aria-haspopup", "true" )
					.prepend( submenuCaret );
				menu.attr( "aria-labelledby", item.attr( "id" ) );
			} );

		this._addClass( newSubmenus, "ui-menu", "ui-widget ui-widget-content ui-front" );

		menus = submenus.add( this.element );
		items = menus.find( this.options.items );

		// Initialize menu-items containing spaces and/or dashes only as dividers
		items.not( ".ui-menu-item" ).each( function() {
			var item = $( this );
			if ( that._isDivider( item ) ) {
				that._addClass( item, "ui-menu-divider", "ui-widget-content" );
			}
		} );

		// Don't refresh list items that are already adapted
		newItems = items.not( ".ui-menu-item, .ui-menu-divider" );
		newWrappers = newItems.children()
			.not( ".ui-menu" )
				.uniqueId()
				.attr( {
					tabIndex: -1,
					role: this._itemRole()
				} );
		this._addClass( newItems, "ui-menu-item" )
			._addClass( newWrappers, "ui-menu-item-wrapper" );

		// Add aria-disabled attribute to any disabled menu item
		items.filter( ".ui-state-disabled" ).attr( "aria-disabled", "true" );

		// If the active item has been removed, blur the menu
		if ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {
			this.blur();
		}
	},

	_itemRole: function() {
		return {
			menu: "menuitem",
			listbox: "option"
		}[ this.options.role ];
	},

	_setOption: function( key, value ) {
		if ( key === "icons" ) {
			var icons = this.element.find( ".ui-menu-icon" );
			this._removeClass( icons, null, this.options.icons.submenu )
				._addClass( icons, null, value.submenu );
		}
		this._super( key, value );
	},

	_setOptionDisabled: function( value ) {
		this._super( value );

		this.element.attr( "aria-disabled", String( value ) );
		this._toggleClass( null, "ui-state-disabled", !!value );
	},

	focus: function( event, item ) {
		var nested, focused, activeParent;
		this.blur( event, event && event.type === "focus" );

		this._scrollIntoView( item );

		this.active = item.first();

		focused = this.active.children( ".ui-menu-item-wrapper" );
		this._addClass( focused, null, "ui-state-active" );

		// Only update aria-activedescendant if there's a role
		// otherwise we assume focus is managed elsewhere
		if ( this.options.role ) {
			this.element.attr( "aria-activedescendant", focused.attr( "id" ) );
		}

		// Highlight active parent menu item, if any
		activeParent = this.active
			.parent()
				.closest( ".ui-menu-item" )
					.children( ".ui-menu-item-wrapper" );
		this._addClass( activeParent, null, "ui-state-active" );

		if ( event && event.type === "keydown" ) {
			this._close();
		} else {
			this.timer = this._delay( function() {
				this._close();
			}, this.delay );
		}

		nested = item.children( ".ui-menu" );
		if ( nested.length && event && ( /^mouse/.test( event.type ) ) ) {
			this._startOpening( nested );
		}
		this.activeMenu = item.parent();

		this._trigger( "focus", event, { item: item } );
	},

	_scrollIntoView: function( item ) {
		var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;
		if ( this._hasScroll() ) {
			borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0;
			paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0;
			offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;
			scroll = this.activeMenu.scrollTop();
			elementHeight = this.activeMenu.height();
			itemHeight = item.outerHeight();

			if ( offset < 0 ) {
				this.activeMenu.scrollTop( scroll + offset );
			} else if ( offset + itemHeight > elementHeight ) {
				this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );
			}
		}
	},

	blur: function( event, fromFocus ) {
		if ( !fromFocus ) {
			clearTimeout( this.timer );
		}

		if ( !this.active ) {
			return;
		}

		this._removeClass( this.active.children( ".ui-menu-item-wrapper" ),
			null, "ui-state-active" );

		this._trigger( "blur", event, { item: this.active } );
		this.active = null;
	},

	_startOpening: function( submenu ) {
		clearTimeout( this.timer );

		// Don't open if already open fixes a Firefox bug that caused a .5 pixel
		// shift in the submenu position when mousing over the caret icon
		if ( submenu.attr( "aria-hidden" ) !== "true" ) {
			return;
		}

		this.timer = this._delay( function() {
			this._close();
			this._open( submenu );
		}, this.delay );
	},

	_open: function( submenu ) {
		var position = $.extend( {
			of: this.active
		}, this.options.position );

		clearTimeout( this.timer );
		this.element.find( ".ui-menu" ).not( submenu.parents( ".ui-menu" ) )
			.hide()
			.attr( "aria-hidden", "true" );

		submenu
			.show()
			.removeAttr( "aria-hidden" )
			.attr( "aria-expanded", "true" )
			.position( position );
	},

	collapseAll: function( event, all ) {
		clearTimeout( this.timer );
		this.timer = this._delay( function() {

			// If we were passed an event, look for the submenu that contains the event
			var currentMenu = all ? this.element :
				$( event && event.target ).closest( this.element.find( ".ui-menu" ) );

			// If we found no valid submenu ancestor, use the main menu to close all
			// sub menus anyway
			if ( !currentMenu.length ) {
				currentMenu = this.element;
			}

			this._close( currentMenu );

			this.blur( event );

			// Work around active item staying active after menu is blurred
			this._removeClass( currentMenu.find( ".ui-state-active" ), null, "ui-state-active" );

			this.activeMenu = currentMenu;
		}, this.delay );
	},

	// With no arguments, closes the currently active menu - if nothing is active
	// it closes all menus.  If passed an argument, it will search for menus BELOW
	_close: function( startMenu ) {
		if ( !startMenu ) {
			startMenu = this.active ? this.active.parent() : this.element;
		}

		startMenu.find( ".ui-menu" )
			.hide()
			.attr( "aria-hidden", "true" )
			.attr( "aria-expanded", "false" );
	},

	_closeOnDocumentClick: function( event ) {
		return !$( event.target ).closest( ".ui-menu" ).length;
	},

	_isDivider: function( item ) {

		// Match hyphen, em dash, en dash
		return !/[^\-\u2014\u2013\s]/.test( item.text() );
	},

	collapse: function( event ) {
		var newItem = this.active &&
			this.active.parent().closest( ".ui-menu-item", this.element );
		if ( newItem && newItem.length ) {
			this._close();
			this.focus( event, newItem );
		}
	},

	expand: function( event ) {
		var newItem = this.active &&
			this.active
				.children( ".ui-menu " )
					.find( this.options.items )
						.first();

		if ( newItem && newItem.length ) {
			this._open( newItem.parent() );

			// Delay so Firefox will not hide activedescendant change in expanding submenu from AT
			this._delay( function() {
				this.focus( event, newItem );
			} );
		}
	},

	next: function( event ) {
		this._move( "next", "first", event );
	},

	previous: function( event ) {
		this._move( "prev", "last", event );
	},

	isFirstItem: function() {
		return this.active && !this.active.prevAll( ".ui-menu-item" ).length;
	},

	isLastItem: function() {
		return this.active && !this.active.nextAll( ".ui-menu-item" ).length;
	},

	_move: function( direction, filter, event ) {
		var next;
		if ( this.active ) {
			if ( direction === "first" || direction === "last" ) {
				next = this.active
					[ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" )
					.eq( -1 );
			} else {
				next = this.active
					[ direction + "All" ]( ".ui-menu-item" )
					.eq( 0 );
			}
		}
		if ( !next || !next.length || !this.active ) {
			next = this.activeMenu.find( this.options.items )[ filter ]();
		}

		this.focus( event, next );
	},

	nextPage: function( event ) {
		var item, base, height;

		if ( !this.active ) {
			this.next( event );
			return;
		}
		if ( this.isLastItem() ) {
			return;
		}
		if ( this._hasScroll() ) {
			base = this.active.offset().top;
			height = this.element.height();
			this.active.nextAll( ".ui-menu-item" ).each( function() {
				item = $( this );
				return item.offset().top - base - height < 0;
			} );

			this.focus( event, item );
		} else {
			this.focus( event, this.activeMenu.find( this.options.items )
				[ !this.active ? "first" : "last" ]() );
		}
	},

	previousPage: function( event ) {
		var item, base, height;
		if ( !this.active ) {
			this.next( event );
			return;
		}
		if ( this.isFirstItem() ) {
			return;
		}
		if ( this._hasScroll() ) {
			base = this.active.offset().top;
			height = this.element.height();
			this.active.prevAll( ".ui-menu-item" ).each( function() {
				item = $( this );
				return item.offset().top - base + height > 0;
			} );

			this.focus( event, item );
		} else {
			this.focus( event, this.activeMenu.find( this.options.items ).first() );
		}
	},

	_hasScroll: function() {
		return this.element.outerHeight() < this.element.prop( "scrollHeight" );
	},

	select: function( event ) {

		// TODO: It should never be possible to not have an active item at this
		// point, but the tests don't trigger mouseenter before click.
		this.active = this.active || $( event.target ).closest( ".ui-menu-item" );
		var ui = { item: this.active };
		if ( !this.active.has( ".ui-menu" ).length ) {
			this.collapseAll( event, true );
		}
		this._trigger( "select", event, ui );
	},

	_filterMenuItems: function( character ) {
		var escapedCharacter = character.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" ),
			regex = new RegExp( "^" + escapedCharacter, "i" );

		return this.activeMenu
			.find( this.options.items )

				// Only match on items, not dividers or other content (#10571)
				.filter( ".ui-menu-item" )
					.filter( function() {
						return regex.test(
							$.trim( $( this ).children( ".ui-menu-item-wrapper" ).text() ) );
					} );
	}
} );


/*!
 * jQuery UI Autocomplete 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Autocomplete
//>>group: Widgets
//>>description: Lists suggested words as the user is typing.
//>>docs: http://api.jqueryui.com/autocomplete/
//>>demos: http://jqueryui.com/autocomplete/
//>>css.structure: ../../themes/base/core.css
//>>css.structure: ../../themes/base/autocomplete.css
//>>css.theme: ../../themes/base/theme.css



$.widget( "ui.autocomplete", {
	version: "1.12.1",
	defaultElement: "<input>",
	options: {
		appendTo: null,
		autoFocus: false,
		delay: 300,
		minLength: 1,
		position: {
			my: "left top",
			at: "left bottom",
			collision: "none"
		},
		source: null,

		// Callbacks
		change: null,
		close: null,
		focus: null,
		open: null,
		response: null,
		search: null,
		select: null
	},

	requestIndex: 0,
	pending: 0,

	_create: function() {

		// Some browsers only repeat keydown events, not keypress events,
		// so we use the suppressKeyPress flag to determine if we've already
		// handled the keydown event. #7269
		// Unfortunately the code for & in keypress is the same as the up arrow,
		// so we use the suppressKeyPressRepeat flag to avoid handling keypress
		// events when we know the keydown event was used to modify the
		// search term. #7799
		var suppressKeyPress, suppressKeyPressRepeat, suppressInput,
			nodeName = this.element[ 0 ].nodeName.toLowerCase(),
			isTextarea = nodeName === "textarea",
			isInput = nodeName === "input";

		// Textareas are always multi-line
		// Inputs are always single-line, even if inside a contentEditable element
		// IE also treats inputs as contentEditable
		// All other element types are determined by whether or not they're contentEditable
		this.isMultiLine = isTextarea || !isInput && this._isContentEditable( this.element );

		this.valueMethod = this.element[ isTextarea || isInput ? "val" : "text" ];
		this.isNewMenu = true;

		this._addClass( "ui-autocomplete-input" );
		this.element.attr( "autocomplete", "off" );

		this._on( this.element, {
			keydown: function( event ) {
				if ( this.element.prop( "readOnly" ) ) {
					suppressKeyPress = true;
					suppressInput = true;
					suppressKeyPressRepeat = true;
					return;
				}

				suppressKeyPress = false;
				suppressInput = false;
				suppressKeyPressRepeat = false;
				var keyCode = $.ui.keyCode;
				switch ( event.keyCode ) {
				case keyCode.PAGE_UP:
					suppressKeyPress = true;
					this._move( "previousPage", event );
					break;
				case keyCode.PAGE_DOWN:
					suppressKeyPress = true;
					this._move( "nextPage", event );
					break;
				case keyCode.UP:
					suppressKeyPress = true;
					this._keyEvent( "previous", event );
					break;
				case keyCode.DOWN:
					suppressKeyPress = true;
					this._keyEvent( "next", event );
					break;
				case keyCode.ENTER:

					// when menu is open and has focus
					if ( this.menu.active ) {

						// #6055 - Opera still allows the keypress to occur
						// which causes forms to submit
						suppressKeyPress = true;
						event.preventDefault();
						this.menu.select( event );
					}
					break;
				case keyCode.TAB:
					if ( this.menu.active ) {
						this.menu.select( event );
					}
					break;
				case keyCode.ESCAPE:
					if ( this.menu.element.is( ":visible" ) ) {
						if ( !this.isMultiLine ) {
							this._value( this.term );
						}
						this.close( event );

						// Different browsers have different default behavior for escape
						// Single press can mean undo or clear
						// Double press in IE means clear the whole form
						event.preventDefault();
					}
					break;
				default:
					suppressKeyPressRepeat = true;

					// search timeout should be triggered before the input value is changed
					this._searchTimeout( event );
					break;
				}
			},
			keypress: function( event ) {
				if ( suppressKeyPress ) {
					suppressKeyPress = false;
					if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) {
						event.preventDefault();
					}
					return;
				}
				if ( suppressKeyPressRepeat ) {
					return;
				}

				// Replicate some key handlers to allow them to repeat in Firefox and Opera
				var keyCode = $.ui.keyCode;
				switch ( event.keyCode ) {
				case keyCode.PAGE_UP:
					this._move( "previousPage", event );
					break;
				case keyCode.PAGE_DOWN:
					this._move( "nextPage", event );
					break;
				case keyCode.UP:
					this._keyEvent( "previous", event );
					break;
				case keyCode.DOWN:
					this._keyEvent( "next", event );
					break;
				}
			},
			input: function( event ) {
				if ( suppressInput ) {
					suppressInput = false;
					event.preventDefault();
					return;
				}
				this._searchTimeout( event );
			},
			focus: function() {
				this.selectedItem = null;
				this.previous = this._value();
			},
			blur: function( event ) {
				if ( this.cancelBlur ) {
					delete this.cancelBlur;
					return;
				}

				clearTimeout( this.searching );
				this.close( event );
				this._change( event );
			}
		} );

		this._initSource();
		this.menu = $( "<ul>" )
			.appendTo( this._appendTo() )
			.menu( {

				// disable ARIA support, the live region takes care of that
				role: null
			} )
			.hide()
			.menu( "instance" );

		this._addClass( this.menu.element, "ui-autocomplete", "ui-front" );
		this._on( this.menu.element, {
			mousedown: function( event ) {

				// prevent moving focus out of the text field
				event.preventDefault();

				// IE doesn't prevent moving focus even with event.preventDefault()
				// so we set a flag to know when we should ignore the blur event
				this.cancelBlur = true;
				this._delay( function() {
					delete this.cancelBlur;

					// Support: IE 8 only
					// Right clicking a menu item or selecting text from the menu items will
					// result in focus moving out of the input. However, we've already received
					// and ignored the blur event because of the cancelBlur flag set above. So
					// we restore focus to ensure that the menu closes properly based on the user's
					// next actions.
					if ( this.element[ 0 ] !== $.ui.safeActiveElement( this.document[ 0 ] ) ) {
						this.element.trigger( "focus" );
					}
				} );
			},
			menufocus: function( event, ui ) {
				var label, item;

				// support: Firefox
				// Prevent accidental activation of menu items in Firefox (#7024 #9118)
				if ( this.isNewMenu ) {
					this.isNewMenu = false;
					if ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) {
						this.menu.blur();

						this.document.one( "mousemove", function() {
							$( event.target ).trigger( event.originalEvent );
						} );

						return;
					}
				}

				item = ui.item.data( "ui-autocomplete-item" );
				if ( false !== this._trigger( "focus", event, { item: item } ) ) {

					// use value to match what will end up in the input, if it was a key event
					if ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) {
						this._value( item.value );
					}
				}

				// Announce the value in the liveRegion
				label = ui.item.attr( "aria-label" ) || item.value;
				if ( label && $.trim( label ).length ) {
					this.liveRegion.children().hide();
					$( "<div>" ).text( label ).appendTo( this.liveRegion );
				}
			},
			menuselect: function( event, ui ) {
				var item = ui.item.data( "ui-autocomplete-item" ),
					previous = this.previous;

				// Only trigger when focus was lost (click on menu)
				if ( this.element[ 0 ] !== $.ui.safeActiveElement( this.document[ 0 ] ) ) {
					this.element.trigger( "focus" );
					this.previous = previous;

					// #6109 - IE triggers two focus events and the second
					// is asynchronous, so we need to reset the previous
					// term synchronously and asynchronously :-(
					this._delay( function() {
						this.previous = previous;
						this.selectedItem = item;
					} );
				}

				if ( false !== this._trigger( "select", event, { item: item } ) ) {
					this._value( item.value );
				}

				// reset the term after the select event
				// this allows custom select handling to work properly
				this.term = this._value();

				this.close( event );
				this.selectedItem = item;
			}
		} );

		this.liveRegion = $( "<div>", {
			role: "status",
			"aria-live": "assertive",
			"aria-relevant": "additions"
		} )
			.appendTo( this.document[ 0 ].body );

		this._addClass( this.liveRegion, null, "ui-helper-hidden-accessible" );

		// Turning off autocomplete prevents the browser from remembering the
		// value when navigating through history, so we re-enable autocomplete
		// if the page is unloaded before the widget is destroyed. #7790
		this._on( this.window, {
			beforeunload: function() {
				this.element.removeAttr( "autocomplete" );
			}
		} );
	},

	_destroy: function() {
		clearTimeout( this.searching );
		this.element.removeAttr( "autocomplete" );
		this.menu.element.remove();
		this.liveRegion.remove();
	},

	_setOption: function( key, value ) {
		this._super( key, value );
		if ( key === "source" ) {
			this._initSource();
		}
		if ( key === "appendTo" ) {
			this.menu.element.appendTo( this._appendTo() );
		}
		if ( key === "disabled" && value && this.xhr ) {
			this.xhr.abort();
		}
	},

	_isEventTargetInWidget: function( event ) {
		var menuElement = this.menu.element[ 0 ];

		return event.target === this.element[ 0 ] ||
			event.target === menuElement ||
			$.contains( menuElement, event.target );
	},

	_closeOnClickOutside: function( event ) {
		if ( !this._isEventTargetInWidget( event ) ) {
			this.close();
		}
	},

	_appendTo: function() {
		var element = this.options.appendTo;

		if ( element ) {
			element = element.jquery || element.nodeType ?
				$( element ) :
				this.document.find( element ).eq( 0 );
		}

		if ( !element || !element[ 0 ] ) {
			element = this.element.closest( ".ui-front, dialog" );
		}

		if ( !element.length ) {
			element = this.document[ 0 ].body;
		}

		return element;
	},

	_initSource: function() {
		var array, url,
			that = this;
		if ( $.isArray( this.options.source ) ) {
			array = this.options.source;
			this.source = function( request, response ) {
				response( $.ui.autocomplete.filter( array, request.term ) );
			};
		} else if ( typeof this.options.source === "string" ) {
			url = this.options.source;
			this.source = function( request, response ) {
				if ( that.xhr ) {
					that.xhr.abort();
				}
				that.xhr = $.ajax( {
					url: url,
					data: request,
					dataType: "json",
					success: function( data ) {
						response( data );
					},
					error: function() {
						response( [] );
					}
				} );
			};
		} else {
			this.source = this.options.source;
		}
	},

	_searchTimeout: function( event ) {
		clearTimeout( this.searching );
		this.searching = this._delay( function() {

			// Search if the value has changed, or if the user retypes the same value (see #7434)
			var equalValues = this.term === this._value(),
				menuVisible = this.menu.element.is( ":visible" ),
				modifierKey = event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;

			if ( !equalValues || ( equalValues && !menuVisible && !modifierKey ) ) {
				this.selectedItem = null;
				this.search( null, event );
			}
		}, this.options.delay );
	},

	search: function( value, event ) {
		value = value != null ? value : this._value();

		// Always save the actual value, not the one passed as an argument
		this.term = this._value();

		if ( value.length < this.options.minLength ) {
			return this.close( event );
		}

		if ( this._trigger( "search", event ) === false ) {
			return;
		}

		return this._search( value );
	},

	_search: function( value ) {
		this.pending++;
		this._addClass( "ui-autocomplete-loading" );
		this.cancelSearch = false;

		this.source( { term: value }, this._response() );
	},

	_response: function() {
		var index = ++this.requestIndex;

		return $.proxy( function( content ) {
			if ( index === this.requestIndex ) {
				this.__response( content );
			}

			this.pending--;
			if ( !this.pending ) {
				this._removeClass( "ui-autocomplete-loading" );
			}
		}, this );
	},

	__response: function( content ) {
		if ( content ) {
			content = this._normalize( content );
		}
		this._trigger( "response", null, { content: content } );
		if ( !this.options.disabled && content && content.length && !this.cancelSearch ) {
			this._suggest( content );
			this._trigger( "open" );
		} else {

			// use ._close() instead of .close() so we don't cancel future searches
			this._close();
		}
	},

	close: function( event ) {
		this.cancelSearch = true;
		this._close( event );
	},

	_close: function( event ) {

		// Remove the handler that closes the menu on outside clicks
		this._off( this.document, "mousedown" );

		if ( this.menu.element.is( ":visible" ) ) {
			this.menu.element.hide();
			this.menu.blur();
			this.isNewMenu = true;
			this._trigger( "close", event );
		}
	},

	_change: function( event ) {
		if ( this.previous !== this._value() ) {
			this._trigger( "change", event, { item: this.selectedItem } );
		}
	},

	_normalize: function( items ) {

		// assume all items have the right format when the first item is complete
		if ( items.length && items[ 0 ].label && items[ 0 ].value ) {
			return items;
		}
		return $.map( items, function( item ) {
			if ( typeof item === "string" ) {
				return {
					label: item,
					value: item
				};
			}
			return $.extend( {}, item, {
				label: item.label || item.value,
				value: item.value || item.label
			} );
		} );
	},

	_suggest: function( items ) {
		var ul = this.menu.element.empty();
		this._renderMenu( ul, items );
		this.isNewMenu = true;
		this.menu.refresh();

		// Size and position menu
		ul.show();
		this._resizeMenu();
		ul.position( $.extend( {
			of: this.element
		}, this.options.position ) );

		if ( this.options.autoFocus ) {
			this.menu.next();
		}

		// Listen for interactions outside of the widget (#6642)
		this._on( this.document, {
			mousedown: "_closeOnClickOutside"
		} );
	},

	_resizeMenu: function() {
		var ul = this.menu.element;
		ul.outerWidth( Math.max(

			// Firefox wraps long text (possibly a rounding bug)
			// so we add 1px to avoid the wrapping (#7513)
			ul.width( "" ).outerWidth() + 1,
			this.element.outerWidth()
		) );
	},

	_renderMenu: function( ul, items ) {
		var that = this;
		$.each( items, function( index, item ) {
			that._renderItemData( ul, item );
		} );
	},

	_renderItemData: function( ul, item ) {
		return this._renderItem( ul, item ).data( "ui-autocomplete-item", item );
	},

	_renderItem: function( ul, item ) {
		return $( "<li>" )
			.append( $( "<div>" ).text( item.label ) )
			.appendTo( ul );
	},

	_move: function( direction, event ) {
		if ( !this.menu.element.is( ":visible" ) ) {
			this.search( null, event );
			return;
		}
		if ( this.menu.isFirstItem() && /^previous/.test( direction ) ||
				this.menu.isLastItem() && /^next/.test( direction ) ) {

			if ( !this.isMultiLine ) {
				this._value( this.term );
			}

			this.menu.blur();
			return;
		}
		this.menu[ direction ]( event );
	},

	widget: function() {
		return this.menu.element;
	},

	_value: function() {
		return this.valueMethod.apply( this.element, arguments );
	},

	_keyEvent: function( keyEvent, event ) {
		if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) {
			this._move( keyEvent, event );

			// Prevents moving cursor to beginning/end of the text field in some browsers
			event.preventDefault();
		}
	},

	// Support: Chrome <=50
	// We should be able to just use this.element.prop( "isContentEditable" )
	// but hidden elements always report false in Chrome.
	// https://code.google.com/p/chromium/issues/detail?id=313082
	_isContentEditable: function( element ) {
		if ( !element.length ) {
			return false;
		}

		var editable = element.prop( "contentEditable" );

		if ( editable === "inherit" ) {
		  return this._isContentEditable( element.parent() );
		}

		return editable === "true";
	}
} );

$.extend( $.ui.autocomplete, {
	escapeRegex: function( value ) {
		return value.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" );
	},
	filter: function( array, term ) {
		var matcher = new RegExp( $.ui.autocomplete.escapeRegex( term ), "i" );
		return $.grep( array, function( value ) {
			return matcher.test( value.label || value.value || value );
		} );
	}
} );

// Live region extension, adding a `messages` option
// NOTE: This is an experimental API. We are still investigating
// a full solution for string manipulation and internationalization.
$.widget( "ui.autocomplete", $.ui.autocomplete, {
	options: {
		messages: {
			noResults: "No search results.",
			results: function( amount ) {
				return amount + ( amount > 1 ? " results are" : " result is" ) +
					" available, use up and down arrow keys to navigate.";
			}
		}
	},

	__response: function( content ) {
		var message;
		this._superApply( arguments );
		if ( this.options.disabled || this.cancelSearch ) {
			return;
		}
		if ( content && content.length ) {
			message = this.options.messages.results( content.length );
		} else {
			message = this.options.messages.noResults;
		}
		this.liveRegion.children().hide();
		$( "<div>" ).text( message ).appendTo( this.liveRegion );
	}
} );

var widgetsAutocomplete = $.ui.autocomplete;


/*!
 * jQuery UI Controlgroup 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Controlgroup
//>>group: Widgets
//>>description: Visually groups form control widgets
//>>docs: http://api.jqueryui.com/controlgroup/
//>>demos: http://jqueryui.com/controlgroup/
//>>css.structure: ../../themes/base/core.css
//>>css.structure: ../../themes/base/controlgroup.css
//>>css.theme: ../../themes/base/theme.css


var controlgroupCornerRegex = /ui-corner-([a-z]){2,6}/g;

var widgetsControlgroup = $.widget( "ui.controlgroup", {
	version: "1.12.1",
	defaultElement: "<div>",
	options: {
		direction: "horizontal",
		disabled: null,
		onlyVisible: true,
		items: {
			"button": "input[type=button], input[type=submit], input[type=reset], button, a",
			"controlgroupLabel": ".ui-controlgroup-label",
			"checkboxradio": "input[type='checkbox'], input[type='radio']",
			"selectmenu": "select",
			"spinner": ".ui-spinner-input"
		}
	},

	_create: function() {
		this._enhance();
	},

	// To support the enhanced option in jQuery Mobile, we isolate DOM manipulation
	_enhance: function() {
		this.element.attr( "role", "toolbar" );
		this.refresh();
	},

	_destroy: function() {
		this._callChildMethod( "destroy" );
		this.childWidgets.removeData( "ui-controlgroup-data" );
		this.element.removeAttr( "role" );
		if ( this.options.items.controlgroupLabel ) {
			this.element
				.find( this.options.items.controlgroupLabel )
				.find( ".ui-controlgroup-label-contents" )
				.contents().unwrap();
		}
	},

	_initWidgets: function() {
		var that = this,
			childWidgets = [];

		// First we iterate over each of the items options
		$.each( this.options.items, function( widget, selector ) {
			var labels;
			var options = {};

			// Make sure the widget has a selector set
			if ( !selector ) {
				return;
			}

			if ( widget === "controlgroupLabel" ) {
				labels = that.element.find( selector );
				labels.each( function() {
					var element = $( this );

					if ( element.children( ".ui-controlgroup-label-contents" ).length ) {
						return;
					}
					element.contents()
						.wrapAll( "<span class='ui-controlgroup-label-contents'></span>" );
				} );
				that._addClass( labels, null, "ui-widget ui-widget-content ui-state-default" );
				childWidgets = childWidgets.concat( labels.get() );
				return;
			}

			// Make sure the widget actually exists
			if ( !$.fn[ widget ] ) {
				return;
			}

			// We assume everything is in the middle to start because we can't determine
			// first / last elements until all enhancments are done.
			if ( that[ "_" + widget + "Options" ] ) {
				options = that[ "_" + widget + "Options" ]( "middle" );
			} else {
				options = { classes: {} };
			}

			// Find instances of this widget inside controlgroup and init them
			that.element
				.find( selector )
				.each( function() {
					var element = $( this );
					var instance = element[ widget ]( "instance" );

					// We need to clone the default options for this type of widget to avoid
					// polluting the variable options which has a wider scope than a single widget.
					var instanceOptions = $.widget.extend( {}, options );

					// If the button is the child of a spinner ignore it
					// TODO: Find a more generic solution
					if ( widget === "button" && element.parent( ".ui-spinner" ).length ) {
						return;
					}

					// Create the widget if it doesn't exist
					if ( !instance ) {
						instance = element[ widget ]()[ widget ]( "instance" );
					}
					if ( instance ) {
						instanceOptions.classes =
							that._resolveClassesValues( instanceOptions.classes, instance );
					}
					element[ widget ]( instanceOptions );

					// Store an instance of the controlgroup to be able to reference
					// from the outermost element for changing options and refresh
					var widgetElement = element[ widget ]( "widget" );
					$.data( widgetElement[ 0 ], "ui-controlgroup-data",
						instance ? instance : element[ widget ]( "instance" ) );

					childWidgets.push( widgetElement[ 0 ] );
				} );
		} );

		this.childWidgets = $( $.unique( childWidgets ) );
		this._addClass( this.childWidgets, "ui-controlgroup-item" );
	},

	_callChildMethod: function( method ) {
		this.childWidgets.each( function() {
			var element = $( this ),
				data = element.data( "ui-controlgroup-data" );
			if ( data && data[ method ] ) {
				data[ method ]();
			}
		} );
	},

	_updateCornerClass: function( element, position ) {
		var remove = "ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all";
		var add = this._buildSimpleOptions( position, "label" ).classes.label;

		this._removeClass( element, null, remove );
		this._addClass( element, null, add );
	},

	_buildSimpleOptions: function( position, key ) {
		var direction = this.options.direction === "vertical";
		var result = {
			classes: {}
		};
		result.classes[ key ] = {
			"middle": "",
			"first": "ui-corner-" + ( direction ? "top" : "left" ),
			"last": "ui-corner-" + ( direction ? "bottom" : "right" ),
			"only": "ui-corner-all"
		}[ position ];

		return result;
	},

	_spinnerOptions: function( position ) {
		var options = this._buildSimpleOptions( position, "ui-spinner" );

		options.classes[ "ui-spinner-up" ] = "";
		options.classes[ "ui-spinner-down" ] = "";

		return options;
	},

	_buttonOptions: function( position ) {
		return this._buildSimpleOptions( position, "ui-button" );
	},

	_checkboxradioOptions: function( position ) {
		return this._buildSimpleOptions( position, "ui-checkboxradio-label" );
	},

	_selectmenuOptions: function( position ) {
		var direction = this.options.direction === "vertical";
		return {
			width: direction ? "auto" : false,
			classes: {
				middle: {
					"ui-selectmenu-button-open": "",
					"ui-selectmenu-button-closed": ""
				},
				first: {
					"ui-selectmenu-button-open": "ui-corner-" + ( direction ? "top" : "tl" ),
					"ui-selectmenu-button-closed": "ui-corner-" + ( direction ? "top" : "left" )
				},
				last: {
					"ui-selectmenu-button-open": direction ? "" : "ui-corner-tr",
					"ui-selectmenu-button-closed": "ui-corner-" + ( direction ? "bottom" : "right" )
				},
				only: {
					"ui-selectmenu-button-open": "ui-corner-top",
					"ui-selectmenu-button-closed": "ui-corner-all"
				}

			}[ position ]
		};
	},

	_resolveClassesValues: function( classes, instance ) {
		var result = {};
		$.each( classes, function( key ) {
			var current = instance.options.classes[ key ] || "";
			current = $.trim( current.replace( controlgroupCornerRegex, "" ) );
			result[ key ] = ( current + " " + classes[ key ] ).replace( /\s+/g, " " );
		} );
		return result;
	},

	_setOption: function( key, value ) {
		if ( key === "direction" ) {
			this._removeClass( "ui-controlgroup-" + this.options.direction );
		}

		this._super( key, value );
		if ( key === "disabled" ) {
			this._callChildMethod( value ? "disable" : "enable" );
			return;
		}

		this.refresh();
	},

	refresh: function() {
		var children,
			that = this;

		this._addClass( "ui-controlgroup ui-controlgroup-" + this.options.direction );

		if ( this.options.direction === "horizontal" ) {
			this._addClass( null, "ui-helper-clearfix" );
		}
		this._initWidgets();

		children = this.childWidgets;

		// We filter here because we need to track all childWidgets not just the visible ones
		if ( this.options.onlyVisible ) {
			children = children.filter( ":visible" );
		}

		if ( children.length ) {

			// We do this last because we need to make sure all enhancment is done
			// before determining first and last
			$.each( [ "first", "last" ], function( index, value ) {
				var instance = children[ value ]().data( "ui-controlgroup-data" );

				if ( instance && that[ "_" + instance.widgetName + "Options" ] ) {
					var options = that[ "_" + instance.widgetName + "Options" ](
						children.length === 1 ? "only" : value
					);
					options.classes = that._resolveClassesValues( options.classes, instance );
					instance.element[ instance.widgetName ]( options );
				} else {
					that._updateCornerClass( children[ value ](), value );
				}
			} );

			// Finally call the refresh method on each of the child widgets.
			this._callChildMethod( "refresh" );
		}
	}
} );

/*!
 * jQuery UI Checkboxradio 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Checkboxradio
//>>group: Widgets
//>>description: Enhances a form with multiple themeable checkboxes or radio buttons.
//>>docs: http://api.jqueryui.com/checkboxradio/
//>>demos: http://jqueryui.com/checkboxradio/
//>>css.structure: ../../themes/base/core.css
//>>css.structure: ../../themes/base/button.css
//>>css.structure: ../../themes/base/checkboxradio.css
//>>css.theme: ../../themes/base/theme.css



$.widget( "ui.checkboxradio", [ $.ui.formResetMixin, {
	version: "1.12.1",
	options: {
		disabled: null,
		label: null,
		icon: true,
		classes: {
			"ui-checkboxradio-label": "ui-corner-all",
			"ui-checkboxradio-icon": "ui-corner-all"
		}
	},

	_getCreateOptions: function() {
		var disabled, labels;
		var that = this;
		var options = this._super() || {};

		// We read the type here, because it makes more sense to throw a element type error first,
		// rather then the error for lack of a label. Often if its the wrong type, it
		// won't have a label (e.g. calling on a div, btn, etc)
		this._readType();

		labels = this.element.labels();

		// If there are multiple labels, use the last one
		this.label = $( labels[ labels.length - 1 ] );
		if ( !this.label.length ) {
			$.error( "No label found for checkboxradio widget" );
		}

		this.originalLabel = "";

		// We need to get the label text but this may also need to make sure it does not contain the
		// input itself.
		this.label.contents().not( this.element[ 0 ] ).each( function() {

			// The label contents could be text, html, or a mix. We concat each element to get a
			// string representation of the label, without the input as part of it.
			that.originalLabel += this.nodeType === 3 ? $( this ).text() : this.outerHTML;
		} );

		// Set the label option if we found label text
		if ( this.originalLabel ) {
			options.label = this.originalLabel;
		}

		disabled = this.element[ 0 ].disabled;
		if ( disabled != null ) {
			options.disabled = disabled;
		}
		return options;
	},

	_create: function() {
		var checked = this.element[ 0 ].checked;

		this._bindFormResetHandler();

		if ( this.options.disabled == null ) {
			this.options.disabled = this.element[ 0 ].disabled;
		}

		this._setOption( "disabled", this.options.disabled );
		this._addClass( "ui-checkboxradio", "ui-helper-hidden-accessible" );
		this._addClass( this.label, "ui-checkboxradio-label", "ui-button ui-widget" );

		if ( this.type === "radio" ) {
			this._addClass( this.label, "ui-checkboxradio-radio-label" );
		}

		if ( this.options.label && this.options.label !== this.originalLabel ) {
			this._updateLabel();
		} else if ( this.originalLabel ) {
			this.options.label = this.originalLabel;
		}

		this._enhance();

		if ( checked ) {
			this._addClass( this.label, "ui-checkboxradio-checked", "ui-state-active" );
			if ( this.icon ) {
				this._addClass( this.icon, null, "ui-state-hover" );
			}
		}

		this._on( {
			change: "_toggleClasses",
			focus: function() {
				this._addClass( this.label, null, "ui-state-focus ui-visual-focus" );
			},
			blur: function() {
				this._removeClass( this.label, null, "ui-state-focus ui-visual-focus" );
			}
		} );
	},

	_readType: function() {
		var nodeName = this.element[ 0 ].nodeName.toLowerCase();
		this.type = this.element[ 0 ].type;
		if ( nodeName !== "input" || !/radio|checkbox/.test( this.type ) ) {
			$.error( "Can't create checkboxradio on element.nodeName=" + nodeName +
				" and element.type=" + this.type );
		}
	},

	// Support jQuery Mobile enhanced option
	_enhance: function() {
		this._updateIcon( this.element[ 0 ].checked );
	},

	widget: function() {
		return this.label;
	},

	_getRadioGroup: function() {
		var group;
		var name = this.element[ 0 ].name;
		var nameSelector = "input[name='" + $.ui.escapeSelector( name ) + "']";

		if ( !name ) {
			return $( [] );
		}

		if ( this.form.length ) {
			group = $( this.form[ 0 ].elements ).filter( nameSelector );
		} else {

			// Not inside a form, check all inputs that also are not inside a form
			group = $( nameSelector ).filter( function() {
				return $( this ).form().length === 0;
			} );
		}

		return group.not( this.element );
	},

	_toggleClasses: function() {
		var checked = this.element[ 0 ].checked;
		this._toggleClass( this.label, "ui-checkboxradio-checked", "ui-state-active", checked );

		if ( this.options.icon && this.type === "checkbox" ) {
			this._toggleClass( this.icon, null, "ui-icon-check ui-state-checked", checked )
				._toggleClass( this.icon, null, "ui-icon-blank", !checked );
		}

		if ( this.type === "radio" ) {
			this._getRadioGroup()
				.each( function() {
					var instance = $( this ).checkboxradio( "instance" );

					if ( instance ) {
						instance._removeClass( instance.label,
							"ui-checkboxradio-checked", "ui-state-active" );
					}
				} );
		}
	},

	_destroy: function() {
		this._unbindFormResetHandler();

		if ( this.icon ) {
			this.icon.remove();
			this.iconSpace.remove();
		}
	},

	_setOption: function( key, value ) {

		// We don't allow the value to be set to nothing
		if ( key === "label" && !value ) {
			return;
		}

		this._super( key, value );

		if ( key === "disabled" ) {
			this._toggleClass( this.label, null, "ui-state-disabled", value );
			this.element[ 0 ].disabled = value;

			// Don't refresh when setting disabled
			return;
		}
		this.refresh();
	},

	_updateIcon: function( checked ) {
		var toAdd = "ui-icon ui-icon-background ";

		if ( this.options.icon ) {
			if ( !this.icon ) {
				this.icon = $( "<span>" );
				this.iconSpace = $( "<span> </span>" );
				this._addClass( this.iconSpace, "ui-checkboxradio-icon-space" );
			}

			if ( this.type === "checkbox" ) {
				toAdd += checked ? "ui-icon-check ui-state-checked" : "ui-icon-blank";
				this._removeClass( this.icon, null, checked ? "ui-icon-blank" : "ui-icon-check" );
			} else {
				toAdd += "ui-icon-blank";
			}
			this._addClass( this.icon, "ui-checkboxradio-icon", toAdd );
			if ( !checked ) {
				this._removeClass( this.icon, null, "ui-icon-check ui-state-checked" );
			}
			this.icon.prependTo( this.label ).after( this.iconSpace );
		} else if ( this.icon !== undefined ) {
			this.icon.remove();
			this.iconSpace.remove();
			delete this.icon;
		}
	},

	_updateLabel: function() {

		// Remove the contents of the label ( minus the icon, icon space, and input )
		var contents = this.label.contents().not( this.element[ 0 ] );
		if ( this.icon ) {
			contents = contents.not( this.icon[ 0 ] );
		}
		if ( this.iconSpace ) {
			contents = contents.not( this.iconSpace[ 0 ] );
		}
		contents.remove();

		this.label.append( this.options.label );
	},

	refresh: function() {
		var checked = this.element[ 0 ].checked,
			isDisabled = this.element[ 0 ].disabled;

		this._updateIcon( checked );
		this._toggleClass( this.label, "ui-checkboxradio-checked", "ui-state-active", checked );
		if ( this.options.label !== null ) {
			this._updateLabel();
		}

		if ( isDisabled !== this.options.disabled ) {
			this._setOptions( { "disabled": isDisabled } );
		}
	}

} ] );

var widgetsCheckboxradio = $.ui.checkboxradio;


/*!
 * jQuery UI Button 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Button
//>>group: Widgets
//>>description: Enhances a form with themeable buttons.
//>>docs: http://api.jqueryui.com/button/
//>>demos: http://jqueryui.com/button/
//>>css.structure: ../../themes/base/core.css
//>>css.structure: ../../themes/base/button.css
//>>css.theme: ../../themes/base/theme.css



$.widget( "ui.button", {
	version: "1.12.1",
	defaultElement: "<button>",
	options: {
		classes: {
			"ui-button": "ui-corner-all"
		},
		disabled: null,
		icon: null,
		iconPosition: "beginning",
		label: null,
		showLabel: true
	},

	_getCreateOptions: function() {
		var disabled,

			// This is to support cases like in jQuery Mobile where the base widget does have
			// an implementation of _getCreateOptions
			options = this._super() || {};

		this.isInput = this.element.is( "input" );

		disabled = this.element[ 0 ].disabled;
		if ( disabled != null ) {
			options.disabled = disabled;
		}

		this.originalLabel = this.isInput ? this.element.val() : this.element.html();
		if ( this.originalLabel ) {
			options.label = this.originalLabel;
		}

		return options;
	},

	_create: function() {
		if ( !this.option.showLabel & !this.options.icon ) {
			this.options.showLabel = true;
		}

		// We have to check the option again here even though we did in _getCreateOptions,
		// because null may have been passed on init which would override what was set in
		// _getCreateOptions
		if ( this.options.disabled == null ) {
			this.options.disabled = this.element[ 0 ].disabled || false;
		}

		this.hasTitle = !!this.element.attr( "title" );

		// Check to see if the label needs to be set or if its already correct
		if ( this.options.label && this.options.label !== this.originalLabel ) {
			if ( this.isInput ) {
				this.element.val( this.options.label );
			} else {
				this.element.html( this.options.label );
			}
		}
		this._addClass( "ui-button", "ui-widget" );
		this._setOption( "disabled", this.options.disabled );
		this._enhance();

		if ( this.element.is( "a" ) ) {
			this._on( {
				"keyup": function( event ) {
					if ( event.keyCode === $.ui.keyCode.SPACE ) {
						event.preventDefault();

						// Support: PhantomJS <= 1.9, IE 8 Only
						// If a native click is available use it so we actually cause navigation
						// otherwise just trigger a click event
						if ( this.element[ 0 ].click ) {
							this.element[ 0 ].click();
						} else {
							this.element.trigger( "click" );
						}
					}
				}
			} );
		}
	},

	_enhance: function() {
		if ( !this.element.is( "button" ) ) {
			this.element.attr( "role", "button" );
		}

		if ( this.options.icon ) {
			this._updateIcon( "icon", this.options.icon );
			this._updateTooltip();
		}
	},

	_updateTooltip: function() {
		this.title = this.element.attr( "title" );

		if ( !this.options.showLabel && !this.title ) {
			this.element.attr( "title", this.options.label );
		}
	},

	_updateIcon: function( option, value ) {
		var icon = option !== "iconPosition",
			position = icon ? this.options.iconPosition : value,
			displayBlock = position === "top" || position === "bottom";

		// Create icon
		if ( !this.icon ) {
			this.icon = $( "<span>" );

			this._addClass( this.icon, "ui-button-icon", "ui-icon" );

			if ( !this.options.showLabel ) {
				this._addClass( "ui-button-icon-only" );
			}
		} else if ( icon ) {

			// If we are updating the icon remove the old icon class
			this._removeClass( this.icon, null, this.options.icon );
		}

		// If we are updating the icon add the new icon class
		if ( icon ) {
			this._addClass( this.icon, null, value );
		}

		this._attachIcon( position );

		// If the icon is on top or bottom we need to add the ui-widget-icon-block class and remove
		// the iconSpace if there is one.
		if ( displayBlock ) {
			this._addClass( this.icon, null, "ui-widget-icon-block" );
			if ( this.iconSpace ) {
				this.iconSpace.remove();
			}
		} else {

			// Position is beginning or end so remove the ui-widget-icon-block class and add the
			// space if it does not exist
			if ( !this.iconSpace ) {
				this.iconSpace = $( "<span> </span>" );
				this._addClass( this.iconSpace, "ui-button-icon-space" );
			}
			this._removeClass( this.icon, null, "ui-wiget-icon-block" );
			this._attachIconSpace( position );
		}
	},

	_destroy: function() {
		this.element.removeAttr( "role" );

		if ( this.icon ) {
			this.icon.remove();
		}
		if ( this.iconSpace ) {
			this.iconSpace.remove();
		}
		if ( !this.hasTitle ) {
			this.element.removeAttr( "title" );
		}
	},

	_attachIconSpace: function( iconPosition ) {
		this.icon[ /^(?:end|bottom)/.test( iconPosition ) ? "before" : "after" ]( this.iconSpace );
	},

	_attachIcon: function( iconPosition ) {
		this.element[ /^(?:end|bottom)/.test( iconPosition ) ? "append" : "prepend" ]( this.icon );
	},

	_setOptions: function( options ) {
		var newShowLabel = options.showLabel === undefined ?
				this.options.showLabel :
				options.showLabel,
			newIcon = options.icon === undefined ? this.options.icon : options.icon;

		if ( !newShowLabel && !newIcon ) {
			options.showLabel = true;
		}
		this._super( options );
	},

	_setOption: function( key, value ) {
		if ( key === "icon" ) {
			if ( value ) {
				this._updateIcon( key, value );
			} else if ( this.icon ) {
				this.icon.remove();
				if ( this.iconSpace ) {
					this.iconSpace.remove();
				}
			}
		}

		if ( key === "iconPosition" ) {
			this._updateIcon( key, value );
		}

		// Make sure we can't end up with a button that has neither text nor icon
		if ( key === "showLabel" ) {
				this._toggleClass( "ui-button-icon-only", null, !value );
				this._updateTooltip();
		}

		if ( key === "label" ) {
			if ( this.isInput ) {
				this.element.val( value );
			} else {

				// If there is an icon, append it, else nothing then append the value
				// this avoids removal of the icon when setting label text
				this.element.html( value );
				if ( this.icon ) {
					this._attachIcon( this.options.iconPosition );
					this._attachIconSpace( this.options.iconPosition );
				}
			}
		}

		this._super( key, value );

		if ( key === "disabled" ) {
			this._toggleClass( null, "ui-state-disabled", value );
			this.element[ 0 ].disabled = value;
			if ( value ) {
				this.element.blur();
			}
		}
	},

	refresh: function() {

		// Make sure to only check disabled if its an element that supports this otherwise
		// check for the disabled class to determine state
		var isDisabled = this.element.is( "input, button" ) ?
			this.element[ 0 ].disabled : this.element.hasClass( "ui-button-disabled" );

		if ( isDisabled !== this.options.disabled ) {
			this._setOptions( { disabled: isDisabled } );
		}

		this._updateTooltip();
	}
} );

// DEPRECATED
if ( $.uiBackCompat !== false ) {

	// Text and Icons options
	$.widget( "ui.button", $.ui.button, {
		options: {
			text: true,
			icons: {
				primary: null,
				secondary: null
			}
		},

		_create: function() {
			if ( this.options.showLabel && !this.options.text ) {
				this.options.showLabel = this.options.text;
			}
			if ( !this.options.showLabel && this.options.text ) {
				this.options.text = this.options.showLabel;
			}
			if ( !this.options.icon && ( this.options.icons.primary ||
					this.options.icons.secondary ) ) {
				if ( this.options.icons.primary ) {
					this.options.icon = this.options.icons.primary;
				} else {
					this.options.icon = this.options.icons.secondary;
					this.options.iconPosition = "end";
				}
			} else if ( this.options.icon ) {
				this.options.icons.primary = this.options.icon;
			}
			this._super();
		},

		_setOption: function( key, value ) {
			if ( key === "text" ) {
				this._super( "showLabel", value );
				return;
			}
			if ( key === "showLabel" ) {
				this.options.text = value;
			}
			if ( key === "icon" ) {
				this.options.icons.primary = value;
			}
			if ( key === "icons" ) {
				if ( value.primary ) {
					this._super( "icon", value.primary );
					this._super( "iconPosition", "beginning" );
				} else if ( value.secondary ) {
					this._super( "icon", value.secondary );
					this._super( "iconPosition", "end" );
				}
			}
			this._superApply( arguments );
		}
	} );

	$.fn.button = ( function( orig ) {
		return function() {
			if ( !this.length || ( this.length && this[ 0 ].tagName !== "INPUT" ) ||
					( this.length && this[ 0 ].tagName === "INPUT" && (
						this.attr( "type" ) !== "checkbox" && this.attr( "type" ) !== "radio"
					) ) ) {
				return orig.apply( this, arguments );
			}
			if ( !$.ui.checkboxradio ) {
				$.error( "Checkboxradio widget missing" );
			}
			if ( arguments.length === 0 ) {
				return this.checkboxradio( {
					"icon": false
				} );
			}
			return this.checkboxradio.apply( this, arguments );
		};
	} )( $.fn.button );

	$.fn.buttonset = function() {
		if ( !$.ui.controlgroup ) {
			$.error( "Controlgroup widget missing" );
		}
		if ( arguments[ 0 ] === "option" && arguments[ 1 ] === "items" && arguments[ 2 ] ) {
			return this.controlgroup.apply( this,
				[ arguments[ 0 ], "items.button", arguments[ 2 ] ] );
		}
		if ( arguments[ 0 ] === "option" && arguments[ 1 ] === "items" ) {
			return this.controlgroup.apply( this, [ arguments[ 0 ], "items.button" ] );
		}
		if ( typeof arguments[ 0 ] === "object" && arguments[ 0 ].items ) {
			arguments[ 0 ].items = {
				button: arguments[ 0 ].items
			};
		}
		return this.controlgroup.apply( this, arguments );
	};
}

var widgetsButton = $.ui.button;


// jscs:disable maximumLineLength
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/*!
 * jQuery UI Datepicker 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Datepicker
//>>group: Widgets
//>>description: Displays a calendar from an input or inline for selecting dates.
//>>docs: http://api.jqueryui.com/datepicker/
//>>demos: http://jqueryui.com/datepicker/
//>>css.structure: ../../themes/base/core.css
//>>css.structure: ../../themes/base/datepicker.css
//>>css.theme: ../../themes/base/theme.css



$.extend( $.ui, { datepicker: { version: "1.12.1" } } );

var datepicker_instActive;

function datepicker_getZindex( elem ) {
	var position, value;
	while ( elem.length && elem[ 0 ] !== document ) {

		// Ignore z-index if position is set to a value where z-index is ignored by the browser
		// This makes behavior of this function consistent across browsers
		// WebKit always returns auto if the element is positioned
		position = elem.css( "position" );
		if ( position === "absolute" || position === "relative" || position === "fixed" ) {

			// IE returns 0 when zIndex is not specified
			// other browsers return a string
			// we ignore the case of nested elements with an explicit value of 0
			// <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
			value = parseInt( elem.css( "zIndex" ), 10 );
			if ( !isNaN( value ) && value !== 0 ) {
				return value;
			}
		}
		elem = elem.parent();
	}

	return 0;
}
/* Date picker manager.
   Use the singleton instance of this class, $.datepicker, to interact with the date picker.
   Settings for (groups of) date pickers are maintained in an instance object,
   allowing multiple different settings on the same page. */

function Datepicker() {
	this._curInst = null; // The current instance in use
	this._keyEvent = false; // If the last event was a key event
	this._disabledInputs = []; // List of date picker inputs that have been disabled
	this._datepickerShowing = false; // True if the popup picker is showing , false if not
	this._inDialog = false; // True if showing within a "dialog", false if not
	this._mainDivId = "ui-datepicker-div"; // The ID of the main datepicker division
	this._inlineClass = "ui-datepicker-inline"; // The name of the inline marker class
	this._appendClass = "ui-datepicker-append"; // The name of the append marker class
	this._triggerClass = "ui-datepicker-trigger"; // The name of the trigger marker class
	this._dialogClass = "ui-datepicker-dialog"; // The name of the dialog marker class
	this._disableClass = "ui-datepicker-disabled"; // The name of the disabled covering marker class
	this._unselectableClass = "ui-datepicker-unselectable"; // The name of the unselectable cell marker class
	this._currentClass = "ui-datepicker-current-day"; // The name of the current day marker class
	this._dayOverClass = "ui-datepicker-days-cell-over"; // The name of the day hover marker class
	this.regional = []; // Available regional settings, indexed by language code
	this.regional[ "" ] = { // Default regional settings
		closeText: "Done", // Display text for close link
		prevText: "Prev", // Display text for previous month link
		nextText: "Next", // Display text for next month link
		currentText: "Today", // Display text for current month link
		monthNames: [ "January","February","March","April","May","June",
			"July","August","September","October","November","December" ], // Names of months for drop-down and formatting
		monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ], // For formatting
		dayNames: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], // For formatting
		dayNamesShort: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ], // For formatting
		dayNamesMin: [ "Su","Mo","Tu","We","Th","Fr","Sa" ], // Column headings for days starting at Sunday
		weekHeader: "Wk", // Column header for week of the year
		dateFormat: "mm/dd/yy", // See format options on parseDate
		firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...
		isRTL: false, // True if right-to-left language, false if left-to-right
		showMonthAfterYear: false, // True if the year select precedes month, false for month then year
		yearSuffix: "" // Additional text to append to the year in the month headers
	};
	this._defaults = { // Global defaults for all the date picker instances
		showOn: "focus", // "focus" for popup on focus,
			// "button" for trigger button, or "both" for either
		showAnim: "fadeIn", // Name of jQuery animation for popup
		showOptions: {}, // Options for enhanced animations
		defaultDate: null, // Used when field is blank: actual date,
			// +/-number for offset from today, null for today
		appendText: "", // Display text following the input box, e.g. showing the format
		buttonText: "...", // Text for trigger button
		buttonImage: "", // URL for trigger button image
		buttonImageOnly: false, // True if the image appears alone, false if it appears on a button
		hideIfNoPrevNext: false, // True to hide next/previous month links
			// if not applicable, false to just disable them
		navigationAsDateFormat: false, // True if date formatting applied to prev/today/next links
		gotoCurrent: false, // True if today link goes back to current selection instead
		changeMonth: false, // True if month can be selected directly, false if only prev/next
		changeYear: false, // True if year can be selected directly, false if only prev/next
		yearRange: "c-10:c+10", // Range of years to display in drop-down,
			// either relative to today's year (-nn:+nn), relative to currently displayed year
			// (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)
		showOtherMonths: false, // True to show dates in other months, false to leave blank
		selectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable
		showWeek: false, // True to show week of the year, false to not show it
		calculateWeek: this.iso8601Week, // How to calculate the week of the year,
			// takes a Date and returns the number of the week for it
		shortYearCutoff: "+10", // Short year values < this are in the current century,
			// > this are in the previous century,
			// string value starting with "+" for current year + value
		minDate: null, // The earliest selectable date, or null for no limit
		maxDate: null, // The latest selectable date, or null for no limit
		duration: "fast", // Duration of display/closure
		beforeShowDay: null, // Function that takes a date and returns an array with
			// [0] = true if selectable, false if not, [1] = custom CSS class name(s) or "",
			// [2] = cell title (optional), e.g. $.datepicker.noWeekends
		beforeShow: null, // Function that takes an input field and
			// returns a set of custom settings for the date picker
		onSelect: null, // Define a callback function when a date is selected
		onChangeMonthYear: null, // Define a callback function when the month or year is changed
		onClose: null, // Define a callback function when the datepicker is closed
		numberOfMonths: 1, // Number of months to show at a time
		showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)
		stepMonths: 1, // Number of months to step back/forward
		stepBigMonths: 12, // Number of months to step back/forward for the big links
		altField: "", // Selector for an alternate field to store selected dates into
		altFormat: "", // The date format to use for the alternate field
		constrainInput: true, // The input is constrained by the current date format
		showButtonPanel: false, // True to show button panel, false to not show it
		autoSize: false, // True to size the input for the date format, false to leave as is
		disabled: false // The initial disabled state
	};
	$.extend( this._defaults, this.regional[ "" ] );
	this.regional.en = $.extend( true, {}, this.regional[ "" ] );
	this.regional[ "en-US" ] = $.extend( true, {}, this.regional.en );
	this.dpDiv = datepicker_bindHover( $( "<div id='" + this._mainDivId + "' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>" ) );
}

$.extend( Datepicker.prototype, {
	/* Class name added to elements to indicate already configured with a date picker. */
	markerClassName: "hasDatepicker",

	//Keep track of the maximum number of rows displayed (see #7043)
	maxRows: 4,

	// TODO rename to "widget" when switching to widget factory
	_widgetDatepicker: function() {
		return this.dpDiv;
	},

	/* Override the default settings for all instances of the date picker.
	 * @param  settings  object - the new settings to use as defaults (anonymous object)
	 * @return the manager object
	 */
	setDefaults: function( settings ) {
		datepicker_extendRemove( this._defaults, settings || {} );
		return this;
	},

	/* Attach the date picker to a jQuery selection.
	 * @param  target	element - the target input field or division or span
	 * @param  settings  object - the new settings to use for this date picker instance (anonymous)
	 */
	_attachDatepicker: function( target, settings ) {
		var nodeName, inline, inst;
		nodeName = target.nodeName.toLowerCase();
		inline = ( nodeName === "div" || nodeName === "span" );
		if ( !target.id ) {
			this.uuid += 1;
			target.id = "dp" + this.uuid;
		}
		inst = this._newInst( $( target ), inline );
		inst.settings = $.extend( {}, settings || {} );
		if ( nodeName === "input" ) {
			this._connectDatepicker( target, inst );
		} else if ( inline ) {
			this._inlineDatepicker( target, inst );
		}
	},

	/* Create a new instance object. */
	_newInst: function( target, inline ) {
		var id = target[ 0 ].id.replace( /([^A-Za-z0-9_\-])/g, "\\\\$1" ); // escape jQuery meta chars
		return { id: id, input: target, // associated target
			selectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection
			drawMonth: 0, drawYear: 0, // month being drawn
			inline: inline, // is datepicker inline or not
			dpDiv: ( !inline ? this.dpDiv : // presentation div
			datepicker_bindHover( $( "<div class='" + this._inlineClass + " ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>" ) ) ) };
	},

	/* Attach the date picker to an input field. */
	_connectDatepicker: function( target, inst ) {
		var input = $( target );
		inst.append = $( [] );
		inst.trigger = $( [] );
		if ( input.hasClass( this.markerClassName ) ) {
			return;
		}
		this._attachments( input, inst );
		input.addClass( this.markerClassName ).on( "keydown", this._doKeyDown ).
			on( "keypress", this._doKeyPress ).on( "keyup", this._doKeyUp );
		this._autoSize( inst );
		$.data( target, "datepicker", inst );

		//If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665)
		if ( inst.settings.disabled ) {
			this._disableDatepicker( target );
		}
	},

	/* Make attachments based on settings. */
	_attachments: function( input, inst ) {
		var showOn, buttonText, buttonImage,
			appendText = this._get( inst, "appendText" ),
			isRTL = this._get( inst, "isRTL" );

		if ( inst.append ) {
			inst.append.remove();
		}
		if ( appendText ) {
			inst.append = $( "<span class='" + this._appendClass + "'>" + appendText + "</span>" );
			input[ isRTL ? "before" : "after" ]( inst.append );
		}

		input.off( "focus", this._showDatepicker );

		if ( inst.trigger ) {
			inst.trigger.remove();
		}

		showOn = this._get( inst, "showOn" );
		if ( showOn === "focus" || showOn === "both" ) { // pop-up date picker when in the marked field
			input.on( "focus", this._showDatepicker );
		}
		if ( showOn === "button" || showOn === "both" ) { // pop-up date picker when button clicked
			buttonText = this._get( inst, "buttonText" );
			buttonImage = this._get( inst, "buttonImage" );
			inst.trigger = $( this._get( inst, "buttonImageOnly" ) ?
				$( "<img/>" ).addClass( this._triggerClass ).
					attr( { src: buttonImage, alt: buttonText, title: buttonText } ) :
				$( "<button type='button'></button>" ).addClass( this._triggerClass ).
					html( !buttonImage ? buttonText : $( "<img/>" ).attr(
					{ src:buttonImage, alt:buttonText, title:buttonText } ) ) );
			input[ isRTL ? "before" : "after" ]( inst.trigger );
			inst.trigger.on( "click", function() {
				if ( $.datepicker._datepickerShowing && $.datepicker._lastInput === input[ 0 ] ) {
					$.datepicker._hideDatepicker();
				} else if ( $.datepicker._datepickerShowing && $.datepicker._lastInput !== input[ 0 ] ) {
					$.datepicker._hideDatepicker();
					$.datepicker._showDatepicker( input[ 0 ] );
				} else {
					$.datepicker._showDatepicker( input[ 0 ] );
				}
				return false;
			} );
		}
	},

	/* Apply the maximum length for the date format. */
	_autoSize: function( inst ) {
		if ( this._get( inst, "autoSize" ) && !inst.inline ) {
			var findMax, max, maxI, i,
				date = new Date( 2009, 12 - 1, 20 ), // Ensure double digits
				dateFormat = this._get( inst, "dateFormat" );

			if ( dateFormat.match( /[DM]/ ) ) {
				findMax = function( names ) {
					max = 0;
					maxI = 0;
					for ( i = 0; i < names.length; i++ ) {
						if ( names[ i ].length > max ) {
							max = names[ i ].length;
							maxI = i;
						}
					}
					return maxI;
				};
				date.setMonth( findMax( this._get( inst, ( dateFormat.match( /MM/ ) ?
					"monthNames" : "monthNamesShort" ) ) ) );
				date.setDate( findMax( this._get( inst, ( dateFormat.match( /DD/ ) ?
					"dayNames" : "dayNamesShort" ) ) ) + 20 - date.getDay() );
			}
			inst.input.attr( "size", this._formatDate( inst, date ).length );
		}
	},

	/* Attach an inline date picker to a div. */
	_inlineDatepicker: function( target, inst ) {
		var divSpan = $( target );
		if ( divSpan.hasClass( this.markerClassName ) ) {
			return;
		}
		divSpan.addClass( this.markerClassName ).append( inst.dpDiv );
		$.data( target, "datepicker", inst );
		this._setDate( inst, this._getDefaultDate( inst ), true );
		this._updateDatepicker( inst );
		this._updateAlternate( inst );

		//If disabled option is true, disable the datepicker before showing it (see ticket #5665)
		if ( inst.settings.disabled ) {
			this._disableDatepicker( target );
		}

		// Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements
		// http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height
		inst.dpDiv.css( "display", "block" );
	},

	/* Pop-up the date picker in a "dialog" box.
	 * @param  input element - ignored
	 * @param  date	string or Date - the initial date to display
	 * @param  onSelect  function - the function to call when a date is selected
	 * @param  settings  object - update the dialog date picker instance's settings (anonymous object)
	 * @param  pos int[2] - coordinates for the dialog's position within the screen or
	 *					event - with x/y coordinates or
	 *					leave empty for default (screen centre)
	 * @return the manager object
	 */
	_dialogDatepicker: function( input, date, onSelect, settings, pos ) {
		var id, browserWidth, browserHeight, scrollX, scrollY,
			inst = this._dialogInst; // internal instance

		if ( !inst ) {
			this.uuid += 1;
			id = "dp" + this.uuid;
			this._dialogInput = $( "<input type='text' id='" + id +
				"' style='position: absolute; top: -100px; width: 0px;'/>" );
			this._dialogInput.on( "keydown", this._doKeyDown );
			$( "body" ).append( this._dialogInput );
			inst = this._dialogInst = this._newInst( this._dialogInput, false );
			inst.settings = {};
			$.data( this._dialogInput[ 0 ], "datepicker", inst );
		}
		datepicker_extendRemove( inst.settings, settings || {} );
		date = ( date && date.constructor === Date ? this._formatDate( inst, date ) : date );
		this._dialogInput.val( date );

		this._pos = ( pos ? ( pos.length ? pos : [ pos.pageX, pos.pageY ] ) : null );
		if ( !this._pos ) {
			browserWidth = document.documentElement.clientWidth;
			browserHeight = document.documentElement.clientHeight;
			scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
			scrollY = document.documentElement.scrollTop || document.body.scrollTop;
			this._pos = // should use actual width/height below
				[ ( browserWidth / 2 ) - 100 + scrollX, ( browserHeight / 2 ) - 150 + scrollY ];
		}

		// Move input on screen for focus, but hidden behind dialog
		this._dialogInput.css( "left", ( this._pos[ 0 ] + 20 ) + "px" ).css( "top", this._pos[ 1 ] + "px" );
		inst.settings.onSelect = onSelect;
		this._inDialog = true;
		this.dpDiv.addClass( this._dialogClass );
		this._showDatepicker( this._dialogInput[ 0 ] );
		if ( $.blockUI ) {
			$.blockUI( this.dpDiv );
		}
		$.data( this._dialogInput[ 0 ], "datepicker", inst );
		return this;
	},

	/* Detach a datepicker from its control.
	 * @param  target	element - the target input field or division or span
	 */
	_destroyDatepicker: function( target ) {
		var nodeName,
			$target = $( target ),
			inst = $.data( target, "datepicker" );

		if ( !$target.hasClass( this.markerClassName ) ) {
			return;
		}

		nodeName = target.nodeName.toLowerCase();
		$.removeData( target, "datepicker" );
		if ( nodeName === "input" ) {
			inst.append.remove();
			inst.trigger.remove();
			$target.removeClass( this.markerClassName ).
				off( "focus", this._showDatepicker ).
				off( "keydown", this._doKeyDown ).
				off( "keypress", this._doKeyPress ).
				off( "keyup", this._doKeyUp );
		} else if ( nodeName === "div" || nodeName === "span" ) {
			$target.removeClass( this.markerClassName ).empty();
		}

		if ( datepicker_instActive === inst ) {
			datepicker_instActive = null;
		}
	},

	/* Enable the date picker to a jQuery selection.
	 * @param  target	element - the target input field or division or span
	 */
	_enableDatepicker: function( target ) {
		var nodeName, inline,
			$target = $( target ),
			inst = $.data( target, "datepicker" );

		if ( !$target.hasClass( this.markerClassName ) ) {
			return;
		}

		nodeName = target.nodeName.toLowerCase();
		if ( nodeName === "input" ) {
			target.disabled = false;
			inst.trigger.filter( "button" ).
				each( function() { this.disabled = false; } ).end().
				filter( "img" ).css( { opacity: "1.0", cursor: "" } );
		} else if ( nodeName === "div" || nodeName === "span" ) {
			inline = $target.children( "." + this._inlineClass );
			inline.children().removeClass( "ui-state-disabled" );
			inline.find( "select.ui-datepicker-month, select.ui-datepicker-year" ).
				prop( "disabled", false );
		}
		this._disabledInputs = $.map( this._disabledInputs,
			function( value ) { return ( value === target ? null : value ); } ); // delete entry
	},

	/* Disable the date picker to a jQuery selection.
	 * @param  target	element - the target input field or division or span
	 */
	_disableDatepicker: function( target ) {
		var nodeName, inline,
			$target = $( target ),
			inst = $.data( target, "datepicker" );

		if ( !$target.hasClass( this.markerClassName ) ) {
			return;
		}

		nodeName = target.nodeName.toLowerCase();
		if ( nodeName === "input" ) {
			target.disabled = true;
			inst.trigger.filter( "button" ).
				each( function() { this.disabled = true; } ).end().
				filter( "img" ).css( { opacity: "0.5", cursor: "default" } );
		} else if ( nodeName === "div" || nodeName === "span" ) {
			inline = $target.children( "." + this._inlineClass );
			inline.children().addClass( "ui-state-disabled" );
			inline.find( "select.ui-datepicker-month, select.ui-datepicker-year" ).
				prop( "disabled", true );
		}
		this._disabledInputs = $.map( this._disabledInputs,
			function( value ) { return ( value === target ? null : value ); } ); // delete entry
		this._disabledInputs[ this._disabledInputs.length ] = target;
	},

	/* Is the first field in a jQuery collection disabled as a datepicker?
	 * @param  target	element - the target input field or division or span
	 * @return boolean - true if disabled, false if enabled
	 */
	_isDisabledDatepicker: function( target ) {
		if ( !target ) {
			return false;
		}
		for ( var i = 0; i < this._disabledInputs.length; i++ ) {
			if ( this._disabledInputs[ i ] === target ) {
				return true;
			}
		}
		return false;
	},

	/* Retrieve the instance data for the target control.
	 * @param  target  element - the target input field or division or span
	 * @return  object - the associated instance data
	 * @throws  error if a jQuery problem getting data
	 */
	_getInst: function( target ) {
		try {
			return $.data( target, "datepicker" );
		}
		catch ( err ) {
			throw "Missing instance data for this datepicker";
		}
	},

	/* Update or retrieve the settings for a date picker attached to an input field or division.
	 * @param  target  element - the target input field or division or span
	 * @param  name	object - the new settings to update or
	 *				string - the name of the setting to change or retrieve,
	 *				when retrieving also "all" for all instance settings or
	 *				"defaults" for all global defaults
	 * @param  value   any - the new value for the setting
	 *				(omit if above is an object or to retrieve a value)
	 */
	_optionDatepicker: function( target, name, value ) {
		var settings, date, minDate, maxDate,
			inst = this._getInst( target );

		if ( arguments.length === 2 && typeof name === "string" ) {
			return ( name === "defaults" ? $.extend( {}, $.datepicker._defaults ) :
				( inst ? ( name === "all" ? $.extend( {}, inst.settings ) :
				this._get( inst, name ) ) : null ) );
		}

		settings = name || {};
		if ( typeof name === "string" ) {
			settings = {};
			settings[ name ] = value;
		}

		if ( inst ) {
			if ( this._curInst === inst ) {
				this._hideDatepicker();
			}

			date = this._getDateDatepicker( target, true );
			minDate = this._getMinMaxDate( inst, "min" );
			maxDate = this._getMinMaxDate( inst, "max" );
			datepicker_extendRemove( inst.settings, settings );

			// reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided
			if ( minDate !== null && settings.dateFormat !== undefined && settings.minDate === undefined ) {
				inst.settings.minDate = this._formatDate( inst, minDate );
			}
			if ( maxDate !== null && settings.dateFormat !== undefined && settings.maxDate === undefined ) {
				inst.settings.maxDate = this._formatDate( inst, maxDate );
			}
			if ( "disabled" in settings ) {
				if ( settings.disabled ) {
					this._disableDatepicker( target );
				} else {
					this._enableDatepicker( target );
				}
			}
			this._attachments( $( target ), inst );
			this._autoSize( inst );
			this._setDate( inst, date );
			this._updateAlternate( inst );
			this._updateDatepicker( inst );
		}
	},

	// Change method deprecated
	_changeDatepicker: function( target, name, value ) {
		this._optionDatepicker( target, name, value );
	},

	/* Redraw the date picker attached to an input field or division.
	 * @param  target  element - the target input field or division or span
	 */
	_refreshDatepicker: function( target ) {
		var inst = this._getInst( target );
		if ( inst ) {
			this._updateDatepicker( inst );
		}
	},

	/* Set the dates for a jQuery selection.
	 * @param  target element - the target input field or division or span
	 * @param  date	Date - the new date
	 */
	_setDateDatepicker: function( target, date ) {
		var inst = this._getInst( target );
		if ( inst ) {
			this._setDate( inst, date );
			this._updateDatepicker( inst );
			this._updateAlternate( inst );
		}
	},

	/* Get the date(s) for the first entry in a jQuery selection.
	 * @param  target element - the target input field or division or span
	 * @param  noDefault boolean - true if no default date is to be used
	 * @return Date - the current date
	 */
	_getDateDatepicker: function( target, noDefault ) {
		var inst = this._getInst( target );
		if ( inst && !inst.inline ) {
			this._setDateFromField( inst, noDefault );
		}
		return ( inst ? this._getDate( inst ) : null );
	},

	/* Handle keystrokes. */
	_doKeyDown: function( event ) {
		var onSelect, dateStr, sel,
			inst = $.datepicker._getInst( event.target ),
			handled = true,
			isRTL = inst.dpDiv.is( ".ui-datepicker-rtl" );

		inst._keyEvent = true;
		if ( $.datepicker._datepickerShowing ) {
			switch ( event.keyCode ) {
				case 9: $.datepicker._hideDatepicker();
						handled = false;
						break; // hide on tab out
				case 13: sel = $( "td." + $.datepicker._dayOverClass + ":not(." +
									$.datepicker._currentClass + ")", inst.dpDiv );
						if ( sel[ 0 ] ) {
							$.datepicker._selectDay( event.target, inst.selectedMonth, inst.selectedYear, sel[ 0 ] );
						}

						onSelect = $.datepicker._get( inst, "onSelect" );
						if ( onSelect ) {
							dateStr = $.datepicker._formatDate( inst );

							// Trigger custom callback
							onSelect.apply( ( inst.input ? inst.input[ 0 ] : null ), [ dateStr, inst ] );
						} else {
							$.datepicker._hideDatepicker();
						}

						return false; // don't submit the form
				case 27: $.datepicker._hideDatepicker();
						break; // hide on escape
				case 33: $.datepicker._adjustDate( event.target, ( event.ctrlKey ?
							-$.datepicker._get( inst, "stepBigMonths" ) :
							-$.datepicker._get( inst, "stepMonths" ) ), "M" );
						break; // previous month/year on page up/+ ctrl
				case 34: $.datepicker._adjustDate( event.target, ( event.ctrlKey ?
							+$.datepicker._get( inst, "stepBigMonths" ) :
							+$.datepicker._get( inst, "stepMonths" ) ), "M" );
						break; // next month/year on page down/+ ctrl
				case 35: if ( event.ctrlKey || event.metaKey ) {
							$.datepicker._clearDate( event.target );
						}
						handled = event.ctrlKey || event.metaKey;
						break; // clear on ctrl or command +end
				case 36: if ( event.ctrlKey || event.metaKey ) {
							$.datepicker._gotoToday( event.target );
						}
						handled = event.ctrlKey || event.metaKey;
						break; // current on ctrl or command +home
				case 37: if ( event.ctrlKey || event.metaKey ) {
							$.datepicker._adjustDate( event.target, ( isRTL ? +1 : -1 ), "D" );
						}
						handled = event.ctrlKey || event.metaKey;

						// -1 day on ctrl or command +left
						if ( event.originalEvent.altKey ) {
							$.datepicker._adjustDate( event.target, ( event.ctrlKey ?
								-$.datepicker._get( inst, "stepBigMonths" ) :
								-$.datepicker._get( inst, "stepMonths" ) ), "M" );
						}

						// next month/year on alt +left on Mac
						break;
				case 38: if ( event.ctrlKey || event.metaKey ) {
							$.datepicker._adjustDate( event.target, -7, "D" );
						}
						handled = event.ctrlKey || event.metaKey;
						break; // -1 week on ctrl or command +up
				case 39: if ( event.ctrlKey || event.metaKey ) {
							$.datepicker._adjustDate( event.target, ( isRTL ? -1 : +1 ), "D" );
						}
						handled = event.ctrlKey || event.metaKey;

						// +1 day on ctrl or command +right
						if ( event.originalEvent.altKey ) {
							$.datepicker._adjustDate( event.target, ( event.ctrlKey ?
								+$.datepicker._get( inst, "stepBigMonths" ) :
								+$.datepicker._get( inst, "stepMonths" ) ), "M" );
						}

						// next month/year on alt +right
						break;
				case 40: if ( event.ctrlKey || event.metaKey ) {
							$.datepicker._adjustDate( event.target, +7, "D" );
						}
						handled = event.ctrlKey || event.metaKey;
						break; // +1 week on ctrl or command +down
				default: handled = false;
			}
		} else if ( event.keyCode === 36 && event.ctrlKey ) { // display the date picker on ctrl+home
			$.datepicker._showDatepicker( this );
		} else {
			handled = false;
		}

		if ( handled ) {
			event.preventDefault();
			event.stopPropagation();
		}
	},

	/* Filter entered characters - based on date format. */
	_doKeyPress: function( event ) {
		var chars, chr,
			inst = $.datepicker._getInst( event.target );

		if ( $.datepicker._get( inst, "constrainInput" ) ) {
			chars = $.datepicker._possibleChars( $.datepicker._get( inst, "dateFormat" ) );
			chr = String.fromCharCode( event.charCode == null ? event.keyCode : event.charCode );
			return event.ctrlKey || event.metaKey || ( chr < " " || !chars || chars.indexOf( chr ) > -1 );
		}
	},

	/* Synchronise manual entry and field/alternate field. */
	_doKeyUp: function( event ) {
		var date,
			inst = $.datepicker._getInst( event.target );

		if ( inst.input.val() !== inst.lastVal ) {
			try {
				date = $.datepicker.parseDate( $.datepicker._get( inst, "dateFormat" ),
					( inst.input ? inst.input.val() : null ),
					$.datepicker._getFormatConfig( inst ) );

				if ( date ) { // only if valid
					$.datepicker._setDateFromField( inst );
					$.datepicker._updateAlternate( inst );
					$.datepicker._updateDatepicker( inst );
				}
			}
			catch ( err ) {
			}
		}
		return true;
	},

	/* Pop-up the date picker for a given input field.
	 * If false returned from beforeShow event handler do not show.
	 * @param  input  element - the input field attached to the date picker or
	 *					event - if triggered by focus
	 */
	_showDatepicker: function( input ) {
		input = input.target || input;
		if ( input.nodeName.toLowerCase() !== "input" ) { // find from button/image trigger
			input = $( "input", input.parentNode )[ 0 ];
		}

		if ( $.datepicker._isDisabledDatepicker( input ) || $.datepicker._lastInput === input ) { // already here
			return;
		}

		var inst, beforeShow, beforeShowSettings, isFixed,
			offset, showAnim, duration;

		inst = $.datepicker._getInst( input );
		if ( $.datepicker._curInst && $.datepicker._curInst !== inst ) {
			$.datepicker._curInst.dpDiv.stop( true, true );
			if ( inst && $.datepicker._datepickerShowing ) {
				$.datepicker._hideDatepicker( $.datepicker._curInst.input[ 0 ] );
			}
		}

		beforeShow = $.datepicker._get( inst, "beforeShow" );
		beforeShowSettings = beforeShow ? beforeShow.apply( input, [ input, inst ] ) : {};
		if ( beforeShowSettings === false ) {
			return;
		}
		datepicker_extendRemove( inst.settings, beforeShowSettings );

		inst.lastVal = null;
		$.datepicker._lastInput = input;
		$.datepicker._setDateFromField( inst );

		if ( $.datepicker._inDialog ) { // hide cursor
			input.value = "";
		}
		if ( !$.datepicker._pos ) { // position below input
			$.datepicker._pos = $.datepicker._findPos( input );
			$.datepicker._pos[ 1 ] += input.offsetHeight; // add the height
		}

		isFixed = false;
		$( input ).parents().each( function() {
			isFixed |= $( this ).css( "position" ) === "fixed";
			return !isFixed;
		} );

		offset = { left: $.datepicker._pos[ 0 ], top: $.datepicker._pos[ 1 ] };
		$.datepicker._pos = null;

		//to avoid flashes on Firefox
		inst.dpDiv.empty();

		// determine sizing offscreen
		inst.dpDiv.css( { position: "absolute", display: "block", top: "-1000px" } );
		$.datepicker._updateDatepicker( inst );

		// fix width for dynamic number of date pickers
		// and adjust position before showing
		offset = $.datepicker._checkOffset( inst, offset, isFixed );
		inst.dpDiv.css( { position: ( $.datepicker._inDialog && $.blockUI ?
			"static" : ( isFixed ? "fixed" : "absolute" ) ), display: "none",
			left: offset.left + "px", top: offset.top + "px" } );

		if ( !inst.inline ) {
			showAnim = $.datepicker._get( inst, "showAnim" );
			duration = $.datepicker._get( inst, "duration" );
			inst.dpDiv.css( "z-index", datepicker_getZindex( $( input ) ) + 1 );
			$.datepicker._datepickerShowing = true;

			if ( $.effects && $.effects.effect[ showAnim ] ) {
				inst.dpDiv.show( showAnim, $.datepicker._get( inst, "showOptions" ), duration );
			} else {
				inst.dpDiv[ showAnim || "show" ]( showAnim ? duration : null );
			}

			if ( $.datepicker._shouldFocusInput( inst ) ) {
				inst.input.trigger( "focus" );
			}

			$.datepicker._curInst = inst;
		}
	},

	/* Generate the date picker content. */
	_updateDatepicker: function( inst ) {
		this.maxRows = 4; //Reset the max number of rows being displayed (see #7043)
		datepicker_instActive = inst; // for delegate hover events
		inst.dpDiv.empty().append( this._generateHTML( inst ) );
		this._attachHandlers( inst );

		var origyearshtml,
			numMonths = this._getNumberOfMonths( inst ),
			cols = numMonths[ 1 ],
			width = 17,
			activeCell = inst.dpDiv.find( "." + this._dayOverClass + " a" );

		if ( activeCell.length > 0 ) {
			datepicker_handleMouseover.apply( activeCell.get( 0 ) );
		}

		inst.dpDiv.removeClass( "ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4" ).width( "" );
		if ( cols > 1 ) {
			inst.dpDiv.addClass( "ui-datepicker-multi-" + cols ).css( "width", ( width * cols ) + "em" );
		}
		inst.dpDiv[ ( numMonths[ 0 ] !== 1 || numMonths[ 1 ] !== 1 ? "add" : "remove" ) +
			"Class" ]( "ui-datepicker-multi" );
		inst.dpDiv[ ( this._get( inst, "isRTL" ) ? "add" : "remove" ) +
			"Class" ]( "ui-datepicker-rtl" );

		if ( inst === $.datepicker._curInst && $.datepicker._datepickerShowing && $.datepicker._shouldFocusInput( inst ) ) {
			inst.input.trigger( "focus" );
		}

		// Deffered render of the years select (to avoid flashes on Firefox)
		if ( inst.yearshtml ) {
			origyearshtml = inst.yearshtml;
			setTimeout( function() {

				//assure that inst.yearshtml didn't change.
				if ( origyearshtml === inst.yearshtml && inst.yearshtml ) {
					inst.dpDiv.find( "select.ui-datepicker-year:first" ).replaceWith( inst.yearshtml );
				}
				origyearshtml = inst.yearshtml = null;
			}, 0 );
		}
	},

	// #6694 - don't focus the input if it's already focused
	// this breaks the change event in IE
	// Support: IE and jQuery <1.9
	_shouldFocusInput: function( inst ) {
		return inst.input && inst.input.is( ":visible" ) && !inst.input.is( ":disabled" ) && !inst.input.is( ":focus" );
	},

	/* Check positioning to remain on screen. */
	_checkOffset: function( inst, offset, isFixed ) {
		var dpWidth = inst.dpDiv.outerWidth(),
			dpHeight = inst.dpDiv.outerHeight(),
			inputWidth = inst.input ? inst.input.outerWidth() : 0,
			inputHeight = inst.input ? inst.input.outerHeight() : 0,
			viewWidth = document.documentElement.clientWidth + ( isFixed ? 0 : $( document ).scrollLeft() ),
			viewHeight = document.documentElement.clientHeight + ( isFixed ? 0 : $( document ).scrollTop() );

		offset.left -= ( this._get( inst, "isRTL" ) ? ( dpWidth - inputWidth ) : 0 );
		offset.left -= ( isFixed && offset.left === inst.input.offset().left ) ? $( document ).scrollLeft() : 0;
		offset.top -= ( isFixed && offset.top === ( inst.input.offset().top + inputHeight ) ) ? $( document ).scrollTop() : 0;

		// Now check if datepicker is showing outside window viewport - move to a better place if so.
		offset.left -= Math.min( offset.left, ( offset.left + dpWidth > viewWidth && viewWidth > dpWidth ) ?
			Math.abs( offset.left + dpWidth - viewWidth ) : 0 );
		offset.top -= Math.min( offset.top, ( offset.top + dpHeight > viewHeight && viewHeight > dpHeight ) ?
			Math.abs( dpHeight + inputHeight ) : 0 );

		return offset;
	},

	/* Find an object's position on the screen. */
	_findPos: function( obj ) {
		var position,
			inst = this._getInst( obj ),
			isRTL = this._get( inst, "isRTL" );

		while ( obj && ( obj.type === "hidden" || obj.nodeType !== 1 || $.expr.filters.hidden( obj ) ) ) {
			obj = obj[ isRTL ? "previousSibling" : "nextSibling" ];
		}

		position = $( obj ).offset();
		return [ position.left, position.top ];
	},

	/* Hide the date picker from view.
	 * @param  input  element - the input field attached to the date picker
	 */
	_hideDatepicker: function( input ) {
		var showAnim, duration, postProcess, onClose,
			inst = this._curInst;

		if ( !inst || ( input && inst !== $.data( input, "datepicker" ) ) ) {
			return;
		}

		if ( this._datepickerShowing ) {
			showAnim = this._get( inst, "showAnim" );
			duration = this._get( inst, "duration" );
			postProcess = function() {
				$.datepicker._tidyDialog( inst );
			};

			// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed
			if ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) {
				inst.dpDiv.hide( showAnim, $.datepicker._get( inst, "showOptions" ), duration, postProcess );
			} else {
				inst.dpDiv[ ( showAnim === "slideDown" ? "slideUp" :
					( showAnim === "fadeIn" ? "fadeOut" : "hide" ) ) ]( ( showAnim ? duration : null ), postProcess );
			}

			if ( !showAnim ) {
				postProcess();
			}
			this._datepickerShowing = false;

			onClose = this._get( inst, "onClose" );
			if ( onClose ) {
				onClose.apply( ( inst.input ? inst.input[ 0 ] : null ), [ ( inst.input ? inst.input.val() : "" ), inst ] );
			}

			this._lastInput = null;
			if ( this._inDialog ) {
				this._dialogInput.css( { position: "absolute", left: "0", top: "-100px" } );
				if ( $.blockUI ) {
					$.unblockUI();
					$( "body" ).append( this.dpDiv );
				}
			}
			this._inDialog = false;
		}
	},

	/* Tidy up after a dialog display. */
	_tidyDialog: function( inst ) {
		inst.dpDiv.removeClass( this._dialogClass ).off( ".ui-datepicker-calendar" );
	},

	/* Close date picker if clicked elsewhere. */
	_checkExternalClick: function( event ) {
		if ( !$.datepicker._curInst ) {
			return;
		}

		var $target = $( event.target ),
			inst = $.datepicker._getInst( $target[ 0 ] );

		if ( ( ( $target[ 0 ].id !== $.datepicker._mainDivId &&
				$target.parents( "#" + $.datepicker._mainDivId ).length === 0 &&
				!$target.hasClass( $.datepicker.markerClassName ) &&
				!$target.closest( "." + $.datepicker._triggerClass ).length &&
				$.datepicker._datepickerShowing && !( $.datepicker._inDialog && $.blockUI ) ) ) ||
			( $target.hasClass( $.datepicker.markerClassName ) && $.datepicker._curInst !== inst ) ) {
				$.datepicker._hideDatepicker();
		}
	},

	/* Adjust one of the date sub-fields. */
	_adjustDate: function( id, offset, period ) {
		var target = $( id ),
			inst = this._getInst( target[ 0 ] );

		if ( this._isDisabledDatepicker( target[ 0 ] ) ) {
			return;
		}
		this._adjustInstDate( inst, offset +
			( period === "M" ? this._get( inst, "showCurrentAtPos" ) : 0 ), // undo positioning
			period );
		this._updateDatepicker( inst );
	},

	/* Action for current link. */
	_gotoToday: function( id ) {
		var date,
			target = $( id ),
			inst = this._getInst( target[ 0 ] );

		if ( this._get( inst, "gotoCurrent" ) && inst.currentDay ) {
			inst.selectedDay = inst.currentDay;
			inst.drawMonth = inst.selectedMonth = inst.currentMonth;
			inst.drawYear = inst.selectedYear = inst.currentYear;
		} else {
			date = new Date();
			inst.selectedDay = date.getDate();
			inst.drawMonth = inst.selectedMonth = date.getMonth();
			inst.drawYear = inst.selectedYear = date.getFullYear();
		}
		this._notifyChange( inst );
		this._adjustDate( target );
	},

	/* Action for selecting a new month/year. */
	_selectMonthYear: function( id, select, period ) {
		var target = $( id ),
			inst = this._getInst( target[ 0 ] );

		inst[ "selected" + ( period === "M" ? "Month" : "Year" ) ] =
		inst[ "draw" + ( period === "M" ? "Month" : "Year" ) ] =
			parseInt( select.options[ select.selectedIndex ].value, 10 );

		this._notifyChange( inst );
		this._adjustDate( target );
	},

	/* Action for selecting a day. */
	_selectDay: function( id, month, year, td ) {
		var inst,
			target = $( id );

		if ( $( td ).hasClass( this._unselectableClass ) || this._isDisabledDatepicker( target[ 0 ] ) ) {
			return;
		}

		inst = this._getInst( target[ 0 ] );
		inst.selectedDay = inst.currentDay = $( "a", td ).html();
		inst.selectedMonth = inst.currentMonth = month;
		inst.selectedYear = inst.currentYear = year;
		this._selectDate( id, this._formatDate( inst,
			inst.currentDay, inst.currentMonth, inst.currentYear ) );
	},

	/* Erase the input field and hide the date picker. */
	_clearDate: function( id ) {
		var target = $( id );
		this._selectDate( target, "" );
	},

	/* Update the input field with the selected date. */
	_selectDate: function( id, dateStr ) {
		var onSelect,
			target = $( id ),
			inst = this._getInst( target[ 0 ] );

		dateStr = ( dateStr != null ? dateStr : this._formatDate( inst ) );
		if ( inst.input ) {
			inst.input.val( dateStr );
		}
		this._updateAlternate( inst );

		onSelect = this._get( inst, "onSelect" );
		if ( onSelect ) {
			onSelect.apply( ( inst.input ? inst.input[ 0 ] : null ), [ dateStr, inst ] );  // trigger custom callback
		} else if ( inst.input ) {
			inst.input.trigger( "change" ); // fire the change event
		}

		if ( inst.inline ) {
			this._updateDatepicker( inst );
		} else {
			this._hideDatepicker();
			this._lastInput = inst.input[ 0 ];
			if ( typeof( inst.input[ 0 ] ) !== "object" ) {
				inst.input.trigger( "focus" ); // restore focus
			}
			this._lastInput = null;
		}
	},

	/* Update any alternate field to synchronise with the main field. */
	_updateAlternate: function( inst ) {
		var altFormat, date, dateStr,
			altField = this._get( inst, "altField" );

		if ( altField ) { // update alternate field too
			altFormat = this._get( inst, "altFormat" ) || this._get( inst, "dateFormat" );
			date = this._getDate( inst );
			dateStr = this.formatDate( altFormat, date, this._getFormatConfig( inst ) );
			$( altField ).val( dateStr );
		}
	},

	/* Set as beforeShowDay function to prevent selection of weekends.
	 * @param  date  Date - the date to customise
	 * @return [boolean, string] - is this date selectable?, what is its CSS class?
	 */
	noWeekends: function( date ) {
		var day = date.getDay();
		return [ ( day > 0 && day < 6 ), "" ];
	},

	/* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.
	 * @param  date  Date - the date to get the week for
	 * @return  number - the number of the week within the year that contains this date
	 */
	iso8601Week: function( date ) {
		var time,
			checkDate = new Date( date.getTime() );

		// Find Thursday of this week starting on Monday
		checkDate.setDate( checkDate.getDate() + 4 - ( checkDate.getDay() || 7 ) );

		time = checkDate.getTime();
		checkDate.setMonth( 0 ); // Compare with Jan 1
		checkDate.setDate( 1 );
		return Math.floor( Math.round( ( time - checkDate ) / 86400000 ) / 7 ) + 1;
	},

	/* Parse a string value into a date object.
	 * See formatDate below for the possible formats.
	 *
	 * @param  format string - the expected format of the date
	 * @param  value string - the date in the above format
	 * @param  settings Object - attributes include:
	 *					shortYearCutoff  number - the cutoff year for determining the century (optional)
	 *					dayNamesShort	string[7] - abbreviated names of the days from Sunday (optional)
	 *					dayNames		string[7] - names of the days from Sunday (optional)
	 *					monthNamesShort string[12] - abbreviated names of the months (optional)
	 *					monthNames		string[12] - names of the months (optional)
	 * @return  Date - the extracted date value or null if value is blank
	 */
	parseDate: function( format, value, settings ) {
		if ( format == null || value == null ) {
			throw "Invalid arguments";
		}

		value = ( typeof value === "object" ? value.toString() : value + "" );
		if ( value === "" ) {
			return null;
		}

		var iFormat, dim, extra,
			iValue = 0,
			shortYearCutoffTemp = ( settings ? settings.shortYearCutoff : null ) || this._defaults.shortYearCutoff,
			shortYearCutoff = ( typeof shortYearCutoffTemp !== "string" ? shortYearCutoffTemp :
				new Date().getFullYear() % 100 + parseInt( shortYearCutoffTemp, 10 ) ),
			dayNamesShort = ( settings ? settings.dayNamesShort : null ) || this._defaults.dayNamesShort,
			dayNames = ( settings ? settings.dayNames : null ) || this._defaults.dayNames,
			monthNamesShort = ( settings ? settings.monthNamesShort : null ) || this._defaults.monthNamesShort,
			monthNames = ( settings ? settings.monthNames : null ) || this._defaults.monthNames,
			year = -1,
			month = -1,
			day = -1,
			doy = -1,
			literal = false,
			date,

			// Check whether a format character is doubled
			lookAhead = function( match ) {
				var matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );
				if ( matches ) {
					iFormat++;
				}
				return matches;
			},

			// Extract a number from the string value
			getNumber = function( match ) {
				var isDoubled = lookAhead( match ),
					size = ( match === "@" ? 14 : ( match === "!" ? 20 :
					( match === "y" && isDoubled ? 4 : ( match === "o" ? 3 : 2 ) ) ) ),
					minSize = ( match === "y" ? size : 1 ),
					digits = new RegExp( "^\\d{" + minSize + "," + size + "}" ),
					num = value.substring( iValue ).match( digits );
				if ( !num ) {
					throw "Missing number at position " + iValue;
				}
				iValue += num[ 0 ].length;
				return parseInt( num[ 0 ], 10 );
			},

			// Extract a name from the string value and convert to an index
			getName = function( match, shortNames, longNames ) {
				var index = -1,
					names = $.map( lookAhead( match ) ? longNames : shortNames, function( v, k ) {
						return [ [ k, v ] ];
					} ).sort( function( a, b ) {
						return -( a[ 1 ].length - b[ 1 ].length );
					} );

				$.each( names, function( i, pair ) {
					var name = pair[ 1 ];
					if ( value.substr( iValue, name.length ).toLowerCase() === name.toLowerCase() ) {
						index = pair[ 0 ];
						iValue += name.length;
						return false;
					}
				} );
				if ( index !== -1 ) {
					return index + 1;
				} else {
					throw "Unknown name at position " + iValue;
				}
			},

			// Confirm that a literal character matches the string value
			checkLiteral = function() {
				if ( value.charAt( iValue ) !== format.charAt( iFormat ) ) {
					throw "Unexpected literal at position " + iValue;
				}
				iValue++;
			};

		for ( iFormat = 0; iFormat < format.length; iFormat++ ) {
			if ( literal ) {
				if ( format.charAt( iFormat ) === "'" && !lookAhead( "'" ) ) {
					literal = false;
				} else {
					checkLiteral();
				}
			} else {
				switch ( format.charAt( iFormat ) ) {
					case "d":
						day = getNumber( "d" );
						break;
					case "D":
						getName( "D", dayNamesShort, dayNames );
						break;
					case "o":
						doy = getNumber( "o" );
						break;
					case "m":
						month = getNumber( "m" );
						break;
					case "M":
						month = getName( "M", monthNamesShort, monthNames );
						break;
					case "y":
						year = getNumber( "y" );
						break;
					case "@":
						date = new Date( getNumber( "@" ) );
						year = date.getFullYear();
						month = date.getMonth() + 1;
						day = date.getDate();
						break;
					case "!":
						date = new Date( ( getNumber( "!" ) - this._ticksTo1970 ) / 10000 );
						year = date.getFullYear();
						month = date.getMonth() + 1;
						day = date.getDate();
						break;
					case "'":
						if ( lookAhead( "'" ) ) {
							checkLiteral();
						} else {
							literal = true;
						}
						break;
					default:
						checkLiteral();
				}
			}
		}

		if ( iValue < value.length ) {
			extra = value.substr( iValue );
			if ( !/^\s+/.test( extra ) ) {
				throw "Extra/unparsed characters found in date: " + extra;
			}
		}

		if ( year === -1 ) {
			year = new Date().getFullYear();
		} else if ( year < 100 ) {
			year += new Date().getFullYear() - new Date().getFullYear() % 100 +
				( year <= shortYearCutoff ? 0 : -100 );
		}

		if ( doy > -1 ) {
			month = 1;
			day = doy;
			do {
				dim = this._getDaysInMonth( year, month - 1 );
				if ( day <= dim ) {
					break;
				}
				month++;
				day -= dim;
			} while ( true );
		}

		date = this._daylightSavingAdjust( new Date( year, month - 1, day ) );
		if ( date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day ) {
			throw "Invalid date"; // E.g. 31/02/00
		}
		return date;
	},

	/* Standard date formats. */
	ATOM: "yy-mm-dd", // RFC 3339 (ISO 8601)
	COOKIE: "D, dd M yy",
	ISO_8601: "yy-mm-dd",
	RFC_822: "D, d M y",
	RFC_850: "DD, dd-M-y",
	RFC_1036: "D, d M y",
	RFC_1123: "D, d M yy",
	RFC_2822: "D, d M yy",
	RSS: "D, d M y", // RFC 822
	TICKS: "!",
	TIMESTAMP: "@",
	W3C: "yy-mm-dd", // ISO 8601

	_ticksTo1970: ( ( ( 1970 - 1 ) * 365 + Math.floor( 1970 / 4 ) - Math.floor( 1970 / 100 ) +
		Math.floor( 1970 / 400 ) ) * 24 * 60 * 60 * 10000000 ),

	/* Format a date object into a string value.
	 * The format can be combinations of the following:
	 * d  - day of month (no leading zero)
	 * dd - day of month (two digit)
	 * o  - day of year (no leading zeros)
	 * oo - day of year (three digit)
	 * D  - day name short
	 * DD - day name long
	 * m  - month of year (no leading zero)
	 * mm - month of year (two digit)
	 * M  - month name short
	 * MM - month name long
	 * y  - year (two digit)
	 * yy - year (four digit)
	 * @ - Unix timestamp (ms since 01/01/1970)
	 * ! - Windows ticks (100ns since 01/01/0001)
	 * "..." - literal text
	 * '' - single quote
	 *
	 * @param  format string - the desired format of the date
	 * @param  date Date - the date value to format
	 * @param  settings Object - attributes include:
	 *					dayNamesShort	string[7] - abbreviated names of the days from Sunday (optional)
	 *					dayNames		string[7] - names of the days from Sunday (optional)
	 *					monthNamesShort string[12] - abbreviated names of the months (optional)
	 *					monthNames		string[12] - names of the months (optional)
	 * @return  string - the date in the above format
	 */
	formatDate: function( format, date, settings ) {
		if ( !date ) {
			return "";
		}

		var iFormat,
			dayNamesShort = ( settings ? settings.dayNamesShort : null ) || this._defaults.dayNamesShort,
			dayNames = ( settings ? settings.dayNames : null ) || this._defaults.dayNames,
			monthNamesShort = ( settings ? settings.monthNamesShort : null ) || this._defaults.monthNamesShort,
			monthNames = ( settings ? settings.monthNames : null ) || this._defaults.monthNames,

			// Check whether a format character is doubled
			lookAhead = function( match ) {
				var matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );
				if ( matches ) {
					iFormat++;
				}
				return matches;
			},

			// Format a number, with leading zero if necessary
			formatNumber = function( match, value, len ) {
				var num = "" + value;
				if ( lookAhead( match ) ) {
					while ( num.length < len ) {
						num = "0" + num;
					}
				}
				return num;
			},

			// Format a name, short or long as requested
			formatName = function( match, value, shortNames, longNames ) {
				return ( lookAhead( match ) ? longNames[ value ] : shortNames[ value ] );
			},
			output = "",
			literal = false;

		if ( date ) {
			for ( iFormat = 0; iFormat < format.length; iFormat++ ) {
				if ( literal ) {
					if ( format.charAt( iFormat ) === "'" && !lookAhead( "'" ) ) {
						literal = false;
					} else {
						output += format.charAt( iFormat );
					}
				} else {
					switch ( format.charAt( iFormat ) ) {
						case "d":
							output += formatNumber( "d", date.getDate(), 2 );
							break;
						case "D":
							output += formatName( "D", date.getDay(), dayNamesShort, dayNames );
							break;
						case "o":
							output += formatNumber( "o",
								Math.round( ( new Date( date.getFullYear(), date.getMonth(), date.getDate() ).getTime() - new Date( date.getFullYear(), 0, 0 ).getTime() ) / 86400000 ), 3 );
							break;
						case "m":
							output += formatNumber( "m", date.getMonth() + 1, 2 );
							break;
						case "M":
							output += formatName( "M", date.getMonth(), monthNamesShort, monthNames );
							break;
						case "y":
							output += ( lookAhead( "y" ) ? date.getFullYear() :
								( date.getFullYear() % 100 < 10 ? "0" : "" ) + date.getFullYear() % 100 );
							break;
						case "@":
							output += date.getTime();
							break;
						case "!":
							output += date.getTime() * 10000 + this._ticksTo1970;
							break;
						case "'":
							if ( lookAhead( "'" ) ) {
								output += "'";
							} else {
								literal = true;
							}
							break;
						default:
							output += format.charAt( iFormat );
					}
				}
			}
		}
		return output;
	},

	/* Extract all possible characters from the date format. */
	_possibleChars: function( format ) {
		var iFormat,
			chars = "",
			literal = false,

			// Check whether a format character is doubled
			lookAhead = function( match ) {
				var matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );
				if ( matches ) {
					iFormat++;
				}
				return matches;
			};

		for ( iFormat = 0; iFormat < format.length; iFormat++ ) {
			if ( literal ) {
				if ( format.charAt( iFormat ) === "'" && !lookAhead( "'" ) ) {
					literal = false;
				} else {
					chars += format.charAt( iFormat );
				}
			} else {
				switch ( format.charAt( iFormat ) ) {
					case "d": case "m": case "y": case "@":
						chars += "0123456789";
						break;
					case "D": case "M":
						return null; // Accept anything
					case "'":
						if ( lookAhead( "'" ) ) {
							chars += "'";
						} else {
							literal = true;
						}
						break;
					default:
						chars += format.charAt( iFormat );
				}
			}
		}
		return chars;
	},

	/* Get a setting value, defaulting if necessary. */
	_get: function( inst, name ) {
		return inst.settings[ name ] !== undefined ?
			inst.settings[ name ] : this._defaults[ name ];
	},

	/* Parse existing date and initialise date picker. */
	_setDateFromField: function( inst, noDefault ) {
		if ( inst.input.val() === inst.lastVal ) {
			return;
		}

		var dateFormat = this._get( inst, "dateFormat" ),
			dates = inst.lastVal = inst.input ? inst.input.val() : null,
			defaultDate = this._getDefaultDate( inst ),
			date = defaultDate,
			settings = this._getFormatConfig( inst );

		try {
			date = this.parseDate( dateFormat, dates, settings ) || defaultDate;
		} catch ( event ) {
			dates = ( noDefault ? "" : dates );
		}
		inst.selectedDay = date.getDate();
		inst.drawMonth = inst.selectedMonth = date.getMonth();
		inst.drawYear = inst.selectedYear = date.getFullYear();
		inst.currentDay = ( dates ? date.getDate() : 0 );
		inst.currentMonth = ( dates ? date.getMonth() : 0 );
		inst.currentYear = ( dates ? date.getFullYear() : 0 );
		this._adjustInstDate( inst );
	},

	/* Retrieve the default date shown on opening. */
	_getDefaultDate: function( inst ) {
		return this._restrictMinMax( inst,
			this._determineDate( inst, this._get( inst, "defaultDate" ), new Date() ) );
	},

	/* A date may be specified as an exact value or a relative one. */
	_determineDate: function( inst, date, defaultDate ) {
		var offsetNumeric = function( offset ) {
				var date = new Date();
				date.setDate( date.getDate() + offset );
				return date;
			},
			offsetString = function( offset ) {
				try {
					return $.datepicker.parseDate( $.datepicker._get( inst, "dateFormat" ),
						offset, $.datepicker._getFormatConfig( inst ) );
				}
				catch ( e ) {

					// Ignore
				}

				var date = ( offset.toLowerCase().match( /^c/ ) ?
					$.datepicker._getDate( inst ) : null ) || new Date(),
					year = date.getFullYear(),
					month = date.getMonth(),
					day = date.getDate(),
					pattern = /([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,
					matches = pattern.exec( offset );

				while ( matches ) {
					switch ( matches[ 2 ] || "d" ) {
						case "d" : case "D" :
							day += parseInt( matches[ 1 ], 10 ); break;
						case "w" : case "W" :
							day += parseInt( matches[ 1 ], 10 ) * 7; break;
						case "m" : case "M" :
							month += parseInt( matches[ 1 ], 10 );
							day = Math.min( day, $.datepicker._getDaysInMonth( year, month ) );
							break;
						case "y": case "Y" :
							year += parseInt( matches[ 1 ], 10 );
							day = Math.min( day, $.datepicker._getDaysInMonth( year, month ) );
							break;
					}
					matches = pattern.exec( offset );
				}
				return new Date( year, month, day );
			},
			newDate = ( date == null || date === "" ? defaultDate : ( typeof date === "string" ? offsetString( date ) :
				( typeof date === "number" ? ( isNaN( date ) ? defaultDate : offsetNumeric( date ) ) : new Date( date.getTime() ) ) ) );

		newDate = ( newDate && newDate.toString() === "Invalid Date" ? defaultDate : newDate );
		if ( newDate ) {
			newDate.setHours( 0 );
			newDate.setMinutes( 0 );
			newDate.setSeconds( 0 );
			newDate.setMilliseconds( 0 );
		}
		return this._daylightSavingAdjust( newDate );
	},

	/* Handle switch to/from daylight saving.
	 * Hours may be non-zero on daylight saving cut-over:
	 * > 12 when midnight changeover, but then cannot generate
	 * midnight datetime, so jump to 1AM, otherwise reset.
	 * @param  date  (Date) the date to check
	 * @return  (Date) the corrected date
	 */
	_daylightSavingAdjust: function( date ) {
		if ( !date ) {
			return null;
		}
		date.setHours( date.getHours() > 12 ? date.getHours() + 2 : 0 );
		return date;
	},

	/* Set the date(s) directly. */
	_setDate: function( inst, date, noChange ) {
		var clear = !date,
			origMonth = inst.selectedMonth,
			origYear = inst.selectedYear,
			newDate = this._restrictMinMax( inst, this._determineDate( inst, date, new Date() ) );

		inst.selectedDay = inst.currentDay = newDate.getDate();
		inst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();
		inst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear();
		if ( ( origMonth !== inst.selectedMonth || origYear !== inst.selectedYear ) && !noChange ) {
			this._notifyChange( inst );
		}
		this._adjustInstDate( inst );
		if ( inst.input ) {
			inst.input.val( clear ? "" : this._formatDate( inst ) );
		}
	},

	/* Retrieve the date(s) directly. */
	_getDate: function( inst ) {
		var startDate = ( !inst.currentYear || ( inst.input && inst.input.val() === "" ) ? null :
			this._daylightSavingAdjust( new Date(
			inst.currentYear, inst.currentMonth, inst.currentDay ) ) );
			return startDate;
	},

	/* Attach the onxxx handlers.  These are declared statically so
	 * they work with static code transformers like Caja.
	 */
	_attachHandlers: function( inst ) {
		var stepMonths = this._get( inst, "stepMonths" ),
			id = "#" + inst.id.replace( /\\\\/g, "\\" );
		inst.dpDiv.find( "[data-handler]" ).map( function() {
			var handler = {
				prev: function() {
					$.datepicker._adjustDate( id, -stepMonths, "M" );
				},
				next: function() {
					$.datepicker._adjustDate( id, +stepMonths, "M" );
				},
				hide: function() {
					$.datepicker._hideDatepicker();
				},
				today: function() {
					$.datepicker._gotoToday( id );
				},
				selectDay: function() {
					$.datepicker._selectDay( id, +this.getAttribute( "data-month" ), +this.getAttribute( "data-year" ), this );
					return false;
				},
				selectMonth: function() {
					$.datepicker._selectMonthYear( id, this, "M" );
					return false;
				},
				selectYear: function() {
					$.datepicker._selectMonthYear( id, this, "Y" );
					return false;
				}
			};
			$( this ).on( this.getAttribute( "data-event" ), handler[ this.getAttribute( "data-handler" ) ] );
		} );
	},

	/* Generate the HTML for the current state of the date picker. */
	_generateHTML: function( inst ) {
		var maxDraw, prevText, prev, nextText, next, currentText, gotoDate,
			controls, buttonPanel, firstDay, showWeek, dayNames, dayNamesMin,
			monthNames, monthNamesShort, beforeShowDay, showOtherMonths,
			selectOtherMonths, defaultDate, html, dow, row, group, col, selectedDate,
			cornerClass, calender, thead, day, daysInMonth, leadDays, curRows, numRows,
			printDate, dRow, tbody, daySettings, otherMonth, unselectable,
			tempDate = new Date(),
			today = this._daylightSavingAdjust(
				new Date( tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate() ) ), // clear time
			isRTL = this._get( inst, "isRTL" ),
			showButtonPanel = this._get( inst, "showButtonPanel" ),
			hideIfNoPrevNext = this._get( inst, "hideIfNoPrevNext" ),
			navigationAsDateFormat = this._get( inst, "navigationAsDateFormat" ),
			numMonths = this._getNumberOfMonths( inst ),
			showCurrentAtPos = this._get( inst, "showCurrentAtPos" ),
			stepMonths = this._get( inst, "stepMonths" ),
			isMultiMonth = ( numMonths[ 0 ] !== 1 || numMonths[ 1 ] !== 1 ),
			currentDate = this._daylightSavingAdjust( ( !inst.currentDay ? new Date( 9999, 9, 9 ) :
				new Date( inst.currentYear, inst.currentMonth, inst.currentDay ) ) ),
			minDate = this._getMinMaxDate( inst, "min" ),
			maxDate = this._getMinMaxDate( inst, "max" ),
			drawMonth = inst.drawMonth - showCurrentAtPos,
			drawYear = inst.drawYear;

		if ( drawMonth < 0 ) {
			drawMonth += 12;
			drawYear--;
		}
		if ( maxDate ) {
			maxDraw = this._daylightSavingAdjust( new Date( maxDate.getFullYear(),
				maxDate.getMonth() - ( numMonths[ 0 ] * numMonths[ 1 ] ) + 1, maxDate.getDate() ) );
			maxDraw = ( minDate && maxDraw < minDate ? minDate : maxDraw );
			while ( this._daylightSavingAdjust( new Date( drawYear, drawMonth, 1 ) ) > maxDraw ) {
				drawMonth--;
				if ( drawMonth < 0 ) {
					drawMonth = 11;
					drawYear--;
				}
			}
		}
		inst.drawMonth = drawMonth;
		inst.drawYear = drawYear;

		prevText = this._get( inst, "prevText" );
		prevText = ( !navigationAsDateFormat ? prevText : this.formatDate( prevText,
			this._daylightSavingAdjust( new Date( drawYear, drawMonth - stepMonths, 1 ) ),
			this._getFormatConfig( inst ) ) );

		prev = ( this._canAdjustMonth( inst, -1, drawYear, drawMonth ) ?
			"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click'" +
			" title='" + prevText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w" ) + "'>" + prevText + "</span></a>" :
			( hideIfNoPrevNext ? "" : "<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='" + prevText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w" ) + "'>" + prevText + "</span></a>" ) );

		nextText = this._get( inst, "nextText" );
		nextText = ( !navigationAsDateFormat ? nextText : this.formatDate( nextText,
			this._daylightSavingAdjust( new Date( drawYear, drawMonth + stepMonths, 1 ) ),
			this._getFormatConfig( inst ) ) );

		next = ( this._canAdjustMonth( inst, +1, drawYear, drawMonth ) ?
			"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click'" +
			" title='" + nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e" ) + "'>" + nextText + "</span></a>" :
			( hideIfNoPrevNext ? "" : "<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='" + nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e" ) + "'>" + nextText + "</span></a>" ) );

		currentText = this._get( inst, "currentText" );
		gotoDate = ( this._get( inst, "gotoCurrent" ) && inst.currentDay ? currentDate : today );
		currentText = ( !navigationAsDateFormat ? currentText :
			this.formatDate( currentText, gotoDate, this._getFormatConfig( inst ) ) );

		controls = ( !inst.inline ? "<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>" +
			this._get( inst, "closeText" ) + "</button>" : "" );

		buttonPanel = ( showButtonPanel ) ? "<div class='ui-datepicker-buttonpane ui-widget-content'>" + ( isRTL ? controls : "" ) +
			( this._isInRange( inst, gotoDate ) ? "<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'" +
			">" + currentText + "</button>" : "" ) + ( isRTL ? "" : controls ) + "</div>" : "";

		firstDay = parseInt( this._get( inst, "firstDay" ), 10 );
		firstDay = ( isNaN( firstDay ) ? 0 : firstDay );

		showWeek = this._get( inst, "showWeek" );
		dayNames = this._get( inst, "dayNames" );
		dayNamesMin = this._get( inst, "dayNamesMin" );
		monthNames = this._get( inst, "monthNames" );
		monthNamesShort = this._get( inst, "monthNamesShort" );
		beforeShowDay = this._get( inst, "beforeShowDay" );
		showOtherMonths = this._get( inst, "showOtherMonths" );
		selectOtherMonths = this._get( inst, "selectOtherMonths" );
		defaultDate = this._getDefaultDate( inst );
		html = "";

		for ( row = 0; row < numMonths[ 0 ]; row++ ) {
			group = "";
			this.maxRows = 4;
			for ( col = 0; col < numMonths[ 1 ]; col++ ) {
				selectedDate = this._daylightSavingAdjust( new Date( drawYear, drawMonth, inst.selectedDay ) );
				cornerClass = " ui-corner-all";
				calender = "";
				if ( isMultiMonth ) {
					calender += "<div class='ui-datepicker-group";
					if ( numMonths[ 1 ] > 1 ) {
						switch ( col ) {
							case 0: calender += " ui-datepicker-group-first";
								cornerClass = " ui-corner-" + ( isRTL ? "right" : "left" ); break;
							case numMonths[ 1 ] - 1: calender += " ui-datepicker-group-last";
								cornerClass = " ui-corner-" + ( isRTL ? "left" : "right" ); break;
							default: calender += " ui-datepicker-group-middle"; cornerClass = ""; break;
						}
					}
					calender += "'>";
				}
				calender += "<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix" + cornerClass + "'>" +
					( /all|left/.test( cornerClass ) && row === 0 ? ( isRTL ? next : prev ) : "" ) +
					( /all|right/.test( cornerClass ) && row === 0 ? ( isRTL ? prev : next ) : "" ) +
					this._generateMonthYearHeader( inst, drawMonth, drawYear, minDate, maxDate,
					row > 0 || col > 0, monthNames, monthNamesShort ) + // draw month headers
					"</div><table class='ui-datepicker-calendar'><thead>" +
					"<tr>";
				thead = ( showWeek ? "<th class='ui-datepicker-week-col'>" + this._get( inst, "weekHeader" ) + "</th>" : "" );
				for ( dow = 0; dow < 7; dow++ ) { // days of the week
					day = ( dow + firstDay ) % 7;
					thead += "<th scope='col'" + ( ( dow + firstDay + 6 ) % 7 >= 5 ? " class='ui-datepicker-week-end'" : "" ) + ">" +
						"<span title='" + dayNames[ day ] + "'>" + dayNamesMin[ day ] + "</span></th>";
				}
				calender += thead + "</tr></thead><tbody>";
				daysInMonth = this._getDaysInMonth( drawYear, drawMonth );
				if ( drawYear === inst.selectedYear && drawMonth === inst.selectedMonth ) {
					inst.selectedDay = Math.min( inst.selectedDay, daysInMonth );
				}
				leadDays = ( this._getFirstDayOfMonth( drawYear, drawMonth ) - firstDay + 7 ) % 7;
				curRows = Math.ceil( ( leadDays + daysInMonth ) / 7 ); // calculate the number of rows to generate
				numRows = ( isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows ); //If multiple months, use the higher number of rows (see #7043)
				this.maxRows = numRows;
				printDate = this._daylightSavingAdjust( new Date( drawYear, drawMonth, 1 - leadDays ) );
				for ( dRow = 0; dRow < numRows; dRow++ ) { // create date picker rows
					calender += "<tr>";
					tbody = ( !showWeek ? "" : "<td class='ui-datepicker-week-col'>" +
						this._get( inst, "calculateWeek" )( printDate ) + "</td>" );
					for ( dow = 0; dow < 7; dow++ ) { // create date picker days
						daySettings = ( beforeShowDay ?
							beforeShowDay.apply( ( inst.input ? inst.input[ 0 ] : null ), [ printDate ] ) : [ true, "" ] );
						otherMonth = ( printDate.getMonth() !== drawMonth );
						unselectable = ( otherMonth && !selectOtherMonths ) || !daySettings[ 0 ] ||
							( minDate && printDate < minDate ) || ( maxDate && printDate > maxDate );
						tbody += "<td class='" +
							( ( dow + firstDay + 6 ) % 7 >= 5 ? " ui-datepicker-week-end" : "" ) + // highlight weekends
							( otherMonth ? " ui-datepicker-other-month" : "" ) + // highlight days from other months
							( ( printDate.getTime() === selectedDate.getTime() && drawMonth === inst.selectedMonth && inst._keyEvent ) || // user pressed key
							( defaultDate.getTime() === printDate.getTime() && defaultDate.getTime() === selectedDate.getTime() ) ?

							// or defaultDate is current printedDate and defaultDate is selectedDate
							" " + this._dayOverClass : "" ) + // highlight selected day
							( unselectable ? " " + this._unselectableClass + " ui-state-disabled" : "" ) +  // highlight unselectable days
							( otherMonth && !showOtherMonths ? "" : " " + daySettings[ 1 ] + // highlight custom dates
							( printDate.getTime() === currentDate.getTime() ? " " + this._currentClass : "" ) + // highlight selected day
							( printDate.getTime() === today.getTime() ? " ui-datepicker-today" : "" ) ) + "'" + // highlight today (if different)
							( ( !otherMonth || showOtherMonths ) && daySettings[ 2 ] ? " title='" + daySettings[ 2 ].replace( /'/g, "&#39;" ) + "'" : "" ) + // cell title
							( unselectable ? "" : " data-handler='selectDay' data-event='click' data-month='" + printDate.getMonth() + "' data-year='" + printDate.getFullYear() + "'" ) + ">" + // actions
							( otherMonth && !showOtherMonths ? "&#xa0;" : // display for other months
							( unselectable ? "<span class='ui-state-default'>" + printDate.getDate() + "</span>" : "<a class='ui-state-default" +
							( printDate.getTime() === today.getTime() ? " ui-state-highlight" : "" ) +
							( printDate.getTime() === currentDate.getTime() ? " ui-state-active" : "" ) + // highlight selected day
							( otherMonth ? " ui-priority-secondary" : "" ) + // distinguish dates from other months
							"' href='#'>" + printDate.getDate() + "</a>" ) ) + "</td>"; // display selectable date
						printDate.setDate( printDate.getDate() + 1 );
						printDate = this._daylightSavingAdjust( printDate );
					}
					calender += tbody + "</tr>";
				}
				drawMonth++;
				if ( drawMonth > 11 ) {
					drawMonth = 0;
					drawYear++;
				}
				calender += "</tbody></table>" + ( isMultiMonth ? "</div>" +
							( ( numMonths[ 0 ] > 0 && col === numMonths[ 1 ] - 1 ) ? "<div class='ui-datepicker-row-break'></div>" : "" ) : "" );
				group += calender;
			}
			html += group;
		}
		html += buttonPanel;
		inst._keyEvent = false;
		return html;
	},

	/* Generate the month and year header. */
	_generateMonthYearHeader: function( inst, drawMonth, drawYear, minDate, maxDate,
			secondary, monthNames, monthNamesShort ) {

		var inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear,
			changeMonth = this._get( inst, "changeMonth" ),
			changeYear = this._get( inst, "changeYear" ),
			showMonthAfterYear = this._get( inst, "showMonthAfterYear" ),
			html = "<div class='ui-datepicker-title'>",
			monthHtml = "";

		// Month selection
		if ( secondary || !changeMonth ) {
			monthHtml += "<span class='ui-datepicker-month'>" + monthNames[ drawMonth ] + "</span>";
		} else {
			inMinYear = ( minDate && minDate.getFullYear() === drawYear );
			inMaxYear = ( maxDate && maxDate.getFullYear() === drawYear );
			monthHtml += "<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>";
			for ( month = 0; month < 12; month++ ) {
				if ( ( !inMinYear || month >= minDate.getMonth() ) && ( !inMaxYear || month <= maxDate.getMonth() ) ) {
					monthHtml += "<option value='" + month + "'" +
						( month === drawMonth ? " selected='selected'" : "" ) +
						">" + monthNamesShort[ month ] + "</option>";
				}
			}
			monthHtml += "</select>";
		}

		if ( !showMonthAfterYear ) {
			html += monthHtml + ( secondary || !( changeMonth && changeYear ) ? "&#xa0;" : "" );
		}

		// Year selection
		if ( !inst.yearshtml ) {
			inst.yearshtml = "";
			if ( secondary || !changeYear ) {
				html += "<span class='ui-datepicker-year'>" + drawYear + "</span>";
			} else {

				// determine range of years to display
				years = this._get( inst, "yearRange" ).split( ":" );
				thisYear = new Date().getFullYear();
				determineYear = function( value ) {
					var year = ( value.match( /c[+\-].*/ ) ? drawYear + parseInt( value.substring( 1 ), 10 ) :
						( value.match( /[+\-].*/ ) ? thisYear + parseInt( value, 10 ) :
						parseInt( value, 10 ) ) );
					return ( isNaN( year ) ? thisYear : year );
				};
				year = determineYear( years[ 0 ] );
				endYear = Math.max( year, determineYear( years[ 1 ] || "" ) );
				year = ( minDate ? Math.max( year, minDate.getFullYear() ) : year );
				endYear = ( maxDate ? Math.min( endYear, maxDate.getFullYear() ) : endYear );
				inst.yearshtml += "<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";
				for ( ; year <= endYear; year++ ) {
					inst.yearshtml += "<option value='" + year + "'" +
						( year === drawYear ? " selected='selected'" : "" ) +
						">" + year + "</option>";
				}
				inst.yearshtml += "</select>";

				html += inst.yearshtml;
				inst.yearshtml = null;
			}
		}

		html += this._get( inst, "yearSuffix" );
		if ( showMonthAfterYear ) {
			html += ( secondary || !( changeMonth && changeYear ) ? "&#xa0;" : "" ) + monthHtml;
		}
		html += "</div>"; // Close datepicker_header
		return html;
	},

	/* Adjust one of the date sub-fields. */
	_adjustInstDate: function( inst, offset, period ) {
		var year = inst.selectedYear + ( period === "Y" ? offset : 0 ),
			month = inst.selectedMonth + ( period === "M" ? offset : 0 ),
			day = Math.min( inst.selectedDay, this._getDaysInMonth( year, month ) ) + ( period === "D" ? offset : 0 ),
			date = this._restrictMinMax( inst, this._daylightSavingAdjust( new Date( year, month, day ) ) );

		inst.selectedDay = date.getDate();
		inst.drawMonth = inst.selectedMonth = date.getMonth();
		inst.drawYear = inst.selectedYear = date.getFullYear();
		if ( period === "M" || period === "Y" ) {
			this._notifyChange( inst );
		}
	},

	/* Ensure a date is within any min/max bounds. */
	_restrictMinMax: function( inst, date ) {
		var minDate = this._getMinMaxDate( inst, "min" ),
			maxDate = this._getMinMaxDate( inst, "max" ),
			newDate = ( minDate && date < minDate ? minDate : date );
		return ( maxDate && newDate > maxDate ? maxDate : newDate );
	},

	/* Notify change of month/year. */
	_notifyChange: function( inst ) {
		var onChange = this._get( inst, "onChangeMonthYear" );
		if ( onChange ) {
			onChange.apply( ( inst.input ? inst.input[ 0 ] : null ),
				[ inst.selectedYear, inst.selectedMonth + 1, inst ] );
		}
	},

	/* Determine the number of months to show. */
	_getNumberOfMonths: function( inst ) {
		var numMonths = this._get( inst, "numberOfMonths" );
		return ( numMonths == null ? [ 1, 1 ] : ( typeof numMonths === "number" ? [ 1, numMonths ] : numMonths ) );
	},

	/* Determine the current maximum date - ensure no time components are set. */
	_getMinMaxDate: function( inst, minMax ) {
		return this._determineDate( inst, this._get( inst, minMax + "Date" ), null );
	},

	/* Find the number of days in a given month. */
	_getDaysInMonth: function( year, month ) {
		return 32 - this._daylightSavingAdjust( new Date( year, month, 32 ) ).getDate();
	},

	/* Find the day of the week of the first of a month. */
	_getFirstDayOfMonth: function( year, month ) {
		return new Date( year, month, 1 ).getDay();
	},

	/* Determines if we should allow a "next/prev" month display change. */
	_canAdjustMonth: function( inst, offset, curYear, curMonth ) {
		var numMonths = this._getNumberOfMonths( inst ),
			date = this._daylightSavingAdjust( new Date( curYear,
			curMonth + ( offset < 0 ? offset : numMonths[ 0 ] * numMonths[ 1 ] ), 1 ) );

		if ( offset < 0 ) {
			date.setDate( this._getDaysInMonth( date.getFullYear(), date.getMonth() ) );
		}
		return this._isInRange( inst, date );
	},

	/* Is the given date in the accepted range? */
	_isInRange: function( inst, date ) {
		var yearSplit, currentYear,
			minDate = this._getMinMaxDate( inst, "min" ),
			maxDate = this._getMinMaxDate( inst, "max" ),
			minYear = null,
			maxYear = null,
			years = this._get( inst, "yearRange" );
			if ( years ) {
				yearSplit = years.split( ":" );
				currentYear = new Date().getFullYear();
				minYear = parseInt( yearSplit[ 0 ], 10 );
				maxYear = parseInt( yearSplit[ 1 ], 10 );
				if ( yearSplit[ 0 ].match( /[+\-].*/ ) ) {
					minYear += currentYear;
				}
				if ( yearSplit[ 1 ].match( /[+\-].*/ ) ) {
					maxYear += currentYear;
				}
			}

		return ( ( !minDate || date.getTime() >= minDate.getTime() ) &&
			( !maxDate || date.getTime() <= maxDate.getTime() ) &&
			( !minYear || date.getFullYear() >= minYear ) &&
			( !maxYear || date.getFullYear() <= maxYear ) );
	},

	/* Provide the configuration settings for formatting/parsing. */
	_getFormatConfig: function( inst ) {
		var shortYearCutoff = this._get( inst, "shortYearCutoff" );
		shortYearCutoff = ( typeof shortYearCutoff !== "string" ? shortYearCutoff :
			new Date().getFullYear() % 100 + parseInt( shortYearCutoff, 10 ) );
		return { shortYearCutoff: shortYearCutoff,
			dayNamesShort: this._get( inst, "dayNamesShort" ), dayNames: this._get( inst, "dayNames" ),
			monthNamesShort: this._get( inst, "monthNamesShort" ), monthNames: this._get( inst, "monthNames" ) };
	},

	/* Format the given date for display. */
	_formatDate: function( inst, day, month, year ) {
		if ( !day ) {
			inst.currentDay = inst.selectedDay;
			inst.currentMonth = inst.selectedMonth;
			inst.currentYear = inst.selectedYear;
		}
		var date = ( day ? ( typeof day === "object" ? day :
			this._daylightSavingAdjust( new Date( year, month, day ) ) ) :
			this._daylightSavingAdjust( new Date( inst.currentYear, inst.currentMonth, inst.currentDay ) ) );
		return this.formatDate( this._get( inst, "dateFormat" ), date, this._getFormatConfig( inst ) );
	}
} );

/*
 * Bind hover events for datepicker elements.
 * Done via delegate so the binding only occurs once in the lifetime of the parent div.
 * Global datepicker_instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.
 */
function datepicker_bindHover( dpDiv ) {
	var selector = "button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";
	return dpDiv.on( "mouseout", selector, function() {
			$( this ).removeClass( "ui-state-hover" );
			if ( this.className.indexOf( "ui-datepicker-prev" ) !== -1 ) {
				$( this ).removeClass( "ui-datepicker-prev-hover" );
			}
			if ( this.className.indexOf( "ui-datepicker-next" ) !== -1 ) {
				$( this ).removeClass( "ui-datepicker-next-hover" );
			}
		} )
		.on( "mouseover", selector, datepicker_handleMouseover );
}

function datepicker_handleMouseover() {
	if ( !$.datepicker._isDisabledDatepicker( datepicker_instActive.inline ? datepicker_instActive.dpDiv.parent()[ 0 ] : datepicker_instActive.input[ 0 ] ) ) {
		$( this ).parents( ".ui-datepicker-calendar" ).find( "a" ).removeClass( "ui-state-hover" );
		$( this ).addClass( "ui-state-hover" );
		if ( this.className.indexOf( "ui-datepicker-prev" ) !== -1 ) {
			$( this ).addClass( "ui-datepicker-prev-hover" );
		}
		if ( this.className.indexOf( "ui-datepicker-next" ) !== -1 ) {
			$( this ).addClass( "ui-datepicker-next-hover" );
		}
	}
}

/* jQuery extend now ignores nulls! */
function datepicker_extendRemove( target, props ) {
	$.extend( target, props );
	for ( var name in props ) {
		if ( props[ name ] == null ) {
			target[ name ] = props[ name ];
		}
	}
	return target;
}

/* Invoke the datepicker functionality.
   @param  options  string - a command, optionally followed by additional parameters or
					Object - settings for attaching new datepicker functionality
   @return  jQuery object */
$.fn.datepicker = function( options ) {

	/* Verify an empty collection wasn't passed - Fixes #6976 */
	if ( !this.length ) {
		return this;
	}

	/* Initialise the date picker. */
	if ( !$.datepicker.initialized ) {
		$( document ).on( "mousedown", $.datepicker._checkExternalClick );
		$.datepicker.initialized = true;
	}

	/* Append datepicker main container to body if not exist. */
	if ( $( "#" + $.datepicker._mainDivId ).length === 0 ) {
		$( "body" ).append( $.datepicker.dpDiv );
	}

	var otherArgs = Array.prototype.slice.call( arguments, 1 );
	if ( typeof options === "string" && ( options === "isDisabled" || options === "getDate" || options === "widget" ) ) {
		return $.datepicker[ "_" + options + "Datepicker" ].
			apply( $.datepicker, [ this[ 0 ] ].concat( otherArgs ) );
	}
	if ( options === "option" && arguments.length === 2 && typeof arguments[ 1 ] === "string" ) {
		return $.datepicker[ "_" + options + "Datepicker" ].
			apply( $.datepicker, [ this[ 0 ] ].concat( otherArgs ) );
	}
	return this.each( function() {
		typeof options === "string" ?
			$.datepicker[ "_" + options + "Datepicker" ].
				apply( $.datepicker, [ this ].concat( otherArgs ) ) :
			$.datepicker._attachDatepicker( this, options );
	} );
};

$.datepicker = new Datepicker(); // singleton instance
$.datepicker.initialized = false;
$.datepicker.uuid = new Date().getTime();
$.datepicker.version = "1.12.1";

var widgetsDatepicker = $.datepicker;




// This file is deprecated
var ie = $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );

/*!
 * jQuery UI Mouse 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Mouse
//>>group: Widgets
//>>description: Abstracts mouse-based interactions to assist in creating certain widgets.
//>>docs: http://api.jqueryui.com/mouse/



var mouseHandled = false;
$( document ).on( "mouseup", function() {
	mouseHandled = false;
} );

var widgetsMouse = $.widget( "ui.mouse", {
	version: "1.12.1",
	options: {
		cancel: "input, textarea, button, select, option",
		distance: 1,
		delay: 0
	},
	_mouseInit: function() {
		var that = this;

		this.element
			.on( "mousedown." + this.widgetName, function( event ) {
				return that._mouseDown( event );
			} )
			.on( "click." + this.widgetName, function( event ) {
				if ( true === $.data( event.target, that.widgetName + ".preventClickEvent" ) ) {
					$.removeData( event.target, that.widgetName + ".preventClickEvent" );
					event.stopImmediatePropagation();
					return false;
				}
			} );

		this.started = false;
	},

	// TODO: make sure destroying one instance of mouse doesn't mess with
	// other instances of mouse
	_mouseDestroy: function() {
		this.element.off( "." + this.widgetName );
		if ( this._mouseMoveDelegate ) {
			this.document
				.off( "mousemove." + this.widgetName, this._mouseMoveDelegate )
				.off( "mouseup." + this.widgetName, this._mouseUpDelegate );
		}
	},

	_mouseDown: function( event ) {

		// don't let more than one widget handle mouseStart
		if ( mouseHandled ) {
			return;
		}

		this._mouseMoved = false;

		// We may have missed mouseup (out of window)
		( this._mouseStarted && this._mouseUp( event ) );

		this._mouseDownEvent = event;

		var that = this,
			btnIsLeft = ( event.which === 1 ),

			// event.target.nodeName works around a bug in IE 8 with
			// disabled inputs (#7620)
			elIsCancel = ( typeof this.options.cancel === "string" && event.target.nodeName ?
				$( event.target ).closest( this.options.cancel ).length : false );
		if ( !btnIsLeft || elIsCancel || !this._mouseCapture( event ) ) {
			return true;
		}

		this.mouseDelayMet = !this.options.delay;
		if ( !this.mouseDelayMet ) {
			this._mouseDelayTimer = setTimeout( function() {
				that.mouseDelayMet = true;
			}, this.options.delay );
		}

		if ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {
			this._mouseStarted = ( this._mouseStart( event ) !== false );
			if ( !this._mouseStarted ) {
				event.preventDefault();
				return true;
			}
		}

		// Click event may never have fired (Gecko & Opera)
		if ( true === $.data( event.target, this.widgetName + ".preventClickEvent" ) ) {
			$.removeData( event.target, this.widgetName + ".preventClickEvent" );
		}

		// These delegates are required to keep context
		this._mouseMoveDelegate = function( event ) {
			return that._mouseMove( event );
		};
		this._mouseUpDelegate = function( event ) {
			return that._mouseUp( event );
		};

		this.document
			.on( "mousemove." + this.widgetName, this._mouseMoveDelegate )
			.on( "mouseup." + this.widgetName, this._mouseUpDelegate );

		event.preventDefault();

		mouseHandled = true;
		return true;
	},

	_mouseMove: function( event ) {

		// Only check for mouseups outside the document if you've moved inside the document
		// at least once. This prevents the firing of mouseup in the case of IE<9, which will
		// fire a mousemove event if content is placed under the cursor. See #7778
		// Support: IE <9
		if ( this._mouseMoved ) {

			// IE mouseup check - mouseup happened when mouse was out of window
			if ( $.ui.ie && ( !document.documentMode || document.documentMode < 9 ) &&
					!event.button ) {
				return this._mouseUp( event );

			// Iframe mouseup check - mouseup occurred in another document
			} else if ( !event.which ) {

				// Support: Safari <=8 - 9
				// Safari sets which to 0 if you press any of the following keys
				// during a drag (#14461)
				if ( event.originalEvent.altKey || event.originalEvent.ctrlKey ||
						event.originalEvent.metaKey || event.originalEvent.shiftKey ) {
					this.ignoreMissingWhich = true;
				} else if ( !this.ignoreMissingWhich ) {
					return this._mouseUp( event );
				}
			}
		}

		if ( event.which || event.button ) {
			this._mouseMoved = true;
		}

		if ( this._mouseStarted ) {
			this._mouseDrag( event );
			return event.preventDefault();
		}

		if ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {
			this._mouseStarted =
				( this._mouseStart( this._mouseDownEvent, event ) !== false );
			( this._mouseStarted ? this._mouseDrag( event ) : this._mouseUp( event ) );
		}

		return !this._mouseStarted;
	},

	_mouseUp: function( event ) {
		this.document
			.off( "mousemove." + this.widgetName, this._mouseMoveDelegate )
			.off( "mouseup." + this.widgetName, this._mouseUpDelegate );

		if ( this._mouseStarted ) {
			this._mouseStarted = false;

			if ( event.target === this._mouseDownEvent.target ) {
				$.data( event.target, this.widgetName + ".preventClickEvent", true );
			}

			this._mouseStop( event );
		}

		if ( this._mouseDelayTimer ) {
			clearTimeout( this._mouseDelayTimer );
			delete this._mouseDelayTimer;
		}

		this.ignoreMissingWhich = false;
		mouseHandled = false;
		event.preventDefault();
	},

	_mouseDistanceMet: function( event ) {
		return ( Math.max(
				Math.abs( this._mouseDownEvent.pageX - event.pageX ),
				Math.abs( this._mouseDownEvent.pageY - event.pageY )
			) >= this.options.distance
		);
	},

	_mouseDelayMet: function( /* event */ ) {
		return this.mouseDelayMet;
	},

	// These are placeholder methods, to be overriden by extending plugin
	_mouseStart: function( /* event */ ) {},
	_mouseDrag: function( /* event */ ) {},
	_mouseStop: function( /* event */ ) {},
	_mouseCapture: function( /* event */ ) { return true; }
} );




// $.ui.plugin is deprecated. Use $.widget() extensions instead.
var plugin = $.ui.plugin = {
	add: function( module, option, set ) {
		var i,
			proto = $.ui[ module ].prototype;
		for ( i in set ) {
			proto.plugins[ i ] = proto.plugins[ i ] || [];
			proto.plugins[ i ].push( [ option, set[ i ] ] );
		}
	},
	call: function( instance, name, args, allowDisconnected ) {
		var i,
			set = instance.plugins[ name ];

		if ( !set ) {
			return;
		}

		if ( !allowDisconnected && ( !instance.element[ 0 ].parentNode ||
				instance.element[ 0 ].parentNode.nodeType === 11 ) ) {
			return;
		}

		for ( i = 0; i < set.length; i++ ) {
			if ( instance.options[ set[ i ][ 0 ] ] ) {
				set[ i ][ 1 ].apply( instance.element, args );
			}
		}
	}
};



var safeBlur = $.ui.safeBlur = function( element ) {

	// Support: IE9 - 10 only
	// If the <body> is blurred, IE will switch windows, see #9420
	if ( element && element.nodeName.toLowerCase() !== "body" ) {
		$( element ).trigger( "blur" );
	}
};


/*!
 * jQuery UI Draggable 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Draggable
//>>group: Interactions
//>>description: Enables dragging functionality for any element.
//>>docs: http://api.jqueryui.com/draggable/
//>>demos: http://jqueryui.com/draggable/
//>>css.structure: ../../themes/base/draggable.css



$.widget( "ui.draggable", $.ui.mouse, {
	version: "1.12.1",
	widgetEventPrefix: "drag",
	options: {
		addClasses: true,
		appendTo: "parent",
		axis: false,
		connectToSortable: false,
		containment: false,
		cursor: "auto",
		cursorAt: false,
		grid: false,
		handle: false,
		helper: "original",
		iframeFix: false,
		opacity: false,
		refreshPositions: false,
		revert: false,
		revertDuration: 500,
		scope: "default",
		scroll: true,
		scrollSensitivity: 20,
		scrollSpeed: 20,
		snap: false,
		snapMode: "both",
		snapTolerance: 20,
		stack: false,
		zIndex: false,

		// Callbacks
		drag: null,
		start: null,
		stop: null
	},
	_create: function() {

		if ( this.options.helper === "original" ) {
			this._setPositionRelative();
		}
		if ( this.options.addClasses ) {
			this._addClass( "ui-draggable" );
		}
		this._setHandleClassName();

		this._mouseInit();
	},

	_setOption: function( key, value ) {
		this._super( key, value );
		if ( key === "handle" ) {
			this._removeHandleClassName();
			this._setHandleClassName();
		}
	},

	_destroy: function() {
		if ( ( this.helper || this.element ).is( ".ui-draggable-dragging" ) ) {
			this.destroyOnClear = true;
			return;
		}
		this._removeHandleClassName();
		this._mouseDestroy();
	},

	_mouseCapture: function( event ) {
		var o = this.options;

		// Among others, prevent a drag on a resizable-handle
		if ( this.helper || o.disabled ||
				$( event.target ).closest( ".ui-resizable-handle" ).length > 0 ) {
			return false;
		}

		//Quit if we're not on a valid handle
		this.handle = this._getHandle( event );
		if ( !this.handle ) {
			return false;
		}

		this._blurActiveElement( event );

		this._blockFrames( o.iframeFix === true ? "iframe" : o.iframeFix );

		return true;

	},

	_blockFrames: function( selector ) {
		this.iframeBlocks = this.document.find( selector ).map( function() {
			var iframe = $( this );

			return $( "<div>" )
				.css( "position", "absolute" )
				.appendTo( iframe.parent() )
				.outerWidth( iframe.outerWidth() )
				.outerHeight( iframe.outerHeight() )
				.offset( iframe.offset() )[ 0 ];
		} );
	},

	_unblockFrames: function() {
		if ( this.iframeBlocks ) {
			this.iframeBlocks.remove();
			delete this.iframeBlocks;
		}
	},

	_blurActiveElement: function( event ) {
		var activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),
			target = $( event.target );

		// Don't blur if the event occurred on an element that is within
		// the currently focused element
		// See #10527, #12472
		if ( target.closest( activeElement ).length ) {
			return;
		}

		// Blur any element that currently has focus, see #4261
		$.ui.safeBlur( activeElement );
	},

	_mouseStart: function( event ) {

		var o = this.options;

		//Create and append the visible helper
		this.helper = this._createHelper( event );

		this._addClass( this.helper, "ui-draggable-dragging" );

		//Cache the helper size
		this._cacheHelperProportions();

		//If ddmanager is used for droppables, set the global draggable
		if ( $.ui.ddmanager ) {
			$.ui.ddmanager.current = this;
		}

		/*
		 * - Position generation -
		 * This block generates everything position related - it's the core of draggables.
		 */

		//Cache the margins of the original element
		this._cacheMargins();

		//Store the helper's css position
		this.cssPosition = this.helper.css( "position" );
		this.scrollParent = this.helper.scrollParent( true );
		this.offsetParent = this.helper.offsetParent();
		this.hasFixedAncestor = this.helper.parents().filter( function() {
				return $( this ).css( "position" ) === "fixed";
			} ).length > 0;

		//The element's absolute position on the page minus margins
		this.positionAbs = this.element.offset();
		this._refreshOffsets( event );

		//Generate the original position
		this.originalPosition = this.position = this._generatePosition( event, false );
		this.originalPageX = event.pageX;
		this.originalPageY = event.pageY;

		//Adjust the mouse offset relative to the helper if "cursorAt" is supplied
		( o.cursorAt && this._adjustOffsetFromHelper( o.cursorAt ) );

		//Set a containment if given in the options
		this._setContainment();

		//Trigger event + callbacks
		if ( this._trigger( "start", event ) === false ) {
			this._clear();
			return false;
		}

		//Recache the helper size
		this._cacheHelperProportions();

		//Prepare the droppable offsets
		if ( $.ui.ddmanager && !o.dropBehaviour ) {
			$.ui.ddmanager.prepareOffsets( this, event );
		}

		// Execute the drag once - this causes the helper not to be visible before getting its
		// correct position
		this._mouseDrag( event, true );

		// If the ddmanager is used for droppables, inform the manager that dragging has started
		// (see #5003)
		if ( $.ui.ddmanager ) {
			$.ui.ddmanager.dragStart( this, event );
		}

		return true;
	},

	_refreshOffsets: function( event ) {
		this.offset = {
			top: this.positionAbs.top - this.margins.top,
			left: this.positionAbs.left - this.margins.left,
			scroll: false,
			parent: this._getParentOffset(),
			relative: this._getRelativeOffset()
		};

		this.offset.click = {
			left: event.pageX - this.offset.left,
			top: event.pageY - this.offset.top
		};
	},

	_mouseDrag: function( event, noPropagation ) {

		// reset any necessary cached properties (see #5009)
		if ( this.hasFixedAncestor ) {
			this.offset.parent = this._getParentOffset();
		}

		//Compute the helpers position
		this.position = this._generatePosition( event, true );
		this.positionAbs = this._convertPositionTo( "absolute" );

		//Call plugins and callbacks and use the resulting position if something is returned
		if ( !noPropagation ) {
			var ui = this._uiHash();
			if ( this._trigger( "drag", event, ui ) === false ) {
				this._mouseUp( new $.Event( "mouseup", event ) );
				return false;
			}
			this.position = ui.position;
		}

		this.helper[ 0 ].style.left = this.position.left + "px";
		this.helper[ 0 ].style.top = this.position.top + "px";

		if ( $.ui.ddmanager ) {
			$.ui.ddmanager.drag( this, event );
		}

		return false;
	},

	_mouseStop: function( event ) {

		//If we are using droppables, inform the manager about the drop
		var that = this,
			dropped = false;
		if ( $.ui.ddmanager && !this.options.dropBehaviour ) {
			dropped = $.ui.ddmanager.drop( this, event );
		}

		//if a drop comes from outside (a sortable)
		if ( this.dropped ) {
			dropped = this.dropped;
			this.dropped = false;
		}

		if ( ( this.options.revert === "invalid" && !dropped ) ||
				( this.options.revert === "valid" && dropped ) ||
				this.options.revert === true || ( $.isFunction( this.options.revert ) &&
				this.options.revert.call( this.element, dropped ) )
		) {
			$( this.helper ).animate(
				this.originalPosition,
				parseInt( this.options.revertDuration, 10 ),
				function() {
					if ( that._trigger( "stop", event ) !== false ) {
						that._clear();
					}
				}
			);
		} else {
			if ( this._trigger( "stop", event ) !== false ) {
				this._clear();
			}
		}

		return false;
	},

	_mouseUp: function( event ) {
		this._unblockFrames();

		// If the ddmanager is used for droppables, inform the manager that dragging has stopped
		// (see #5003)
		if ( $.ui.ddmanager ) {
			$.ui.ddmanager.dragStop( this, event );
		}

		// Only need to focus if the event occurred on the draggable itself, see #10527
		if ( this.handleElement.is( event.target ) ) {

			// The interaction is over; whether or not the click resulted in a drag,
			// focus the element
			this.element.trigger( "focus" );
		}

		return $.ui.mouse.prototype._mouseUp.call( this, event );
	},

	cancel: function() {

		if ( this.helper.is( ".ui-draggable-dragging" ) ) {
			this._mouseUp( new $.Event( "mouseup", { target: this.element[ 0 ] } ) );
		} else {
			this._clear();
		}

		return this;

	},

	_getHandle: function( event ) {
		return this.options.handle ?
			!!$( event.target ).closest( this.element.find( this.options.handle ) ).length :
			true;
	},

	_setHandleClassName: function() {
		this.handleElement = this.options.handle ?
			this.element.find( this.options.handle ) : this.element;
		this._addClass( this.handleElement, "ui-draggable-handle" );
	},

	_removeHandleClassName: function() {
		this._removeClass( this.handleElement, "ui-draggable-handle" );
	},

	_createHelper: function( event ) {

		var o = this.options,
			helperIsFunction = $.isFunction( o.helper ),
			helper = helperIsFunction ?
				$( o.helper.apply( this.element[ 0 ], [ event ] ) ) :
				( o.helper === "clone" ?
					this.element.clone().removeAttr( "id" ) :
					this.element );

		if ( !helper.parents( "body" ).length ) {
			helper.appendTo( ( o.appendTo === "parent" ?
				this.element[ 0 ].parentNode :
				o.appendTo ) );
		}

		// Http://bugs.jqueryui.com/ticket/9446
		// a helper function can return the original element
		// which wouldn't have been set to relative in _create
		if ( helperIsFunction && helper[ 0 ] === this.element[ 0 ] ) {
			this._setPositionRelative();
		}

		if ( helper[ 0 ] !== this.element[ 0 ] &&
				!( /(fixed|absolute)/ ).test( helper.css( "position" ) ) ) {
			helper.css( "position", "absolute" );
		}

		return helper;

	},

	_setPositionRelative: function() {
		if ( !( /^(?:r|a|f)/ ).test( this.element.css( "position" ) ) ) {
			this.element[ 0 ].style.position = "relative";
		}
	},

	_adjustOffsetFromHelper: function( obj ) {
		if ( typeof obj === "string" ) {
			obj = obj.split( " " );
		}
		if ( $.isArray( obj ) ) {
			obj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };
		}
		if ( "left" in obj ) {
			this.offset.click.left = obj.left + this.margins.left;
		}
		if ( "right" in obj ) {
			this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
		}
		if ( "top" in obj ) {
			this.offset.click.top = obj.top + this.margins.top;
		}
		if ( "bottom" in obj ) {
			this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
		}
	},

	_isRootNode: function( element ) {
		return ( /(html|body)/i ).test( element.tagName ) || element === this.document[ 0 ];
	},

	_getParentOffset: function() {

		//Get the offsetParent and cache its position
		var po = this.offsetParent.offset(),
			document = this.document[ 0 ];

		// This is a special case where we need to modify a offset calculated on start, since the
		// following happened:
		// 1. The position of the helper is absolute, so it's position is calculated based on the
		// next positioned parent
		// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't
		// the document, which means that the scroll is included in the initial calculation of the
		// offset of the parent, and never recalculated upon drag
		if ( this.cssPosition === "absolute" && this.scrollParent[ 0 ] !== document &&
				$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) {
			po.left += this.scrollParent.scrollLeft();
			po.top += this.scrollParent.scrollTop();
		}

		if ( this._isRootNode( this.offsetParent[ 0 ] ) ) {
			po = { top: 0, left: 0 };
		}

		return {
			top: po.top + ( parseInt( this.offsetParent.css( "borderTopWidth" ), 10 ) || 0 ),
			left: po.left + ( parseInt( this.offsetParent.css( "borderLeftWidth" ), 10 ) || 0 )
		};

	},

	_getRelativeOffset: function() {
		if ( this.cssPosition !== "relative" ) {
			return { top: 0, left: 0 };
		}

		var p = this.element.position(),
			scrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );

		return {
			top: p.top - ( parseInt( this.helper.css( "top" ), 10 ) || 0 ) +
				( !scrollIsRootNode ? this.scrollParent.scrollTop() : 0 ),
			left: p.left - ( parseInt( this.helper.css( "left" ), 10 ) || 0 ) +
				( !scrollIsRootNode ? this.scrollParent.scrollLeft() : 0 )
		};

	},

	_cacheMargins: function() {
		this.margins = {
			left: ( parseInt( this.element.css( "marginLeft" ), 10 ) || 0 ),
			top: ( parseInt( this.element.css( "marginTop" ), 10 ) || 0 ),
			right: ( parseInt( this.element.css( "marginRight" ), 10 ) || 0 ),
			bottom: ( parseInt( this.element.css( "marginBottom" ), 10 ) || 0 )
		};
	},

	_cacheHelperProportions: function() {
		this.helperProportions = {
			width: this.helper.outerWidth(),
			height: this.helper.outerHeight()
		};
	},

	_setContainment: function() {

		var isUserScrollable, c, ce,
			o = this.options,
			document = this.document[ 0 ];

		this.relativeContainer = null;

		if ( !o.containment ) {
			this.containment = null;
			return;
		}

		if ( o.containment === "window" ) {
			this.containment = [
				$( window ).scrollLeft() - this.offset.relative.left - this.offset.parent.left,
				$( window ).scrollTop() - this.offset.relative.top - this.offset.parent.top,
				$( window ).scrollLeft() + $( window ).width() -
					this.helperProportions.width - this.margins.left,
				$( window ).scrollTop() +
					( $( window ).height() || document.body.parentNode.scrollHeight ) -
					this.helperProportions.height - this.margins.top
			];
			return;
		}

		if ( o.containment === "document" ) {
			this.containment = [
				0,
				0,
				$( document ).width() - this.helperProportions.width - this.margins.left,
				( $( document ).height() || document.body.parentNode.scrollHeight ) -
					this.helperProportions.height - this.margins.top
			];
			return;
		}

		if ( o.containment.constructor === Array ) {
			this.containment = o.containment;
			return;
		}

		if ( o.containment === "parent" ) {
			o.containment = this.helper[ 0 ].parentNode;
		}

		c = $( o.containment );
		ce = c[ 0 ];

		if ( !ce ) {
			return;
		}

		isUserScrollable = /(scroll|auto)/.test( c.css( "overflow" ) );

		this.containment = [
			( parseInt( c.css( "borderLeftWidth" ), 10 ) || 0 ) +
				( parseInt( c.css( "paddingLeft" ), 10 ) || 0 ),
			( parseInt( c.css( "borderTopWidth" ), 10 ) || 0 ) +
				( parseInt( c.css( "paddingTop" ), 10 ) || 0 ),
			( isUserScrollable ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) -
				( parseInt( c.css( "borderRightWidth" ), 10 ) || 0 ) -
				( parseInt( c.css( "paddingRight" ), 10 ) || 0 ) -
				this.helperProportions.width -
				this.margins.left -
				this.margins.right,
			( isUserScrollable ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) -
				( parseInt( c.css( "borderBottomWidth" ), 10 ) || 0 ) -
				( parseInt( c.css( "paddingBottom" ), 10 ) || 0 ) -
				this.helperProportions.height -
				this.margins.top -
				this.margins.bottom
		];
		this.relativeContainer = c;
	},

	_convertPositionTo: function( d, pos ) {

		if ( !pos ) {
			pos = this.position;
		}

		var mod = d === "absolute" ? 1 : -1,
			scrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );

		return {
			top: (

				// The absolute mouse position
				pos.top	+

				// Only for relative positioned nodes: Relative offset from element to offset parent
				this.offset.relative.top * mod +

				// The offsetParent's offset without borders (offset + border)
				this.offset.parent.top * mod -
				( ( this.cssPosition === "fixed" ?
					-this.offset.scroll.top :
					( scrollIsRootNode ? 0 : this.offset.scroll.top ) ) * mod )
			),
			left: (

				// The absolute mouse position
				pos.left +

				// Only for relative positioned nodes: Relative offset from element to offset parent
				this.offset.relative.left * mod +

				// The offsetParent's offset without borders (offset + border)
				this.offset.parent.left * mod	-
				( ( this.cssPosition === "fixed" ?
					-this.offset.scroll.left :
					( scrollIsRootNode ? 0 : this.offset.scroll.left ) ) * mod )
			)
		};

	},

	_generatePosition: function( event, constrainPosition ) {

		var containment, co, top, left,
			o = this.options,
			scrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] ),
			pageX = event.pageX,
			pageY = event.pageY;

		// Cache the scroll
		if ( !scrollIsRootNode || !this.offset.scroll ) {
			this.offset.scroll = {
				top: this.scrollParent.scrollTop(),
				left: this.scrollParent.scrollLeft()
			};
		}

		/*
		 * - Position constraining -
		 * Constrain the position to a mix of grid, containment.
		 */

		// If we are not dragging yet, we won't check for options
		if ( constrainPosition ) {
			if ( this.containment ) {
				if ( this.relativeContainer ) {
					co = this.relativeContainer.offset();
					containment = [
						this.containment[ 0 ] + co.left,
						this.containment[ 1 ] + co.top,
						this.containment[ 2 ] + co.left,
						this.containment[ 3 ] + co.top
					];
				} else {
					containment = this.containment;
				}

				if ( event.pageX - this.offset.click.left < containment[ 0 ] ) {
					pageX = containment[ 0 ] + this.offset.click.left;
				}
				if ( event.pageY - this.offset.click.top < containment[ 1 ] ) {
					pageY = containment[ 1 ] + this.offset.click.top;
				}
				if ( event.pageX - this.offset.click.left > containment[ 2 ] ) {
					pageX = containment[ 2 ] + this.offset.click.left;
				}
				if ( event.pageY - this.offset.click.top > containment[ 3 ] ) {
					pageY = containment[ 3 ] + this.offset.click.top;
				}
			}

			if ( o.grid ) {

				//Check for grid elements set to 0 to prevent divide by 0 error causing invalid
				// argument errors in IE (see ticket #6950)
				top = o.grid[ 1 ] ? this.originalPageY + Math.round( ( pageY -
					this.originalPageY ) / o.grid[ 1 ] ) * o.grid[ 1 ] : this.originalPageY;
				pageY = containment ? ( ( top - this.offset.click.top >= containment[ 1 ] ||
					top - this.offset.click.top > containment[ 3 ] ) ?
						top :
						( ( top - this.offset.click.top >= containment[ 1 ] ) ?
							top - o.grid[ 1 ] : top + o.grid[ 1 ] ) ) : top;

				left = o.grid[ 0 ] ? this.originalPageX +
					Math.round( ( pageX - this.originalPageX ) / o.grid[ 0 ] ) * o.grid[ 0 ] :
					this.originalPageX;
				pageX = containment ? ( ( left - this.offset.click.left >= containment[ 0 ] ||
					left - this.offset.click.left > containment[ 2 ] ) ?
						left :
						( ( left - this.offset.click.left >= containment[ 0 ] ) ?
							left - o.grid[ 0 ] : left + o.grid[ 0 ] ) ) : left;
			}

			if ( o.axis === "y" ) {
				pageX = this.originalPageX;
			}

			if ( o.axis === "x" ) {
				pageY = this.originalPageY;
			}
		}

		return {
			top: (

				// The absolute mouse position
				pageY -

				// Click offset (relative to the element)
				this.offset.click.top -

				// Only for relative positioned nodes: Relative offset from element to offset parent
				this.offset.relative.top -

				// The offsetParent's offset without borders (offset + border)
				this.offset.parent.top +
				( this.cssPosition === "fixed" ?
					-this.offset.scroll.top :
					( scrollIsRootNode ? 0 : this.offset.scroll.top ) )
			),
			left: (

				// The absolute mouse position
				pageX -

				// Click offset (relative to the element)
				this.offset.click.left -

				// Only for relative positioned nodes: Relative offset from element to offset parent
				this.offset.relative.left -

				// The offsetParent's offset without borders (offset + border)
				this.offset.parent.left +
				( this.cssPosition === "fixed" ?
					-this.offset.scroll.left :
					( scrollIsRootNode ? 0 : this.offset.scroll.left ) )
			)
		};

	},

	_clear: function() {
		this._removeClass( this.helper, "ui-draggable-dragging" );
		if ( this.helper[ 0 ] !== this.element[ 0 ] && !this.cancelHelperRemoval ) {
			this.helper.remove();
		}
		this.helper = null;
		this.cancelHelperRemoval = false;
		if ( this.destroyOnClear ) {
			this.destroy();
		}
	},

	// From now on bulk stuff - mainly helpers

	_trigger: function( type, event, ui ) {
		ui = ui || this._uiHash();
		$.ui.plugin.call( this, type, [ event, ui, this ], true );

		// Absolute position and offset (see #6884 ) have to be recalculated after plugins
		if ( /^(drag|start|stop)/.test( type ) ) {
			this.positionAbs = this._convertPositionTo( "absolute" );
			ui.offset = this.positionAbs;
		}
		return $.Widget.prototype._trigger.call( this, type, event, ui );
	},

	plugins: {},

	_uiHash: function() {
		return {
			helper: this.helper,
			position: this.position,
			originalPosition: this.originalPosition,
			offset: this.positionAbs
		};
	}

} );

$.ui.plugin.add( "draggable", "connectToSortable", {
	start: function( event, ui, draggable ) {
		var uiSortable = $.extend( {}, ui, {
			item: draggable.element
		} );

		draggable.sortables = [];
		$( draggable.options.connectToSortable ).each( function() {
			var sortable = $( this ).sortable( "instance" );

			if ( sortable && !sortable.options.disabled ) {
				draggable.sortables.push( sortable );

				// RefreshPositions is called at drag start to refresh the containerCache
				// which is used in drag. This ensures it's initialized and synchronized
				// with any changes that might have happened on the page since initialization.
				sortable.refreshPositions();
				sortable._trigger( "activate", event, uiSortable );
			}
		} );
	},
	stop: function( event, ui, draggable ) {
		var uiSortable = $.extend( {}, ui, {
			item: draggable.element
		} );

		draggable.cancelHelperRemoval = false;

		$.each( draggable.sortables, function() {
			var sortable = this;

			if ( sortable.isOver ) {
				sortable.isOver = 0;

				// Allow this sortable to handle removing the helper
				draggable.cancelHelperRemoval = true;
				sortable.cancelHelperRemoval = false;

				// Use _storedCSS To restore properties in the sortable,
				// as this also handles revert (#9675) since the draggable
				// may have modified them in unexpected ways (#8809)
				sortable._storedCSS = {
					position: sortable.placeholder.css( "position" ),
					top: sortable.placeholder.css( "top" ),
					left: sortable.placeholder.css( "left" )
				};

				sortable._mouseStop( event );

				// Once drag has ended, the sortable should return to using
				// its original helper, not the shared helper from draggable
				sortable.options.helper = sortable.options._helper;
			} else {

				// Prevent this Sortable from removing the helper.
				// However, don't set the draggable to remove the helper
				// either as another connected Sortable may yet handle the removal.
				sortable.cancelHelperRemoval = true;

				sortable._trigger( "deactivate", event, uiSortable );
			}
		} );
	},
	drag: function( event, ui, draggable ) {
		$.each( draggable.sortables, function() {
			var innermostIntersecting = false,
				sortable = this;

			// Copy over variables that sortable's _intersectsWith uses
			sortable.positionAbs = draggable.positionAbs;
			sortable.helperProportions = draggable.helperProportions;
			sortable.offset.click = draggable.offset.click;

			if ( sortable._intersectsWith( sortable.containerCache ) ) {
				innermostIntersecting = true;

				$.each( draggable.sortables, function() {

					// Copy over variables that sortable's _intersectsWith uses
					this.positionAbs = draggable.positionAbs;
					this.helperProportions = draggable.helperProportions;
					this.offset.click = draggable.offset.click;

					if ( this !== sortable &&
							this._intersectsWith( this.containerCache ) &&
							$.contains( sortable.element[ 0 ], this.element[ 0 ] ) ) {
						innermostIntersecting = false;
					}

					return innermostIntersecting;
				} );
			}

			if ( innermostIntersecting ) {

				// If it intersects, we use a little isOver variable and set it once,
				// so that the move-in stuff gets fired only once.
				if ( !sortable.isOver ) {
					sortable.isOver = 1;

					// Store draggable's parent in case we need to reappend to it later.
					draggable._parent = ui.helper.parent();

					sortable.currentItem = ui.helper
						.appendTo( sortable.element )
						.data( "ui-sortable-item", true );

					// Store helper option to later restore it
					sortable.options._helper = sortable.options.helper;

					sortable.options.helper = function() {
						return ui.helper[ 0 ];
					};

					// Fire the start events of the sortable with our passed browser event,
					// and our own helper (so it doesn't create a new one)
					event.target = sortable.currentItem[ 0 ];
					sortable._mouseCapture( event, true );
					sortable._mouseStart( event, true, true );

					// Because the browser event is way off the new appended portlet,
					// modify necessary variables to reflect the changes
					sortable.offset.click.top = draggable.offset.click.top;
					sortable.offset.click.left = draggable.offset.click.left;
					sortable.offset.parent.left -= draggable.offset.parent.left -
						sortable.offset.parent.left;
					sortable.offset.parent.top -= draggable.offset.parent.top -
						sortable.offset.parent.top;

					draggable._trigger( "toSortable", event );

					// Inform draggable that the helper is in a valid drop zone,
					// used solely in the revert option to handle "valid/invalid".
					draggable.dropped = sortable.element;

					// Need to refreshPositions of all sortables in the case that
					// adding to one sortable changes the location of the other sortables (#9675)
					$.each( draggable.sortables, function() {
						this.refreshPositions();
					} );

					// Hack so receive/update callbacks work (mostly)
					draggable.currentItem = draggable.element;
					sortable.fromOutside = draggable;
				}

				if ( sortable.currentItem ) {
					sortable._mouseDrag( event );

					// Copy the sortable's position because the draggable's can potentially reflect
					// a relative position, while sortable is always absolute, which the dragged
					// element has now become. (#8809)
					ui.position = sortable.position;
				}
			} else {

				// If it doesn't intersect with the sortable, and it intersected before,
				// we fake the drag stop of the sortable, but make sure it doesn't remove
				// the helper by using cancelHelperRemoval.
				if ( sortable.isOver ) {

					sortable.isOver = 0;
					sortable.cancelHelperRemoval = true;

					// Calling sortable's mouseStop would trigger a revert,
					// so revert must be temporarily false until after mouseStop is called.
					sortable.options._revert = sortable.options.revert;
					sortable.options.revert = false;

					sortable._trigger( "out", event, sortable._uiHash( sortable ) );
					sortable._mouseStop( event, true );

					// Restore sortable behaviors that were modfied
					// when the draggable entered the sortable area (#9481)
					sortable.options.revert = sortable.options._revert;
					sortable.options.helper = sortable.options._helper;

					if ( sortable.placeholder ) {
						sortable.placeholder.remove();
					}

					// Restore and recalculate the draggable's offset considering the sortable
					// may have modified them in unexpected ways. (#8809, #10669)
					ui.helper.appendTo( draggable._parent );
					draggable._refreshOffsets( event );
					ui.position = draggable._generatePosition( event, true );

					draggable._trigger( "fromSortable", event );

					// Inform draggable that the helper is no longer in a valid drop zone
					draggable.dropped = false;

					// Need to refreshPositions of all sortables just in case removing
					// from one sortable changes the location of other sortables (#9675)
					$.each( draggable.sortables, function() {
						this.refreshPositions();
					} );
				}
			}
		} );
	}
} );

$.ui.plugin.add( "draggable", "cursor", {
	start: function( event, ui, instance ) {
		var t = $( "body" ),
			o = instance.options;

		if ( t.css( "cursor" ) ) {
			o._cursor = t.css( "cursor" );
		}
		t.css( "cursor", o.cursor );
	},
	stop: function( event, ui, instance ) {
		var o = instance.options;
		if ( o._cursor ) {
			$( "body" ).css( "cursor", o._cursor );
		}
	}
} );

$.ui.plugin.add( "draggable", "opacity", {
	start: function( event, ui, instance ) {
		var t = $( ui.helper ),
			o = instance.options;
		if ( t.css( "opacity" ) ) {
			o._opacity = t.css( "opacity" );
		}
		t.css( "opacity", o.opacity );
	},
	stop: function( event, ui, instance ) {
		var o = instance.options;
		if ( o._opacity ) {
			$( ui.helper ).css( "opacity", o._opacity );
		}
	}
} );

$.ui.plugin.add( "draggable", "scroll", {
	start: function( event, ui, i ) {
		if ( !i.scrollParentNotHidden ) {
			i.scrollParentNotHidden = i.helper.scrollParent( false );
		}

		if ( i.scrollParentNotHidden[ 0 ] !== i.document[ 0 ] &&
				i.scrollParentNotHidden[ 0 ].tagName !== "HTML" ) {
			i.overflowOffset = i.scrollParentNotHidden.offset();
		}
	},
	drag: function( event, ui, i  ) {

		var o = i.options,
			scrolled = false,
			scrollParent = i.scrollParentNotHidden[ 0 ],
			document = i.document[ 0 ];

		if ( scrollParent !== document && scrollParent.tagName !== "HTML" ) {
			if ( !o.axis || o.axis !== "x" ) {
				if ( ( i.overflowOffset.top + scrollParent.offsetHeight ) - event.pageY <
						o.scrollSensitivity ) {
					scrollParent.scrollTop = scrolled = scrollParent.scrollTop + o.scrollSpeed;
				} else if ( event.pageY - i.overflowOffset.top < o.scrollSensitivity ) {
					scrollParent.scrollTop = scrolled = scrollParent.scrollTop - o.scrollSpeed;
				}
			}

			if ( !o.axis || o.axis !== "y" ) {
				if ( ( i.overflowOffset.left + scrollParent.offsetWidth ) - event.pageX <
						o.scrollSensitivity ) {
					scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft + o.scrollSpeed;
				} else if ( event.pageX - i.overflowOffset.left < o.scrollSensitivity ) {
					scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft - o.scrollSpeed;
				}
			}

		} else {

			if ( !o.axis || o.axis !== "x" ) {
				if ( event.pageY - $( document ).scrollTop() < o.scrollSensitivity ) {
					scrolled = $( document ).scrollTop( $( document ).scrollTop() - o.scrollSpeed );
				} else if ( $( window ).height() - ( event.pageY - $( document ).scrollTop() ) <
						o.scrollSensitivity ) {
					scrolled = $( document ).scrollTop( $( document ).scrollTop() + o.scrollSpeed );
				}
			}

			if ( !o.axis || o.axis !== "y" ) {
				if ( event.pageX - $( document ).scrollLeft() < o.scrollSensitivity ) {
					scrolled = $( document ).scrollLeft(
						$( document ).scrollLeft() - o.scrollSpeed
					);
				} else if ( $( window ).width() - ( event.pageX - $( document ).scrollLeft() ) <
						o.scrollSensitivity ) {
					scrolled = $( document ).scrollLeft(
						$( document ).scrollLeft() + o.scrollSpeed
					);
				}
			}

		}

		if ( scrolled !== false && $.ui.ddmanager && !o.dropBehaviour ) {
			$.ui.ddmanager.prepareOffsets( i, event );
		}

	}
} );

$.ui.plugin.add( "draggable", "snap", {
	start: function( event, ui, i ) {

		var o = i.options;

		i.snapElements = [];

		$( o.snap.constructor !== String ? ( o.snap.items || ":data(ui-draggable)" ) : o.snap )
			.each( function() {
				var $t = $( this ),
					$o = $t.offset();
				if ( this !== i.element[ 0 ] ) {
					i.snapElements.push( {
						item: this,
						width: $t.outerWidth(), height: $t.outerHeight(),
						top: $o.top, left: $o.left
					} );
				}
			} );

	},
	drag: function( event, ui, inst ) {

		var ts, bs, ls, rs, l, r, t, b, i, first,
			o = inst.options,
			d = o.snapTolerance,
			x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,
			y1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;

		for ( i = inst.snapElements.length - 1; i >= 0; i-- ) {

			l = inst.snapElements[ i ].left - inst.margins.left;
			r = l + inst.snapElements[ i ].width;
			t = inst.snapElements[ i ].top - inst.margins.top;
			b = t + inst.snapElements[ i ].height;

			if ( x2 < l - d || x1 > r + d || y2 < t - d || y1 > b + d ||
					!$.contains( inst.snapElements[ i ].item.ownerDocument,
					inst.snapElements[ i ].item ) ) {
				if ( inst.snapElements[ i ].snapping ) {
					( inst.options.snap.release &&
						inst.options.snap.release.call(
							inst.element,
							event,
							$.extend( inst._uiHash(), { snapItem: inst.snapElements[ i ].item } )
						) );
				}
				inst.snapElements[ i ].snapping = false;
				continue;
			}

			if ( o.snapMode !== "inner" ) {
				ts = Math.abs( t - y2 ) <= d;
				bs = Math.abs( b - y1 ) <= d;
				ls = Math.abs( l - x2 ) <= d;
				rs = Math.abs( r - x1 ) <= d;
				if ( ts ) {
					ui.position.top = inst._convertPositionTo( "relative", {
						top: t - inst.helperProportions.height,
						left: 0
					} ).top;
				}
				if ( bs ) {
					ui.position.top = inst._convertPositionTo( "relative", {
						top: b,
						left: 0
					} ).top;
				}
				if ( ls ) {
					ui.position.left = inst._convertPositionTo( "relative", {
						top: 0,
						left: l - inst.helperProportions.width
					} ).left;
				}
				if ( rs ) {
					ui.position.left = inst._convertPositionTo( "relative", {
						top: 0,
						left: r
					} ).left;
				}
			}

			first = ( ts || bs || ls || rs );

			if ( o.snapMode !== "outer" ) {
				ts = Math.abs( t - y1 ) <= d;
				bs = Math.abs( b - y2 ) <= d;
				ls = Math.abs( l - x1 ) <= d;
				rs = Math.abs( r - x2 ) <= d;
				if ( ts ) {
					ui.position.top = inst._convertPositionTo( "relative", {
						top: t,
						left: 0
					} ).top;
				}
				if ( bs ) {
					ui.position.top = inst._convertPositionTo( "relative", {
						top: b - inst.helperProportions.height,
						left: 0
					} ).top;
				}
				if ( ls ) {
					ui.position.left = inst._convertPositionTo( "relative", {
						top: 0,
						left: l
					} ).left;
				}
				if ( rs ) {
					ui.position.left = inst._convertPositionTo( "relative", {
						top: 0,
						left: r - inst.helperProportions.width
					} ).left;
				}
			}

			if ( !inst.snapElements[ i ].snapping && ( ts || bs || ls || rs || first ) ) {
				( inst.options.snap.snap &&
					inst.options.snap.snap.call(
						inst.element,
						event,
						$.extend( inst._uiHash(), {
							snapItem: inst.snapElements[ i ].item
						} ) ) );
			}
			inst.snapElements[ i ].snapping = ( ts || bs || ls || rs || first );

		}

	}
} );

$.ui.plugin.add( "draggable", "stack", {
	start: function( event, ui, instance ) {
		var min,
			o = instance.options,
			group = $.makeArray( $( o.stack ) ).sort( function( a, b ) {
				return ( parseInt( $( a ).css( "zIndex" ), 10 ) || 0 ) -
					( parseInt( $( b ).css( "zIndex" ), 10 ) || 0 );
			} );

		if ( !group.length ) { return; }

		min = parseInt( $( group[ 0 ] ).css( "zIndex" ), 10 ) || 0;
		$( group ).each( function( i ) {
			$( this ).css( "zIndex", min + i );
		} );
		this.css( "zIndex", ( min + group.length ) );
	}
} );

$.ui.plugin.add( "draggable", "zIndex", {
	start: function( event, ui, instance ) {
		var t = $( ui.helper ),
			o = instance.options;

		if ( t.css( "zIndex" ) ) {
			o._zIndex = t.css( "zIndex" );
		}
		t.css( "zIndex", o.zIndex );
	},
	stop: function( event, ui, instance ) {
		var o = instance.options;

		if ( o._zIndex ) {
			$( ui.helper ).css( "zIndex", o._zIndex );
		}
	}
} );

var widgetsDraggable = $.ui.draggable;


/*!
 * jQuery UI Resizable 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Resizable
//>>group: Interactions
//>>description: Enables resize functionality for any element.
//>>docs: http://api.jqueryui.com/resizable/
//>>demos: http://jqueryui.com/resizable/
//>>css.structure: ../../themes/base/core.css
//>>css.structure: ../../themes/base/resizable.css
//>>css.theme: ../../themes/base/theme.css



$.widget( "ui.resizable", $.ui.mouse, {
	version: "1.12.1",
	widgetEventPrefix: "resize",
	options: {
		alsoResize: false,
		animate: false,
		animateDuration: "slow",
		animateEasing: "swing",
		aspectRatio: false,
		autoHide: false,
		classes: {
			"ui-resizable-se": "ui-icon ui-icon-gripsmall-diagonal-se"
		},
		containment: false,
		ghost: false,
		grid: false,
		handles: "e,s,se",
		helper: false,
		maxHeight: null,
		maxWidth: null,
		minHeight: 10,
		minWidth: 10,

		// See #7960
		zIndex: 90,

		// Callbacks
		resize: null,
		start: null,
		stop: null
	},

	_num: function( value ) {
		return parseFloat( value ) || 0;
	},

	_isNumber: function( value ) {
		return !isNaN( parseFloat( value ) );
	},

	_hasScroll: function( el, a ) {

		if ( $( el ).css( "overflow" ) === "hidden" ) {
			return false;
		}

		var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop",
			has = false;

		if ( el[ scroll ] > 0 ) {
			return true;
		}

		// TODO: determine which cases actually cause this to happen
		// if the element doesn't have the scroll set, see if it's possible to
		// set the scroll
		el[ scroll ] = 1;
		has = ( el[ scroll ] > 0 );
		el[ scroll ] = 0;
		return has;
	},

	_create: function() {

		var margins,
			o = this.options,
			that = this;
		this._addClass( "ui-resizable" );

		$.extend( this, {
			_aspectRatio: !!( o.aspectRatio ),
			aspectRatio: o.aspectRatio,
			originalElement: this.element,
			_proportionallyResizeElements: [],
			_helper: o.helper || o.ghost || o.animate ? o.helper || "ui-resizable-helper" : null
		} );

		// Wrap the element if it cannot hold child nodes
		if ( this.element[ 0 ].nodeName.match( /^(canvas|textarea|input|select|button|img)$/i ) ) {

			this.element.wrap(
				$( "<div class='ui-wrapper' style='overflow: hidden;'></div>" ).css( {
					position: this.element.css( "position" ),
					width: this.element.outerWidth(),
					height: this.element.outerHeight(),
					top: this.element.css( "top" ),
					left: this.element.css( "left" )
				} )
			);

			this.element = this.element.parent().data(
				"ui-resizable", this.element.resizable( "instance" )
			);

			this.elementIsWrapper = true;

			margins = {
				marginTop: this.originalElement.css( "marginTop" ),
				marginRight: this.originalElement.css( "marginRight" ),
				marginBottom: this.originalElement.css( "marginBottom" ),
				marginLeft: this.originalElement.css( "marginLeft" )
			};

			this.element.css( margins );
			this.originalElement.css( "margin", 0 );

			// support: Safari
			// Prevent Safari textarea resize
			this.originalResizeStyle = this.originalElement.css( "resize" );
			this.originalElement.css( "resize", "none" );

			this._proportionallyResizeElements.push( this.originalElement.css( {
				position: "static",
				zoom: 1,
				display: "block"
			} ) );

			// Support: IE9
			// avoid IE jump (hard set the margin)
			this.originalElement.css( margins );

			this._proportionallyResize();
		}

		this._setupHandles();

		if ( o.autoHide ) {
			$( this.element )
				.on( "mouseenter", function() {
					if ( o.disabled ) {
						return;
					}
					that._removeClass( "ui-resizable-autohide" );
					that._handles.show();
				} )
				.on( "mouseleave", function() {
					if ( o.disabled ) {
						return;
					}
					if ( !that.resizing ) {
						that._addClass( "ui-resizable-autohide" );
						that._handles.hide();
					}
				} );
		}

		this._mouseInit();
	},

	_destroy: function() {

		this._mouseDestroy();

		var wrapper,
			_destroy = function( exp ) {
				$( exp )
					.removeData( "resizable" )
					.removeData( "ui-resizable" )
					.off( ".resizable" )
					.find( ".ui-resizable-handle" )
						.remove();
			};

		// TODO: Unwrap at same DOM position
		if ( this.elementIsWrapper ) {
			_destroy( this.element );
			wrapper = this.element;
			this.originalElement.css( {
				position: wrapper.css( "position" ),
				width: wrapper.outerWidth(),
				height: wrapper.outerHeight(),
				top: wrapper.css( "top" ),
				left: wrapper.css( "left" )
			} ).insertAfter( wrapper );
			wrapper.remove();
		}

		this.originalElement.css( "resize", this.originalResizeStyle );
		_destroy( this.originalElement );

		return this;
	},

	_setOption: function( key, value ) {
		this._super( key, value );

		switch ( key ) {
		case "handles":
			this._removeHandles();
			this._setupHandles();
			break;
		default:
			break;
		}
	},

	_setupHandles: function() {
		var o = this.options, handle, i, n, hname, axis, that = this;
		this.handles = o.handles ||
			( !$( ".ui-resizable-handle", this.element ).length ?
				"e,s,se" : {
					n: ".ui-resizable-n",
					e: ".ui-resizable-e",
					s: ".ui-resizable-s",
					w: ".ui-resizable-w",
					se: ".ui-resizable-se",
					sw: ".ui-resizable-sw",
					ne: ".ui-resizable-ne",
					nw: ".ui-resizable-nw"
				} );

		this._handles = $();
		if ( this.handles.constructor === String ) {

			if ( this.handles === "all" ) {
				this.handles = "n,e,s,w,se,sw,ne,nw";
			}

			n = this.handles.split( "," );
			this.handles = {};

			for ( i = 0; i < n.length; i++ ) {

				handle = $.trim( n[ i ] );
				hname = "ui-resizable-" + handle;
				axis = $( "<div>" );
				this._addClass( axis, "ui-resizable-handle " + hname );

				axis.css( { zIndex: o.zIndex } );

				this.handles[ handle ] = ".ui-resizable-" + handle;
				this.element.append( axis );
			}

		}

		this._renderAxis = function( target ) {

			var i, axis, padPos, padWrapper;

			target = target || this.element;

			for ( i in this.handles ) {

				if ( this.handles[ i ].constructor === String ) {
					this.handles[ i ] = this.element.children( this.handles[ i ] ).first().show();
				} else if ( this.handles[ i ].jquery || this.handles[ i ].nodeType ) {
					this.handles[ i ] = $( this.handles[ i ] );
					this._on( this.handles[ i ], { "mousedown": that._mouseDown } );
				}

				if ( this.elementIsWrapper &&
						this.originalElement[ 0 ]
							.nodeName
							.match( /^(textarea|input|select|button)$/i ) ) {
					axis = $( this.handles[ i ], this.element );

					padWrapper = /sw|ne|nw|se|n|s/.test( i ) ?
						axis.outerHeight() :
						axis.outerWidth();

					padPos = [ "padding",
						/ne|nw|n/.test( i ) ? "Top" :
						/se|sw|s/.test( i ) ? "Bottom" :
						/^e$/.test( i ) ? "Right" : "Left" ].join( "" );

					target.css( padPos, padWrapper );

					this._proportionallyResize();
				}

				this._handles = this._handles.add( this.handles[ i ] );
			}
		};

		// TODO: make renderAxis a prototype function
		this._renderAxis( this.element );

		this._handles = this._handles.add( this.element.find( ".ui-resizable-handle" ) );
		this._handles.disableSelection();

		this._handles.on( "mouseover", function() {
			if ( !that.resizing ) {
				if ( this.className ) {
					axis = this.className.match( /ui-resizable-(se|sw|ne|nw|n|e|s|w)/i );
				}
				that.axis = axis && axis[ 1 ] ? axis[ 1 ] : "se";
			}
		} );

		if ( o.autoHide ) {
			this._handles.hide();
			this._addClass( "ui-resizable-autohide" );
		}
	},

	_removeHandles: function() {
		this._handles.remove();
	},

	_mouseCapture: function( event ) {
		var i, handle,
			capture = false;

		for ( i in this.handles ) {
			handle = $( this.handles[ i ] )[ 0 ];
			if ( handle === event.target || $.contains( handle, event.target ) ) {
				capture = true;
			}
		}

		return !this.options.disabled && capture;
	},

	_mouseStart: function( event ) {

		var curleft, curtop, cursor,
			o = this.options,
			el = this.element;

		this.resizing = true;

		this._renderProxy();

		curleft = this._num( this.helper.css( "left" ) );
		curtop = this._num( this.helper.css( "top" ) );

		if ( o.containment ) {
			curleft += $( o.containment ).scrollLeft() || 0;
			curtop += $( o.containment ).scrollTop() || 0;
		}

		this.offset = this.helper.offset();
		this.position = { left: curleft, top: curtop };

		this.size = this._helper ? {
				width: this.helper.width(),
				height: this.helper.height()
			} : {
				width: el.width(),
				height: el.height()
			};

		this.originalSize = this._helper ? {
				width: el.outerWidth(),
				height: el.outerHeight()
			} : {
				width: el.width(),
				height: el.height()
			};

		this.sizeDiff = {
			width: el.outerWidth() - el.width(),
			height: el.outerHeight() - el.height()
		};

		this.originalPosition = { left: curleft, top: curtop };
		this.originalMousePosition = { left: event.pageX, top: event.pageY };

		this.aspectRatio = ( typeof o.aspectRatio === "number" ) ?
			o.aspectRatio :
			( ( this.originalSize.width / this.originalSize.height ) || 1 );

		cursor = $( ".ui-resizable-" + this.axis ).css( "cursor" );
		$( "body" ).css( "cursor", cursor === "auto" ? this.axis + "-resize" : cursor );

		this._addClass( "ui-resizable-resizing" );
		this._propagate( "start", event );
		return true;
	},

	_mouseDrag: function( event ) {

		var data, props,
			smp = this.originalMousePosition,
			a = this.axis,
			dx = ( event.pageX - smp.left ) || 0,
			dy = ( event.pageY - smp.top ) || 0,
			trigger = this._change[ a ];

		this._updatePrevProperties();

		if ( !trigger ) {
			return false;
		}

		data = trigger.apply( this, [ event, dx, dy ] );

		this._updateVirtualBoundaries( event.shiftKey );
		if ( this._aspectRatio || event.shiftKey ) {
			data = this._updateRatio( data, event );
		}

		data = this._respectSize( data, event );

		this._updateCache( data );

		this._propagate( "resize", event );

		props = this._applyChanges();

		if ( !this._helper && this._proportionallyResizeElements.length ) {
			this._proportionallyResize();
		}

		if ( !$.isEmptyObject( props ) ) {
			this._updatePrevProperties();
			this._trigger( "resize", event, this.ui() );
			this._applyChanges();
		}

		return false;
	},

	_mouseStop: function( event ) {

		this.resizing = false;
		var pr, ista, soffseth, soffsetw, s, left, top,
			o = this.options, that = this;

		if ( this._helper ) {

			pr = this._proportionallyResizeElements;
			ista = pr.length && ( /textarea/i ).test( pr[ 0 ].nodeName );
			soffseth = ista && this._hasScroll( pr[ 0 ], "left" ) ? 0 : that.sizeDiff.height;
			soffsetw = ista ? 0 : that.sizeDiff.width;

			s = {
				width: ( that.helper.width()  - soffsetw ),
				height: ( that.helper.height() - soffseth )
			};
			left = ( parseFloat( that.element.css( "left" ) ) +
				( that.position.left - that.originalPosition.left ) ) || null;
			top = ( parseFloat( that.element.css( "top" ) ) +
				( that.position.top - that.originalPosition.top ) ) || null;

			if ( !o.animate ) {
				this.element.css( $.extend( s, { top: top, left: left } ) );
			}

			that.helper.height( that.size.height );
			that.helper.width( that.size.width );

			if ( this._helper && !o.animate ) {
				this._proportionallyResize();
			}
		}

		$( "body" ).css( "cursor", "auto" );

		this._removeClass( "ui-resizable-resizing" );

		this._propagate( "stop", event );

		if ( this._helper ) {
			this.helper.remove();
		}

		return false;

	},

	_updatePrevProperties: function() {
		this.prevPosition = {
			top: this.position.top,
			left: this.position.left
		};
		this.prevSize = {
			width: this.size.width,
			height: this.size.height
		};
	},

	_applyChanges: function() {
		var props = {};

		if ( this.position.top !== this.prevPosition.top ) {
			props.top = this.position.top + "px";
		}
		if ( this.position.left !== this.prevPosition.left ) {
			props.left = this.position.left + "px";
		}
		if ( this.size.width !== this.prevSize.width ) {
			props.width = this.size.width + "px";
		}
		if ( this.size.height !== this.prevSize.height ) {
			props.height = this.size.height + "px";
		}

		this.helper.css( props );

		return props;
	},

	_updateVirtualBoundaries: function( forceAspectRatio ) {
		var pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b,
			o = this.options;

		b = {
			minWidth: this._isNumber( o.minWidth ) ? o.minWidth : 0,
			maxWidth: this._isNumber( o.maxWidth ) ? o.maxWidth : Infinity,
			minHeight: this._isNumber( o.minHeight ) ? o.minHeight : 0,
			maxHeight: this._isNumber( o.maxHeight ) ? o.maxHeight : Infinity
		};

		if ( this._aspectRatio || forceAspectRatio ) {
			pMinWidth = b.minHeight * this.aspectRatio;
			pMinHeight = b.minWidth / this.aspectRatio;
			pMaxWidth = b.maxHeight * this.aspectRatio;
			pMaxHeight = b.maxWidth / this.aspectRatio;

			if ( pMinWidth > b.minWidth ) {
				b.minWidth = pMinWidth;
			}
			if ( pMinHeight > b.minHeight ) {
				b.minHeight = pMinHeight;
			}
			if ( pMaxWidth < b.maxWidth ) {
				b.maxWidth = pMaxWidth;
			}
			if ( pMaxHeight < b.maxHeight ) {
				b.maxHeight = pMaxHeight;
			}
		}
		this._vBoundaries = b;
	},

	_updateCache: function( data ) {
		this.offset = this.helper.offset();
		if ( this._isNumber( data.left ) ) {
			this.position.left = data.left;
		}
		if ( this._isNumber( data.top ) ) {
			this.position.top = data.top;
		}
		if ( this._isNumber( data.height ) ) {
			this.size.height = data.height;
		}
		if ( this._isNumber( data.width ) ) {
			this.size.width = data.width;
		}
	},

	_updateRatio: function( data ) {

		var cpos = this.position,
			csize = this.size,
			a = this.axis;

		if ( this._isNumber( data.height ) ) {
			data.width = ( data.height * this.aspectRatio );
		} else if ( this._isNumber( data.width ) ) {
			data.height = ( data.width / this.aspectRatio );
		}

		if ( a === "sw" ) {
			data.left = cpos.left + ( csize.width - data.width );
			data.top = null;
		}
		if ( a === "nw" ) {
			data.top = cpos.top + ( csize.height - data.height );
			data.left = cpos.left + ( csize.width - data.width );
		}

		return data;
	},

	_respectSize: function( data ) {

		var o = this._vBoundaries,
			a = this.axis,
			ismaxw = this._isNumber( data.width ) && o.maxWidth && ( o.maxWidth < data.width ),
			ismaxh = this._isNumber( data.height ) && o.maxHeight && ( o.maxHeight < data.height ),
			isminw = this._isNumber( data.width ) && o.minWidth && ( o.minWidth > data.width ),
			isminh = this._isNumber( data.height ) && o.minHeight && ( o.minHeight > data.height ),
			dw = this.originalPosition.left + this.originalSize.width,
			dh = this.originalPosition.top + this.originalSize.height,
			cw = /sw|nw|w/.test( a ), ch = /nw|ne|n/.test( a );
		if ( isminw ) {
			data.width = o.minWidth;
		}
		if ( isminh ) {
			data.height = o.minHeight;
		}
		if ( ismaxw ) {
			data.width = o.maxWidth;
		}
		if ( ismaxh ) {
			data.height = o.maxHeight;
		}

		if ( isminw && cw ) {
			data.left = dw - o.minWidth;
		}
		if ( ismaxw && cw ) {
			data.left = dw - o.maxWidth;
		}
		if ( isminh && ch ) {
			data.top = dh - o.minHeight;
		}
		if ( ismaxh && ch ) {
			data.top = dh - o.maxHeight;
		}

		// Fixing jump error on top/left - bug #2330
		if ( !data.width && !data.height && !data.left && data.top ) {
			data.top = null;
		} else if ( !data.width && !data.height && !data.top && data.left ) {
			data.left = null;
		}

		return data;
	},

	_getPaddingPlusBorderDimensions: function( element ) {
		var i = 0,
			widths = [],
			borders = [
				element.css( "borderTopWidth" ),
				element.css( "borderRightWidth" ),
				element.css( "borderBottomWidth" ),
				element.css( "borderLeftWidth" )
			],
			paddings = [
				element.css( "paddingTop" ),
				element.css( "paddingRight" ),
				element.css( "paddingBottom" ),
				element.css( "paddingLeft" )
			];

		for ( ; i < 4; i++ ) {
			widths[ i ] = ( parseFloat( borders[ i ] ) || 0 );
			widths[ i ] += ( parseFloat( paddings[ i ] ) || 0 );
		}

		return {
			height: widths[ 0 ] + widths[ 2 ],
			width: widths[ 1 ] + widths[ 3 ]
		};
	},

	_proportionallyResize: function() {

		if ( !this._proportionallyResizeElements.length ) {
			return;
		}

		var prel,
			i = 0,
			element = this.helper || this.element;

		for ( ; i < this._proportionallyResizeElements.length; i++ ) {

			prel = this._proportionallyResizeElements[ i ];

			// TODO: Seems like a bug to cache this.outerDimensions
			// considering that we are in a loop.
			if ( !this.outerDimensions ) {
				this.outerDimensions = this._getPaddingPlusBorderDimensions( prel );
			}

			prel.css( {
				height: ( element.height() - this.outerDimensions.height ) || 0,
				width: ( element.width() - this.outerDimensions.width ) || 0
			} );

		}

	},

	_renderProxy: function() {

		var el = this.element, o = this.options;
		this.elementOffset = el.offset();

		if ( this._helper ) {

			this.helper = this.helper || $( "<div style='overflow:hidden;'></div>" );

			this._addClass( this.helper, this._helper );
			this.helper.css( {
				width: this.element.outerWidth(),
				height: this.element.outerHeight(),
				position: "absolute",
				left: this.elementOffset.left + "px",
				top: this.elementOffset.top + "px",
				zIndex: ++o.zIndex //TODO: Don't modify option
			} );

			this.helper
				.appendTo( "body" )
				.disableSelection();

		} else {
			this.helper = this.element;
		}

	},

	_change: {
		e: function( event, dx ) {
			return { width: this.originalSize.width + dx };
		},
		w: function( event, dx ) {
			var cs = this.originalSize, sp = this.originalPosition;
			return { left: sp.left + dx, width: cs.width - dx };
		},
		n: function( event, dx, dy ) {
			var cs = this.originalSize, sp = this.originalPosition;
			return { top: sp.top + dy, height: cs.height - dy };
		},
		s: function( event, dx, dy ) {
			return { height: this.originalSize.height + dy };
		},
		se: function( event, dx, dy ) {
			return $.extend( this._change.s.apply( this, arguments ),
				this._change.e.apply( this, [ event, dx, dy ] ) );
		},
		sw: function( event, dx, dy ) {
			return $.extend( this._change.s.apply( this, arguments ),
				this._change.w.apply( this, [ event, dx, dy ] ) );
		},
		ne: function( event, dx, dy ) {
			return $.extend( this._change.n.apply( this, arguments ),
				this._change.e.apply( this, [ event, dx, dy ] ) );
		},
		nw: function( event, dx, dy ) {
			return $.extend( this._change.n.apply( this, arguments ),
				this._change.w.apply( this, [ event, dx, dy ] ) );
		}
	},

	_propagate: function( n, event ) {
		$.ui.plugin.call( this, n, [ event, this.ui() ] );
		( n !== "resize" && this._trigger( n, event, this.ui() ) );
	},

	plugins: {},

	ui: function() {
		return {
			originalElement: this.originalElement,
			element: this.element,
			helper: this.helper,
			position: this.position,
			size: this.size,
			originalSize: this.originalSize,
			originalPosition: this.originalPosition
		};
	}

} );

/*
 * Resizable Extensions
 */

$.ui.plugin.add( "resizable", "animate", {

	stop: function( event ) {
		var that = $( this ).resizable( "instance" ),
			o = that.options,
			pr = that._proportionallyResizeElements,
			ista = pr.length && ( /textarea/i ).test( pr[ 0 ].nodeName ),
			soffseth = ista && that._hasScroll( pr[ 0 ], "left" ) ? 0 : that.sizeDiff.height,
			soffsetw = ista ? 0 : that.sizeDiff.width,
			style = {
				width: ( that.size.width - soffsetw ),
				height: ( that.size.height - soffseth )
			},
			left = ( parseFloat( that.element.css( "left" ) ) +
				( that.position.left - that.originalPosition.left ) ) || null,
			top = ( parseFloat( that.element.css( "top" ) ) +
				( that.position.top - that.originalPosition.top ) ) || null;

		that.element.animate(
			$.extend( style, top && left ? { top: top, left: left } : {} ), {
				duration: o.animateDuration,
				easing: o.animateEasing,
				step: function() {

					var data = {
						width: parseFloat( that.element.css( "width" ) ),
						height: parseFloat( that.element.css( "height" ) ),
						top: parseFloat( that.element.css( "top" ) ),
						left: parseFloat( that.element.css( "left" ) )
					};

					if ( pr && pr.length ) {
						$( pr[ 0 ] ).css( { width: data.width, height: data.height } );
					}

					// Propagating resize, and updating values for each animation step
					that._updateCache( data );
					that._propagate( "resize", event );

				}
			}
		);
	}

} );

$.ui.plugin.add( "resizable", "containment", {

	start: function() {
		var element, p, co, ch, cw, width, height,
			that = $( this ).resizable( "instance" ),
			o = that.options,
			el = that.element,
			oc = o.containment,
			ce = ( oc instanceof $ ) ?
				oc.get( 0 ) :
				( /parent/.test( oc ) ) ? el.parent().get( 0 ) : oc;

		if ( !ce ) {
			return;
		}

		that.containerElement = $( ce );

		if ( /document/.test( oc ) || oc === document ) {
			that.containerOffset = {
				left: 0,
				top: 0
			};
			that.containerPosition = {
				left: 0,
				top: 0
			};

			that.parentData = {
				element: $( document ),
				left: 0,
				top: 0,
				width: $( document ).width(),
				height: $( document ).height() || document.body.parentNode.scrollHeight
			};
		} else {
			element = $( ce );
			p = [];
			$( [ "Top", "Right", "Left", "Bottom" ] ).each( function( i, name ) {
				p[ i ] = that._num( element.css( "padding" + name ) );
			} );

			that.containerOffset = element.offset();
			that.containerPosition = element.position();
			that.containerSize = {
				height: ( element.innerHeight() - p[ 3 ] ),
				width: ( element.innerWidth() - p[ 1 ] )
			};

			co = that.containerOffset;
			ch = that.containerSize.height;
			cw = that.containerSize.width;
			width = ( that._hasScroll ( ce, "left" ) ? ce.scrollWidth : cw );
			height = ( that._hasScroll ( ce ) ? ce.scrollHeight : ch ) ;

			that.parentData = {
				element: ce,
				left: co.left,
				top: co.top,
				width: width,
				height: height
			};
		}
	},

	resize: function( event ) {
		var woset, hoset, isParent, isOffsetRelative,
			that = $( this ).resizable( "instance" ),
			o = that.options,
			co = that.containerOffset,
			cp = that.position,
			pRatio = that._aspectRatio || event.shiftKey,
			cop = {
				top: 0,
				left: 0
			},
			ce = that.containerElement,
			continueResize = true;

		if ( ce[ 0 ] !== document && ( /static/ ).test( ce.css( "position" ) ) ) {
			cop = co;
		}

		if ( cp.left < ( that._helper ? co.left : 0 ) ) {
			that.size.width = that.size.width +
				( that._helper ?
					( that.position.left - co.left ) :
					( that.position.left - cop.left ) );

			if ( pRatio ) {
				that.size.height = that.size.width / that.aspectRatio;
				continueResize = false;
			}
			that.position.left = o.helper ? co.left : 0;
		}

		if ( cp.top < ( that._helper ? co.top : 0 ) ) {
			that.size.height = that.size.height +
				( that._helper ?
					( that.position.top - co.top ) :
					that.position.top );

			if ( pRatio ) {
				that.size.width = that.size.height * that.aspectRatio;
				continueResize = false;
			}
			that.position.top = that._helper ? co.top : 0;
		}

		isParent = that.containerElement.get( 0 ) === that.element.parent().get( 0 );
		isOffsetRelative = /relative|absolute/.test( that.containerElement.css( "position" ) );

		if ( isParent && isOffsetRelative ) {
			that.offset.left = that.parentData.left + that.position.left;
			that.offset.top = that.parentData.top + that.position.top;
		} else {
			that.offset.left = that.element.offset().left;
			that.offset.top = that.element.offset().top;
		}

		woset = Math.abs( that.sizeDiff.width +
			( that._helper ?
				that.offset.left - cop.left :
				( that.offset.left - co.left ) ) );

		hoset = Math.abs( that.sizeDiff.height +
			( that._helper ?
				that.offset.top - cop.top :
				( that.offset.top - co.top ) ) );

		if ( woset + that.size.width >= that.parentData.width ) {
			that.size.width = that.parentData.width - woset;
			if ( pRatio ) {
				that.size.height = that.size.width / that.aspectRatio;
				continueResize = false;
			}
		}

		if ( hoset + that.size.height >= that.parentData.height ) {
			that.size.height = that.parentData.height - hoset;
			if ( pRatio ) {
				that.size.width = that.size.height * that.aspectRatio;
				continueResize = false;
			}
		}

		if ( !continueResize ) {
			that.position.left = that.prevPosition.left;
			that.position.top = that.prevPosition.top;
			that.size.width = that.prevSize.width;
			that.size.height = that.prevSize.height;
		}
	},

	stop: function() {
		var that = $( this ).resizable( "instance" ),
			o = that.options,
			co = that.containerOffset,
			cop = that.containerPosition,
			ce = that.containerElement,
			helper = $( that.helper ),
			ho = helper.offset(),
			w = helper.outerWidth() - that.sizeDiff.width,
			h = helper.outerHeight() - that.sizeDiff.height;

		if ( that._helper && !o.animate && ( /relative/ ).test( ce.css( "position" ) ) ) {
			$( this ).css( {
				left: ho.left - cop.left - co.left,
				width: w,
				height: h
			} );
		}

		if ( that._helper && !o.animate && ( /static/ ).test( ce.css( "position" ) ) ) {
			$( this ).css( {
				left: ho.left - cop.left - co.left,
				width: w,
				height: h
			} );
		}
	}
} );

$.ui.plugin.add( "resizable", "alsoResize", {

	start: function() {
		var that = $( this ).resizable( "instance" ),
			o = that.options;

		$( o.alsoResize ).each( function() {
			var el = $( this );
			el.data( "ui-resizable-alsoresize", {
				width: parseFloat( el.width() ), height: parseFloat( el.height() ),
				left: parseFloat( el.css( "left" ) ), top: parseFloat( el.css( "top" ) )
			} );
		} );
	},

	resize: function( event, ui ) {
		var that = $( this ).resizable( "instance" ),
			o = that.options,
			os = that.originalSize,
			op = that.originalPosition,
			delta = {
				height: ( that.size.height - os.height ) || 0,
				width: ( that.size.width - os.width ) || 0,
				top: ( that.position.top - op.top ) || 0,
				left: ( that.position.left - op.left ) || 0
			};

			$( o.alsoResize ).each( function() {
				var el = $( this ), start = $( this ).data( "ui-resizable-alsoresize" ), style = {},
					css = el.parents( ui.originalElement[ 0 ] ).length ?
							[ "width", "height" ] :
							[ "width", "height", "top", "left" ];

				$.each( css, function( i, prop ) {
					var sum = ( start[ prop ] || 0 ) + ( delta[ prop ] || 0 );
					if ( sum && sum >= 0 ) {
						style[ prop ] = sum || null;
					}
				} );

				el.css( style );
			} );
	},

	stop: function() {
		$( this ).removeData( "ui-resizable-alsoresize" );
	}
} );

$.ui.plugin.add( "resizable", "ghost", {

	start: function() {

		var that = $( this ).resizable( "instance" ), cs = that.size;

		that.ghost = that.originalElement.clone();
		that.ghost.css( {
			opacity: 0.25,
			display: "block",
			position: "relative",
			height: cs.height,
			width: cs.width,
			margin: 0,
			left: 0,
			top: 0
		} );

		that._addClass( that.ghost, "ui-resizable-ghost" );

		// DEPRECATED
		// TODO: remove after 1.12
		if ( $.uiBackCompat !== false && typeof that.options.ghost === "string" ) {

			// Ghost option
			that.ghost.addClass( this.options.ghost );
		}

		that.ghost.appendTo( that.helper );

	},

	resize: function() {
		var that = $( this ).resizable( "instance" );
		if ( that.ghost ) {
			that.ghost.css( {
				position: "relative",
				height: that.size.height,
				width: that.size.width
			} );
		}
	},

	stop: function() {
		var that = $( this ).resizable( "instance" );
		if ( that.ghost && that.helper ) {
			that.helper.get( 0 ).removeChild( that.ghost.get( 0 ) );
		}
	}

} );

$.ui.plugin.add( "resizable", "grid", {

	resize: function() {
		var outerDimensions,
			that = $( this ).resizable( "instance" ),
			o = that.options,
			cs = that.size,
			os = that.originalSize,
			op = that.originalPosition,
			a = that.axis,
			grid = typeof o.grid === "number" ? [ o.grid, o.grid ] : o.grid,
			gridX = ( grid[ 0 ] || 1 ),
			gridY = ( grid[ 1 ] || 1 ),
			ox = Math.round( ( cs.width - os.width ) / gridX ) * gridX,
			oy = Math.round( ( cs.height - os.height ) / gridY ) * gridY,
			newWidth = os.width + ox,
			newHeight = os.height + oy,
			isMaxWidth = o.maxWidth && ( o.maxWidth < newWidth ),
			isMaxHeight = o.maxHeight && ( o.maxHeight < newHeight ),
			isMinWidth = o.minWidth && ( o.minWidth > newWidth ),
			isMinHeight = o.minHeight && ( o.minHeight > newHeight );

		o.grid = grid;

		if ( isMinWidth ) {
			newWidth += gridX;
		}
		if ( isMinHeight ) {
			newHeight += gridY;
		}
		if ( isMaxWidth ) {
			newWidth -= gridX;
		}
		if ( isMaxHeight ) {
			newHeight -= gridY;
		}

		if ( /^(se|s|e)$/.test( a ) ) {
			that.size.width = newWidth;
			that.size.height = newHeight;
		} else if ( /^(ne)$/.test( a ) ) {
			that.size.width = newWidth;
			that.size.height = newHeight;
			that.position.top = op.top - oy;
		} else if ( /^(sw)$/.test( a ) ) {
			that.size.width = newWidth;
			that.size.height = newHeight;
			that.position.left = op.left - ox;
		} else {
			if ( newHeight - gridY <= 0 || newWidth - gridX <= 0 ) {
				outerDimensions = that._getPaddingPlusBorderDimensions( this );
			}

			if ( newHeight - gridY > 0 ) {
				that.size.height = newHeight;
				that.position.top = op.top - oy;
			} else {
				newHeight = gridY - outerDimensions.height;
				that.size.height = newHeight;
				that.position.top = op.top + os.height - newHeight;
			}
			if ( newWidth - gridX > 0 ) {
				that.size.width = newWidth;
				that.position.left = op.left - ox;
			} else {
				newWidth = gridX - outerDimensions.width;
				that.size.width = newWidth;
				that.position.left = op.left + os.width - newWidth;
			}
		}
	}

} );

var widgetsResizable = $.ui.resizable;


/*!
 * jQuery UI Dialog 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Dialog
//>>group: Widgets
//>>description: Displays customizable dialog windows.
//>>docs: http://api.jqueryui.com/dialog/
//>>demos: http://jqueryui.com/dialog/
//>>css.structure: ../../themes/base/core.css
//>>css.structure: ../../themes/base/dialog.css
//>>css.theme: ../../themes/base/theme.css



$.widget( "ui.dialog", {
	version: "1.12.1",
	options: {
		appendTo: "body",
		autoOpen: true,
		buttons: [],
		classes: {
			"ui-dialog": "ui-corner-all",
			"ui-dialog-titlebar": "ui-corner-all"
		},
		closeOnEscape: true,
		closeText: "Close",
		draggable: true,
		hide: null,
		height: "auto",
		maxHeight: null,
		maxWidth: null,
		minHeight: 150,
		minWidth: 150,
		modal: false,
		position: {
			my: "center",
			at: "center",
			of: window,
			collision: "fit",

			// Ensure the titlebar is always visible
			using: function( pos ) {
				var topOffset = $( this ).css( pos ).offset().top;
				if ( topOffset < 0 ) {
					$( this ).css( "top", pos.top - topOffset );
				}
			}
		},
		resizable: true,
		show: null,
		title: null,
		width: 300,

		// Callbacks
		beforeClose: null,
		close: null,
		drag: null,
		dragStart: null,
		dragStop: null,
		focus: null,
		open: null,
		resize: null,
		resizeStart: null,
		resizeStop: null
	},

	sizeRelatedOptions: {
		buttons: true,
		height: true,
		maxHeight: true,
		maxWidth: true,
		minHeight: true,
		minWidth: true,
		width: true
	},

	resizableRelatedOptions: {
		maxHeight: true,
		maxWidth: true,
		minHeight: true,
		minWidth: true
	},

	_create: function() {
		this.originalCss = {
			display: this.element[ 0 ].style.display,
			width: this.element[ 0 ].style.width,
			minHeight: this.element[ 0 ].style.minHeight,
			maxHeight: this.element[ 0 ].style.maxHeight,
			height: this.element[ 0 ].style.height
		};
		this.originalPosition = {
			parent: this.element.parent(),
			index: this.element.parent().children().index( this.element )
		};
		this.originalTitle = this.element.attr( "title" );
		if ( this.options.title == null && this.originalTitle != null ) {
			this.options.title = this.originalTitle;
		}

		// Dialogs can't be disabled
		if ( this.options.disabled ) {
			this.options.disabled = false;
		}

		this._createWrapper();

		this.element
			.show()
			.removeAttr( "title" )
			.appendTo( this.uiDialog );

		this._addClass( "ui-dialog-content", "ui-widget-content" );

		this._createTitlebar();
		this._createButtonPane();

		if ( this.options.draggable && $.fn.draggable ) {
			this._makeDraggable();
		}
		if ( this.options.resizable && $.fn.resizable ) {
			this._makeResizable();
		}

		this._isOpen = false;

		this._trackFocus();
	},

	_init: function() {
		if ( this.options.autoOpen ) {
			this.open();
		}
	},

	_appendTo: function() {
		var element = this.options.appendTo;
		if ( element && ( element.jquery || element.nodeType ) ) {
			return $( element );
		}
		return this.document.find( element || "body" ).eq( 0 );
	},

	_destroy: function() {
		var next,
			originalPosition = this.originalPosition;

		this._untrackInstance();
		this._destroyOverlay();

		this.element
			.removeUniqueId()
			.css( this.originalCss )

			// Without detaching first, the following becomes really slow
			.detach();

		this.uiDialog.remove();

		if ( this.originalTitle ) {
			this.element.attr( "title", this.originalTitle );
		}

		next = originalPosition.parent.children().eq( originalPosition.index );

		// Don't try to place the dialog next to itself (#8613)
		if ( next.length && next[ 0 ] !== this.element[ 0 ] ) {
			next.before( this.element );
		} else {
			originalPosition.parent.append( this.element );
		}
	},

	widget: function() {
		return this.uiDialog;
	},

	disable: $.noop,
	enable: $.noop,

	close: function( event ) {
		var that = this;

		if ( !this._isOpen || this._trigger( "beforeClose", event ) === false ) {
			return;
		}

		this._isOpen = false;
		this._focusedElement = null;
		this._destroyOverlay();
		this._untrackInstance();

		if ( !this.opener.filter( ":focusable" ).trigger( "focus" ).length ) {

			// Hiding a focused element doesn't trigger blur in WebKit
			// so in case we have nothing to focus on, explicitly blur the active element
			// https://bugs.webkit.org/show_bug.cgi?id=47182
			$.ui.safeBlur( $.ui.safeActiveElement( this.document[ 0 ] ) );
		}

		this._hide( this.uiDialog, this.options.hide, function() {
			that._trigger( "close", event );
		} );
	},

	isOpen: function() {
		return this._isOpen;
	},

	moveToTop: function() {
		this._moveToTop();
	},

	_moveToTop: function( event, silent ) {
		var moved = false,
			zIndices = this.uiDialog.siblings( ".ui-front:visible" ).map( function() {
				return +$( this ).css( "z-index" );
			} ).get(),
			zIndexMax = Math.max.apply( null, zIndices );

		if ( zIndexMax >= +this.uiDialog.css( "z-index" ) ) {
			this.uiDialog.css( "z-index", zIndexMax + 1 );
			moved = true;
		}

		if ( moved && !silent ) {
			this._trigger( "focus", event );
		}
		return moved;
	},

	open: function() {
		var that = this;
		if ( this._isOpen ) {
			if ( this._moveToTop() ) {
				this._focusTabbable();
			}
			return;
		}

		this._isOpen = true;
		this.opener = $( $.ui.safeActiveElement( this.document[ 0 ] ) );

		this._size();
		this._position();
		this._createOverlay();
		this._moveToTop( null, true );

		// Ensure the overlay is moved to the top with the dialog, but only when
		// opening. The overlay shouldn't move after the dialog is open so that
		// modeless dialogs opened after the modal dialog stack properly.
		if ( this.overlay ) {
			this.overlay.css( "z-index", this.uiDialog.css( "z-index" ) - 1 );
		}

		this._show( this.uiDialog, this.options.show, function() {
			that._focusTabbable();
			that._trigger( "focus" );
		} );

		// Track the dialog immediately upon openening in case a focus event
		// somehow occurs outside of the dialog before an element inside the
		// dialog is focused (#10152)
		this._makeFocusTarget();

		this._trigger( "open" );
	},

	_focusTabbable: function() {

		// Set focus to the first match:
		// 1. An element that was focused previously
		// 2. First element inside the dialog matching [autofocus]
		// 3. Tabbable element inside the content element
		// 4. Tabbable element inside the buttonpane
		// 5. The close button
		// 6. The dialog itself
		var hasFocus = this._focusedElement;
		if ( !hasFocus ) {
			hasFocus = this.element.find( "[autofocus]" );
		}
		if ( !hasFocus.length ) {
			hasFocus = this.element.find( ":tabbable" );
		}
		if ( !hasFocus.length ) {
			hasFocus = this.uiDialogButtonPane.find( ":tabbable" );
		}
		if ( !hasFocus.length ) {
			hasFocus = this.uiDialogTitlebarClose.filter( ":tabbable" );
		}
		if ( !hasFocus.length ) {
			hasFocus = this.uiDialog;
		}
		hasFocus.eq( 0 ).trigger( "focus" );
	},

	_keepFocus: function( event ) {
		function checkFocus() {
			var activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),
				isActive = this.uiDialog[ 0 ] === activeElement ||
					$.contains( this.uiDialog[ 0 ], activeElement );
			if ( !isActive ) {
				this._focusTabbable();
			}
		}
		event.preventDefault();
		checkFocus.call( this );

		// support: IE
		// IE <= 8 doesn't prevent moving focus even with event.preventDefault()
		// so we check again later
		this._delay( checkFocus );
	},

	_createWrapper: function() {
		this.uiDialog = $( "<div>" )
			.hide()
			.attr( {

				// Setting tabIndex makes the div focusable
				tabIndex: -1,
				role: "dialog"
			} )
			.appendTo( this._appendTo() );

		this._addClass( this.uiDialog, "ui-dialog", "ui-widget ui-widget-content ui-front" );
		this._on( this.uiDialog, {
			keydown: function( event ) {
				if ( this.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&
						event.keyCode === $.ui.keyCode.ESCAPE ) {
					event.preventDefault();
					this.close( event );
					return;
				}

				// Prevent tabbing out of dialogs
				if ( event.keyCode !== $.ui.keyCode.TAB || event.isDefaultPrevented() ) {
					return;
				}
				var tabbables = this.uiDialog.find( ":tabbable" ),
					first = tabbables.filter( ":first" ),
					last = tabbables.filter( ":last" );

				if ( ( event.target === last[ 0 ] || event.target === this.uiDialog[ 0 ] ) &&
						!event.shiftKey ) {
					this._delay( function() {
						first.trigger( "focus" );
					} );
					event.preventDefault();
				} else if ( ( event.target === first[ 0 ] ||
						event.target === this.uiDialog[ 0 ] ) && event.shiftKey ) {
					this._delay( function() {
						last.trigger( "focus" );
					} );
					event.preventDefault();
				}
			},
			mousedown: function( event ) {
				if ( this._moveToTop( event ) ) {
					this._focusTabbable();
				}
			}
		} );

		// We assume that any existing aria-describedby attribute means
		// that the dialog content is marked up properly
		// otherwise we brute force the content as the description
		if ( !this.element.find( "[aria-describedby]" ).length ) {
			this.uiDialog.attr( {
				"aria-describedby": this.element.uniqueId().attr( "id" )
			} );
		}
	},

	_createTitlebar: function() {
		var uiDialogTitle;

		this.uiDialogTitlebar = $( "<div>" );
		this._addClass( this.uiDialogTitlebar,
			"ui-dialog-titlebar", "ui-widget-header ui-helper-clearfix" );
		this._on( this.uiDialogTitlebar, {
			mousedown: function( event ) {

				// Don't prevent click on close button (#8838)
				// Focusing a dialog that is partially scrolled out of view
				// causes the browser to scroll it into view, preventing the click event
				if ( !$( event.target ).closest( ".ui-dialog-titlebar-close" ) ) {

					// Dialog isn't getting focus when dragging (#8063)
					this.uiDialog.trigger( "focus" );
				}
			}
		} );

		// Support: IE
		// Use type="button" to prevent enter keypresses in textboxes from closing the
		// dialog in IE (#9312)
		this.uiDialogTitlebarClose = $( "<button type='button'></button>" )
			.button( {
				label: $( "<a>" ).text( this.options.closeText ).html(),
				icon: "ui-icon-closethick",
				showLabel: false
			} )
			.appendTo( this.uiDialogTitlebar );

		this._addClass( this.uiDialogTitlebarClose, "ui-dialog-titlebar-close" );
		this._on( this.uiDialogTitlebarClose, {
			click: function( event ) {
				event.preventDefault();
				this.close( event );
			}
		} );

		uiDialogTitle = $( "<span>" ).uniqueId().prependTo( this.uiDialogTitlebar );
		this._addClass( uiDialogTitle, "ui-dialog-title" );
		this._title( uiDialogTitle );

		this.uiDialogTitlebar.prependTo( this.uiDialog );

		this.uiDialog.attr( {
			"aria-labelledby": uiDialogTitle.attr( "id" )
		} );
	},

	_title: function( title ) {
		if ( this.options.title ) {
			title.text( this.options.title );
		} else {
			title.html( "&#160;" );
		}
	},

	_createButtonPane: function() {
		this.uiDialogButtonPane = $( "<div>" );
		this._addClass( this.uiDialogButtonPane, "ui-dialog-buttonpane",
			"ui-widget-content ui-helper-clearfix" );

		this.uiButtonSet = $( "<div>" )
			.appendTo( this.uiDialogButtonPane );
		this._addClass( this.uiButtonSet, "ui-dialog-buttonset" );

		this._createButtons();
	},

	_createButtons: function() {
		var that = this,
			buttons = this.options.buttons;

		// If we already have a button pane, remove it
		this.uiDialogButtonPane.remove();
		this.uiButtonSet.empty();

		if ( $.isEmptyObject( buttons ) || ( $.isArray( buttons ) && !buttons.length ) ) {
			this._removeClass( this.uiDialog, "ui-dialog-buttons" );
			return;
		}

		$.each( buttons, function( name, props ) {
			var click, buttonOptions;
			props = $.isFunction( props ) ?
				{ click: props, text: name } :
				props;

			// Default to a non-submitting button
			props = $.extend( { type: "button" }, props );

			// Change the context for the click callback to be the main element
			click = props.click;
			buttonOptions = {
				icon: props.icon,
				iconPosition: props.iconPosition,
				showLabel: props.showLabel,

				// Deprecated options
				icons: props.icons,
				text: props.text
			};

			delete props.click;
			delete props.icon;
			delete props.iconPosition;
			delete props.showLabel;

			// Deprecated options
			delete props.icons;
			if ( typeof props.text === "boolean" ) {
				delete props.text;
			}

			$( "<button></button>", props )
				.button( buttonOptions )
				.appendTo( that.uiButtonSet )
				.on( "click", function() {
					click.apply( that.element[ 0 ], arguments );
				} );
		} );
		this._addClass( this.uiDialog, "ui-dialog-buttons" );
		this.uiDialogButtonPane.appendTo( this.uiDialog );
	},

	_makeDraggable: function() {
		var that = this,
			options = this.options;

		function filteredUi( ui ) {
			return {
				position: ui.position,
				offset: ui.offset
			};
		}

		this.uiDialog.draggable( {
			cancel: ".ui-dialog-content, .ui-dialog-titlebar-close",
			handle: ".ui-dialog-titlebar",
			containment: "document",
			start: function( event, ui ) {
				that._addClass( $( this ), "ui-dialog-dragging" );
				that._blockFrames();
				that._trigger( "dragStart", event, filteredUi( ui ) );
			},
			drag: function( event, ui ) {
				that._trigger( "drag", event, filteredUi( ui ) );
			},
			stop: function( event, ui ) {
				var left = ui.offset.left - that.document.scrollLeft(),
					top = ui.offset.top - that.document.scrollTop();

				options.position = {
					my: "left top",
					at: "left" + ( left >= 0 ? "+" : "" ) + left + " " +
						"top" + ( top >= 0 ? "+" : "" ) + top,
					of: that.window
				};
				that._removeClass( $( this ), "ui-dialog-dragging" );
				that._unblockFrames();
				that._trigger( "dragStop", event, filteredUi( ui ) );
			}
		} );
	},

	_makeResizable: function() {
		var that = this,
			options = this.options,
			handles = options.resizable,

			// .ui-resizable has position: relative defined in the stylesheet
			// but dialogs have to use absolute or fixed positioning
			position = this.uiDialog.css( "position" ),
			resizeHandles = typeof handles === "string" ?
				handles :
				"n,e,s,w,se,sw,ne,nw";

		function filteredUi( ui ) {
			return {
				originalPosition: ui.originalPosition,
				originalSize: ui.originalSize,
				position: ui.position,
				size: ui.size
			};
		}

		this.uiDialog.resizable( {
			cancel: ".ui-dialog-content",
			containment: "document",
			alsoResize: this.element,
			maxWidth: options.maxWidth,
			maxHeight: options.maxHeight,
			minWidth: options.minWidth,
			minHeight: this._minHeight(),
			handles: resizeHandles,
			start: function( event, ui ) {
				that._addClass( $( this ), "ui-dialog-resizing" );
				that._blockFrames();
				that._trigger( "resizeStart", event, filteredUi( ui ) );
			},
			resize: function( event, ui ) {
				that._trigger( "resize", event, filteredUi( ui ) );
			},
			stop: function( event, ui ) {
				var offset = that.uiDialog.offset(),
					left = offset.left - that.document.scrollLeft(),
					top = offset.top - that.document.scrollTop();

				options.height = that.uiDialog.height();
				options.width = that.uiDialog.width();
				options.position = {
					my: "left top",
					at: "left" + ( left >= 0 ? "+" : "" ) + left + " " +
						"top" + ( top >= 0 ? "+" : "" ) + top,
					of: that.window
				};
				that._removeClass( $( this ), "ui-dialog-resizing" );
				that._unblockFrames();
				that._trigger( "resizeStop", event, filteredUi( ui ) );
			}
		} )
			.css( "position", position );
	},

	_trackFocus: function() {
		this._on( this.widget(), {
			focusin: function( event ) {
				this._makeFocusTarget();
				this._focusedElement = $( event.target );
			}
		} );
	},

	_makeFocusTarget: function() {
		this._untrackInstance();
		this._trackingInstances().unshift( this );
	},

	_untrackInstance: function() {
		var instances = this._trackingInstances(),
			exists = $.inArray( this, instances );
		if ( exists !== -1 ) {
			instances.splice( exists, 1 );
		}
	},

	_trackingInstances: function() {
		var instances = this.document.data( "ui-dialog-instances" );
		if ( !instances ) {
			instances = [];
			this.document.data( "ui-dialog-instances", instances );
		}
		return instances;
	},

	_minHeight: function() {
		var options = this.options;

		return options.height === "auto" ?
			options.minHeight :
			Math.min( options.minHeight, options.height );
	},

	_position: function() {

		// Need to show the dialog to get the actual offset in the position plugin
		var isVisible = this.uiDialog.is( ":visible" );
		if ( !isVisible ) {
			this.uiDialog.show();
		}
		this.uiDialog.position( this.options.position );
		if ( !isVisible ) {
			this.uiDialog.hide();
		}
	},

	_setOptions: function( options ) {
		var that = this,
			resize = false,
			resizableOptions = {};

		$.each( options, function( key, value ) {
			that._setOption( key, value );

			if ( key in that.sizeRelatedOptions ) {
				resize = true;
			}
			if ( key in that.resizableRelatedOptions ) {
				resizableOptions[ key ] = value;
			}
		} );

		if ( resize ) {
			this._size();
			this._position();
		}
		if ( this.uiDialog.is( ":data(ui-resizable)" ) ) {
			this.uiDialog.resizable( "option", resizableOptions );
		}
	},

	_setOption: function( key, value ) {
		var isDraggable, isResizable,
			uiDialog = this.uiDialog;

		if ( key === "disabled" ) {
			return;
		}

		this._super( key, value );

		if ( key === "appendTo" ) {
			this.uiDialog.appendTo( this._appendTo() );
		}

		if ( key === "buttons" ) {
			this._createButtons();
		}

		if ( key === "closeText" ) {
			this.uiDialogTitlebarClose.button( {

				// Ensure that we always pass a string
				label: $( "<a>" ).text( "" + this.options.closeText ).html()
			} );
		}

		if ( key === "draggable" ) {
			isDraggable = uiDialog.is( ":data(ui-draggable)" );
			if ( isDraggable && !value ) {
				uiDialog.draggable( "destroy" );
			}

			if ( !isDraggable && value ) {
				this._makeDraggable();
			}
		}

		if ( key === "position" ) {
			this._position();
		}

		if ( key === "resizable" ) {

			// currently resizable, becoming non-resizable
			isResizable = uiDialog.is( ":data(ui-resizable)" );
			if ( isResizable && !value ) {
				uiDialog.resizable( "destroy" );
			}

			// Currently resizable, changing handles
			if ( isResizable && typeof value === "string" ) {
				uiDialog.resizable( "option", "handles", value );
			}

			// Currently non-resizable, becoming resizable
			if ( !isResizable && value !== false ) {
				this._makeResizable();
			}
		}

		if ( key === "title" ) {
			this._title( this.uiDialogTitlebar.find( ".ui-dialog-title" ) );
		}
	},

	_size: function() {

		// If the user has resized the dialog, the .ui-dialog and .ui-dialog-content
		// divs will both have width and height set, so we need to reset them
		var nonContentHeight, minContentHeight, maxContentHeight,
			options = this.options;

		// Reset content sizing
		this.element.show().css( {
			width: "auto",
			minHeight: 0,
			maxHeight: "none",
			height: 0
		} );

		if ( options.minWidth > options.width ) {
			options.width = options.minWidth;
		}

		// Reset wrapper sizing
		// determine the height of all the non-content elements
		nonContentHeight = this.uiDialog.css( {
			height: "auto",
			width: options.width
		} )
			.outerHeight();
		minContentHeight = Math.max( 0, options.minHeight - nonContentHeight );
		maxContentHeight = typeof options.maxHeight === "number" ?
			Math.max( 0, options.maxHeight - nonContentHeight ) :
			"none";

		if ( options.height === "auto" ) {
			this.element.css( {
				minHeight: minContentHeight,
				maxHeight: maxContentHeight,
				height: "auto"
			} );
		} else {
			this.element.height( Math.max( 0, options.height - nonContentHeight ) );
		}

		if ( this.uiDialog.is( ":data(ui-resizable)" ) ) {
			this.uiDialog.resizable( "option", "minHeight", this._minHeight() );
		}
	},

	_blockFrames: function() {
		this.iframeBlocks = this.document.find( "iframe" ).map( function() {
			var iframe = $( this );

			return $( "<div>" )
				.css( {
					position: "absolute",
					width: iframe.outerWidth(),
					height: iframe.outerHeight()
				} )
				.appendTo( iframe.parent() )
				.offset( iframe.offset() )[ 0 ];
		} );
	},

	_unblockFrames: function() {
		if ( this.iframeBlocks ) {
			this.iframeBlocks.remove();
			delete this.iframeBlocks;
		}
	},

	_allowInteraction: function( event ) {
		if ( $( event.target ).closest( ".ui-dialog" ).length ) {
			return true;
		}

		// TODO: Remove hack when datepicker implements
		// the .ui-front logic (#8989)
		return !!$( event.target ).closest( ".ui-datepicker" ).length;
	},

	_createOverlay: function() {
		if ( !this.options.modal ) {
			return;
		}

		// We use a delay in case the overlay is created from an
		// event that we're going to be cancelling (#2804)
		var isOpening = true;
		this._delay( function() {
			isOpening = false;
		} );

		if ( !this.document.data( "ui-dialog-overlays" ) ) {

			// Prevent use of anchors and inputs
			// Using _on() for an event handler shared across many instances is
			// safe because the dialogs stack and must be closed in reverse order
			this._on( this.document, {
				focusin: function( event ) {
					if ( isOpening ) {
						return;
					}

					if ( !this._allowInteraction( event ) ) {
						event.preventDefault();
						this._trackingInstances()[ 0 ]._focusTabbable();
					}
				}
			} );
		}

		this.overlay = $( "<div>" )
			.appendTo( this._appendTo() );

		this._addClass( this.overlay, null, "ui-widget-overlay ui-front" );
		this._on( this.overlay, {
			mousedown: "_keepFocus"
		} );
		this.document.data( "ui-dialog-overlays",
			( this.document.data( "ui-dialog-overlays" ) || 0 ) + 1 );
	},

	_destroyOverlay: function() {
		if ( !this.options.modal ) {
			return;
		}

		if ( this.overlay ) {
			var overlays = this.document.data( "ui-dialog-overlays" ) - 1;

			if ( !overlays ) {
				this._off( this.document, "focusin" );
				this.document.removeData( "ui-dialog-overlays" );
			} else {
				this.document.data( "ui-dialog-overlays", overlays );
			}

			this.overlay.remove();
			this.overlay = null;
		}
	}
} );

// DEPRECATED
// TODO: switch return back to widget declaration at top of file when this is removed
if ( $.uiBackCompat !== false ) {

	// Backcompat for dialogClass option
	$.widget( "ui.dialog", $.ui.dialog, {
		options: {
			dialogClass: ""
		},
		_createWrapper: function() {
			this._super();
			this.uiDialog.addClass( this.options.dialogClass );
		},
		_setOption: function( key, value ) {
			if ( key === "dialogClass" ) {
				this.uiDialog
					.removeClass( this.options.dialogClass )
					.addClass( value );
			}
			this._superApply( arguments );
		}
	} );
}

var widgetsDialog = $.ui.dialog;


/*!
 * jQuery UI Droppable 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Droppable
//>>group: Interactions
//>>description: Enables drop targets for draggable elements.
//>>docs: http://api.jqueryui.com/droppable/
//>>demos: http://jqueryui.com/droppable/



$.widget( "ui.droppable", {
	version: "1.12.1",
	widgetEventPrefix: "drop",
	options: {
		accept: "*",
		addClasses: true,
		greedy: false,
		scope: "default",
		tolerance: "intersect",

		// Callbacks
		activate: null,
		deactivate: null,
		drop: null,
		out: null,
		over: null
	},
	_create: function() {

		var proportions,
			o = this.options,
			accept = o.accept;

		this.isover = false;
		this.isout = true;

		this.accept = $.isFunction( accept ) ? accept : function( d ) {
			return d.is( accept );
		};

		this.proportions = function( /* valueToWrite */ ) {
			if ( arguments.length ) {

				// Store the droppable's proportions
				proportions = arguments[ 0 ];
			} else {

				// Retrieve or derive the droppable's proportions
				return proportions ?
					proportions :
					proportions = {
						width: this.element[ 0 ].offsetWidth,
						height: this.element[ 0 ].offsetHeight
					};
			}
		};

		this._addToManager( o.scope );

		o.addClasses && this._addClass( "ui-droppable" );

	},

	_addToManager: function( scope ) {

		// Add the reference and positions to the manager
		$.ui.ddmanager.droppables[ scope ] = $.ui.ddmanager.droppables[ scope ] || [];
		$.ui.ddmanager.droppables[ scope ].push( this );
	},

	_splice: function( drop ) {
		var i = 0;
		for ( ; i < drop.length; i++ ) {
			if ( drop[ i ] === this ) {
				drop.splice( i, 1 );
			}
		}
	},

	_destroy: function() {
		var drop = $.ui.ddmanager.droppables[ this.options.scope ];

		this._splice( drop );
	},

	_setOption: function( key, value ) {

		if ( key === "accept" ) {
			this.accept = $.isFunction( value ) ? value : function( d ) {
				return d.is( value );
			};
		} else if ( key === "scope" ) {
			var drop = $.ui.ddmanager.droppables[ this.options.scope ];

			this._splice( drop );
			this._addToManager( value );
		}

		this._super( key, value );
	},

	_activate: function( event ) {
		var draggable = $.ui.ddmanager.current;

		this._addActiveClass();
		if ( draggable ) {
			this._trigger( "activate", event, this.ui( draggable ) );
		}
	},

	_deactivate: function( event ) {
		var draggable = $.ui.ddmanager.current;

		this._removeActiveClass();
		if ( draggable ) {
			this._trigger( "deactivate", event, this.ui( draggable ) );
		}
	},

	_over: function( event ) {

		var draggable = $.ui.ddmanager.current;

		// Bail if draggable and droppable are same element
		if ( !draggable || ( draggable.currentItem ||
				draggable.element )[ 0 ] === this.element[ 0 ] ) {
			return;
		}

		if ( this.accept.call( this.element[ 0 ], ( draggable.currentItem ||
				draggable.element ) ) ) {
			this._addHoverClass();
			this._trigger( "over", event, this.ui( draggable ) );
		}

	},

	_out: function( event ) {

		var draggable = $.ui.ddmanager.current;

		// Bail if draggable and droppable are same element
		if ( !draggable || ( draggable.currentItem ||
				draggable.element )[ 0 ] === this.element[ 0 ] ) {
			return;
		}

		if ( this.accept.call( this.element[ 0 ], ( draggable.currentItem ||
				draggable.element ) ) ) {
			this._removeHoverClass();
			this._trigger( "out", event, this.ui( draggable ) );
		}

	},

	_drop: function( event, custom ) {

		var draggable = custom || $.ui.ddmanager.current,
			childrenIntersection = false;

		// Bail if draggable and droppable are same element
		if ( !draggable || ( draggable.currentItem ||
				draggable.element )[ 0 ] === this.element[ 0 ] ) {
			return false;
		}

		this.element
			.find( ":data(ui-droppable)" )
			.not( ".ui-draggable-dragging" )
			.each( function() {
				var inst = $( this ).droppable( "instance" );
				if (
					inst.options.greedy &&
					!inst.options.disabled &&
					inst.options.scope === draggable.options.scope &&
					inst.accept.call(
						inst.element[ 0 ], ( draggable.currentItem || draggable.element )
					) &&
					intersect(
						draggable,
						$.extend( inst, { offset: inst.element.offset() } ),
						inst.options.tolerance, event
					)
				) {
					childrenIntersection = true;
					return false; }
			} );
		if ( childrenIntersection ) {
			return false;
		}

		if ( this.accept.call( this.element[ 0 ],
				( draggable.currentItem || draggable.element ) ) ) {
			this._removeActiveClass();
			this._removeHoverClass();

			this._trigger( "drop", event, this.ui( draggable ) );
			return this.element;
		}

		return false;

	},

	ui: function( c ) {
		return {
			draggable: ( c.currentItem || c.element ),
			helper: c.helper,
			position: c.position,
			offset: c.positionAbs
		};
	},

	// Extension points just to make backcompat sane and avoid duplicating logic
	// TODO: Remove in 1.13 along with call to it below
	_addHoverClass: function() {
		this._addClass( "ui-droppable-hover" );
	},

	_removeHoverClass: function() {
		this._removeClass( "ui-droppable-hover" );
	},

	_addActiveClass: function() {
		this._addClass( "ui-droppable-active" );
	},

	_removeActiveClass: function() {
		this._removeClass( "ui-droppable-active" );
	}
} );

var intersect = $.ui.intersect = ( function() {
	function isOverAxis( x, reference, size ) {
		return ( x >= reference ) && ( x < ( reference + size ) );
	}

	return function( draggable, droppable, toleranceMode, event ) {

		if ( !droppable.offset ) {
			return false;
		}

		var x1 = ( draggable.positionAbs ||
				draggable.position.absolute ).left + draggable.margins.left,
			y1 = ( draggable.positionAbs ||
				draggable.position.absolute ).top + draggable.margins.top,
			x2 = x1 + draggable.helperProportions.width,
			y2 = y1 + draggable.helperProportions.height,
			l = droppable.offset.left,
			t = droppable.offset.top,
			r = l + droppable.proportions().width,
			b = t + droppable.proportions().height;

		switch ( toleranceMode ) {
		case "fit":
			return ( l <= x1 && x2 <= r && t <= y1 && y2 <= b );
		case "intersect":
			return ( l < x1 + ( draggable.helperProportions.width / 2 ) && // Right Half
				x2 - ( draggable.helperProportions.width / 2 ) < r && // Left Half
				t < y1 + ( draggable.helperProportions.height / 2 ) && // Bottom Half
				y2 - ( draggable.helperProportions.height / 2 ) < b ); // Top Half
		case "pointer":
			return isOverAxis( event.pageY, t, droppable.proportions().height ) &&
				isOverAxis( event.pageX, l, droppable.proportions().width );
		case "touch":
			return (
				( y1 >= t && y1 <= b ) || // Top edge touching
				( y2 >= t && y2 <= b ) || // Bottom edge touching
				( y1 < t && y2 > b ) // Surrounded vertically
			) && (
				( x1 >= l && x1 <= r ) || // Left edge touching
				( x2 >= l && x2 <= r ) || // Right edge touching
				( x1 < l && x2 > r ) // Surrounded horizontally
			);
		default:
			return false;
		}
	};
} )();

/*
	This manager tracks offsets of draggables and droppables
*/
$.ui.ddmanager = {
	current: null,
	droppables: { "default": [] },
	prepareOffsets: function( t, event ) {

		var i, j,
			m = $.ui.ddmanager.droppables[ t.options.scope ] || [],
			type = event ? event.type : null, // workaround for #2317
			list = ( t.currentItem || t.element ).find( ":data(ui-droppable)" ).addBack();

		droppablesLoop: for ( i = 0; i < m.length; i++ ) {

			// No disabled and non-accepted
			if ( m[ i ].options.disabled || ( t && !m[ i ].accept.call( m[ i ].element[ 0 ],
					( t.currentItem || t.element ) ) ) ) {
				continue;
			}

			// Filter out elements in the current dragged item
			for ( j = 0; j < list.length; j++ ) {
				if ( list[ j ] === m[ i ].element[ 0 ] ) {
					m[ i ].proportions().height = 0;
					continue droppablesLoop;
				}
			}

			m[ i ].visible = m[ i ].element.css( "display" ) !== "none";
			if ( !m[ i ].visible ) {
				continue;
			}

			// Activate the droppable if used directly from draggables
			if ( type === "mousedown" ) {
				m[ i ]._activate.call( m[ i ], event );
			}

			m[ i ].offset = m[ i ].element.offset();
			m[ i ].proportions( {
				width: m[ i ].element[ 0 ].offsetWidth,
				height: m[ i ].element[ 0 ].offsetHeight
			} );

		}

	},
	drop: function( draggable, event ) {

		var dropped = false;

		// Create a copy of the droppables in case the list changes during the drop (#9116)
		$.each( ( $.ui.ddmanager.droppables[ draggable.options.scope ] || [] ).slice(), function() {

			if ( !this.options ) {
				return;
			}
			if ( !this.options.disabled && this.visible &&
					intersect( draggable, this, this.options.tolerance, event ) ) {
				dropped = this._drop.call( this, event ) || dropped;
			}

			if ( !this.options.disabled && this.visible && this.accept.call( this.element[ 0 ],
					( draggable.currentItem || draggable.element ) ) ) {
				this.isout = true;
				this.isover = false;
				this._deactivate.call( this, event );
			}

		} );
		return dropped;

	},
	dragStart: function( draggable, event ) {

		// Listen for scrolling so that if the dragging causes scrolling the position of the
		// droppables can be recalculated (see #5003)
		draggable.element.parentsUntil( "body" ).on( "scroll.droppable", function() {
			if ( !draggable.options.refreshPositions ) {
				$.ui.ddmanager.prepareOffsets( draggable, event );
			}
		} );
	},
	drag: function( draggable, event ) {

		// If you have a highly dynamic page, you might try this option. It renders positions
		// every time you move the mouse.
		if ( draggable.options.refreshPositions ) {
			$.ui.ddmanager.prepareOffsets( draggable, event );
		}

		// Run through all droppables and check their positions based on specific tolerance options
		$.each( $.ui.ddmanager.droppables[ draggable.options.scope ] || [], function() {

			if ( this.options.disabled || this.greedyChild || !this.visible ) {
				return;
			}

			var parentInstance, scope, parent,
				intersects = intersect( draggable, this, this.options.tolerance, event ),
				c = !intersects && this.isover ?
					"isout" :
					( intersects && !this.isover ? "isover" : null );
			if ( !c ) {
				return;
			}

			if ( this.options.greedy ) {

				// find droppable parents with same scope
				scope = this.options.scope;
				parent = this.element.parents( ":data(ui-droppable)" ).filter( function() {
					return $( this ).droppable( "instance" ).options.scope === scope;
				} );

				if ( parent.length ) {
					parentInstance = $( parent[ 0 ] ).droppable( "instance" );
					parentInstance.greedyChild = ( c === "isover" );
				}
			}

			// We just moved into a greedy child
			if ( parentInstance && c === "isover" ) {
				parentInstance.isover = false;
				parentInstance.isout = true;
				parentInstance._out.call( parentInstance, event );
			}

			this[ c ] = true;
			this[ c === "isout" ? "isover" : "isout" ] = false;
			this[ c === "isover" ? "_over" : "_out" ].call( this, event );

			// We just moved out of a greedy child
			if ( parentInstance && c === "isout" ) {
				parentInstance.isout = false;
				parentInstance.isover = true;
				parentInstance._over.call( parentInstance, event );
			}
		} );

	},
	dragStop: function( draggable, event ) {
		draggable.element.parentsUntil( "body" ).off( "scroll.droppable" );

		// Call prepareOffsets one final time since IE does not fire return scroll events when
		// overflow was caused by drag (see #5003)
		if ( !draggable.options.refreshPositions ) {
			$.ui.ddmanager.prepareOffsets( draggable, event );
		}
	}
};

// DEPRECATED
// TODO: switch return back to widget declaration at top of file when this is removed
if ( $.uiBackCompat !== false ) {

	// Backcompat for activeClass and hoverClass options
	$.widget( "ui.droppable", $.ui.droppable, {
		options: {
			hoverClass: false,
			activeClass: false
		},
		_addActiveClass: function() {
			this._super();
			if ( this.options.activeClass ) {
				this.element.addClass( this.options.activeClass );
			}
		},
		_removeActiveClass: function() {
			this._super();
			if ( this.options.activeClass ) {
				this.element.removeClass( this.options.activeClass );
			}
		},
		_addHoverClass: function() {
			this._super();
			if ( this.options.hoverClass ) {
				this.element.addClass( this.options.hoverClass );
			}
		},
		_removeHoverClass: function() {
			this._super();
			if ( this.options.hoverClass ) {
				this.element.removeClass( this.options.hoverClass );
			}
		}
	} );
}

var widgetsDroppable = $.ui.droppable;


/*!
 * jQuery UI Progressbar 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Progressbar
//>>group: Widgets
// jscs:disable maximumLineLength
//>>description: Displays a status indicator for loading state, standard percentage, and other progress indicators.
// jscs:enable maximumLineLength
//>>docs: http://api.jqueryui.com/progressbar/
//>>demos: http://jqueryui.com/progressbar/
//>>css.structure: ../../themes/base/core.css
//>>css.structure: ../../themes/base/progressbar.css
//>>css.theme: ../../themes/base/theme.css



var widgetsProgressbar = $.widget( "ui.progressbar", {
	version: "1.12.1",
	options: {
		classes: {
			"ui-progressbar": "ui-corner-all",
			"ui-progressbar-value": "ui-corner-left",
			"ui-progressbar-complete": "ui-corner-right"
		},
		max: 100,
		value: 0,

		change: null,
		complete: null
	},

	min: 0,

	_create: function() {

		// Constrain initial value
		this.oldValue = this.options.value = this._constrainedValue();

		this.element.attr( {

			// Only set static values; aria-valuenow and aria-valuemax are
			// set inside _refreshValue()
			role: "progressbar",
			"aria-valuemin": this.min
		} );
		this._addClass( "ui-progressbar", "ui-widget ui-widget-content" );

		this.valueDiv = $( "<div>" ).appendTo( this.element );
		this._addClass( this.valueDiv, "ui-progressbar-value", "ui-widget-header" );
		this._refreshValue();
	},

	_destroy: function() {
		this.element.removeAttr( "role aria-valuemin aria-valuemax aria-valuenow" );

		this.valueDiv.remove();
	},

	value: function( newValue ) {
		if ( newValue === undefined ) {
			return this.options.value;
		}

		this.options.value = this._constrainedValue( newValue );
		this._refreshValue();
	},

	_constrainedValue: function( newValue ) {
		if ( newValue === undefined ) {
			newValue = this.options.value;
		}

		this.indeterminate = newValue === false;

		// Sanitize value
		if ( typeof newValue !== "number" ) {
			newValue = 0;
		}

		return this.indeterminate ? false :
			Math.min( this.options.max, Math.max( this.min, newValue ) );
	},

	_setOptions: function( options ) {

		// Ensure "value" option is set after other values (like max)
		var value = options.value;
		delete options.value;

		this._super( options );

		this.options.value = this._constrainedValue( value );
		this._refreshValue();
	},

	_setOption: function( key, value ) {
		if ( key === "max" ) {

			// Don't allow a max less than min
			value = Math.max( this.min, value );
		}
		this._super( key, value );
	},

	_setOptionDisabled: function( value ) {
		this._super( value );

		this.element.attr( "aria-disabled", value );
		this._toggleClass( null, "ui-state-disabled", !!value );
	},

	_percentage: function() {
		return this.indeterminate ?
			100 :
			100 * ( this.options.value - this.min ) / ( this.options.max - this.min );
	},

	_refreshValue: function() {
		var value = this.options.value,
			percentage = this._percentage();

		this.valueDiv
			.toggle( this.indeterminate || value > this.min )
			.width( percentage.toFixed( 0 ) + "%" );

		this
			._toggleClass( this.valueDiv, "ui-progressbar-complete", null,
				value === this.options.max )
			._toggleClass( "ui-progressbar-indeterminate", null, this.indeterminate );

		if ( this.indeterminate ) {
			this.element.removeAttr( "aria-valuenow" );
			if ( !this.overlayDiv ) {
				this.overlayDiv = $( "<div>" ).appendTo( this.valueDiv );
				this._addClass( this.overlayDiv, "ui-progressbar-overlay" );
			}
		} else {
			this.element.attr( {
				"aria-valuemax": this.options.max,
				"aria-valuenow": value
			} );
			if ( this.overlayDiv ) {
				this.overlayDiv.remove();
				this.overlayDiv = null;
			}
		}

		if ( this.oldValue !== value ) {
			this.oldValue = value;
			this._trigger( "change" );
		}
		if ( value === this.options.max ) {
			this._trigger( "complete" );
		}
	}
} );


/*!
 * jQuery UI Selectable 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Selectable
//>>group: Interactions
//>>description: Allows groups of elements to be selected with the mouse.
//>>docs: http://api.jqueryui.com/selectable/
//>>demos: http://jqueryui.com/selectable/
//>>css.structure: ../../themes/base/selectable.css



var widgetsSelectable = $.widget( "ui.selectable", $.ui.mouse, {
	version: "1.12.1",
	options: {
		appendTo: "body",
		autoRefresh: true,
		distance: 0,
		filter: "*",
		tolerance: "touch",

		// Callbacks
		selected: null,
		selecting: null,
		start: null,
		stop: null,
		unselected: null,
		unselecting: null
	},
	_create: function() {
		var that = this;

		this._addClass( "ui-selectable" );

		this.dragged = false;

		// Cache selectee children based on filter
		this.refresh = function() {
			that.elementPos = $( that.element[ 0 ] ).offset();
			that.selectees = $( that.options.filter, that.element[ 0 ] );
			that._addClass( that.selectees, "ui-selectee" );
			that.selectees.each( function() {
				var $this = $( this ),
					selecteeOffset = $this.offset(),
					pos = {
						left: selecteeOffset.left - that.elementPos.left,
						top: selecteeOffset.top - that.elementPos.top
					};
				$.data( this, "selectable-item", {
					element: this,
					$element: $this,
					left: pos.left,
					top: pos.top,
					right: pos.left + $this.outerWidth(),
					bottom: pos.top + $this.outerHeight(),
					startselected: false,
					selected: $this.hasClass( "ui-selected" ),
					selecting: $this.hasClass( "ui-selecting" ),
					unselecting: $this.hasClass( "ui-unselecting" )
				} );
			} );
		};
		this.refresh();

		this._mouseInit();

		this.helper = $( "<div>" );
		this._addClass( this.helper, "ui-selectable-helper" );
	},

	_destroy: function() {
		this.selectees.removeData( "selectable-item" );
		this._mouseDestroy();
	},

	_mouseStart: function( event ) {
		var that = this,
			options = this.options;

		this.opos = [ event.pageX, event.pageY ];
		this.elementPos = $( this.element[ 0 ] ).offset();

		if ( this.options.disabled ) {
			return;
		}

		this.selectees = $( options.filter, this.element[ 0 ] );

		this._trigger( "start", event );

		$( options.appendTo ).append( this.helper );

		// position helper (lasso)
		this.helper.css( {
			"left": event.pageX,
			"top": event.pageY,
			"width": 0,
			"height": 0
		} );

		if ( options.autoRefresh ) {
			this.refresh();
		}

		this.selectees.filter( ".ui-selected" ).each( function() {
			var selectee = $.data( this, "selectable-item" );
			selectee.startselected = true;
			if ( !event.metaKey && !event.ctrlKey ) {
				that._removeClass( selectee.$element, "ui-selected" );
				selectee.selected = false;
				that._addClass( selectee.$element, "ui-unselecting" );
				selectee.unselecting = true;

				// selectable UNSELECTING callback
				that._trigger( "unselecting", event, {
					unselecting: selectee.element
				} );
			}
		} );

		$( event.target ).parents().addBack().each( function() {
			var doSelect,
				selectee = $.data( this, "selectable-item" );
			if ( selectee ) {
				doSelect = ( !event.metaKey && !event.ctrlKey ) ||
					!selectee.$element.hasClass( "ui-selected" );
				that._removeClass( selectee.$element, doSelect ? "ui-unselecting" : "ui-selected" )
					._addClass( selectee.$element, doSelect ? "ui-selecting" : "ui-unselecting" );
				selectee.unselecting = !doSelect;
				selectee.selecting = doSelect;
				selectee.selected = doSelect;

				// selectable (UN)SELECTING callback
				if ( doSelect ) {
					that._trigger( "selecting", event, {
						selecting: selectee.element
					} );
				} else {
					that._trigger( "unselecting", event, {
						unselecting: selectee.element
					} );
				}
				return false;
			}
		} );

	},

	_mouseDrag: function( event ) {

		this.dragged = true;

		if ( this.options.disabled ) {
			return;
		}

		var tmp,
			that = this,
			options = this.options,
			x1 = this.opos[ 0 ],
			y1 = this.opos[ 1 ],
			x2 = event.pageX,
			y2 = event.pageY;

		if ( x1 > x2 ) { tmp = x2; x2 = x1; x1 = tmp; }
		if ( y1 > y2 ) { tmp = y2; y2 = y1; y1 = tmp; }
		this.helper.css( { left: x1, top: y1, width: x2 - x1, height: y2 - y1 } );

		this.selectees.each( function() {
			var selectee = $.data( this, "selectable-item" ),
				hit = false,
				offset = {};

			//prevent helper from being selected if appendTo: selectable
			if ( !selectee || selectee.element === that.element[ 0 ] ) {
				return;
			}

			offset.left   = selectee.left   + that.elementPos.left;
			offset.right  = selectee.right  + that.elementPos.left;
			offset.top    = selectee.top    + that.elementPos.top;
			offset.bottom = selectee.bottom + that.elementPos.top;

			if ( options.tolerance === "touch" ) {
				hit = ( !( offset.left > x2 || offset.right < x1 || offset.top > y2 ||
                    offset.bottom < y1 ) );
			} else if ( options.tolerance === "fit" ) {
				hit = ( offset.left > x1 && offset.right < x2 && offset.top > y1 &&
                    offset.bottom < y2 );
			}

			if ( hit ) {

				// SELECT
				if ( selectee.selected ) {
					that._removeClass( selectee.$element, "ui-selected" );
					selectee.selected = false;
				}
				if ( selectee.unselecting ) {
					that._removeClass( selectee.$element, "ui-unselecting" );
					selectee.unselecting = false;
				}
				if ( !selectee.selecting ) {
					that._addClass( selectee.$element, "ui-selecting" );
					selectee.selecting = true;

					// selectable SELECTING callback
					that._trigger( "selecting", event, {
						selecting: selectee.element
					} );
				}
			} else {

				// UNSELECT
				if ( selectee.selecting ) {
					if ( ( event.metaKey || event.ctrlKey ) && selectee.startselected ) {
						that._removeClass( selectee.$element, "ui-selecting" );
						selectee.selecting = false;
						that._addClass( selectee.$element, "ui-selected" );
						selectee.selected = true;
					} else {
						that._removeClass( selectee.$element, "ui-selecting" );
						selectee.selecting = false;
						if ( selectee.startselected ) {
							that._addClass( selectee.$element, "ui-unselecting" );
							selectee.unselecting = true;
						}

						// selectable UNSELECTING callback
						that._trigger( "unselecting", event, {
							unselecting: selectee.element
						} );
					}
				}
				if ( selectee.selected ) {
					if ( !event.metaKey && !event.ctrlKey && !selectee.startselected ) {
						that._removeClass( selectee.$element, "ui-selected" );
						selectee.selected = false;

						that._addClass( selectee.$element, "ui-unselecting" );
						selectee.unselecting = true;

						// selectable UNSELECTING callback
						that._trigger( "unselecting", event, {
							unselecting: selectee.element
						} );
					}
				}
			}
		} );

		return false;
	},

	_mouseStop: function( event ) {
		var that = this;

		this.dragged = false;

		$( ".ui-unselecting", this.element[ 0 ] ).each( function() {
			var selectee = $.data( this, "selectable-item" );
			that._removeClass( selectee.$element, "ui-unselecting" );
			selectee.unselecting = false;
			selectee.startselected = false;
			that._trigger( "unselected", event, {
				unselected: selectee.element
			} );
		} );
		$( ".ui-selecting", this.element[ 0 ] ).each( function() {
			var selectee = $.data( this, "selectable-item" );
			that._removeClass( selectee.$element, "ui-selecting" )
				._addClass( selectee.$element, "ui-selected" );
			selectee.selecting = false;
			selectee.selected = true;
			selectee.startselected = true;
			that._trigger( "selected", event, {
				selected: selectee.element
			} );
		} );
		this._trigger( "stop", event );

		this.helper.remove();

		return false;
	}

} );


/*!
 * jQuery UI Selectmenu 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Selectmenu
//>>group: Widgets
// jscs:disable maximumLineLength
//>>description: Duplicates and extends the functionality of a native HTML select element, allowing it to be customizable in behavior and appearance far beyond the limitations of a native select.
// jscs:enable maximumLineLength
//>>docs: http://api.jqueryui.com/selectmenu/
//>>demos: http://jqueryui.com/selectmenu/
//>>css.structure: ../../themes/base/core.css
//>>css.structure: ../../themes/base/selectmenu.css, ../../themes/base/button.css
//>>css.theme: ../../themes/base/theme.css



var widgetsSelectmenu = $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
	version: "1.12.1",
	defaultElement: "<select>",
	options: {
		appendTo: null,
		classes: {
			"ui-selectmenu-button-open": "ui-corner-top",
			"ui-selectmenu-button-closed": "ui-corner-all"
		},
		disabled: null,
		icons: {
			button: "ui-icon-triangle-1-s"
		},
		position: {
			my: "left top",
			at: "left bottom",
			collision: "none"
		},
		width: false,

		// Callbacks
		change: null,
		close: null,
		focus: null,
		open: null,
		select: null
	},

	_create: function() {
		var selectmenuId = this.element.uniqueId().attr( "id" );
		this.ids = {
			element: selectmenuId,
			button: selectmenuId + "-button",
			menu: selectmenuId + "-menu"
		};

		this._drawButton();
		this._drawMenu();
		this._bindFormResetHandler();

		this._rendered = false;
		this.menuItems = $();
	},

	_drawButton: function() {
		var icon,
			that = this,
			item = this._parseOption(
				this.element.find( "option:selected" ),
				this.element[ 0 ].selectedIndex
			);

		// Associate existing label with the new button
		this.labels = this.element.labels().attr( "for", this.ids.button );
		this._on( this.labels, {
			click: function( event ) {
				this.button.focus();
				event.preventDefault();
			}
		} );

		// Hide original select element
		this.element.hide();

		// Create button
		this.button = $( "<span>", {
			tabindex: this.options.disabled ? -1 : 0,
			id: this.ids.button,
			role: "combobox",
			"aria-expanded": "false",
			"aria-autocomplete": "list",
			"aria-owns": this.ids.menu,
			"aria-haspopup": "true",
			title: this.element.attr( "title" )
		} )
			.insertAfter( this.element );

		this._addClass( this.button, "ui-selectmenu-button ui-selectmenu-button-closed",
			"ui-button ui-widget" );

		icon = $( "<span>" ).appendTo( this.button );
		this._addClass( icon, "ui-selectmenu-icon", "ui-icon " + this.options.icons.button );
		this.buttonItem = this._renderButtonItem( item )
			.appendTo( this.button );

		if ( this.options.width !== false ) {
			this._resizeButton();
		}

		this._on( this.button, this._buttonEvents );
		this.button.one( "focusin", function() {

			// Delay rendering the menu items until the button receives focus.
			// The menu may have already been rendered via a programmatic open.
			if ( !that._rendered ) {
				that._refreshMenu();
			}
		} );
	},

	_drawMenu: function() {
		var that = this;

		// Create menu
		this.menu = $( "<ul>", {
			"aria-hidden": "true",
			"aria-labelledby": this.ids.button,
			id: this.ids.menu
		} );

		// Wrap menu
		this.menuWrap = $( "<div>" ).append( this.menu );
		this._addClass( this.menuWrap, "ui-selectmenu-menu", "ui-front" );
		this.menuWrap.appendTo( this._appendTo() );

		// Initialize menu widget
		this.menuInstance = this.menu
			.menu( {
				classes: {
					"ui-menu": "ui-corner-bottom"
				},
				role: "listbox",
				select: function( event, ui ) {
					event.preventDefault();

					// Support: IE8
					// If the item was selected via a click, the text selection
					// will be destroyed in IE
					that._setSelection();

					that._select( ui.item.data( "ui-selectmenu-item" ), event );
				},
				focus: function( event, ui ) {
					var item = ui.item.data( "ui-selectmenu-item" );

					// Prevent inital focus from firing and check if its a newly focused item
					if ( that.focusIndex != null && item.index !== that.focusIndex ) {
						that._trigger( "focus", event, { item: item } );
						if ( !that.isOpen ) {
							that._select( item, event );
						}
					}
					that.focusIndex = item.index;

					that.button.attr( "aria-activedescendant",
						that.menuItems.eq( item.index ).attr( "id" ) );
				}
			} )
			.menu( "instance" );

		// Don't close the menu on mouseleave
		this.menuInstance._off( this.menu, "mouseleave" );

		// Cancel the menu's collapseAll on document click
		this.menuInstance._closeOnDocumentClick = function() {
			return false;
		};

		// Selects often contain empty items, but never contain dividers
		this.menuInstance._isDivider = function() {
			return false;
		};
	},

	refresh: function() {
		this._refreshMenu();
		this.buttonItem.replaceWith(
			this.buttonItem = this._renderButtonItem(

				// Fall back to an empty object in case there are no options
				this._getSelectedItem().data( "ui-selectmenu-item" ) || {}
			)
		);
		if ( this.options.width === null ) {
			this._resizeButton();
		}
	},

	_refreshMenu: function() {
		var item,
			options = this.element.find( "option" );

		this.menu.empty();

		this._parseOptions( options );
		this._renderMenu( this.menu, this.items );

		this.menuInstance.refresh();
		this.menuItems = this.menu.find( "li" )
			.not( ".ui-selectmenu-optgroup" )
				.find( ".ui-menu-item-wrapper" );

		this._rendered = true;

		if ( !options.length ) {
			return;
		}

		item = this._getSelectedItem();

		// Update the menu to have the correct item focused
		this.menuInstance.focus( null, item );
		this._setAria( item.data( "ui-selectmenu-item" ) );

		// Set disabled state
		this._setOption( "disabled", this.element.prop( "disabled" ) );
	},

	open: function( event ) {
		if ( this.options.disabled ) {
			return;
		}

		// If this is the first time the menu is being opened, render the items
		if ( !this._rendered ) {
			this._refreshMenu();
		} else {

			// Menu clears focus on close, reset focus to selected item
			this._removeClass( this.menu.find( ".ui-state-active" ), null, "ui-state-active" );
			this.menuInstance.focus( null, this._getSelectedItem() );
		}

		// If there are no options, don't open the menu
		if ( !this.menuItems.length ) {
			return;
		}

		this.isOpen = true;
		this._toggleAttr();
		this._resizeMenu();
		this._position();

		this._on( this.document, this._documentClick );

		this._trigger( "open", event );
	},

	_position: function() {
		this.menuWrap.position( $.extend( { of: this.button }, this.options.position ) );
	},

	close: function( event ) {
		if ( !this.isOpen ) {
			return;
		}

		this.isOpen = false;
		this._toggleAttr();

		this.range = null;
		this._off( this.document );

		this._trigger( "close", event );
	},

	widget: function() {
		return this.button;
	},

	menuWidget: function() {
		return this.menu;
	},

	_renderButtonItem: function( item ) {
		var buttonItem = $( "<span>" );

		this._setText( buttonItem, item.label );
		this._addClass( buttonItem, "ui-selectmenu-text" );

		return buttonItem;
	},

	_renderMenu: function( ul, items ) {
		var that = this,
			currentOptgroup = "";

		$.each( items, function( index, item ) {
			var li;

			if ( item.optgroup !== currentOptgroup ) {
				li = $( "<li>", {
					text: item.optgroup
				} );
				that._addClass( li, "ui-selectmenu-optgroup", "ui-menu-divider" +
					( item.element.parent( "optgroup" ).prop( "disabled" ) ?
						" ui-state-disabled" :
						"" ) );

				li.appendTo( ul );

				currentOptgroup = item.optgroup;
			}

			that._renderItemData( ul, item );
		} );
	},

	_renderItemData: function( ul, item ) {
		return this._renderItem( ul, item ).data( "ui-selectmenu-item", item );
	},

	_renderItem: function( ul, item ) {
		var li = $( "<li>" ),
			wrapper = $( "<div>", {
				title: item.element.attr( "title" )
			} );

		if ( item.disabled ) {
			this._addClass( li, null, "ui-state-disabled" );
		}
		this._setText( wrapper, item.label );

		return li.append( wrapper ).appendTo( ul );
	},

	_setText: function( element, value ) {
		if ( value ) {
			element.text( value );
		} else {
			element.html( "&#160;" );
		}
	},

	_move: function( direction, event ) {
		var item, next,
			filter = ".ui-menu-item";

		if ( this.isOpen ) {
			item = this.menuItems.eq( this.focusIndex ).parent( "li" );
		} else {
			item = this.menuItems.eq( this.element[ 0 ].selectedIndex ).parent( "li" );
			filter += ":not(.ui-state-disabled)";
		}

		if ( direction === "first" || direction === "last" ) {
			next = item[ direction === "first" ? "prevAll" : "nextAll" ]( filter ).eq( -1 );
		} else {
			next = item[ direction + "All" ]( filter ).eq( 0 );
		}

		if ( next.length ) {
			this.menuInstance.focus( event, next );
		}
	},

	_getSelectedItem: function() {
		return this.menuItems.eq( this.element[ 0 ].selectedIndex ).parent( "li" );
	},

	_toggle: function( event ) {
		this[ this.isOpen ? "close" : "open" ]( event );
	},

	_setSelection: function() {
		var selection;

		if ( !this.range ) {
			return;
		}

		if ( window.getSelection ) {
			selection = window.getSelection();
			selection.removeAllRanges();
			selection.addRange( this.range );

		// Support: IE8
		} else {
			this.range.select();
		}

		// Support: IE
		// Setting the text selection kills the button focus in IE, but
		// restoring the focus doesn't kill the selection.
		this.button.focus();
	},

	_documentClick: {
		mousedown: function( event ) {
			if ( !this.isOpen ) {
				return;
			}

			if ( !$( event.target ).closest( ".ui-selectmenu-menu, #" +
					$.ui.escapeSelector( this.ids.button ) ).length ) {
				this.close( event );
			}
		}
	},

	_buttonEvents: {

		// Prevent text selection from being reset when interacting with the selectmenu (#10144)
		mousedown: function() {
			var selection;

			if ( window.getSelection ) {
				selection = window.getSelection();
				if ( selection.rangeCount ) {
					this.range = selection.getRangeAt( 0 );
				}

			// Support: IE8
			} else {
				this.range = document.selection.createRange();
			}
		},

		click: function( event ) {
			this._setSelection();
			this._toggle( event );
		},

		keydown: function( event ) {
			var preventDefault = true;
			switch ( event.keyCode ) {
			case $.ui.keyCode.TAB:
			case $.ui.keyCode.ESCAPE:
				this.close( event );
				preventDefault = false;
				break;
			case $.ui.keyCode.ENTER:
				if ( this.isOpen ) {
					this._selectFocusedItem( event );
				}
				break;
			case $.ui.keyCode.UP:
				if ( event.altKey ) {
					this._toggle( event );
				} else {
					this._move( "prev", event );
				}
				break;
			case $.ui.keyCode.DOWN:
				if ( event.altKey ) {
					this._toggle( event );
				} else {
					this._move( "next", event );
				}
				break;
			case $.ui.keyCode.SPACE:
				if ( this.isOpen ) {
					this._selectFocusedItem( event );
				} else {
					this._toggle( event );
				}
				break;
			case $.ui.keyCode.LEFT:
				this._move( "prev", event );
				break;
			case $.ui.keyCode.RIGHT:
				this._move( "next", event );
				break;
			case $.ui.keyCode.HOME:
			case $.ui.keyCode.PAGE_UP:
				this._move( "first", event );
				break;
			case $.ui.keyCode.END:
			case $.ui.keyCode.PAGE_DOWN:
				this._move( "last", event );
				break;
			default:
				this.menu.trigger( event );
				preventDefault = false;
			}

			if ( preventDefault ) {
				event.preventDefault();
			}
		}
	},

	_selectFocusedItem: function( event ) {
		var item = this.menuItems.eq( this.focusIndex ).parent( "li" );
		if ( !item.hasClass( "ui-state-disabled" ) ) {
			this._select( item.data( "ui-selectmenu-item" ), event );
		}
	},

	_select: function( item, event ) {
		var oldIndex = this.element[ 0 ].selectedIndex;

		// Change native select element
		this.element[ 0 ].selectedIndex = item.index;
		this.buttonItem.replaceWith( this.buttonItem = this._renderButtonItem( item ) );
		this._setAria( item );
		this._trigger( "select", event, { item: item } );

		if ( item.index !== oldIndex ) {
			this._trigger( "change", event, { item: item } );
		}

		this.close( event );
	},

	_setAria: function( item ) {
		var id = this.menuItems.eq( item.index ).attr( "id" );

		this.button.attr( {
			"aria-labelledby": id,
			"aria-activedescendant": id
		} );
		this.menu.attr( "aria-activedescendant", id );
	},

	_setOption: function( key, value ) {
		if ( key === "icons" ) {
			var icon = this.button.find( "span.ui-icon" );
			this._removeClass( icon, null, this.options.icons.button )
				._addClass( icon, null, value.button );
		}

		this._super( key, value );

		if ( key === "appendTo" ) {
			this.menuWrap.appendTo( this._appendTo() );
		}

		if ( key === "width" ) {
			this._resizeButton();
		}
	},

	_setOptionDisabled: function( value ) {
		this._super( value );

		this.menuInstance.option( "disabled", value );
		this.button.attr( "aria-disabled", value );
		this._toggleClass( this.button, null, "ui-state-disabled", value );

		this.element.prop( "disabled", value );
		if ( value ) {
			this.button.attr( "tabindex", -1 );
			this.close();
		} else {
			this.button.attr( "tabindex", 0 );
		}
	},

	_appendTo: function() {
		var element = this.options.appendTo;

		if ( element ) {
			element = element.jquery || element.nodeType ?
				$( element ) :
				this.document.find( element ).eq( 0 );
		}

		if ( !element || !element[ 0 ] ) {
			element = this.element.closest( ".ui-front, dialog" );
		}

		if ( !element.length ) {
			element = this.document[ 0 ].body;
		}

		return element;
	},

	_toggleAttr: function() {
		this.button.attr( "aria-expanded", this.isOpen );

		// We can't use two _toggleClass() calls here, because we need to make sure
		// we always remove classes first and add them second, otherwise if both classes have the
		// same theme class, it will be removed after we add it.
		this._removeClass( this.button, "ui-selectmenu-button-" +
			( this.isOpen ? "closed" : "open" ) )
			._addClass( this.button, "ui-selectmenu-button-" +
				( this.isOpen ? "open" : "closed" ) )
			._toggleClass( this.menuWrap, "ui-selectmenu-open", null, this.isOpen );

		this.menu.attr( "aria-hidden", !this.isOpen );
	},

	_resizeButton: function() {
		var width = this.options.width;

		// For `width: false`, just remove inline style and stop
		if ( width === false ) {
			this.button.css( "width", "" );
			return;
		}

		// For `width: null`, match the width of the original element
		if ( width === null ) {
			width = this.element.show().outerWidth();
			this.element.hide();
		}

		this.button.outerWidth( width );
	},

	_resizeMenu: function() {
		this.menu.outerWidth( Math.max(
			this.button.outerWidth(),

			// Support: IE10
			// IE10 wraps long text (possibly a rounding bug)
			// so we add 1px to avoid the wrapping
			this.menu.width( "" ).outerWidth() + 1
		) );
	},

	_getCreateOptions: function() {
		var options = this._super();

		options.disabled = this.element.prop( "disabled" );

		return options;
	},

	_parseOptions: function( options ) {
		var that = this,
			data = [];
		options.each( function( index, item ) {
			data.push( that._parseOption( $( item ), index ) );
		} );
		this.items = data;
	},

	_parseOption: function( option, index ) {
		var optgroup = option.parent( "optgroup" );

		return {
			element: option,
			index: index,
			value: option.val(),
			label: option.text(),
			optgroup: optgroup.attr( "label" ) || "",
			disabled: optgroup.prop( "disabled" ) || option.prop( "disabled" )
		};
	},

	_destroy: function() {
		this._unbindFormResetHandler();
		this.menuWrap.remove();
		this.button.remove();
		this.element.show();
		this.element.removeUniqueId();
		this.labels.attr( "for", this.ids.element );
	}
} ] );


/*!
 * jQuery UI Slider 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Slider
//>>group: Widgets
//>>description: Displays a flexible slider with ranges and accessibility via keyboard.
//>>docs: http://api.jqueryui.com/slider/
//>>demos: http://jqueryui.com/slider/
//>>css.structure: ../../themes/base/core.css
//>>css.structure: ../../themes/base/slider.css
//>>css.theme: ../../themes/base/theme.css



var widgetsSlider = $.widget( "ui.slider", $.ui.mouse, {
	version: "1.12.1",
	widgetEventPrefix: "slide",

	options: {
		animate: false,
		classes: {
			"ui-slider": "ui-corner-all",
			"ui-slider-handle": "ui-corner-all",

			// Note: ui-widget-header isn't the most fittingly semantic framework class for this
			// element, but worked best visually with a variety of themes
			"ui-slider-range": "ui-corner-all ui-widget-header"
		},
		distance: 0,
		max: 100,
		min: 0,
		orientation: "horizontal",
		range: false,
		step: 1,
		value: 0,
		values: null,

		// Callbacks
		change: null,
		slide: null,
		start: null,
		stop: null
	},

	// Number of pages in a slider
	// (how many times can you page up/down to go through the whole range)
	numPages: 5,

	_create: function() {
		this._keySliding = false;
		this._mouseSliding = false;
		this._animateOff = true;
		this._handleIndex = null;
		this._detectOrientation();
		this._mouseInit();
		this._calculateNewMax();

		this._addClass( "ui-slider ui-slider-" + this.orientation,
			"ui-widget ui-widget-content" );

		this._refresh();

		this._animateOff = false;
	},

	_refresh: function() {
		this._createRange();
		this._createHandles();
		this._setupEvents();
		this._refreshValue();
	},

	_createHandles: function() {
		var i, handleCount,
			options = this.options,
			existingHandles = this.element.find( ".ui-slider-handle" ),
			handle = "<span tabindex='0'></span>",
			handles = [];

		handleCount = ( options.values && options.values.length ) || 1;

		if ( existingHandles.length > handleCount ) {
			existingHandles.slice( handleCount ).remove();
			existingHandles = existingHandles.slice( 0, handleCount );
		}

		for ( i = existingHandles.length; i < handleCount; i++ ) {
			handles.push( handle );
		}

		this.handles = existingHandles.add( $( handles.join( "" ) ).appendTo( this.element ) );

		this._addClass( this.handles, "ui-slider-handle", "ui-state-default" );

		this.handle = this.handles.eq( 0 );

		this.handles.each( function( i ) {
			$( this )
				.data( "ui-slider-handle-index", i )
				.attr( "tabIndex", 0 );
		} );
	},

	_createRange: function() {
		var options = this.options;

		if ( options.range ) {
			if ( options.range === true ) {
				if ( !options.values ) {
					options.values = [ this._valueMin(), this._valueMin() ];
				} else if ( options.values.length && options.values.length !== 2 ) {
					options.values = [ options.values[ 0 ], options.values[ 0 ] ];
				} else if ( $.isArray( options.values ) ) {
					options.values = options.values.slice( 0 );
				}
			}

			if ( !this.range || !this.range.length ) {
				this.range = $( "<div>" )
					.appendTo( this.element );

				this._addClass( this.range, "ui-slider-range" );
			} else {
				this._removeClass( this.range, "ui-slider-range-min ui-slider-range-max" );

				// Handle range switching from true to min/max
				this.range.css( {
					"left": "",
					"bottom": ""
				} );
			}
			if ( options.range === "min" || options.range === "max" ) {
				this._addClass( this.range, "ui-slider-range-" + options.range );
			}
		} else {
			if ( this.range ) {
				this.range.remove();
			}
			this.range = null;
		}
	},

	_setupEvents: function() {
		this._off( this.handles );
		this._on( this.handles, this._handleEvents );
		this._hoverable( this.handles );
		this._focusable( this.handles );
	},

	_destroy: function() {
		this.handles.remove();
		if ( this.range ) {
			this.range.remove();
		}

		this._mouseDestroy();
	},

	_mouseCapture: function( event ) {
		var position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle,
			that = this,
			o = this.options;

		if ( o.disabled ) {
			return false;
		}

		this.elementSize = {
			width: this.element.outerWidth(),
			height: this.element.outerHeight()
		};
		this.elementOffset = this.element.offset();

		position = { x: event.pageX, y: event.pageY };
		normValue = this._normValueFromMouse( position );
		distance = this._valueMax() - this._valueMin() + 1;
		this.handles.each( function( i ) {
			var thisDistance = Math.abs( normValue - that.values( i ) );
			if ( ( distance > thisDistance ) ||
				( distance === thisDistance &&
					( i === that._lastChangedValue || that.values( i ) === o.min ) ) ) {
				distance = thisDistance;
				closestHandle = $( this );
				index = i;
			}
		} );

		allowed = this._start( event, index );
		if ( allowed === false ) {
			return false;
		}
		this._mouseSliding = true;

		this._handleIndex = index;

		this._addClass( closestHandle, null, "ui-state-active" );
		closestHandle.trigger( "focus" );

		offset = closestHandle.offset();
		mouseOverHandle = !$( event.target ).parents().addBack().is( ".ui-slider-handle" );
		this._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {
			left: event.pageX - offset.left - ( closestHandle.width() / 2 ),
			top: event.pageY - offset.top -
				( closestHandle.height() / 2 ) -
				( parseInt( closestHandle.css( "borderTopWidth" ), 10 ) || 0 ) -
				( parseInt( closestHandle.css( "borderBottomWidth" ), 10 ) || 0 ) +
				( parseInt( closestHandle.css( "marginTop" ), 10 ) || 0 )
		};

		if ( !this.handles.hasClass( "ui-state-hover" ) ) {
			this._slide( event, index, normValue );
		}
		this._animateOff = true;
		return true;
	},

	_mouseStart: function() {
		return true;
	},

	_mouseDrag: function( event ) {
		var position = { x: event.pageX, y: event.pageY },
			normValue = this._normValueFromMouse( position );

		this._slide( event, this._handleIndex, normValue );

		return false;
	},

	_mouseStop: function( event ) {
		this._removeClass( this.handles, null, "ui-state-active" );
		this._mouseSliding = false;

		this._stop( event, this._handleIndex );
		this._change( event, this._handleIndex );

		this._handleIndex = null;
		this._clickOffset = null;
		this._animateOff = false;

		return false;
	},

	_detectOrientation: function() {
		this.orientation = ( this.options.orientation === "vertical" ) ? "vertical" : "horizontal";
	},

	_normValueFromMouse: function( position ) {
		var pixelTotal,
			pixelMouse,
			percentMouse,
			valueTotal,
			valueMouse;

		if ( this.orientation === "horizontal" ) {
			pixelTotal = this.elementSize.width;
			pixelMouse = position.x - this.elementOffset.left -
				( this._clickOffset ? this._clickOffset.left : 0 );
		} else {
			pixelTotal = this.elementSize.height;
			pixelMouse = position.y - this.elementOffset.top -
				( this._clickOffset ? this._clickOffset.top : 0 );
		}

		percentMouse = ( pixelMouse / pixelTotal );
		if ( percentMouse > 1 ) {
			percentMouse = 1;
		}
		if ( percentMouse < 0 ) {
			percentMouse = 0;
		}
		if ( this.orientation === "vertical" ) {
			percentMouse = 1 - percentMouse;
		}

		valueTotal = this._valueMax() - this._valueMin();
		valueMouse = this._valueMin() + percentMouse * valueTotal;

		return this._trimAlignValue( valueMouse );
	},

	_uiHash: function( index, value, values ) {
		var uiHash = {
			handle: this.handles[ index ],
			handleIndex: index,
			value: value !== undefined ? value : this.value()
		};

		if ( this._hasMultipleValues() ) {
			uiHash.value = value !== undefined ? value : this.values( index );
			uiHash.values = values || this.values();
		}

		return uiHash;
	},

	_hasMultipleValues: function() {
		return this.options.values && this.options.values.length;
	},

	_start: function( event, index ) {
		return this._trigger( "start", event, this._uiHash( index ) );
	},

	_slide: function( event, index, newVal ) {
		var allowed, otherVal,
			currentValue = this.value(),
			newValues = this.values();

		if ( this._hasMultipleValues() ) {
			otherVal = this.values( index ? 0 : 1 );
			currentValue = this.values( index );

			if ( this.options.values.length === 2 && this.options.range === true ) {
				newVal =  index === 0 ? Math.min( otherVal, newVal ) : Math.max( otherVal, newVal );
			}

			newValues[ index ] = newVal;
		}

		if ( newVal === currentValue ) {
			return;
		}

		allowed = this._trigger( "slide", event, this._uiHash( index, newVal, newValues ) );

		// A slide can be canceled by returning false from the slide callback
		if ( allowed === false ) {
			return;
		}

		if ( this._hasMultipleValues() ) {
			this.values( index, newVal );
		} else {
			this.value( newVal );
		}
	},

	_stop: function( event, index ) {
		this._trigger( "stop", event, this._uiHash( index ) );
	},

	_change: function( event, index ) {
		if ( !this._keySliding && !this._mouseSliding ) {

			//store the last changed value index for reference when handles overlap
			this._lastChangedValue = index;
			this._trigger( "change", event, this._uiHash( index ) );
		}
	},

	value: function( newValue ) {
		if ( arguments.length ) {
			this.options.value = this._trimAlignValue( newValue );
			this._refreshValue();
			this._change( null, 0 );
			return;
		}

		return this._value();
	},

	values: function( index, newValue ) {
		var vals,
			newValues,
			i;

		if ( arguments.length > 1 ) {
			this.options.values[ index ] = this._trimAlignValue( newValue );
			this._refreshValue();
			this._change( null, index );
			return;
		}

		if ( arguments.length ) {
			if ( $.isArray( arguments[ 0 ] ) ) {
				vals = this.options.values;
				newValues = arguments[ 0 ];
				for ( i = 0; i < vals.length; i += 1 ) {
					vals[ i ] = this._trimAlignValue( newValues[ i ] );
					this._change( null, i );
				}
				this._refreshValue();
			} else {
				if ( this._hasMultipleValues() ) {
					return this._values( index );
				} else {
					return this.value();
				}
			}
		} else {
			return this._values();
		}
	},

	_setOption: function( key, value ) {
		var i,
			valsLength = 0;

		if ( key === "range" && this.options.range === true ) {
			if ( value === "min" ) {
				this.options.value = this._values( 0 );
				this.options.values = null;
			} else if ( value === "max" ) {
				this.options.value = this._values( this.options.values.length - 1 );
				this.options.values = null;
			}
		}

		if ( $.isArray( this.options.values ) ) {
			valsLength = this.options.values.length;
		}

		this._super( key, value );

		switch ( key ) {
			case "orientation":
				this._detectOrientation();
				this._removeClass( "ui-slider-horizontal ui-slider-vertical" )
					._addClass( "ui-slider-" + this.orientation );
				this._refreshValue();
				if ( this.options.range ) {
					this._refreshRange( value );
				}

				// Reset positioning from previous orientation
				this.handles.css( value === "horizontal" ? "bottom" : "left", "" );
				break;
			case "value":
				this._animateOff = true;
				this._refreshValue();
				this._change( null, 0 );
				this._animateOff = false;
				break;
			case "values":
				this._animateOff = true;
				this._refreshValue();

				// Start from the last handle to prevent unreachable handles (#9046)
				for ( i = valsLength - 1; i >= 0; i-- ) {
					this._change( null, i );
				}
				this._animateOff = false;
				break;
			case "step":
			case "min":
			case "max":
				this._animateOff = true;
				this._calculateNewMax();
				this._refreshValue();
				this._animateOff = false;
				break;
			case "range":
				this._animateOff = true;
				this._refresh();
				this._animateOff = false;
				break;
		}
	},

	_setOptionDisabled: function( value ) {
		this._super( value );

		this._toggleClass( null, "ui-state-disabled", !!value );
	},

	//internal value getter
	// _value() returns value trimmed by min and max, aligned by step
	_value: function() {
		var val = this.options.value;
		val = this._trimAlignValue( val );

		return val;
	},

	//internal values getter
	// _values() returns array of values trimmed by min and max, aligned by step
	// _values( index ) returns single value trimmed by min and max, aligned by step
	_values: function( index ) {
		var val,
			vals,
			i;

		if ( arguments.length ) {
			val = this.options.values[ index ];
			val = this._trimAlignValue( val );

			return val;
		} else if ( this._hasMultipleValues() ) {

			// .slice() creates a copy of the array
			// this copy gets trimmed by min and max and then returned
			vals = this.options.values.slice();
			for ( i = 0; i < vals.length; i += 1 ) {
				vals[ i ] = this._trimAlignValue( vals[ i ] );
			}

			return vals;
		} else {
			return [];
		}
	},

	// Returns the step-aligned value that val is closest to, between (inclusive) min and max
	_trimAlignValue: function( val ) {
		if ( val <= this._valueMin() ) {
			return this._valueMin();
		}
		if ( val >= this._valueMax() ) {
			return this._valueMax();
		}
		var step = ( this.options.step > 0 ) ? this.options.step : 1,
			valModStep = ( val - this._valueMin() ) % step,
			alignValue = val - valModStep;

		if ( Math.abs( valModStep ) * 2 >= step ) {
			alignValue += ( valModStep > 0 ) ? step : ( -step );
		}

		// Since JavaScript has problems with large floats, round
		// the final value to 5 digits after the decimal point (see #4124)
		return parseFloat( alignValue.toFixed( 5 ) );
	},

	_calculateNewMax: function() {
		var max = this.options.max,
			min = this._valueMin(),
			step = this.options.step,
			aboveMin = Math.round( ( max - min ) / step ) * step;
		max = aboveMin + min;
		if ( max > this.options.max ) {

			//If max is not divisible by step, rounding off may increase its value
			max -= step;
		}
		this.max = parseFloat( max.toFixed( this._precision() ) );
	},

	_precision: function() {
		var precision = this._precisionOf( this.options.step );
		if ( this.options.min !== null ) {
			precision = Math.max( precision, this._precisionOf( this.options.min ) );
		}
		return precision;
	},

	_precisionOf: function( num ) {
		var str = num.toString(),
			decimal = str.indexOf( "." );
		return decimal === -1 ? 0 : str.length - decimal - 1;
	},

	_valueMin: function() {
		return this.options.min;
	},

	_valueMax: function() {
		return this.max;
	},

	_refreshRange: function( orientation ) {
		if ( orientation === "vertical" ) {
			this.range.css( { "width": "", "left": "" } );
		}
		if ( orientation === "horizontal" ) {
			this.range.css( { "height": "", "bottom": "" } );
		}
	},

	_refreshValue: function() {
		var lastValPercent, valPercent, value, valueMin, valueMax,
			oRange = this.options.range,
			o = this.options,
			that = this,
			animate = ( !this._animateOff ) ? o.animate : false,
			_set = {};

		if ( this._hasMultipleValues() ) {
			this.handles.each( function( i ) {
				valPercent = ( that.values( i ) - that._valueMin() ) / ( that._valueMax() -
					that._valueMin() ) * 100;
				_set[ that.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%";
				$( this ).stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate );
				if ( that.options.range === true ) {
					if ( that.orientation === "horizontal" ) {
						if ( i === 0 ) {
							that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
								left: valPercent + "%"
							}, o.animate );
						}
						if ( i === 1 ) {
							that.range[ animate ? "animate" : "css" ]( {
								width: ( valPercent - lastValPercent ) + "%"
							}, {
								queue: false,
								duration: o.animate
							} );
						}
					} else {
						if ( i === 0 ) {
							that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
								bottom: ( valPercent ) + "%"
							}, o.animate );
						}
						if ( i === 1 ) {
							that.range[ animate ? "animate" : "css" ]( {
								height: ( valPercent - lastValPercent ) + "%"
							}, {
								queue: false,
								duration: o.animate
							} );
						}
					}
				}
				lastValPercent = valPercent;
			} );
		} else {
			value = this.value();
			valueMin = this._valueMin();
			valueMax = this._valueMax();
			valPercent = ( valueMax !== valueMin ) ?
					( value - valueMin ) / ( valueMax - valueMin ) * 100 :
					0;
			_set[ this.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%";
			this.handle.stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate );

			if ( oRange === "min" && this.orientation === "horizontal" ) {
				this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
					width: valPercent + "%"
				}, o.animate );
			}
			if ( oRange === "max" && this.orientation === "horizontal" ) {
				this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
					width: ( 100 - valPercent ) + "%"
				}, o.animate );
			}
			if ( oRange === "min" && this.orientation === "vertical" ) {
				this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
					height: valPercent + "%"
				}, o.animate );
			}
			if ( oRange === "max" && this.orientation === "vertical" ) {
				this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
					height: ( 100 - valPercent ) + "%"
				}, o.animate );
			}
		}
	},

	_handleEvents: {
		keydown: function( event ) {
			var allowed, curVal, newVal, step,
				index = $( event.target ).data( "ui-slider-handle-index" );

			switch ( event.keyCode ) {
				case $.ui.keyCode.HOME:
				case $.ui.keyCode.END:
				case $.ui.keyCode.PAGE_UP:
				case $.ui.keyCode.PAGE_DOWN:
				case $.ui.keyCode.UP:
				case $.ui.keyCode.RIGHT:
				case $.ui.keyCode.DOWN:
				case $.ui.keyCode.LEFT:
					event.preventDefault();
					if ( !this._keySliding ) {
						this._keySliding = true;
						this._addClass( $( event.target ), null, "ui-state-active" );
						allowed = this._start( event, index );
						if ( allowed === false ) {
							return;
						}
					}
					break;
			}

			step = this.options.step;
			if ( this._hasMultipleValues() ) {
				curVal = newVal = this.values( index );
			} else {
				curVal = newVal = this.value();
			}

			switch ( event.keyCode ) {
				case $.ui.keyCode.HOME:
					newVal = this._valueMin();
					break;
				case $.ui.keyCode.END:
					newVal = this._valueMax();
					break;
				case $.ui.keyCode.PAGE_UP:
					newVal = this._trimAlignValue(
						curVal + ( ( this._valueMax() - this._valueMin() ) / this.numPages )
					);
					break;
				case $.ui.keyCode.PAGE_DOWN:
					newVal = this._trimAlignValue(
						curVal - ( ( this._valueMax() - this._valueMin() ) / this.numPages ) );
					break;
				case $.ui.keyCode.UP:
				case $.ui.keyCode.RIGHT:
					if ( curVal === this._valueMax() ) {
						return;
					}
					newVal = this._trimAlignValue( curVal + step );
					break;
				case $.ui.keyCode.DOWN:
				case $.ui.keyCode.LEFT:
					if ( curVal === this._valueMin() ) {
						return;
					}
					newVal = this._trimAlignValue( curVal - step );
					break;
			}

			this._slide( event, index, newVal );
		},
		keyup: function( event ) {
			var index = $( event.target ).data( "ui-slider-handle-index" );

			if ( this._keySliding ) {
				this._keySliding = false;
				this._stop( event, index );
				this._change( event, index );
				this._removeClass( $( event.target ), null, "ui-state-active" );
			}
		}
	}
} );


/*!
 * jQuery UI Sortable 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Sortable
//>>group: Interactions
//>>description: Enables items in a list to be sorted using the mouse.
//>>docs: http://api.jqueryui.com/sortable/
//>>demos: http://jqueryui.com/sortable/
//>>css.structure: ../../themes/base/sortable.css



var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
	version: "1.12.1",
	widgetEventPrefix: "sort",
	ready: false,
	options: {
		appendTo: "parent",
		axis: false,
		connectWith: false,
		containment: false,
		cursor: "auto",
		cursorAt: false,
		dropOnEmpty: true,
		forcePlaceholderSize: false,
		forceHelperSize: false,
		grid: false,
		handle: false,
		helper: "original",
		items: "> *",
		opacity: false,
		placeholder: false,
		revert: false,
		scroll: true,
		scrollSensitivity: 20,
		scrollSpeed: 20,
		scope: "default",
		tolerance: "intersect",
		zIndex: 1000,

		// Callbacks
		activate: null,
		beforeStop: null,
		change: null,
		deactivate: null,
		out: null,
		over: null,
		receive: null,
		remove: null,
		sort: null,
		start: null,
		stop: null,
		update: null
	},

	_isOverAxis: function( x, reference, size ) {
		return ( x >= reference ) && ( x < ( reference + size ) );
	},

	_isFloating: function( item ) {
		return ( /left|right/ ).test( item.css( "float" ) ) ||
			( /inline|table-cell/ ).test( item.css( "display" ) );
	},

	_create: function() {
		this.containerCache = {};
		this._addClass( "ui-sortable" );

		//Get the items
		this.refresh();

		//Let's determine the parent's offset
		this.offset = this.element.offset();

		//Initialize mouse events for interaction
		this._mouseInit();

		this._setHandleClassName();

		//We're ready to go
		this.ready = true;

	},

	_setOption: function( key, value ) {
		this._super( key, value );

		if ( key === "handle" ) {
			this._setHandleClassName();
		}
	},

	_setHandleClassName: function() {
		var that = this;
		this._removeClass( this.element.find( ".ui-sortable-handle" ), "ui-sortable-handle" );
		$.each( this.items, function() {
			that._addClass(
				this.instance.options.handle ?
					this.item.find( this.instance.options.handle ) :
					this.item,
				"ui-sortable-handle"
			);
		} );
	},

	_destroy: function() {
		this._mouseDestroy();

		for ( var i = this.items.length - 1; i >= 0; i-- ) {
			this.items[ i ].item.removeData( this.widgetName + "-item" );
		}

		return this;
	},

	_mouseCapture: function( event, overrideHandle ) {
		var currentItem = null,
			validHandle = false,
			that = this;

		if ( this.reverting ) {
			return false;
		}

		if ( this.options.disabled || this.options.type === "static" ) {
			return false;
		}

		//We have to refresh the items data once first
		this._refreshItems( event );

		//Find out if the clicked node (or one of its parents) is a actual item in this.items
		$( event.target ).parents().each( function() {
			if ( $.data( this, that.widgetName + "-item" ) === that ) {
				currentItem = $( this );
				return false;
			}
		} );
		if ( $.data( event.target, that.widgetName + "-item" ) === that ) {
			currentItem = $( event.target );
		}

		if ( !currentItem ) {
			return false;
		}
		if ( this.options.handle && !overrideHandle ) {
			$( this.options.handle, currentItem ).find( "*" ).addBack().each( function() {
				if ( this === event.target ) {
					validHandle = true;
				}
			} );
			if ( !validHandle ) {
				return false;
			}
		}

		this.currentItem = currentItem;
		this._removeCurrentsFromItems();
		return true;

	},

	_mouseStart: function( event, overrideHandle, noActivation ) {

		var i, body,
			o = this.options;

		this.currentContainer = this;

		//We only need to call refreshPositions, because the refreshItems call has been moved to
		// mouseCapture
		this.refreshPositions();

		//Create and append the visible helper
		this.helper = this._createHelper( event );

		//Cache the helper size
		this._cacheHelperProportions();

		/*
		 * - Position generation -
		 * This block generates everything position related - it's the core of draggables.
		 */

		//Cache the margins of the original element
		this._cacheMargins();

		//Get the next scrolling parent
		this.scrollParent = this.helper.scrollParent();

		//The element's absolute position on the page minus margins
		this.offset = this.currentItem.offset();
		this.offset = {
			top: this.offset.top - this.margins.top,
			left: this.offset.left - this.margins.left
		};

		$.extend( this.offset, {
			click: { //Where the click happened, relative to the element
				left: event.pageX - this.offset.left,
				top: event.pageY - this.offset.top
			},
			parent: this._getParentOffset(),

			// This is a relative to absolute position minus the actual position calculation -
			// only used for relative positioned helper
			relative: this._getRelativeOffset()
		} );

		// Only after we got the offset, we can change the helper's position to absolute
		// TODO: Still need to figure out a way to make relative sorting possible
		this.helper.css( "position", "absolute" );
		this.cssPosition = this.helper.css( "position" );

		//Generate the original position
		this.originalPosition = this._generatePosition( event );
		this.originalPageX = event.pageX;
		this.originalPageY = event.pageY;

		//Adjust the mouse offset relative to the helper if "cursorAt" is supplied
		( o.cursorAt && this._adjustOffsetFromHelper( o.cursorAt ) );

		//Cache the former DOM position
		this.domPosition = {
			prev: this.currentItem.prev()[ 0 ],
			parent: this.currentItem.parent()[ 0 ]
		};

		// If the helper is not the original, hide the original so it's not playing any role during
		// the drag, won't cause anything bad this way
		if ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) {
			this.currentItem.hide();
		}

		//Create the placeholder
		this._createPlaceholder();

		//Set a containment if given in the options
		if ( o.containment ) {
			this._setContainment();
		}

		if ( o.cursor && o.cursor !== "auto" ) { // cursor option
			body = this.document.find( "body" );

			// Support: IE
			this.storedCursor = body.css( "cursor" );
			body.css( "cursor", o.cursor );

			this.storedStylesheet =
				$( "<style>*{ cursor: " + o.cursor + " !important; }</style>" ).appendTo( body );
		}

		if ( o.opacity ) { // opacity option
			if ( this.helper.css( "opacity" ) ) {
				this._storedOpacity = this.helper.css( "opacity" );
			}
			this.helper.css( "opacity", o.opacity );
		}

		if ( o.zIndex ) { // zIndex option
			if ( this.helper.css( "zIndex" ) ) {
				this._storedZIndex = this.helper.css( "zIndex" );
			}
			this.helper.css( "zIndex", o.zIndex );
		}

		//Prepare scrolling
		if ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
				this.scrollParent[ 0 ].tagName !== "HTML" ) {
			this.overflowOffset = this.scrollParent.offset();
		}

		//Call callbacks
		this._trigger( "start", event, this._uiHash() );

		//Recache the helper size
		if ( !this._preserveHelperProportions ) {
			this._cacheHelperProportions();
		}

		//Post "activate" events to possible containers
		if ( !noActivation ) {
			for ( i = this.containers.length - 1; i >= 0; i-- ) {
				this.containers[ i ]._trigger( "activate", event, this._uiHash( this ) );
			}
		}

		//Prepare possible droppables
		if ( $.ui.ddmanager ) {
			$.ui.ddmanager.current = this;
		}

		if ( $.ui.ddmanager && !o.dropBehaviour ) {
			$.ui.ddmanager.prepareOffsets( this, event );
		}

		this.dragging = true;

		this._addClass( this.helper, "ui-sortable-helper" );

		// Execute the drag once - this causes the helper not to be visiblebefore getting its
		// correct position
		this._mouseDrag( event );
		return true;

	},

	_mouseDrag: function( event ) {
		var i, item, itemElement, intersection,
			o = this.options,
			scrolled = false;

		//Compute the helpers position
		this.position = this._generatePosition( event );
		this.positionAbs = this._convertPositionTo( "absolute" );

		if ( !this.lastPositionAbs ) {
			this.lastPositionAbs = this.positionAbs;
		}

		//Do scrolling
		if ( this.options.scroll ) {
			if ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
					this.scrollParent[ 0 ].tagName !== "HTML" ) {

				if ( ( this.overflowOffset.top + this.scrollParent[ 0 ].offsetHeight ) -
						event.pageY < o.scrollSensitivity ) {
					this.scrollParent[ 0 ].scrollTop =
						scrolled = this.scrollParent[ 0 ].scrollTop + o.scrollSpeed;
				} else if ( event.pageY - this.overflowOffset.top < o.scrollSensitivity ) {
					this.scrollParent[ 0 ].scrollTop =
						scrolled = this.scrollParent[ 0 ].scrollTop - o.scrollSpeed;
				}

				if ( ( this.overflowOffset.left + this.scrollParent[ 0 ].offsetWidth ) -
						event.pageX < o.scrollSensitivity ) {
					this.scrollParent[ 0 ].scrollLeft = scrolled =
						this.scrollParent[ 0 ].scrollLeft + o.scrollSpeed;
				} else if ( event.pageX - this.overflowOffset.left < o.scrollSensitivity ) {
					this.scrollParent[ 0 ].scrollLeft = scrolled =
						this.scrollParent[ 0 ].scrollLeft - o.scrollSpeed;
				}

			} else {

				if ( event.pageY - this.document.scrollTop() < o.scrollSensitivity ) {
					scrolled = this.document.scrollTop( this.document.scrollTop() - o.scrollSpeed );
				} else if ( this.window.height() - ( event.pageY - this.document.scrollTop() ) <
						o.scrollSensitivity ) {
					scrolled = this.document.scrollTop( this.document.scrollTop() + o.scrollSpeed );
				}

				if ( event.pageX - this.document.scrollLeft() < o.scrollSensitivity ) {
					scrolled = this.document.scrollLeft(
						this.document.scrollLeft() - o.scrollSpeed
					);
				} else if ( this.window.width() - ( event.pageX - this.document.scrollLeft() ) <
						o.scrollSensitivity ) {
					scrolled = this.document.scrollLeft(
						this.document.scrollLeft() + o.scrollSpeed
					);
				}

			}

			if ( scrolled !== false && $.ui.ddmanager && !o.dropBehaviour ) {
				$.ui.ddmanager.prepareOffsets( this, event );
			}
		}

		//Regenerate the absolute position used for position checks
		this.positionAbs = this._convertPositionTo( "absolute" );

		//Set the helper position
		if ( !this.options.axis || this.options.axis !== "y" ) {
			this.helper[ 0 ].style.left = this.position.left + "px";
		}
		if ( !this.options.axis || this.options.axis !== "x" ) {
			this.helper[ 0 ].style.top = this.position.top + "px";
		}

		//Rearrange
		for ( i = this.items.length - 1; i >= 0; i-- ) {

			//Cache variables and intersection, continue if no intersection
			item = this.items[ i ];
			itemElement = item.item[ 0 ];
			intersection = this._intersectsWithPointer( item );
			if ( !intersection ) {
				continue;
			}

			// Only put the placeholder inside the current Container, skip all
			// items from other containers. This works because when moving
			// an item from one container to another the
			// currentContainer is switched before the placeholder is moved.
			//
			// Without this, moving items in "sub-sortables" can cause
			// the placeholder to jitter between the outer and inner container.
			if ( item.instance !== this.currentContainer ) {
				continue;
			}

			// Cannot intersect with itself
			// no useless actions that have been done before
			// no action if the item moved is the parent of the item checked
			if ( itemElement !== this.currentItem[ 0 ] &&
				this.placeholder[ intersection === 1 ? "next" : "prev" ]()[ 0 ] !== itemElement &&
				!$.contains( this.placeholder[ 0 ], itemElement ) &&
				( this.options.type === "semi-dynamic" ?
					!$.contains( this.element[ 0 ], itemElement ) :
					true
				)
			) {

				this.direction = intersection === 1 ? "down" : "up";

				if ( this.options.tolerance === "pointer" || this._intersectsWithSides( item ) ) {
					this._rearrange( event, item );
				} else {
					break;
				}

				this._trigger( "change", event, this._uiHash() );
				break;
			}
		}

		//Post events to containers
		this._contactContainers( event );

		//Interconnect with droppables
		if ( $.ui.ddmanager ) {
			$.ui.ddmanager.drag( this, event );
		}

		//Call callbacks
		this._trigger( "sort", event, this._uiHash() );

		this.lastPositionAbs = this.positionAbs;
		return false;

	},

	_mouseStop: function( event, noPropagation ) {

		if ( !event ) {
			return;
		}

		//If we are using droppables, inform the manager about the drop
		if ( $.ui.ddmanager && !this.options.dropBehaviour ) {
			$.ui.ddmanager.drop( this, event );
		}

		if ( this.options.revert ) {
			var that = this,
				cur = this.placeholder.offset(),
				axis = this.options.axis,
				animation = {};

			if ( !axis || axis === "x" ) {
				animation.left = cur.left - this.offset.parent.left - this.margins.left +
					( this.offsetParent[ 0 ] === this.document[ 0 ].body ?
						0 :
						this.offsetParent[ 0 ].scrollLeft
					);
			}
			if ( !axis || axis === "y" ) {
				animation.top = cur.top - this.offset.parent.top - this.margins.top +
					( this.offsetParent[ 0 ] === this.document[ 0 ].body ?
						0 :
						this.offsetParent[ 0 ].scrollTop
					);
			}
			this.reverting = true;
			$( this.helper ).animate(
				animation,
				parseInt( this.options.revert, 10 ) || 500,
				function() {
					that._clear( event );
				}
			);
		} else {
			this._clear( event, noPropagation );
		}

		return false;

	},

	cancel: function() {

		if ( this.dragging ) {

			this._mouseUp( new $.Event( "mouseup", { target: null } ) );

			if ( this.options.helper === "original" ) {
				this.currentItem.css( this._storedCSS );
				this._removeClass( this.currentItem, "ui-sortable-helper" );
			} else {
				this.currentItem.show();
			}

			//Post deactivating events to containers
			for ( var i = this.containers.length - 1; i >= 0; i-- ) {
				this.containers[ i ]._trigger( "deactivate", null, this._uiHash( this ) );
				if ( this.containers[ i ].containerCache.over ) {
					this.containers[ i ]._trigger( "out", null, this._uiHash( this ) );
					this.containers[ i ].containerCache.over = 0;
				}
			}

		}

		if ( this.placeholder ) {

			//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately,
			// it unbinds ALL events from the original node!
			if ( this.placeholder[ 0 ].parentNode ) {
				this.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] );
			}
			if ( this.options.helper !== "original" && this.helper &&
					this.helper[ 0 ].parentNode ) {
				this.helper.remove();
			}

			$.extend( this, {
				helper: null,
				dragging: false,
				reverting: false,
				_noFinalSort: null
			} );

			if ( this.domPosition.prev ) {
				$( this.domPosition.prev ).after( this.currentItem );
			} else {
				$( this.domPosition.parent ).prepend( this.currentItem );
			}
		}

		return this;

	},

	serialize: function( o ) {

		var items = this._getItemsAsjQuery( o && o.connected ),
			str = [];
		o = o || {};

		$( items ).each( function() {
			var res = ( $( o.item || this ).attr( o.attribute || "id" ) || "" )
				.match( o.expression || ( /(.+)[\-=_](.+)/ ) );
			if ( res ) {
				str.push(
					( o.key || res[ 1 ] + "[]" ) +
					"=" + ( o.key && o.expression ? res[ 1 ] : res[ 2 ] ) );
			}
		} );

		if ( !str.length && o.key ) {
			str.push( o.key + "=" );
		}

		return str.join( "&" );

	},

	toArray: function( o ) {

		var items = this._getItemsAsjQuery( o && o.connected ),
			ret = [];

		o = o || {};

		items.each( function() {
			ret.push( $( o.item || this ).attr( o.attribute || "id" ) || "" );
		} );
		return ret;

	},

	/* Be careful with the following core functions */
	_intersectsWith: function( item ) {

		var x1 = this.positionAbs.left,
			x2 = x1 + this.helperProportions.width,
			y1 = this.positionAbs.top,
			y2 = y1 + this.helperProportions.height,
			l = item.left,
			r = l + item.width,
			t = item.top,
			b = t + item.height,
			dyClick = this.offset.click.top,
			dxClick = this.offset.click.left,
			isOverElementHeight = ( this.options.axis === "x" ) || ( ( y1 + dyClick ) > t &&
				( y1 + dyClick ) < b ),
			isOverElementWidth = ( this.options.axis === "y" ) || ( ( x1 + dxClick ) > l &&
				( x1 + dxClick ) < r ),
			isOverElement = isOverElementHeight && isOverElementWidth;

		if ( this.options.tolerance === "pointer" ||
			this.options.forcePointerForContainers ||
			( this.options.tolerance !== "pointer" &&
				this.helperProportions[ this.floating ? "width" : "height" ] >
				item[ this.floating ? "width" : "height" ] )
		) {
			return isOverElement;
		} else {

			return ( l < x1 + ( this.helperProportions.width / 2 ) && // Right Half
				x2 - ( this.helperProportions.width / 2 ) < r && // Left Half
				t < y1 + ( this.helperProportions.height / 2 ) && // Bottom Half
				y2 - ( this.helperProportions.height / 2 ) < b ); // Top Half

		}
	},

	_intersectsWithPointer: function( item ) {
		var verticalDirection, horizontalDirection,
			isOverElementHeight = ( this.options.axis === "x" ) ||
				this._isOverAxis(
					this.positionAbs.top + this.offset.click.top, item.top, item.height ),
			isOverElementWidth = ( this.options.axis === "y" ) ||
				this._isOverAxis(
					this.positionAbs.left + this.offset.click.left, item.left, item.width ),
			isOverElement = isOverElementHeight && isOverElementWidth;

		if ( !isOverElement ) {
			return false;
		}

		verticalDirection = this._getDragVerticalDirection();
		horizontalDirection = this._getDragHorizontalDirection();

		return this.floating ?
			( ( horizontalDirection === "right" || verticalDirection === "down" ) ? 2 : 1 )
			: ( verticalDirection && ( verticalDirection === "down" ? 2 : 1 ) );

	},

	_intersectsWithSides: function( item ) {

		var isOverBottomHalf = this._isOverAxis( this.positionAbs.top +
				this.offset.click.top, item.top + ( item.height / 2 ), item.height ),
			isOverRightHalf = this._isOverAxis( this.positionAbs.left +
				this.offset.click.left, item.left + ( item.width / 2 ), item.width ),
			verticalDirection = this._getDragVerticalDirection(),
			horizontalDirection = this._getDragHorizontalDirection();

		if ( this.floating && horizontalDirection ) {
			return ( ( horizontalDirection === "right" && isOverRightHalf ) ||
				( horizontalDirection === "left" && !isOverRightHalf ) );
		} else {
			return verticalDirection && ( ( verticalDirection === "down" && isOverBottomHalf ) ||
				( verticalDirection === "up" && !isOverBottomHalf ) );
		}

	},

	_getDragVerticalDirection: function() {
		var delta = this.positionAbs.top - this.lastPositionAbs.top;
		return delta !== 0 && ( delta > 0 ? "down" : "up" );
	},

	_getDragHorizontalDirection: function() {
		var delta = this.positionAbs.left - this.lastPositionAbs.left;
		return delta !== 0 && ( delta > 0 ? "right" : "left" );
	},

	refresh: function( event ) {
		this._refreshItems( event );
		this._setHandleClassName();
		this.refreshPositions();
		return this;
	},

	_connectWith: function() {
		var options = this.options;
		return options.connectWith.constructor === String ?
			[ options.connectWith ] :
			options.connectWith;
	},

	_getItemsAsjQuery: function( connected ) {

		var i, j, cur, inst,
			items = [],
			queries = [],
			connectWith = this._connectWith();

		if ( connectWith && connected ) {
			for ( i = connectWith.length - 1; i >= 0; i-- ) {
				cur = $( connectWith[ i ], this.document[ 0 ] );
				for ( j = cur.length - 1; j >= 0; j-- ) {
					inst = $.data( cur[ j ], this.widgetFullName );
					if ( inst && inst !== this && !inst.options.disabled ) {
						queries.push( [ $.isFunction( inst.options.items ) ?
							inst.options.items.call( inst.element ) :
							$( inst.options.items, inst.element )
								.not( ".ui-sortable-helper" )
								.not( ".ui-sortable-placeholder" ), inst ] );
					}
				}
			}
		}

		queries.push( [ $.isFunction( this.options.items ) ?
			this.options.items
				.call( this.element, null, { options: this.options, item: this.currentItem } ) :
			$( this.options.items, this.element )
				.not( ".ui-sortable-helper" )
				.not( ".ui-sortable-placeholder" ), this ] );

		function addItems() {
			items.push( this );
		}
		for ( i = queries.length - 1; i >= 0; i-- ) {
			queries[ i ][ 0 ].each( addItems );
		}

		return $( items );

	},

	_removeCurrentsFromItems: function() {

		var list = this.currentItem.find( ":data(" + this.widgetName + "-item)" );

		this.items = $.grep( this.items, function( item ) {
			for ( var j = 0; j < list.length; j++ ) {
				if ( list[ j ] === item.item[ 0 ] ) {
					return false;
				}
			}
			return true;
		} );

	},

	_refreshItems: function( event ) {

		this.items = [];
		this.containers = [ this ];

		var i, j, cur, inst, targetData, _queries, item, queriesLength,
			items = this.items,
			queries = [ [ $.isFunction( this.options.items ) ?
				this.options.items.call( this.element[ 0 ], event, { item: this.currentItem } ) :
				$( this.options.items, this.element ), this ] ],
			connectWith = this._connectWith();

		//Shouldn't be run the first time through due to massive slow-down
		if ( connectWith && this.ready ) {
			for ( i = connectWith.length - 1; i >= 0; i-- ) {
				cur = $( connectWith[ i ], this.document[ 0 ] );
				for ( j = cur.length - 1; j >= 0; j-- ) {
					inst = $.data( cur[ j ], this.widgetFullName );
					if ( inst && inst !== this && !inst.options.disabled ) {
						queries.push( [ $.isFunction( inst.options.items ) ?
							inst.options.items
								.call( inst.element[ 0 ], event, { item: this.currentItem } ) :
							$( inst.options.items, inst.element ), inst ] );
						this.containers.push( inst );
					}
				}
			}
		}

		for ( i = queries.length - 1; i >= 0; i-- ) {
			targetData = queries[ i ][ 1 ];
			_queries = queries[ i ][ 0 ];

			for ( j = 0, queriesLength = _queries.length; j < queriesLength; j++ ) {
				item = $( _queries[ j ] );

				// Data for target checking (mouse manager)
				item.data( this.widgetName + "-item", targetData );

				items.push( {
					item: item,
					instance: targetData,
					width: 0, height: 0,
					left: 0, top: 0
				} );
			}
		}

	},

	refreshPositions: function( fast ) {

		// Determine whether items are being displayed horizontally
		this.floating = this.items.length ?
			this.options.axis === "x" || this._isFloating( this.items[ 0 ].item ) :
			false;

		//This has to be redone because due to the item being moved out/into the offsetParent,
		// the offsetParent's position will change
		if ( this.offsetParent && this.helper ) {
			this.offset.parent = this._getParentOffset();
		}

		var i, item, t, p;

		for ( i = this.items.length - 1; i >= 0; i-- ) {
			item = this.items[ i ];

			//We ignore calculating positions of all connected containers when we're not over them
			if ( item.instance !== this.currentContainer && this.currentContainer &&
					item.item[ 0 ] !== this.currentItem[ 0 ] ) {
				continue;
			}

			t = this.options.toleranceElement ?
				$( this.options.toleranceElement, item.item ) :
				item.item;

			if ( !fast ) {
				item.width = t.outerWidth();
				item.height = t.outerHeight();
			}

			p = t.offset();
			item.left = p.left;
			item.top = p.top;
		}

		if ( this.options.custom && this.options.custom.refreshContainers ) {
			this.options.custom.refreshContainers.call( this );
		} else {
			for ( i = this.containers.length - 1; i >= 0; i-- ) {
				p = this.containers[ i ].element.offset();
				this.containers[ i ].containerCache.left = p.left;
				this.containers[ i ].containerCache.top = p.top;
				this.containers[ i ].containerCache.width =
					this.containers[ i ].element.outerWidth();
				this.containers[ i ].containerCache.height =
					this.containers[ i ].element.outerHeight();
			}
		}

		return this;
	},

	_createPlaceholder: function( that ) {
		that = that || this;
		var className,
			o = that.options;

		if ( !o.placeholder || o.placeholder.constructor === String ) {
			className = o.placeholder;
			o.placeholder = {
				element: function() {

					var nodeName = that.currentItem[ 0 ].nodeName.toLowerCase(),
						element = $( "<" + nodeName + ">", that.document[ 0 ] );

						that._addClass( element, "ui-sortable-placeholder",
								className || that.currentItem[ 0 ].className )
							._removeClass( element, "ui-sortable-helper" );

					if ( nodeName === "tbody" ) {
						that._createTrPlaceholder(
							that.currentItem.find( "tr" ).eq( 0 ),
							$( "<tr>", that.document[ 0 ] ).appendTo( element )
						);
					} else if ( nodeName === "tr" ) {
						that._createTrPlaceholder( that.currentItem, element );
					} else if ( nodeName === "img" ) {
						element.attr( "src", that.currentItem.attr( "src" ) );
					}

					if ( !className ) {
						element.css( "visibility", "hidden" );
					}

					return element;
				},
				update: function( container, p ) {

					// 1. If a className is set as 'placeholder option, we don't force sizes -
					// the class is responsible for that
					// 2. The option 'forcePlaceholderSize can be enabled to force it even if a
					// class name is specified
					if ( className && !o.forcePlaceholderSize ) {
						return;
					}

					//If the element doesn't have a actual height by itself (without styles coming
					// from a stylesheet), it receives the inline height from the dragged item
					if ( !p.height() ) {
						p.height(
							that.currentItem.innerHeight() -
							parseInt( that.currentItem.css( "paddingTop" ) || 0, 10 ) -
							parseInt( that.currentItem.css( "paddingBottom" ) || 0, 10 ) );
					}
					if ( !p.width() ) {
						p.width(
							that.currentItem.innerWidth() -
							parseInt( that.currentItem.css( "paddingLeft" ) || 0, 10 ) -
							parseInt( that.currentItem.css( "paddingRight" ) || 0, 10 ) );
					}
				}
			};
		}

		//Create the placeholder
		that.placeholder = $( o.placeholder.element.call( that.element, that.currentItem ) );

		//Append it after the actual current item
		that.currentItem.after( that.placeholder );

		//Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)
		o.placeholder.update( that, that.placeholder );

	},

	_createTrPlaceholder: function( sourceTr, targetTr ) {
		var that = this;

		sourceTr.children().each( function() {
			$( "<td>&#160;</td>", that.document[ 0 ] )
				.attr( "colspan", $( this ).attr( "colspan" ) || 1 )
				.appendTo( targetTr );
		} );
	},

	_contactContainers: function( event ) {
		var i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, cur, nearBottom,
			floating, axis,
			innermostContainer = null,
			innermostIndex = null;

		// Get innermost container that intersects with item
		for ( i = this.containers.length - 1; i >= 0; i-- ) {

			// Never consider a container that's located within the item itself
			if ( $.contains( this.currentItem[ 0 ], this.containers[ i ].element[ 0 ] ) ) {
				continue;
			}

			if ( this._intersectsWith( this.containers[ i ].containerCache ) ) {

				// If we've already found a container and it's more "inner" than this, then continue
				if ( innermostContainer &&
						$.contains(
							this.containers[ i ].element[ 0 ],
							innermostContainer.element[ 0 ] ) ) {
					continue;
				}

				innermostContainer = this.containers[ i ];
				innermostIndex = i;

			} else {

				// container doesn't intersect. trigger "out" event if necessary
				if ( this.containers[ i ].containerCache.over ) {
					this.containers[ i ]._trigger( "out", event, this._uiHash( this ) );
					this.containers[ i ].containerCache.over = 0;
				}
			}

		}

		// If no intersecting containers found, return
		if ( !innermostContainer ) {
			return;
		}

		// Move the item into the container if it's not there already
		if ( this.containers.length === 1 ) {
			if ( !this.containers[ innermostIndex ].containerCache.over ) {
				this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash( this ) );
				this.containers[ innermostIndex ].containerCache.over = 1;
			}
		} else {

			// When entering a new container, we will find the item with the least distance and
			// append our item near it
			dist = 10000;
			itemWithLeastDistance = null;
			floating = innermostContainer.floating || this._isFloating( this.currentItem );
			posProperty = floating ? "left" : "top";
			sizeProperty = floating ? "width" : "height";
			axis = floating ? "pageX" : "pageY";

			for ( j = this.items.length - 1; j >= 0; j-- ) {
				if ( !$.contains(
						this.containers[ innermostIndex ].element[ 0 ], this.items[ j ].item[ 0 ] )
				) {
					continue;
				}
				if ( this.items[ j ].item[ 0 ] === this.currentItem[ 0 ] ) {
					continue;
				}

				cur = this.items[ j ].item.offset()[ posProperty ];
				nearBottom = false;
				if ( event[ axis ] - cur > this.items[ j ][ sizeProperty ] / 2 ) {
					nearBottom = true;
				}

				if ( Math.abs( event[ axis ] - cur ) < dist ) {
					dist = Math.abs( event[ axis ] - cur );
					itemWithLeastDistance = this.items[ j ];
					this.direction = nearBottom ? "up" : "down";
				}
			}

			//Check if dropOnEmpty is enabled
			if ( !itemWithLeastDistance && !this.options.dropOnEmpty ) {
				return;
			}

			if ( this.currentContainer === this.containers[ innermostIndex ] ) {
				if ( !this.currentContainer.containerCache.over ) {
					this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash() );
					this.currentContainer.containerCache.over = 1;
				}
				return;
			}

			itemWithLeastDistance ?
				this._rearrange( event, itemWithLeastDistance, null, true ) :
				this._rearrange( event, null, this.containers[ innermostIndex ].element, true );
			this._trigger( "change", event, this._uiHash() );
			this.containers[ innermostIndex ]._trigger( "change", event, this._uiHash( this ) );
			this.currentContainer = this.containers[ innermostIndex ];

			//Update the placeholder
			this.options.placeholder.update( this.currentContainer, this.placeholder );

			this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash( this ) );
			this.containers[ innermostIndex ].containerCache.over = 1;
		}

	},

	_createHelper: function( event ) {

		var o = this.options,
			helper = $.isFunction( o.helper ) ?
				$( o.helper.apply( this.element[ 0 ], [ event, this.currentItem ] ) ) :
				( o.helper === "clone" ? this.currentItem.clone() : this.currentItem );

		//Add the helper to the DOM if that didn't happen already
		if ( !helper.parents( "body" ).length ) {
			$( o.appendTo !== "parent" ?
				o.appendTo :
				this.currentItem[ 0 ].parentNode )[ 0 ].appendChild( helper[ 0 ] );
		}

		if ( helper[ 0 ] === this.currentItem[ 0 ] ) {
			this._storedCSS = {
				width: this.currentItem[ 0 ].style.width,
				height: this.currentItem[ 0 ].style.height,
				position: this.currentItem.css( "position" ),
				top: this.currentItem.css( "top" ),
				left: this.currentItem.css( "left" )
			};
		}

		if ( !helper[ 0 ].style.width || o.forceHelperSize ) {
			helper.width( this.currentItem.width() );
		}
		if ( !helper[ 0 ].style.height || o.forceHelperSize ) {
			helper.height( this.currentItem.height() );
		}

		return helper;

	},

	_adjustOffsetFromHelper: function( obj ) {
		if ( typeof obj === "string" ) {
			obj = obj.split( " " );
		}
		if ( $.isArray( obj ) ) {
			obj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };
		}
		if ( "left" in obj ) {
			this.offset.click.left = obj.left + this.margins.left;
		}
		if ( "right" in obj ) {
			this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
		}
		if ( "top" in obj ) {
			this.offset.click.top = obj.top + this.margins.top;
		}
		if ( "bottom" in obj ) {
			this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
		}
	},

	_getParentOffset: function() {

		//Get the offsetParent and cache its position
		this.offsetParent = this.helper.offsetParent();
		var po = this.offsetParent.offset();

		// This is a special case where we need to modify a offset calculated on start, since the
		// following happened:
		// 1. The position of the helper is absolute, so it's position is calculated based on the
		// next positioned parent
		// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't
		// the document, which means that the scroll is included in the initial calculation of the
		// offset of the parent, and never recalculated upon drag
		if ( this.cssPosition === "absolute" && this.scrollParent[ 0 ] !== this.document[ 0 ] &&
				$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) {
			po.left += this.scrollParent.scrollLeft();
			po.top += this.scrollParent.scrollTop();
		}

		// This needs to be actually done for all browsers, since pageX/pageY includes this
		// information with an ugly IE fix
		if ( this.offsetParent[ 0 ] === this.document[ 0 ].body ||
				( this.offsetParent[ 0 ].tagName &&
				this.offsetParent[ 0 ].tagName.toLowerCase() === "html" && $.ui.ie ) ) {
			po = { top: 0, left: 0 };
		}

		return {
			top: po.top + ( parseInt( this.offsetParent.css( "borderTopWidth" ), 10 ) || 0 ),
			left: po.left + ( parseInt( this.offsetParent.css( "borderLeftWidth" ), 10 ) || 0 )
		};

	},

	_getRelativeOffset: function() {

		if ( this.cssPosition === "relative" ) {
			var p = this.currentItem.position();
			return {
				top: p.top - ( parseInt( this.helper.css( "top" ), 10 ) || 0 ) +
					this.scrollParent.scrollTop(),
				left: p.left - ( parseInt( this.helper.css( "left" ), 10 ) || 0 ) +
					this.scrollParent.scrollLeft()
			};
		} else {
			return { top: 0, left: 0 };
		}

	},

	_cacheMargins: function() {
		this.margins = {
			left: ( parseInt( this.currentItem.css( "marginLeft" ), 10 ) || 0 ),
			top: ( parseInt( this.currentItem.css( "marginTop" ), 10 ) || 0 )
		};
	},

	_cacheHelperProportions: function() {
		this.helperProportions = {
			width: this.helper.outerWidth(),
			height: this.helper.outerHeight()
		};
	},

	_setContainment: function() {

		var ce, co, over,
			o = this.options;
		if ( o.containment === "parent" ) {
			o.containment = this.helper[ 0 ].parentNode;
		}
		if ( o.containment === "document" || o.containment === "window" ) {
			this.containment = [
				0 - this.offset.relative.left - this.offset.parent.left,
				0 - this.offset.relative.top - this.offset.parent.top,
				o.containment === "document" ?
					this.document.width() :
					this.window.width() - this.helperProportions.width - this.margins.left,
				( o.containment === "document" ?
					( this.document.height() || document.body.parentNode.scrollHeight ) :
					this.window.height() || this.document[ 0 ].body.parentNode.scrollHeight
				) - this.helperProportions.height - this.margins.top
			];
		}

		if ( !( /^(document|window|parent)$/ ).test( o.containment ) ) {
			ce = $( o.containment )[ 0 ];
			co = $( o.containment ).offset();
			over = ( $( ce ).css( "overflow" ) !== "hidden" );

			this.containment = [
				co.left + ( parseInt( $( ce ).css( "borderLeftWidth" ), 10 ) || 0 ) +
					( parseInt( $( ce ).css( "paddingLeft" ), 10 ) || 0 ) - this.margins.left,
				co.top + ( parseInt( $( ce ).css( "borderTopWidth" ), 10 ) || 0 ) +
					( parseInt( $( ce ).css( "paddingTop" ), 10 ) || 0 ) - this.margins.top,
				co.left + ( over ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) -
					( parseInt( $( ce ).css( "borderLeftWidth" ), 10 ) || 0 ) -
					( parseInt( $( ce ).css( "paddingRight" ), 10 ) || 0 ) -
					this.helperProportions.width - this.margins.left,
				co.top + ( over ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) -
					( parseInt( $( ce ).css( "borderTopWidth" ), 10 ) || 0 ) -
					( parseInt( $( ce ).css( "paddingBottom" ), 10 ) || 0 ) -
					this.helperProportions.height - this.margins.top
			];
		}

	},

	_convertPositionTo: function( d, pos ) {

		if ( !pos ) {
			pos = this.position;
		}
		var mod = d === "absolute" ? 1 : -1,
			scroll = this.cssPosition === "absolute" &&
				!( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
				$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ?
					this.offsetParent :
					this.scrollParent,
			scrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName );

		return {
			top: (

				// The absolute mouse position
				pos.top	+

				// Only for relative positioned nodes: Relative offset from element to offset parent
				this.offset.relative.top * mod +

				// The offsetParent's offset without borders (offset + border)
				this.offset.parent.top * mod -
				( ( this.cssPosition === "fixed" ?
					-this.scrollParent.scrollTop() :
					( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod )
			),
			left: (

				// The absolute mouse position
				pos.left +

				// Only for relative positioned nodes: Relative offset from element to offset parent
				this.offset.relative.left * mod +

				// The offsetParent's offset without borders (offset + border)
				this.offset.parent.left * mod	-
				( ( this.cssPosition === "fixed" ?
					-this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 :
					scroll.scrollLeft() ) * mod )
			)
		};

	},

	_generatePosition: function( event ) {

		var top, left,
			o = this.options,
			pageX = event.pageX,
			pageY = event.pageY,
			scroll = this.cssPosition === "absolute" &&
				!( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
				$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ?
					this.offsetParent :
					this.scrollParent,
				scrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName );

		// This is another very weird special case that only happens for relative elements:
		// 1. If the css position is relative
		// 2. and the scroll parent is the document or similar to the offset parent
		// we have to refresh the relative offset during the scroll so there are no jumps
		if ( this.cssPosition === "relative" && !( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
				this.scrollParent[ 0 ] !== this.offsetParent[ 0 ] ) ) {
			this.offset.relative = this._getRelativeOffset();
		}

		/*
		 * - Position constraining -
		 * Constrain the position to a mix of grid, containment.
		 */

		if ( this.originalPosition ) { //If we are not dragging yet, we won't check for options

			if ( this.containment ) {
				if ( event.pageX - this.offset.click.left < this.containment[ 0 ] ) {
					pageX = this.containment[ 0 ] + this.offset.click.left;
				}
				if ( event.pageY - this.offset.click.top < this.containment[ 1 ] ) {
					pageY = this.containment[ 1 ] + this.offset.click.top;
				}
				if ( event.pageX - this.offset.click.left > this.containment[ 2 ] ) {
					pageX = this.containment[ 2 ] + this.offset.click.left;
				}
				if ( event.pageY - this.offset.click.top > this.containment[ 3 ] ) {
					pageY = this.containment[ 3 ] + this.offset.click.top;
				}
			}

			if ( o.grid ) {
				top = this.originalPageY + Math.round( ( pageY - this.originalPageY ) /
					o.grid[ 1 ] ) * o.grid[ 1 ];
				pageY = this.containment ?
					( ( top - this.offset.click.top >= this.containment[ 1 ] &&
						top - this.offset.click.top <= this.containment[ 3 ] ) ?
							top :
							( ( top - this.offset.click.top >= this.containment[ 1 ] ) ?
								top - o.grid[ 1 ] : top + o.grid[ 1 ] ) ) :
								top;

				left = this.originalPageX + Math.round( ( pageX - this.originalPageX ) /
					o.grid[ 0 ] ) * o.grid[ 0 ];
				pageX = this.containment ?
					( ( left - this.offset.click.left >= this.containment[ 0 ] &&
						left - this.offset.click.left <= this.containment[ 2 ] ) ?
							left :
							( ( left - this.offset.click.left >= this.containment[ 0 ] ) ?
								left - o.grid[ 0 ] : left + o.grid[ 0 ] ) ) :
								left;
			}

		}

		return {
			top: (

				// The absolute mouse position
				pageY -

				// Click offset (relative to the element)
				this.offset.click.top -

				// Only for relative positioned nodes: Relative offset from element to offset parent
				this.offset.relative.top -

				// The offsetParent's offset without borders (offset + border)
				this.offset.parent.top +
				( ( this.cssPosition === "fixed" ?
					-this.scrollParent.scrollTop() :
					( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) )
			),
			left: (

				// The absolute mouse position
				pageX -

				// Click offset (relative to the element)
				this.offset.click.left -

				// Only for relative positioned nodes: Relative offset from element to offset parent
				this.offset.relative.left -

				// The offsetParent's offset without borders (offset + border)
				this.offset.parent.left +
				( ( this.cssPosition === "fixed" ?
					-this.scrollParent.scrollLeft() :
					scrollIsRootNode ? 0 : scroll.scrollLeft() ) )
			)
		};

	},

	_rearrange: function( event, i, a, hardRefresh ) {

		a ? a[ 0 ].appendChild( this.placeholder[ 0 ] ) :
			i.item[ 0 ].parentNode.insertBefore( this.placeholder[ 0 ],
				( this.direction === "down" ? i.item[ 0 ] : i.item[ 0 ].nextSibling ) );

		//Various things done here to improve the performance:
		// 1. we create a setTimeout, that calls refreshPositions
		// 2. on the instance, we have a counter variable, that get's higher after every append
		// 3. on the local scope, we copy the counter variable, and check in the timeout,
		// if it's still the same
		// 4. this lets only the last addition to the timeout stack through
		this.counter = this.counter ? ++this.counter : 1;
		var counter = this.counter;

		this._delay( function() {
			if ( counter === this.counter ) {

				//Precompute after each DOM insertion, NOT on mousemove
				this.refreshPositions( !hardRefresh );
			}
		} );

	},

	_clear: function( event, noPropagation ) {

		this.reverting = false;

		// We delay all events that have to be triggered to after the point where the placeholder
		// has been removed and everything else normalized again
		var i,
			delayedTriggers = [];

		// We first have to update the dom position of the actual currentItem
		// Note: don't do it if the current item is already removed (by a user), or it gets
		// reappended (see #4088)
		if ( !this._noFinalSort && this.currentItem.parent().length ) {
			this.placeholder.before( this.currentItem );
		}
		this._noFinalSort = null;

		if ( this.helper[ 0 ] === this.currentItem[ 0 ] ) {
			for ( i in this._storedCSS ) {
				if ( this._storedCSS[ i ] === "auto" || this._storedCSS[ i ] === "static" ) {
					this._storedCSS[ i ] = "";
				}
			}
			this.currentItem.css( this._storedCSS );
			this._removeClass( this.currentItem, "ui-sortable-helper" );
		} else {
			this.currentItem.show();
		}

		if ( this.fromOutside && !noPropagation ) {
			delayedTriggers.push( function( event ) {
				this._trigger( "receive", event, this._uiHash( this.fromOutside ) );
			} );
		}
		if ( ( this.fromOutside ||
				this.domPosition.prev !==
				this.currentItem.prev().not( ".ui-sortable-helper" )[ 0 ] ||
				this.domPosition.parent !== this.currentItem.parent()[ 0 ] ) && !noPropagation ) {

			// Trigger update callback if the DOM position has changed
			delayedTriggers.push( function( event ) {
				this._trigger( "update", event, this._uiHash() );
			} );
		}

		// Check if the items Container has Changed and trigger appropriate
		// events.
		if ( this !== this.currentContainer ) {
			if ( !noPropagation ) {
				delayedTriggers.push( function( event ) {
					this._trigger( "remove", event, this._uiHash() );
				} );
				delayedTriggers.push( ( function( c ) {
					return function( event ) {
						c._trigger( "receive", event, this._uiHash( this ) );
					};
				} ).call( this, this.currentContainer ) );
				delayedTriggers.push( ( function( c ) {
					return function( event ) {
						c._trigger( "update", event, this._uiHash( this ) );
					};
				} ).call( this, this.currentContainer ) );
			}
		}

		//Post events to containers
		function delayEvent( type, instance, container ) {
			return function( event ) {
				container._trigger( type, event, instance._uiHash( instance ) );
			};
		}
		for ( i = this.containers.length - 1; i >= 0; i-- ) {
			if ( !noPropagation ) {
				delayedTriggers.push( delayEvent( "deactivate", this, this.containers[ i ] ) );
			}
			if ( this.containers[ i ].containerCache.over ) {
				delayedTriggers.push( delayEvent( "out", this, this.containers[ i ] ) );
				this.containers[ i ].containerCache.over = 0;
			}
		}

		//Do what was originally in plugins
		if ( this.storedCursor ) {
			this.document.find( "body" ).css( "cursor", this.storedCursor );
			this.storedStylesheet.remove();
		}
		if ( this._storedOpacity ) {
			this.helper.css( "opacity", this._storedOpacity );
		}
		if ( this._storedZIndex ) {
			this.helper.css( "zIndex", this._storedZIndex === "auto" ? "" : this._storedZIndex );
		}

		this.dragging = false;

		if ( !noPropagation ) {
			this._trigger( "beforeStop", event, this._uiHash() );
		}

		//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately,
		// it unbinds ALL events from the original node!
		this.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] );

		if ( !this.cancelHelperRemoval ) {
			if ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) {
				this.helper.remove();
			}
			this.helper = null;
		}

		if ( !noPropagation ) {
			for ( i = 0; i < delayedTriggers.length; i++ ) {

				// Trigger all delayed events
				delayedTriggers[ i ].call( this, event );
			}
			this._trigger( "stop", event, this._uiHash() );
		}

		this.fromOutside = false;
		return !this.cancelHelperRemoval;

	},

	_trigger: function() {
		if ( $.Widget.prototype._trigger.apply( this, arguments ) === false ) {
			this.cancel();
		}
	},

	_uiHash: function( _inst ) {
		var inst = _inst || this;
		return {
			helper: inst.helper,
			placeholder: inst.placeholder || $( [] ),
			position: inst.position,
			originalPosition: inst.originalPosition,
			offset: inst.positionAbs,
			item: inst.currentItem,
			sender: _inst ? _inst.element : null
		};
	}

} );


/*!
 * jQuery UI Spinner 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Spinner
//>>group: Widgets
//>>description: Displays buttons to easily input numbers via the keyboard or mouse.
//>>docs: http://api.jqueryui.com/spinner/
//>>demos: http://jqueryui.com/spinner/
//>>css.structure: ../../themes/base/core.css
//>>css.structure: ../../themes/base/spinner.css
//>>css.theme: ../../themes/base/theme.css



function spinnerModifer( fn ) {
	return function() {
		var previous = this.element.val();
		fn.apply( this, arguments );
		this._refresh();
		if ( previous !== this.element.val() ) {
			this._trigger( "change" );
		}
	};
}

$.widget( "ui.spinner", {
	version: "1.12.1",
	defaultElement: "<input>",
	widgetEventPrefix: "spin",
	options: {
		classes: {
			"ui-spinner": "ui-corner-all",
			"ui-spinner-down": "ui-corner-br",
			"ui-spinner-up": "ui-corner-tr"
		},
		culture: null,
		icons: {
			down: "ui-icon-triangle-1-s",
			up: "ui-icon-triangle-1-n"
		},
		incremental: true,
		max: null,
		min: null,
		numberFormat: null,
		page: 10,
		step: 1,

		change: null,
		spin: null,
		start: null,
		stop: null
	},

	_create: function() {

		// handle string values that need to be parsed
		this._setOption( "max", this.options.max );
		this._setOption( "min", this.options.min );
		this._setOption( "step", this.options.step );

		// Only format if there is a value, prevents the field from being marked
		// as invalid in Firefox, see #9573.
		if ( this.value() !== "" ) {

			// Format the value, but don't constrain.
			this._value( this.element.val(), true );
		}

		this._draw();
		this._on( this._events );
		this._refresh();

		// Turning off autocomplete prevents the browser from remembering the
		// value when navigating through history, so we re-enable autocomplete
		// if the page is unloaded before the widget is destroyed. #7790
		this._on( this.window, {
			beforeunload: function() {
				this.element.removeAttr( "autocomplete" );
			}
		} );
	},

	_getCreateOptions: function() {
		var options = this._super();
		var element = this.element;

		$.each( [ "min", "max", "step" ], function( i, option ) {
			var value = element.attr( option );
			if ( value != null && value.length ) {
				options[ option ] = value;
			}
		} );

		return options;
	},

	_events: {
		keydown: function( event ) {
			if ( this._start( event ) && this._keydown( event ) ) {
				event.preventDefault();
			}
		},
		keyup: "_stop",
		focus: function() {
			this.previous = this.element.val();
		},
		blur: function( event ) {
			if ( this.cancelBlur ) {
				delete this.cancelBlur;
				return;
			}

			this._stop();
			this._refresh();
			if ( this.previous !== this.element.val() ) {
				this._trigger( "change", event );
			}
		},
		mousewheel: function( event, delta ) {
			if ( !delta ) {
				return;
			}
			if ( !this.spinning && !this._start( event ) ) {
				return false;
			}

			this._spin( ( delta > 0 ? 1 : -1 ) * this.options.step, event );
			clearTimeout( this.mousewheelTimer );
			this.mousewheelTimer = this._delay( function() {
				if ( this.spinning ) {
					this._stop( event );
				}
			}, 100 );
			event.preventDefault();
		},
		"mousedown .ui-spinner-button": function( event ) {
			var previous;

			// We never want the buttons to have focus; whenever the user is
			// interacting with the spinner, the focus should be on the input.
			// If the input is focused then this.previous is properly set from
			// when the input first received focus. If the input is not focused
			// then we need to set this.previous based on the value before spinning.
			previous = this.element[ 0 ] === $.ui.safeActiveElement( this.document[ 0 ] ) ?
				this.previous : this.element.val();
			function checkFocus() {
				var isActive = this.element[ 0 ] === $.ui.safeActiveElement( this.document[ 0 ] );
				if ( !isActive ) {
					this.element.trigger( "focus" );
					this.previous = previous;

					// support: IE
					// IE sets focus asynchronously, so we need to check if focus
					// moved off of the input because the user clicked on the button.
					this._delay( function() {
						this.previous = previous;
					} );
				}
			}

			// Ensure focus is on (or stays on) the text field
			event.preventDefault();
			checkFocus.call( this );

			// Support: IE
			// IE doesn't prevent moving focus even with event.preventDefault()
			// so we set a flag to know when we should ignore the blur event
			// and check (again) if focus moved off of the input.
			this.cancelBlur = true;
			this._delay( function() {
				delete this.cancelBlur;
				checkFocus.call( this );
			} );

			if ( this._start( event ) === false ) {
				return;
			}

			this._repeat( null, $( event.currentTarget )
				.hasClass( "ui-spinner-up" ) ? 1 : -1, event );
		},
		"mouseup .ui-spinner-button": "_stop",
		"mouseenter .ui-spinner-button": function( event ) {

			// button will add ui-state-active if mouse was down while mouseleave and kept down
			if ( !$( event.currentTarget ).hasClass( "ui-state-active" ) ) {
				return;
			}

			if ( this._start( event ) === false ) {
				return false;
			}
			this._repeat( null, $( event.currentTarget )
				.hasClass( "ui-spinner-up" ) ? 1 : -1, event );
		},

		// TODO: do we really want to consider this a stop?
		// shouldn't we just stop the repeater and wait until mouseup before
		// we trigger the stop event?
		"mouseleave .ui-spinner-button": "_stop"
	},

	// Support mobile enhanced option and make backcompat more sane
	_enhance: function() {
		this.uiSpinner = this.element
			.attr( "autocomplete", "off" )
			.wrap( "<span>" )
			.parent()

				// Add buttons
				.append(
					"<a></a><a></a>"
				);
	},

	_draw: function() {
		this._enhance();

		this._addClass( this.uiSpinner, "ui-spinner", "ui-widget ui-widget-content" );
		this._addClass( "ui-spinner-input" );

		this.element.attr( "role", "spinbutton" );

		// Button bindings
		this.buttons = this.uiSpinner.children( "a" )
			.attr( "tabIndex", -1 )
			.attr( "aria-hidden", true )
			.button( {
				classes: {
					"ui-button": ""
				}
			} );

		// TODO: Right now button does not support classes this is already updated in button PR
		this._removeClass( this.buttons, "ui-corner-all" );

		this._addClass( this.buttons.first(), "ui-spinner-button ui-spinner-up" );
		this._addClass( this.buttons.last(), "ui-spinner-button ui-spinner-down" );
		this.buttons.first().button( {
			"icon": this.options.icons.up,
			"showLabel": false
		} );
		this.buttons.last().button( {
			"icon": this.options.icons.down,
			"showLabel": false
		} );

		// IE 6 doesn't understand height: 50% for the buttons
		// unless the wrapper has an explicit height
		if ( this.buttons.height() > Math.ceil( this.uiSpinner.height() * 0.5 ) &&
				this.uiSpinner.height() > 0 ) {
			this.uiSpinner.height( this.uiSpinner.height() );
		}
	},

	_keydown: function( event ) {
		var options = this.options,
			keyCode = $.ui.keyCode;

		switch ( event.keyCode ) {
		case keyCode.UP:
			this._repeat( null, 1, event );
			return true;
		case keyCode.DOWN:
			this._repeat( null, -1, event );
			return true;
		case keyCode.PAGE_UP:
			this._repeat( null, options.page, event );
			return true;
		case keyCode.PAGE_DOWN:
			this._repeat( null, -options.page, event );
			return true;
		}

		return false;
	},

	_start: function( event ) {
		if ( !this.spinning && this._trigger( "start", event ) === false ) {
			return false;
		}

		if ( !this.counter ) {
			this.counter = 1;
		}
		this.spinning = true;
		return true;
	},

	_repeat: function( i, steps, event ) {
		i = i || 500;

		clearTimeout( this.timer );
		this.timer = this._delay( function() {
			this._repeat( 40, steps, event );
		}, i );

		this._spin( steps * this.options.step, event );
	},

	_spin: function( step, event ) {
		var value = this.value() || 0;

		if ( !this.counter ) {
			this.counter = 1;
		}

		value = this._adjustValue( value + step * this._increment( this.counter ) );

		if ( !this.spinning || this._trigger( "spin", event, { value: value } ) !== false ) {
			this._value( value );
			this.counter++;
		}
	},

	_increment: function( i ) {
		var incremental = this.options.incremental;

		if ( incremental ) {
			return $.isFunction( incremental ) ?
				incremental( i ) :
				Math.floor( i * i * i / 50000 - i * i / 500 + 17 * i / 200 + 1 );
		}

		return 1;
	},

	_precision: function() {
		var precision = this._precisionOf( this.options.step );
		if ( this.options.min !== null ) {
			precision = Math.max( precision, this._precisionOf( this.options.min ) );
		}
		return precision;
	},

	_precisionOf: function( num ) {
		var str = num.toString(),
			decimal = str.indexOf( "." );
		return decimal === -1 ? 0 : str.length - decimal - 1;
	},

	_adjustValue: function( value ) {
		var base, aboveMin,
			options = this.options;

		// Make sure we're at a valid step
		// - find out where we are relative to the base (min or 0)
		base = options.min !== null ? options.min : 0;
		aboveMin = value - base;

		// - round to the nearest step
		aboveMin = Math.round( aboveMin / options.step ) * options.step;

		// - rounding is based on 0, so adjust back to our base
		value = base + aboveMin;

		// Fix precision from bad JS floating point math
		value = parseFloat( value.toFixed( this._precision() ) );

		// Clamp the value
		if ( options.max !== null && value > options.max ) {
			return options.max;
		}
		if ( options.min !== null && value < options.min ) {
			return options.min;
		}

		return value;
	},

	_stop: function( event ) {
		if ( !this.spinning ) {
			return;
		}

		clearTimeout( this.timer );
		clearTimeout( this.mousewheelTimer );
		this.counter = 0;
		this.spinning = false;
		this._trigger( "stop", event );
	},

	_setOption: function( key, value ) {
		var prevValue, first, last;

		if ( key === "culture" || key === "numberFormat" ) {
			prevValue = this._parse( this.element.val() );
			this.options[ key ] = value;
			this.element.val( this._format( prevValue ) );
			return;
		}

		if ( key === "max" || key === "min" || key === "step" ) {
			if ( typeof value === "string" ) {
				value = this._parse( value );
			}
		}
		if ( key === "icons" ) {
			first = this.buttons.first().find( ".ui-icon" );
			this._removeClass( first, null, this.options.icons.up );
			this._addClass( first, null, value.up );
			last = this.buttons.last().find( ".ui-icon" );
			this._removeClass( last, null, this.options.icons.down );
			this._addClass( last, null, value.down );
		}

		this._super( key, value );
	},

	_setOptionDisabled: function( value ) {
		this._super( value );

		this._toggleClass( this.uiSpinner, null, "ui-state-disabled", !!value );
		this.element.prop( "disabled", !!value );
		this.buttons.button( value ? "disable" : "enable" );
	},

	_setOptions: spinnerModifer( function( options ) {
		this._super( options );
	} ),

	_parse: function( val ) {
		if ( typeof val === "string" && val !== "" ) {
			val = window.Globalize && this.options.numberFormat ?
				Globalize.parseFloat( val, 10, this.options.culture ) : +val;
		}
		return val === "" || isNaN( val ) ? null : val;
	},

	_format: function( value ) {
		if ( value === "" ) {
			return "";
		}
		return window.Globalize && this.options.numberFormat ?
			Globalize.format( value, this.options.numberFormat, this.options.culture ) :
			value;
	},

	_refresh: function() {
		this.element.attr( {
			"aria-valuemin": this.options.min,
			"aria-valuemax": this.options.max,

			// TODO: what should we do with values that can't be parsed?
			"aria-valuenow": this._parse( this.element.val() )
		} );
	},

	isValid: function() {
		var value = this.value();

		// Null is invalid
		if ( value === null ) {
			return false;
		}

		// If value gets adjusted, it's invalid
		return value === this._adjustValue( value );
	},

	// Update the value without triggering change
	_value: function( value, allowAny ) {
		var parsed;
		if ( value !== "" ) {
			parsed = this._parse( value );
			if ( parsed !== null ) {
				if ( !allowAny ) {
					parsed = this._adjustValue( parsed );
				}
				value = this._format( parsed );
			}
		}
		this.element.val( value );
		this._refresh();
	},

	_destroy: function() {
		this.element
			.prop( "disabled", false )
			.removeAttr( "autocomplete role aria-valuemin aria-valuemax aria-valuenow" );

		this.uiSpinner.replaceWith( this.element );
	},

	stepUp: spinnerModifer( function( steps ) {
		this._stepUp( steps );
	} ),
	_stepUp: function( steps ) {
		if ( this._start() ) {
			this._spin( ( steps || 1 ) * this.options.step );
			this._stop();
		}
	},

	stepDown: spinnerModifer( function( steps ) {
		this._stepDown( steps );
	} ),
	_stepDown: function( steps ) {
		if ( this._start() ) {
			this._spin( ( steps || 1 ) * -this.options.step );
			this._stop();
		}
	},

	pageUp: spinnerModifer( function( pages ) {
		this._stepUp( ( pages || 1 ) * this.options.page );
	} ),

	pageDown: spinnerModifer( function( pages ) {
		this._stepDown( ( pages || 1 ) * this.options.page );
	} ),

	value: function( newVal ) {
		if ( !arguments.length ) {
			return this._parse( this.element.val() );
		}
		spinnerModifer( this._value ).call( this, newVal );
	},

	widget: function() {
		return this.uiSpinner;
	}
} );

// DEPRECATED
// TODO: switch return back to widget declaration at top of file when this is removed
if ( $.uiBackCompat !== false ) {

	// Backcompat for spinner html extension points
	$.widget( "ui.spinner", $.ui.spinner, {
		_enhance: function() {
			this.uiSpinner = this.element
				.attr( "autocomplete", "off" )
				.wrap( this._uiSpinnerHtml() )
				.parent()

					// Add buttons
					.append( this._buttonHtml() );
		},
		_uiSpinnerHtml: function() {
			return "<span>";
		},

		_buttonHtml: function() {
			return "<a></a><a></a>";
		}
	} );
}

var widgetsSpinner = $.ui.spinner;


/*!
 * jQuery UI Tabs 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Tabs
//>>group: Widgets
//>>description: Transforms a set of container elements into a tab structure.
//>>docs: http://api.jqueryui.com/tabs/
//>>demos: http://jqueryui.com/tabs/
//>>css.structure: ../../themes/base/core.css
//>>css.structure: ../../themes/base/tabs.css
//>>css.theme: ../../themes/base/theme.css



$.widget( "ui.tabs", {
	version: "1.12.1",
	delay: 300,
	options: {
		active: null,
		classes: {
			"ui-tabs": "ui-corner-all",
			"ui-tabs-nav": "ui-corner-all",
			"ui-tabs-panel": "ui-corner-bottom",
			"ui-tabs-tab": "ui-corner-top"
		},
		collapsible: false,
		event: "click",
		heightStyle: "content",
		hide: null,
		show: null,

		// Callbacks
		activate: null,
		beforeActivate: null,
		beforeLoad: null,
		load: null
	},

	_isLocal: ( function() {
		var rhash = /#.*$/;

		return function( anchor ) {
			var anchorUrl, locationUrl;

			anchorUrl = anchor.href.replace( rhash, "" );
			locationUrl = location.href.replace( rhash, "" );

			// Decoding may throw an error if the URL isn't UTF-8 (#9518)
			try {
				anchorUrl = decodeURIComponent( anchorUrl );
			} catch ( error ) {}
			try {
				locationUrl = decodeURIComponent( locationUrl );
			} catch ( error ) {}

			return anchor.hash.length > 1 && anchorUrl === locationUrl;
		};
	} )(),

	_create: function() {
		var that = this,
			options = this.options;

		this.running = false;

		this._addClass( "ui-tabs", "ui-widget ui-widget-content" );
		this._toggleClass( "ui-tabs-collapsible", null, options.collapsible );

		this._processTabs();
		options.active = this._initialActive();

		// Take disabling tabs via class attribute from HTML
		// into account and update option properly.
		if ( $.isArray( options.disabled ) ) {
			options.disabled = $.unique( options.disabled.concat(
				$.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) {
					return that.tabs.index( li );
				} )
			) ).sort();
		}

		// Check for length avoids error when initializing empty list
		if ( this.options.active !== false && this.anchors.length ) {
			this.active = this._findActive( options.active );
		} else {
			this.active = $();
		}

		this._refresh();

		if ( this.active.length ) {
			this.load( options.active );
		}
	},

	_initialActive: function() {
		var active = this.options.active,
			collapsible = this.options.collapsible,
			locationHash = location.hash.substring( 1 );

		if ( active === null ) {

			// check the fragment identifier in the URL
			if ( locationHash ) {
				this.tabs.each( function( i, tab ) {
					if ( $( tab ).attr( "aria-controls" ) === locationHash ) {
						active = i;
						return false;
					}
				} );
			}

			// Check for a tab marked active via a class
			if ( active === null ) {
				active = this.tabs.index( this.tabs.filter( ".ui-tabs-active" ) );
			}

			// No active tab, set to false
			if ( active === null || active === -1 ) {
				active = this.tabs.length ? 0 : false;
			}
		}

		// Handle numbers: negative, out of range
		if ( active !== false ) {
			active = this.tabs.index( this.tabs.eq( active ) );
			if ( active === -1 ) {
				active = collapsible ? false : 0;
			}
		}

		// Don't allow collapsible: false and active: false
		if ( !collapsible && active === false && this.anchors.length ) {
			active = 0;
		}

		return active;
	},

	_getCreateEventData: function() {
		return {
			tab: this.active,
			panel: !this.active.length ? $() : this._getPanelForTab( this.active )
		};
	},

	_tabKeydown: function( event ) {
		var focusedTab = $( $.ui.safeActiveElement( this.document[ 0 ] ) ).closest( "li" ),
			selectedIndex = this.tabs.index( focusedTab ),
			goingForward = true;

		if ( this._handlePageNav( event ) ) {
			return;
		}

		switch ( event.keyCode ) {
		case $.ui.keyCode.RIGHT:
		case $.ui.keyCode.DOWN:
			selectedIndex++;
			break;
		case $.ui.keyCode.UP:
		case $.ui.keyCode.LEFT:
			goingForward = false;
			selectedIndex--;
			break;
		case $.ui.keyCode.END:
			selectedIndex = this.anchors.length - 1;
			break;
		case $.ui.keyCode.HOME:
			selectedIndex = 0;
			break;
		case $.ui.keyCode.SPACE:

			// Activate only, no collapsing
			event.preventDefault();
			clearTimeout( this.activating );
			this._activate( selectedIndex );
			return;
		case $.ui.keyCode.ENTER:

			// Toggle (cancel delayed activation, allow collapsing)
			event.preventDefault();
			clearTimeout( this.activating );

			// Determine if we should collapse or activate
			this._activate( selectedIndex === this.options.active ? false : selectedIndex );
			return;
		default:
			return;
		}

		// Focus the appropriate tab, based on which key was pressed
		event.preventDefault();
		clearTimeout( this.activating );
		selectedIndex = this._focusNextTab( selectedIndex, goingForward );

		// Navigating with control/command key will prevent automatic activation
		if ( !event.ctrlKey && !event.metaKey ) {

			// Update aria-selected immediately so that AT think the tab is already selected.
			// Otherwise AT may confuse the user by stating that they need to activate the tab,
			// but the tab will already be activated by the time the announcement finishes.
			focusedTab.attr( "aria-selected", "false" );
			this.tabs.eq( selectedIndex ).attr( "aria-selected", "true" );

			this.activating = this._delay( function() {
				this.option( "active", selectedIndex );
			}, this.delay );
		}
	},

	_panelKeydown: function( event ) {
		if ( this._handlePageNav( event ) ) {
			return;
		}

		// Ctrl+up moves focus to the current tab
		if ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) {
			event.preventDefault();
			this.active.trigger( "focus" );
		}
	},

	// Alt+page up/down moves focus to the previous/next tab (and activates)
	_handlePageNav: function( event ) {
		if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) {
			this._activate( this._focusNextTab( this.options.active - 1, false ) );
			return true;
		}
		if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) {
			this._activate( this._focusNextTab( this.options.active + 1, true ) );
			return true;
		}
	},

	_findNextTab: function( index, goingForward ) {
		var lastTabIndex = this.tabs.length - 1;

		function constrain() {
			if ( index > lastTabIndex ) {
				index = 0;
			}
			if ( index < 0 ) {
				index = lastTabIndex;
			}
			return index;
		}

		while ( $.inArray( constrain(), this.options.disabled ) !== -1 ) {
			index = goingForward ? index + 1 : index - 1;
		}

		return index;
	},

	_focusNextTab: function( index, goingForward ) {
		index = this._findNextTab( index, goingForward );
		this.tabs.eq( index ).trigger( "focus" );
		return index;
	},

	_setOption: function( key, value ) {
		if ( key === "active" ) {

			// _activate() will handle invalid values and update this.options
			this._activate( value );
			return;
		}

		this._super( key, value );

		if ( key === "collapsible" ) {
			this._toggleClass( "ui-tabs-collapsible", null, value );

			// Setting collapsible: false while collapsed; open first panel
			if ( !value && this.options.active === false ) {
				this._activate( 0 );
			}
		}

		if ( key === "event" ) {
			this._setupEvents( value );
		}

		if ( key === "heightStyle" ) {
			this._setupHeightStyle( value );
		}
	},

	_sanitizeSelector: function( hash ) {
		return hash ? hash.replace( /[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g, "\\$&" ) : "";
	},

	refresh: function() {
		var options = this.options,
			lis = this.tablist.children( ":has(a[href])" );

		// Get disabled tabs from class attribute from HTML
		// this will get converted to a boolean if needed in _refresh()
		options.disabled = $.map( lis.filter( ".ui-state-disabled" ), function( tab ) {
			return lis.index( tab );
		} );

		this._processTabs();

		// Was collapsed or no tabs
		if ( options.active === false || !this.anchors.length ) {
			options.active = false;
			this.active = $();

		// was active, but active tab is gone
		} else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) {

			// all remaining tabs are disabled
			if ( this.tabs.length === options.disabled.length ) {
				options.active = false;
				this.active = $();

			// activate previous tab
			} else {
				this._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) );
			}

		// was active, active tab still exists
		} else {

			// make sure active index is correct
			options.active = this.tabs.index( this.active );
		}

		this._refresh();
	},

	_refresh: function() {
		this._setOptionDisabled( this.options.disabled );
		this._setupEvents( this.options.event );
		this._setupHeightStyle( this.options.heightStyle );

		this.tabs.not( this.active ).attr( {
			"aria-selected": "false",
			"aria-expanded": "false",
			tabIndex: -1
		} );
		this.panels.not( this._getPanelForTab( this.active ) )
			.hide()
			.attr( {
				"aria-hidden": "true"
			} );

		// Make sure one tab is in the tab order
		if ( !this.active.length ) {
			this.tabs.eq( 0 ).attr( "tabIndex", 0 );
		} else {
			this.active
				.attr( {
					"aria-selected": "true",
					"aria-expanded": "true",
					tabIndex: 0
				} );
			this._addClass( this.active, "ui-tabs-active", "ui-state-active" );
			this._getPanelForTab( this.active )
				.show()
				.attr( {
					"aria-hidden": "false"
				} );
		}
	},

	_processTabs: function() {
		var that = this,
			prevTabs = this.tabs,
			prevAnchors = this.anchors,
			prevPanels = this.panels;

		this.tablist = this._getList().attr( "role", "tablist" );
		this._addClass( this.tablist, "ui-tabs-nav",
			"ui-helper-reset ui-helper-clearfix ui-widget-header" );

		// Prevent users from focusing disabled tabs via click
		this.tablist
			.on( "mousedown" + this.eventNamespace, "> li", function( event ) {
				if ( $( this ).is( ".ui-state-disabled" ) ) {
					event.preventDefault();
				}
			} )

			// Support: IE <9
			// Preventing the default action in mousedown doesn't prevent IE
			// from focusing the element, so if the anchor gets focused, blur.
			// We don't have to worry about focusing the previously focused
			// element since clicking on a non-focusable element should focus
			// the body anyway.
			.on( "focus" + this.eventNamespace, ".ui-tabs-anchor", function() {
				if ( $( this ).closest( "li" ).is( ".ui-state-disabled" ) ) {
					this.blur();
				}
			} );

		this.tabs = this.tablist.find( "> li:has(a[href])" )
			.attr( {
				role: "tab",
				tabIndex: -1
			} );
		this._addClass( this.tabs, "ui-tabs-tab", "ui-state-default" );

		this.anchors = this.tabs.map( function() {
			return $( "a", this )[ 0 ];
		} )
			.attr( {
				role: "presentation",
				tabIndex: -1
			} );
		this._addClass( this.anchors, "ui-tabs-anchor" );

		this.panels = $();

		this.anchors.each( function( i, anchor ) {
			var selector, panel, panelId,
				anchorId = $( anchor ).uniqueId().attr( "id" ),
				tab = $( anchor ).closest( "li" ),
				originalAriaControls = tab.attr( "aria-controls" );

			// Inline tab
			if ( that._isLocal( anchor ) ) {
				selector = anchor.hash;
				panelId = selector.substring( 1 );
				panel = that.element.find( that._sanitizeSelector( selector ) );

			// remote tab
			} else {

				// If the tab doesn't already have aria-controls,
				// generate an id by using a throw-away element
				panelId = tab.attr( "aria-controls" ) || $( {} ).uniqueId()[ 0 ].id;
				selector = "#" + panelId;
				panel = that.element.find( selector );
				if ( !panel.length ) {
					panel = that._createPanel( panelId );
					panel.insertAfter( that.panels[ i - 1 ] || that.tablist );
				}
				panel.attr( "aria-live", "polite" );
			}

			if ( panel.length ) {
				that.panels = that.panels.add( panel );
			}
			if ( originalAriaControls ) {
				tab.data( "ui-tabs-aria-controls", originalAriaControls );
			}
			tab.attr( {
				"aria-controls": panelId,
				"aria-labelledby": anchorId
			} );
			panel.attr( "aria-labelledby", anchorId );
		} );

		this.panels.attr( "role", "tabpanel" );
		this._addClass( this.panels, "ui-tabs-panel", "ui-widget-content" );

		// Avoid memory leaks (#10056)
		if ( prevTabs ) {
			this._off( prevTabs.not( this.tabs ) );
			this._off( prevAnchors.not( this.anchors ) );
			this._off( prevPanels.not( this.panels ) );
		}
	},

	// Allow overriding how to find the list for rare usage scenarios (#7715)
	_getList: function() {
		return this.tablist || this.element.find( "ol, ul" ).eq( 0 );
	},

	_createPanel: function( id ) {
		return $( "<div>" )
			.attr( "id", id )
			.data( "ui-tabs-destroy", true );
	},

	_setOptionDisabled: function( disabled ) {
		var currentItem, li, i;

		if ( $.isArray( disabled ) ) {
			if ( !disabled.length ) {
				disabled = false;
			} else if ( disabled.length === this.anchors.length ) {
				disabled = true;
			}
		}

		// Disable tabs
		for ( i = 0; ( li = this.tabs[ i ] ); i++ ) {
			currentItem = $( li );
			if ( disabled === true || $.inArray( i, disabled ) !== -1 ) {
				currentItem.attr( "aria-disabled", "true" );
				this._addClass( currentItem, null, "ui-state-disabled" );
			} else {
				currentItem.removeAttr( "aria-disabled" );
				this._removeClass( currentItem, null, "ui-state-disabled" );
			}
		}

		this.options.disabled = disabled;

		this._toggleClass( this.widget(), this.widgetFullName + "-disabled", null,
			disabled === true );
	},

	_setupEvents: function( event ) {
		var events = {};
		if ( event ) {
			$.each( event.split( " " ), function( index, eventName ) {
				events[ eventName ] = "_eventHandler";
			} );
		}

		this._off( this.anchors.add( this.tabs ).add( this.panels ) );

		// Always prevent the default action, even when disabled
		this._on( true, this.anchors, {
			click: function( event ) {
				event.preventDefault();
			}
		} );
		this._on( this.anchors, events );
		this._on( this.tabs, { keydown: "_tabKeydown" } );
		this._on( this.panels, { keydown: "_panelKeydown" } );

		this._focusable( this.tabs );
		this._hoverable( this.tabs );
	},

	_setupHeightStyle: function( heightStyle ) {
		var maxHeight,
			parent = this.element.parent();

		if ( heightStyle === "fill" ) {
			maxHeight = parent.height();
			maxHeight -= this.element.outerHeight() - this.element.height();

			this.element.siblings( ":visible" ).each( function() {
				var elem = $( this ),
					position = elem.css( "position" );

				if ( position === "absolute" || position === "fixed" ) {
					return;
				}
				maxHeight -= elem.outerHeight( true );
			} );

			this.element.children().not( this.panels ).each( function() {
				maxHeight -= $( this ).outerHeight( true );
			} );

			this.panels.each( function() {
				$( this ).height( Math.max( 0, maxHeight -
					$( this ).innerHeight() + $( this ).height() ) );
			} )
				.css( "overflow", "auto" );
		} else if ( heightStyle === "auto" ) {
			maxHeight = 0;
			this.panels.each( function() {
				maxHeight = Math.max( maxHeight, $( this ).height( "" ).height() );
			} ).height( maxHeight );
		}
	},

	_eventHandler: function( event ) {
		var options = this.options,
			active = this.active,
			anchor = $( event.currentTarget ),
			tab = anchor.closest( "li" ),
			clickedIsActive = tab[ 0 ] === active[ 0 ],
			collapsing = clickedIsActive && options.collapsible,
			toShow = collapsing ? $() : this._getPanelForTab( tab ),
			toHide = !active.length ? $() : this._getPanelForTab( active ),
			eventData = {
				oldTab: active,
				oldPanel: toHide,
				newTab: collapsing ? $() : tab,
				newPanel: toShow
			};

		event.preventDefault();

		if ( tab.hasClass( "ui-state-disabled" ) ||

				// tab is already loading
				tab.hasClass( "ui-tabs-loading" ) ||

				// can't switch durning an animation
				this.running ||

				// click on active header, but not collapsible
				( clickedIsActive && !options.collapsible ) ||

				// allow canceling activation
				( this._trigger( "beforeActivate", event, eventData ) === false ) ) {
			return;
		}

		options.active = collapsing ? false : this.tabs.index( tab );

		this.active = clickedIsActive ? $() : tab;
		if ( this.xhr ) {
			this.xhr.abort();
		}

		if ( !toHide.length && !toShow.length ) {
			$.error( "jQuery UI Tabs: Mismatching fragment identifier." );
		}

		if ( toShow.length ) {
			this.load( this.tabs.index( tab ), event );
		}
		this._toggle( event, eventData );
	},

	// Handles show/hide for selecting tabs
	_toggle: function( event, eventData ) {
		var that = this,
			toShow = eventData.newPanel,
			toHide = eventData.oldPanel;

		this.running = true;

		function complete() {
			that.running = false;
			that._trigger( "activate", event, eventData );
		}

		function show() {
			that._addClass( eventData.newTab.closest( "li" ), "ui-tabs-active", "ui-state-active" );

			if ( toShow.length && that.options.show ) {
				that._show( toShow, that.options.show, complete );
			} else {
				toShow.show();
				complete();
			}
		}

		// Start out by hiding, then showing, then completing
		if ( toHide.length && this.options.hide ) {
			this._hide( toHide, this.options.hide, function() {
				that._removeClass( eventData.oldTab.closest( "li" ),
					"ui-tabs-active", "ui-state-active" );
				show();
			} );
		} else {
			this._removeClass( eventData.oldTab.closest( "li" ),
				"ui-tabs-active", "ui-state-active" );
			toHide.hide();
			show();
		}

		toHide.attr( "aria-hidden", "true" );
		eventData.oldTab.attr( {
			"aria-selected": "false",
			"aria-expanded": "false"
		} );

		// If we're switching tabs, remove the old tab from the tab order.
		// If we're opening from collapsed state, remove the previous tab from the tab order.
		// If we're collapsing, then keep the collapsing tab in the tab order.
		if ( toShow.length && toHide.length ) {
			eventData.oldTab.attr( "tabIndex", -1 );
		} else if ( toShow.length ) {
			this.tabs.filter( function() {
				return $( this ).attr( "tabIndex" ) === 0;
			} )
				.attr( "tabIndex", -1 );
		}

		toShow.attr( "aria-hidden", "false" );
		eventData.newTab.attr( {
			"aria-selected": "true",
			"aria-expanded": "true",
			tabIndex: 0
		} );
	},

	_activate: function( index ) {
		var anchor,
			active = this._findActive( index );

		// Trying to activate the already active panel
		if ( active[ 0 ] === this.active[ 0 ] ) {
			return;
		}

		// Trying to collapse, simulate a click on the current active header
		if ( !active.length ) {
			active = this.active;
		}

		anchor = active.find( ".ui-tabs-anchor" )[ 0 ];
		this._eventHandler( {
			target: anchor,
			currentTarget: anchor,
			preventDefault: $.noop
		} );
	},

	_findActive: function( index ) {
		return index === false ? $() : this.tabs.eq( index );
	},

	_getIndex: function( index ) {

		// meta-function to give users option to provide a href string instead of a numerical index.
		if ( typeof index === "string" ) {
			index = this.anchors.index( this.anchors.filter( "[href$='" +
				$.ui.escapeSelector( index ) + "']" ) );
		}

		return index;
	},

	_destroy: function() {
		if ( this.xhr ) {
			this.xhr.abort();
		}

		this.tablist
			.removeAttr( "role" )
			.off( this.eventNamespace );

		this.anchors
			.removeAttr( "role tabIndex" )
			.removeUniqueId();

		this.tabs.add( this.panels ).each( function() {
			if ( $.data( this, "ui-tabs-destroy" ) ) {
				$( this ).remove();
			} else {
				$( this ).removeAttr( "role tabIndex " +
					"aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded" );
			}
		} );

		this.tabs.each( function() {
			var li = $( this ),
				prev = li.data( "ui-tabs-aria-controls" );
			if ( prev ) {
				li
					.attr( "aria-controls", prev )
					.removeData( "ui-tabs-aria-controls" );
			} else {
				li.removeAttr( "aria-controls" );
			}
		} );

		this.panels.show();

		if ( this.options.heightStyle !== "content" ) {
			this.panels.css( "height", "" );
		}
	},

	enable: function( index ) {
		var disabled = this.options.disabled;
		if ( disabled === false ) {
			return;
		}

		if ( index === undefined ) {
			disabled = false;
		} else {
			index = this._getIndex( index );
			if ( $.isArray( disabled ) ) {
				disabled = $.map( disabled, function( num ) {
					return num !== index ? num : null;
				} );
			} else {
				disabled = $.map( this.tabs, function( li, num ) {
					return num !== index ? num : null;
				} );
			}
		}
		this._setOptionDisabled( disabled );
	},

	disable: function( index ) {
		var disabled = this.options.disabled;
		if ( disabled === true ) {
			return;
		}

		if ( index === undefined ) {
			disabled = true;
		} else {
			index = this._getIndex( index );
			if ( $.inArray( index, disabled ) !== -1 ) {
				return;
			}
			if ( $.isArray( disabled ) ) {
				disabled = $.merge( [ index ], disabled ).sort();
			} else {
				disabled = [ index ];
			}
		}
		this._setOptionDisabled( disabled );
	},

	load: function( index, event ) {
		index = this._getIndex( index );
		var that = this,
			tab = this.tabs.eq( index ),
			anchor = tab.find( ".ui-tabs-anchor" ),
			panel = this._getPanelForTab( tab ),
			eventData = {
				tab: tab,
				panel: panel
			},
			complete = function( jqXHR, status ) {
				if ( status === "abort" ) {
					that.panels.stop( false, true );
				}

				that._removeClass( tab, "ui-tabs-loading" );
				panel.removeAttr( "aria-busy" );

				if ( jqXHR === that.xhr ) {
					delete that.xhr;
				}
			};

		// Not remote
		if ( this._isLocal( anchor[ 0 ] ) ) {
			return;
		}

		this.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) );

		// Support: jQuery <1.8
		// jQuery <1.8 returns false if the request is canceled in beforeSend,
		// but as of 1.8, $.ajax() always returns a jqXHR object.
		if ( this.xhr && this.xhr.statusText !== "canceled" ) {
			this._addClass( tab, "ui-tabs-loading" );
			panel.attr( "aria-busy", "true" );

			this.xhr
				.done( function( response, status, jqXHR ) {

					// support: jQuery <1.8
					// http://bugs.jquery.com/ticket/11778
					setTimeout( function() {
						panel.html( response );
						that._trigger( "load", event, eventData );

						complete( jqXHR, status );
					}, 1 );
				} )
				.fail( function( jqXHR, status ) {

					// support: jQuery <1.8
					// http://bugs.jquery.com/ticket/11778
					setTimeout( function() {
						complete( jqXHR, status );
					}, 1 );
				} );
		}
	},

	_ajaxSettings: function( anchor, event, eventData ) {
		var that = this;
		return {

			// Support: IE <11 only
			// Strip any hash that exists to prevent errors with the Ajax request
			url: anchor.attr( "href" ).replace( /#.*$/, "" ),
			beforeSend: function( jqXHR, settings ) {
				return that._trigger( "beforeLoad", event,
					$.extend( { jqXHR: jqXHR, ajaxSettings: settings }, eventData ) );
			}
		};
	},

	_getPanelForTab: function( tab ) {
		var id = $( tab ).attr( "aria-controls" );
		return this.element.find( this._sanitizeSelector( "#" + id ) );
	}
} );

// DEPRECATED
// TODO: Switch return back to widget declaration at top of file when this is removed
if ( $.uiBackCompat !== false ) {

	// Backcompat for ui-tab class (now ui-tabs-tab)
	$.widget( "ui.tabs", $.ui.tabs, {
		_processTabs: function() {
			this._superApply( arguments );
			this._addClass( this.tabs, "ui-tab" );
		}
	} );
}

var widgetsTabs = $.ui.tabs;


/*!
 * jQuery UI Tooltip 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */

//>>label: Tooltip
//>>group: Widgets
//>>description: Shows additional information for any element on hover or focus.
//>>docs: http://api.jqueryui.com/tooltip/
//>>demos: http://jqueryui.com/tooltip/
//>>css.structure: ../../themes/base/core.css
//>>css.structure: ../../themes/base/tooltip.css
//>>css.theme: ../../themes/base/theme.css



$.widget( "ui.tooltip", {
	version: "1.12.1",
	options: {
		classes: {
			"ui-tooltip": "ui-corner-all ui-widget-shadow"
		},
		content: function() {

			// support: IE<9, Opera in jQuery <1.7
			// .text() can't accept undefined, so coerce to a string
			var title = $( this ).attr( "title" ) || "";

			// Escape title, since we're going from an attribute to raw HTML
			return $( "<a>" ).text( title ).html();
		},
		hide: true,

		// Disabled elements have inconsistent behavior across browsers (#8661)
		items: "[title]:not([disabled])",
		position: {
			my: "left top+15",
			at: "left bottom",
			collision: "flipfit flip"
		},
		show: true,
		track: false,

		// Callbacks
		close: null,
		open: null
	},

	_addDescribedBy: function( elem, id ) {
		var describedby = ( elem.attr( "aria-describedby" ) || "" ).split( /\s+/ );
		describedby.push( id );
		elem
			.data( "ui-tooltip-id", id )
			.attr( "aria-describedby", $.trim( describedby.join( " " ) ) );
	},

	_removeDescribedBy: function( elem ) {
		var id = elem.data( "ui-tooltip-id" ),
			describedby = ( elem.attr( "aria-describedby" ) || "" ).split( /\s+/ ),
			index = $.inArray( id, describedby );

		if ( index !== -1 ) {
			describedby.splice( index, 1 );
		}

		elem.removeData( "ui-tooltip-id" );
		describedby = $.trim( describedby.join( " " ) );
		if ( describedby ) {
			elem.attr( "aria-describedby", describedby );
		} else {
			elem.removeAttr( "aria-describedby" );
		}
	},

	_create: function() {
		this._on( {
			mouseover: "open",
			focusin: "open"
		} );

		// IDs of generated tooltips, needed for destroy
		this.tooltips = {};

		// IDs of parent tooltips where we removed the title attribute
		this.parents = {};

		// Append the aria-live region so tooltips announce correctly
		this.liveRegion = $( "<div>" )
			.attr( {
				role: "log",
				"aria-live": "assertive",
				"aria-relevant": "additions"
			} )
			.appendTo( this.document[ 0 ].body );
		this._addClass( this.liveRegion, null, "ui-helper-hidden-accessible" );

		this.disabledTitles = $( [] );
	},

	_setOption: function( key, value ) {
		var that = this;

		this._super( key, value );

		if ( key === "content" ) {
			$.each( this.tooltips, function( id, tooltipData ) {
				that._updateContent( tooltipData.element );
			} );
		}
	},

	_setOptionDisabled: function( value ) {
		this[ value ? "_disable" : "_enable" ]();
	},

	_disable: function() {
		var that = this;

		// Close open tooltips
		$.each( this.tooltips, function( id, tooltipData ) {
			var event = $.Event( "blur" );
			event.target = event.currentTarget = tooltipData.element[ 0 ];
			that.close( event, true );
		} );

		// Remove title attributes to prevent native tooltips
		this.disabledTitles = this.disabledTitles.add(
			this.element.find( this.options.items ).addBack()
				.filter( function() {
					var element = $( this );
					if ( element.is( "[title]" ) ) {
						return element
							.data( "ui-tooltip-title", element.attr( "title" ) )
							.removeAttr( "title" );
					}
				} )
		);
	},

	_enable: function() {

		// restore title attributes
		this.disabledTitles.each( function() {
			var element = $( this );
			if ( element.data( "ui-tooltip-title" ) ) {
				element.attr( "title", element.data( "ui-tooltip-title" ) );
			}
		} );
		this.disabledTitles = $( [] );
	},

	open: function( event ) {
		var that = this,
			target = $( event ? event.target : this.element )

				// we need closest here due to mouseover bubbling,
				// but always pointing at the same event target
				.closest( this.options.items );

		// No element to show a tooltip for or the tooltip is already open
		if ( !target.length || target.data( "ui-tooltip-id" ) ) {
			return;
		}

		if ( target.attr( "title" ) ) {
			target.data( "ui-tooltip-title", target.attr( "title" ) );
		}

		target.data( "ui-tooltip-open", true );

		// Kill parent tooltips, custom or native, for hover
		if ( event && event.type === "mouseover" ) {
			target.parents().each( function() {
				var parent = $( this ),
					blurEvent;
				if ( parent.data( "ui-tooltip-open" ) ) {
					blurEvent = $.Event( "blur" );
					blurEvent.target = blurEvent.currentTarget = this;
					that.close( blurEvent, true );
				}
				if ( parent.attr( "title" ) ) {
					parent.uniqueId();
					that.parents[ this.id ] = {
						element: this,
						title: parent.attr( "title" )
					};
					parent.attr( "title", "" );
				}
			} );
		}

		this._registerCloseHandlers( event, target );
		this._updateContent( target, event );
	},

	_updateContent: function( target, event ) {
		var content,
			contentOption = this.options.content,
			that = this,
			eventType = event ? event.type : null;

		if ( typeof contentOption === "string" || contentOption.nodeType ||
				contentOption.jquery ) {
			return this._open( event, target, contentOption );
		}

		content = contentOption.call( target[ 0 ], function( response ) {

			// IE may instantly serve a cached response for ajax requests
			// delay this call to _open so the other call to _open runs first
			that._delay( function() {

				// Ignore async response if tooltip was closed already
				if ( !target.data( "ui-tooltip-open" ) ) {
					return;
				}

				// JQuery creates a special event for focusin when it doesn't
				// exist natively. To improve performance, the native event
				// object is reused and the type is changed. Therefore, we can't
				// rely on the type being correct after the event finished
				// bubbling, so we set it back to the previous value. (#8740)
				if ( event ) {
					event.type = eventType;
				}
				this._open( event, target, response );
			} );
		} );
		if ( content ) {
			this._open( event, target, content );
		}
	},

	_open: function( event, target, content ) {
		var tooltipData, tooltip, delayedShow, a11yContent,
			positionOption = $.extend( {}, this.options.position );

		if ( !content ) {
			return;
		}

		// Content can be updated multiple times. If the tooltip already
		// exists, then just update the content and bail.
		tooltipData = this._find( target );
		if ( tooltipData ) {
			tooltipData.tooltip.find( ".ui-tooltip-content" ).html( content );
			return;
		}

		// If we have a title, clear it to prevent the native tooltip
		// we have to check first to avoid defining a title if none exists
		// (we don't want to cause an element to start matching [title])
		//
		// We use removeAttr only for key events, to allow IE to export the correct
		// accessible attributes. For mouse events, set to empty string to avoid
		// native tooltip showing up (happens only when removing inside mouseover).
		if ( target.is( "[title]" ) ) {
			if ( event && event.type === "mouseover" ) {
				target.attr( "title", "" );
			} else {
				target.removeAttr( "title" );
			}
		}

		tooltipData = this._tooltip( target );
		tooltip = tooltipData.tooltip;
		this._addDescribedBy( target, tooltip.attr( "id" ) );
		tooltip.find( ".ui-tooltip-content" ).html( content );

		// Support: Voiceover on OS X, JAWS on IE <= 9
		// JAWS announces deletions even when aria-relevant="additions"
		// Voiceover will sometimes re-read the entire log region's contents from the beginning
		this.liveRegion.children().hide();
		a11yContent = $( "<div>" ).html( tooltip.find( ".ui-tooltip-content" ).html() );
		a11yContent.removeAttr( "name" ).find( "[name]" ).removeAttr( "name" );
		a11yContent.removeAttr( "id" ).find( "[id]" ).removeAttr( "id" );
		a11yContent.appendTo( this.liveRegion );

		function position( event ) {
			positionOption.of = event;
			if ( tooltip.is( ":hidden" ) ) {
				return;
			}
			tooltip.position( positionOption );
		}
		if ( this.options.track && event && /^mouse/.test( event.type ) ) {
			this._on( this.document, {
				mousemove: position
			} );

			// trigger once to override element-relative positioning
			position( event );
		} else {
			tooltip.position( $.extend( {
				of: target
			}, this.options.position ) );
		}

		tooltip.hide();

		this._show( tooltip, this.options.show );

		// Handle tracking tooltips that are shown with a delay (#8644). As soon
		// as the tooltip is visible, position the tooltip using the most recent
		// event.
		// Adds the check to add the timers only when both delay and track options are set (#14682)
		if ( this.options.track && this.options.show && this.options.show.delay ) {
			delayedShow = this.delayedShow = setInterval( function() {
				if ( tooltip.is( ":visible" ) ) {
					position( positionOption.of );
					clearInterval( delayedShow );
				}
			}, $.fx.interval );
		}

		this._trigger( "open", event, { tooltip: tooltip } );
	},

	_registerCloseHandlers: function( event, target ) {
		var events = {
			keyup: function( event ) {
				if ( event.keyCode === $.ui.keyCode.ESCAPE ) {
					var fakeEvent = $.Event( event );
					fakeEvent.currentTarget = target[ 0 ];
					this.close( fakeEvent, true );
				}
			}
		};

		// Only bind remove handler for delegated targets. Non-delegated
		// tooltips will handle this in destroy.
		if ( target[ 0 ] !== this.element[ 0 ] ) {
			events.remove = function() {
				this._removeTooltip( this._find( target ).tooltip );
			};
		}

		if ( !event || event.type === "mouseover" ) {
			events.mouseleave = "close";
		}
		if ( !event || event.type === "focusin" ) {
			events.focusout = "close";
		}
		this._on( true, target, events );
	},

	close: function( event ) {
		var tooltip,
			that = this,
			target = $( event ? event.currentTarget : this.element ),
			tooltipData = this._find( target );

		// The tooltip may already be closed
		if ( !tooltipData ) {

			// We set ui-tooltip-open immediately upon open (in open()), but only set the
			// additional data once there's actually content to show (in _open()). So even if the
			// tooltip doesn't have full data, we always remove ui-tooltip-open in case we're in
			// the period between open() and _open().
			target.removeData( "ui-tooltip-open" );
			return;
		}

		tooltip = tooltipData.tooltip;

		// Disabling closes the tooltip, so we need to track when we're closing
		// to avoid an infinite loop in case the tooltip becomes disabled on close
		if ( tooltipData.closing ) {
			return;
		}

		// Clear the interval for delayed tracking tooltips
		clearInterval( this.delayedShow );

		// Only set title if we had one before (see comment in _open())
		// If the title attribute has changed since open(), don't restore
		if ( target.data( "ui-tooltip-title" ) && !target.attr( "title" ) ) {
			target.attr( "title", target.data( "ui-tooltip-title" ) );
		}

		this._removeDescribedBy( target );

		tooltipData.hiding = true;
		tooltip.stop( true );
		this._hide( tooltip, this.options.hide, function() {
			that._removeTooltip( $( this ) );
		} );

		target.removeData( "ui-tooltip-open" );
		this._off( target, "mouseleave focusout keyup" );

		// Remove 'remove' binding only on delegated targets
		if ( target[ 0 ] !== this.element[ 0 ] ) {
			this._off( target, "remove" );
		}
		this._off( this.document, "mousemove" );

		if ( event && event.type === "mouseleave" ) {
			$.each( this.parents, function( id, parent ) {
				$( parent.element ).attr( "title", parent.title );
				delete that.parents[ id ];
			} );
		}

		tooltipData.closing = true;
		this._trigger( "close", event, { tooltip: tooltip } );
		if ( !tooltipData.hiding ) {
			tooltipData.closing = false;
		}
	},

	_tooltip: function( element ) {
		var tooltip = $( "<div>" ).attr( "role", "tooltip" ),
			content = $( "<div>" ).appendTo( tooltip ),
			id = tooltip.uniqueId().attr( "id" );

		this._addClass( content, "ui-tooltip-content" );
		this._addClass( tooltip, "ui-tooltip", "ui-widget ui-widget-content" );

		tooltip.appendTo( this._appendTo( element ) );

		return this.tooltips[ id ] = {
			element: element,
			tooltip: tooltip
		};
	},

	_find: function( target ) {
		var id = target.data( "ui-tooltip-id" );
		return id ? this.tooltips[ id ] : null;
	},

	_removeTooltip: function( tooltip ) {
		tooltip.remove();
		delete this.tooltips[ tooltip.attr( "id" ) ];
	},

	_appendTo: function( target ) {
		var element = target.closest( ".ui-front, dialog" );

		if ( !element.length ) {
			element = this.document[ 0 ].body;
		}

		return element;
	},

	_destroy: function() {
		var that = this;

		// Close open tooltips
		$.each( this.tooltips, function( id, tooltipData ) {

			// Delegate to close method to handle common cleanup
			var event = $.Event( "blur" ),
				element = tooltipData.element;
			event.target = event.currentTarget = element[ 0 ];
			that.close( event, true );

			// Remove immediately; destroying an open tooltip doesn't use the
			// hide animation
			$( "#" + id ).remove();

			// Restore the title
			if ( element.data( "ui-tooltip-title" ) ) {

				// If the title attribute has changed since open(), don't restore
				if ( !element.attr( "title" ) ) {
					element.attr( "title", element.data( "ui-tooltip-title" ) );
				}
				element.removeData( "ui-tooltip-title" );
			}
		} );
		this.liveRegion.remove();
	}
} );

// DEPRECATED
// TODO: Switch return back to widget declaration at top of file when this is removed
if ( $.uiBackCompat !== false ) {

	// Backcompat for tooltipClass option
	$.widget( "ui.tooltip", $.ui.tooltip, {
		options: {
			tooltipClass: null
		},
		_tooltip: function() {
			var tooltipData = this._superApply( arguments );
			if ( this.options.tooltipClass ) {
				tooltipData.tooltip.addClass( this.options.tooltipClass );
			}
			return tooltipData;
		}
	} );
}

var widgetsTooltip = $.ui.tooltip;




}));
shiny/www/shared/jqueryui/jquery-ui.css METASEP
/*! jQuery UI - v1.12.1 - 2016-09-14
* http://jqueryui.com
* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
* To view and modify this theme, visit http://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=Alpha(Opacity%3D30)&opacityFilterOverlay=Alpha(Opacity%3D30)&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6
* Copyright jQuery Foundation and other contributors; Licensed MIT */

/* Layout helpers
----------------------------------*/
.ui-helper-hidden {
	display: none;
}
.ui-helper-hidden-accessible {
	border: 0;
	clip: rect(0 0 0 0);
	height: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute;
	width: 1px;
}
.ui-helper-reset {
	margin: 0;
	padding: 0;
	border: 0;
	outline: 0;
	line-height: 1.3;
	text-decoration: none;
	font-size: 100%;
	list-style: none;
}
.ui-helper-clearfix:before,
.ui-helper-clearfix:after {
	content: "";
	display: table;
	border-collapse: collapse;
}
.ui-helper-clearfix:after {
	clear: both;
}
.ui-helper-zfix {
	width: 100%;
	height: 100%;
	top: 0;
	left: 0;
	position: absolute;
	opacity: 0;
	filter:Alpha(Opacity=0); /* support: IE8 */
}

.ui-front {
	z-index: 100;
}


/* Interaction Cues
----------------------------------*/
.ui-state-disabled {
	cursor: default !important;
	pointer-events: none;
}


/* Icons
----------------------------------*/
.ui-icon {
	display: inline-block;
	vertical-align: middle;
	margin-top: -.25em;
	position: relative;
	text-indent: -99999px;
	overflow: hidden;
	background-repeat: no-repeat;
}

.ui-widget-icon-block {
	left: 50%;
	margin-left: -8px;
	display: block;
}

/* Misc visuals
----------------------------------*/

/* Overlays */
.ui-widget-overlay {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
}
.ui-accordion .ui-accordion-header {
	display: block;
	cursor: pointer;
	position: relative;
	margin: 2px 0 0 0;
	padding: .5em .5em .5em .7em;
	font-size: 100%;
}
.ui-accordion .ui-accordion-content {
	padding: 1em 2.2em;
	border-top: 0;
	overflow: auto;
}
.ui-autocomplete {
	position: absolute;
	top: 0;
	left: 0;
	cursor: default;
}
.ui-menu {
	list-style: none;
	padding: 0;
	margin: 0;
	display: block;
	outline: 0;
}
.ui-menu .ui-menu {
	position: absolute;
}
.ui-menu .ui-menu-item {
	margin: 0;
	cursor: pointer;
	/* support: IE10, see #8844 */
	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
}
.ui-menu .ui-menu-item-wrapper {
	position: relative;
	padding: 3px 1em 3px .4em;
}
.ui-menu .ui-menu-divider {
	margin: 5px 0;
	height: 0;
	font-size: 0;
	line-height: 0;
	border-width: 1px 0 0 0;
}
.ui-menu .ui-state-focus,
.ui-menu .ui-state-active {
	margin: -1px;
}

/* icon support */
.ui-menu-icons {
	position: relative;
}
.ui-menu-icons .ui-menu-item-wrapper {
	padding-left: 2em;
}

/* left-aligned */
.ui-menu .ui-icon {
	position: absolute;
	top: 0;
	bottom: 0;
	left: .2em;
	margin: auto 0;
}

/* right-aligned */
.ui-menu .ui-menu-icon {
	left: auto;
	right: 0;
}
.ui-button {
	padding: .4em 1em;
	display: inline-block;
	position: relative;
	line-height: normal;
	margin-right: .1em;
	cursor: pointer;
	vertical-align: middle;
	text-align: center;
	-webkit-user-select: none;
	-moz-user-select: none;
	-ms-user-select: none;
	user-select: none;

	/* Support: IE <= 11 */
	overflow: visible;
}

.ui-button,
.ui-button:link,
.ui-button:visited,
.ui-button:hover,
.ui-button:active {
	text-decoration: none;
}

/* to make room for the icon, a width needs to be set here */
.ui-button-icon-only {
	width: 2em;
	box-sizing: border-box;
	text-indent: -9999px;
	white-space: nowrap;
}

/* no icon support for input elements */
input.ui-button.ui-button-icon-only {
	text-indent: 0;
}

/* button icon element(s) */
.ui-button-icon-only .ui-icon {
	position: absolute;
	top: 50%;
	left: 50%;
	margin-top: -8px;
	margin-left: -8px;
}

.ui-button.ui-icon-notext .ui-icon {
	padding: 0;
	width: 2.1em;
	height: 2.1em;
	text-indent: -9999px;
	white-space: nowrap;

}

input.ui-button.ui-icon-notext .ui-icon {
	width: auto;
	height: auto;
	text-indent: 0;
	white-space: normal;
	padding: .4em 1em;
}

/* workarounds */
/* Support: Firefox 5 - 40 */
input.ui-button::-moz-focus-inner,
button.ui-button::-moz-focus-inner {
	border: 0;
	padding: 0;
}
.ui-controlgroup {
	vertical-align: middle;
	display: inline-block;
}
.ui-controlgroup > .ui-controlgroup-item {
	float: left;
	margin-left: 0;
	margin-right: 0;
}
.ui-controlgroup > .ui-controlgroup-item:focus,
.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
	z-index: 9999;
}
.ui-controlgroup-vertical > .ui-controlgroup-item {
	display: block;
	float: none;
	width: 100%;
	margin-top: 0;
	margin-bottom: 0;
	text-align: left;
}
.ui-controlgroup-vertical .ui-controlgroup-item {
	box-sizing: border-box;
}
.ui-controlgroup .ui-controlgroup-label {
	padding: .4em 1em;
}
.ui-controlgroup .ui-controlgroup-label span {
	font-size: 80%;
}
.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
	border-left: none;
}
.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
	border-top: none;
}
.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
	border-right: none;
}
.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
	border-bottom: none;
}

/* Spinner specific style fixes */
.ui-controlgroup-vertical .ui-spinner-input {

	/* Support: IE8 only, Android < 4.4 only */
	width: 75%;
	width: calc( 100% - 2.4em );
}
.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
	border-top-style: solid;
}

.ui-checkboxradio-label .ui-icon-background {
	box-shadow: inset 1px 1px 1px #ccc;
	border-radius: .12em;
	border: none;
}
.ui-checkboxradio-radio-label .ui-icon-background {
	width: 16px;
	height: 16px;
	border-radius: 1em;
	overflow: visible;
	border: none;
}
.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
	background-image: none;
	width: 8px;
	height: 8px;
	border-width: 4px;
	border-style: solid;
}
.ui-checkboxradio-disabled {
	pointer-events: none;
}
.ui-datepicker {
	width: 17em;
	padding: .2em .2em 0;
	display: none;
}
.ui-datepicker .ui-datepicker-header {
	position: relative;
	padding: .2em 0;
}
.ui-datepicker .ui-datepicker-prev,
.ui-datepicker .ui-datepicker-next {
	position: absolute;
	top: 2px;
	width: 1.8em;
	height: 1.8em;
}
.ui-datepicker .ui-datepicker-prev-hover,
.ui-datepicker .ui-datepicker-next-hover {
	top: 1px;
}
.ui-datepicker .ui-datepicker-prev {
	left: 2px;
}
.ui-datepicker .ui-datepicker-next {
	right: 2px;
}
.ui-datepicker .ui-datepicker-prev-hover {
	left: 1px;
}
.ui-datepicker .ui-datepicker-next-hover {
	right: 1px;
}
.ui-datepicker .ui-datepicker-prev span,
.ui-datepicker .ui-datepicker-next span {
	display: block;
	position: absolute;
	left: 50%;
	margin-left: -8px;
	top: 50%;
	margin-top: -8px;
}
.ui-datepicker .ui-datepicker-title {
	margin: 0 2.3em;
	line-height: 1.8em;
	text-align: center;
}
.ui-datepicker .ui-datepicker-title select {
	font-size: 1em;
	margin: 1px 0;
}
.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year {
	width: 45%;
}
.ui-datepicker table {
	width: 100%;
	font-size: .9em;
	border-collapse: collapse;
	margin: 0 0 .4em;
}
.ui-datepicker th {
	padding: .7em .3em;
	text-align: center;
	font-weight: bold;
	border: 0;
}
.ui-datepicker td {
	border: 0;
	padding: 1px;
}
.ui-datepicker td span,
.ui-datepicker td a {
	display: block;
	padding: .2em;
	text-align: right;
	text-decoration: none;
}
.ui-datepicker .ui-datepicker-buttonpane {
	background-image: none;
	margin: .7em 0 0 0;
	padding: 0 .2em;
	border-left: 0;
	border-right: 0;
	border-bottom: 0;
}
.ui-datepicker .ui-datepicker-buttonpane button {
	float: right;
	margin: .5em .2em .4em;
	cursor: pointer;
	padding: .2em .6em .3em .6em;
	width: auto;
	overflow: visible;
}
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
	float: left;
}

/* with multiple calendars */
.ui-datepicker.ui-datepicker-multi {
	width: auto;
}
.ui-datepicker-multi .ui-datepicker-group {
	float: left;
}
.ui-datepicker-multi .ui-datepicker-group table {
	width: 95%;
	margin: 0 auto .4em;
}
.ui-datepicker-multi-2 .ui-datepicker-group {
	width: 50%;
}
.ui-datepicker-multi-3 .ui-datepicker-group {
	width: 33.3%;
}
.ui-datepicker-multi-4 .ui-datepicker-group {
	width: 25%;
}
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
	border-left-width: 0;
}
.ui-datepicker-multi .ui-datepicker-buttonpane {
	clear: left;
}
.ui-datepicker-row-break {
	clear: both;
	width: 100%;
	font-size: 0;
}

/* RTL support */
.ui-datepicker-rtl {
	direction: rtl;
}
.ui-datepicker-rtl .ui-datepicker-prev {
	right: 2px;
	left: auto;
}
.ui-datepicker-rtl .ui-datepicker-next {
	left: 2px;
	right: auto;
}
.ui-datepicker-rtl .ui-datepicker-prev:hover {
	right: 1px;
	left: auto;
}
.ui-datepicker-rtl .ui-datepicker-next:hover {
	left: 1px;
	right: auto;
}
.ui-datepicker-rtl .ui-datepicker-buttonpane {
	clear: right;
}
.ui-datepicker-rtl .ui-datepicker-buttonpane button {
	float: left;
}
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
.ui-datepicker-rtl .ui-datepicker-group {
	float: right;
}
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
	border-right-width: 0;
	border-left-width: 1px;
}

/* Icons */
.ui-datepicker .ui-icon {
	display: block;
	text-indent: -99999px;
	overflow: hidden;
	background-repeat: no-repeat;
	left: .5em;
	top: .3em;
}
.ui-dialog {
	position: absolute;
	top: 0;
	left: 0;
	padding: .2em;
	outline: 0;
}
.ui-dialog .ui-dialog-titlebar {
	padding: .4em 1em;
	position: relative;
}
.ui-dialog .ui-dialog-title {
	float: left;
	margin: .1em 0;
	white-space: nowrap;
	width: 90%;
	overflow: hidden;
	text-overflow: ellipsis;
}
.ui-dialog .ui-dialog-titlebar-close {
	position: absolute;
	right: .3em;
	top: 50%;
	width: 20px;
	margin: -10px 0 0 0;
	padding: 1px;
	height: 20px;
}
.ui-dialog .ui-dialog-content {
	position: relative;
	border: 0;
	padding: .5em 1em;
	background: none;
	overflow: auto;
}
.ui-dialog .ui-dialog-buttonpane {
	text-align: left;
	border-width: 1px 0 0 0;
	background-image: none;
	margin-top: .5em;
	padding: .3em 1em .5em .4em;
}
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
	float: right;
}
.ui-dialog .ui-dialog-buttonpane button {
	margin: .5em .4em .5em 0;
	cursor: pointer;
}
.ui-dialog .ui-resizable-n {
	height: 2px;
	top: 0;
}
.ui-dialog .ui-resizable-e {
	width: 2px;
	right: 0;
}
.ui-dialog .ui-resizable-s {
	height: 2px;
	bottom: 0;
}
.ui-dialog .ui-resizable-w {
	width: 2px;
	left: 0;
}
.ui-dialog .ui-resizable-se,
.ui-dialog .ui-resizable-sw,
.ui-dialog .ui-resizable-ne,
.ui-dialog .ui-resizable-nw {
	width: 7px;
	height: 7px;
}
.ui-dialog .ui-resizable-se {
	right: 0;
	bottom: 0;
}
.ui-dialog .ui-resizable-sw {
	left: 0;
	bottom: 0;
}
.ui-dialog .ui-resizable-ne {
	right: 0;
	top: 0;
}
.ui-dialog .ui-resizable-nw {
	left: 0;
	top: 0;
}
.ui-draggable .ui-dialog-titlebar {
	cursor: move;
}
.ui-draggable-handle {
	-ms-touch-action: none;
	touch-action: none;
}
.ui-resizable {
	position: relative;
}
.ui-resizable-handle {
	position: absolute;
	font-size: 0.1px;
	display: block;
	-ms-touch-action: none;
	touch-action: none;
}
.ui-resizable-disabled .ui-resizable-handle,
.ui-resizable-autohide .ui-resizable-handle {
	display: none;
}
.ui-resizable-n {
	cursor: n-resize;
	height: 7px;
	width: 100%;
	top: -5px;
	left: 0;
}
.ui-resizable-s {
	cursor: s-resize;
	height: 7px;
	width: 100%;
	bottom: -5px;
	left: 0;
}
.ui-resizable-e {
	cursor: e-resize;
	width: 7px;
	right: -5px;
	top: 0;
	height: 100%;
}
.ui-resizable-w {
	cursor: w-resize;
	width: 7px;
	left: -5px;
	top: 0;
	height: 100%;
}
.ui-resizable-se {
	cursor: se-resize;
	width: 12px;
	height: 12px;
	right: 1px;
	bottom: 1px;
}
.ui-resizable-sw {
	cursor: sw-resize;
	width: 9px;
	height: 9px;
	left: -5px;
	bottom: -5px;
}
.ui-resizable-nw {
	cursor: nw-resize;
	width: 9px;
	height: 9px;
	left: -5px;
	top: -5px;
}
.ui-resizable-ne {
	cursor: ne-resize;
	width: 9px;
	height: 9px;
	right: -5px;
	top: -5px;
}
.ui-progressbar {
	height: 2em;
	text-align: left;
	overflow: hidden;
}
.ui-progressbar .ui-progressbar-value {
	margin: -1px;
	height: 100%;
}
.ui-progressbar .ui-progressbar-overlay {
	background: url("data:image/gif;base64,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");
	height: 100%;
	filter: alpha(opacity=25); /* support: IE8 */
	opacity: 0.25;
}
.ui-progressbar-indeterminate .ui-progressbar-value {
	background-image: none;
}
.ui-selectable {
	-ms-touch-action: none;
	touch-action: none;
}
.ui-selectable-helper {
	position: absolute;
	z-index: 100;
	border: 1px dotted black;
}
.ui-selectmenu-menu {
	padding: 0;
	margin: 0;
	position: absolute;
	top: 0;
	left: 0;
	display: none;
}
.ui-selectmenu-menu .ui-menu {
	overflow: auto;
	overflow-x: hidden;
	padding-bottom: 1px;
}
.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
	font-size: 1em;
	font-weight: bold;
	line-height: 1.5;
	padding: 2px 0.4em;
	margin: 0.5em 0 0 0;
	height: auto;
	border: 0;
}
.ui-selectmenu-open {
	display: block;
}
.ui-selectmenu-text {
	display: block;
	margin-right: 20px;
	overflow: hidden;
	text-overflow: ellipsis;
}
.ui-selectmenu-button.ui-button {
	text-align: left;
	white-space: nowrap;
	width: 14em;
}
.ui-selectmenu-icon.ui-icon {
	float: right;
	margin-top: 0;
}
.ui-slider {
	position: relative;
	text-align: left;
}
.ui-slider .ui-slider-handle {
	position: absolute;
	z-index: 2;
	width: 1.2em;
	height: 1.2em;
	cursor: default;
	-ms-touch-action: none;
	touch-action: none;
}
.ui-slider .ui-slider-range {
	position: absolute;
	z-index: 1;
	font-size: .7em;
	display: block;
	border: 0;
	background-position: 0 0;
}

/* support: IE8 - See #6727 */
.ui-slider.ui-state-disabled .ui-slider-handle,
.ui-slider.ui-state-disabled .ui-slider-range {
	filter: inherit;
}

.ui-slider-horizontal {
	height: .8em;
}
.ui-slider-horizontal .ui-slider-handle {
	top: -.3em;
	margin-left: -.6em;
}
.ui-slider-horizontal .ui-slider-range {
	top: 0;
	height: 100%;
}
.ui-slider-horizontal .ui-slider-range-min {
	left: 0;
}
.ui-slider-horizontal .ui-slider-range-max {
	right: 0;
}

.ui-slider-vertical {
	width: .8em;
	height: 100px;
}
.ui-slider-vertical .ui-slider-handle {
	left: -.3em;
	margin-left: 0;
	margin-bottom: -.6em;
}
.ui-slider-vertical .ui-slider-range {
	left: 0;
	width: 100%;
}
.ui-slider-vertical .ui-slider-range-min {
	bottom: 0;
}
.ui-slider-vertical .ui-slider-range-max {
	top: 0;
}
.ui-sortable-handle {
	-ms-touch-action: none;
	touch-action: none;
}
.ui-spinner {
	position: relative;
	display: inline-block;
	overflow: hidden;
	padding: 0;
	vertical-align: middle;
}
.ui-spinner-input {
	border: none;
	background: none;
	color: inherit;
	padding: .222em 0;
	margin: .2em 0;
	vertical-align: middle;
	margin-left: .4em;
	margin-right: 2em;
}
.ui-spinner-button {
	width: 1.6em;
	height: 50%;
	font-size: .5em;
	padding: 0;
	margin: 0;
	text-align: center;
	position: absolute;
	cursor: default;
	display: block;
	overflow: hidden;
	right: 0;
}
/* more specificity required here to override default borders */
.ui-spinner a.ui-spinner-button {
	border-top-style: none;
	border-bottom-style: none;
	border-right-style: none;
}
.ui-spinner-up {
	top: 0;
}
.ui-spinner-down {
	bottom: 0;
}
.ui-tabs {
	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
	padding: .2em;
}
.ui-tabs .ui-tabs-nav {
	margin: 0;
	padding: .2em .2em 0;
}
.ui-tabs .ui-tabs-nav li {
	list-style: none;
	float: left;
	position: relative;
	top: 0;
	margin: 1px .2em 0 0;
	border-bottom-width: 0;
	padding: 0;
	white-space: nowrap;
}
.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
	float: left;
	padding: .5em 1em;
	text-decoration: none;
}
.ui-tabs .ui-tabs-nav li.ui-tabs-active {
	margin-bottom: -1px;
	padding-bottom: 1px;
}
.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
	cursor: text;
}
.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
	cursor: pointer;
}
.ui-tabs .ui-tabs-panel {
	display: block;
	border-width: 0;
	padding: 1em 1.4em;
	background: none;
}
.ui-tooltip {
	padding: 8px;
	position: absolute;
	z-index: 9999;
	max-width: 300px;
}
body .ui-tooltip {
	border-width: 2px;
}

/* Component containers
----------------------------------*/
.ui-widget {
	font-family: Arial,Helvetica,sans-serif;
	font-size: 1em;
}
.ui-widget .ui-widget {
	font-size: 1em;
}
.ui-widget input,
.ui-widget select,
.ui-widget textarea,
.ui-widget button {
	font-family: Arial,Helvetica,sans-serif;
	font-size: 1em;
}
.ui-widget.ui-widget-content {
	border: 1px solid #c5c5c5;
}
.ui-widget-content {
	border: 1px solid #dddddd;
	background: #ffffff;
	color: #333333;
}
.ui-widget-content a {
	color: #333333;
}
.ui-widget-header {
	border: 1px solid #dddddd;
	background: #e9e9e9;
	color: #333333;
	font-weight: bold;
}
.ui-widget-header a {
	color: #333333;
}

/* Interaction states
----------------------------------*/
.ui-state-default,
.ui-widget-content .ui-state-default,
.ui-widget-header .ui-state-default,
.ui-button,

/* We use html here because we need a greater specificity to make sure disabled
works properly when clicked or hovered */
html .ui-button.ui-state-disabled:hover,
html .ui-button.ui-state-disabled:active {
	border: 1px solid #c5c5c5;
	background: #f6f6f6;
	font-weight: normal;
	color: #454545;
}
.ui-state-default a,
.ui-state-default a:link,
.ui-state-default a:visited,
a.ui-button,
a:link.ui-button,
a:visited.ui-button,
.ui-button {
	color: #454545;
	text-decoration: none;
}
.ui-state-hover,
.ui-widget-content .ui-state-hover,
.ui-widget-header .ui-state-hover,
.ui-state-focus,
.ui-widget-content .ui-state-focus,
.ui-widget-header .ui-state-focus,
.ui-button:hover,
.ui-button:focus {
	border: 1px solid #cccccc;
	background: #ededed;
	font-weight: normal;
	color: #2b2b2b;
}
.ui-state-hover a,
.ui-state-hover a:hover,
.ui-state-hover a:link,
.ui-state-hover a:visited,
.ui-state-focus a,
.ui-state-focus a:hover,
.ui-state-focus a:link,
.ui-state-focus a:visited,
a.ui-button:hover,
a.ui-button:focus {
	color: #2b2b2b;
	text-decoration: none;
}

.ui-visual-focus {
	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
}
.ui-state-active,
.ui-widget-content .ui-state-active,
.ui-widget-header .ui-state-active,
a.ui-button:active,
.ui-button:active,
.ui-button.ui-state-active:hover {
	border: 1px solid #003eff;
	background: #007fff;
	font-weight: normal;
	color: #ffffff;
}
.ui-icon-background,
.ui-state-active .ui-icon-background {
	border: #003eff;
	background-color: #ffffff;
}
.ui-state-active a,
.ui-state-active a:link,
.ui-state-active a:visited {
	color: #ffffff;
	text-decoration: none;
}

/* Interaction Cues
----------------------------------*/
.ui-state-highlight,
.ui-widget-content .ui-state-highlight,
.ui-widget-header .ui-state-highlight {
	border: 1px solid #dad55e;
	background: #fffa90;
	color: #777620;
}
.ui-state-checked {
	border: 1px solid #dad55e;
	background: #fffa90;
}
.ui-state-highlight a,
.ui-widget-content .ui-state-highlight a,
.ui-widget-header .ui-state-highlight a {
	color: #777620;
}
.ui-state-error,
.ui-widget-content .ui-state-error,
.ui-widget-header .ui-state-error {
	border: 1px solid #f1a899;
	background: #fddfdf;
	color: #5f3f3f;
}
.ui-state-error a,
.ui-widget-content .ui-state-error a,
.ui-widget-header .ui-state-error a {
	color: #5f3f3f;
}
.ui-state-error-text,
.ui-widget-content .ui-state-error-text,
.ui-widget-header .ui-state-error-text {
	color: #5f3f3f;
}
.ui-priority-primary,
.ui-widget-content .ui-priority-primary,
.ui-widget-header .ui-priority-primary {
	font-weight: bold;
}
.ui-priority-secondary,
.ui-widget-content .ui-priority-secondary,
.ui-widget-header .ui-priority-secondary {
	opacity: .7;
	filter:Alpha(Opacity=70); /* support: IE8 */
	font-weight: normal;
}
.ui-state-disabled,
.ui-widget-content .ui-state-disabled,
.ui-widget-header .ui-state-disabled {
	opacity: .35;
	filter:Alpha(Opacity=35); /* support: IE8 */
	background-image: none;
}
.ui-state-disabled .ui-icon {
	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
}

/* Icons
----------------------------------*/

/* states and images */
.ui-icon {
	width: 16px;
	height: 16px;
}
.ui-icon,
.ui-widget-content .ui-icon {
	background-image: url("images/ui-icons_444444_256x240.png");
}
.ui-widget-header .ui-icon {
	background-image: url("images/ui-icons_444444_256x240.png");
}
.ui-state-hover .ui-icon,
.ui-state-focus .ui-icon,
.ui-button:hover .ui-icon,
.ui-button:focus .ui-icon {
	background-image: url("images/ui-icons_555555_256x240.png");
}
.ui-state-active .ui-icon,
.ui-button:active .ui-icon {
	background-image: url("images/ui-icons_ffffff_256x240.png");
}
.ui-state-highlight .ui-icon,
.ui-button .ui-state-highlight.ui-icon {
	background-image: url("images/ui-icons_777620_256x240.png");
}
.ui-state-error .ui-icon,
.ui-state-error-text .ui-icon {
	background-image: url("images/ui-icons_cc0000_256x240.png");
}
.ui-button .ui-icon {
	background-image: url("images/ui-icons_777777_256x240.png");
}

/* positioning */
.ui-icon-blank { background-position: 16px 16px; }
.ui-icon-caret-1-n { background-position: 0 0; }
.ui-icon-caret-1-ne { background-position: -16px 0; }
.ui-icon-caret-1-e { background-position: -32px 0; }
.ui-icon-caret-1-se { background-position: -48px 0; }
.ui-icon-caret-1-s { background-position: -65px 0; }
.ui-icon-caret-1-sw { background-position: -80px 0; }
.ui-icon-caret-1-w { background-position: -96px 0; }
.ui-icon-caret-1-nw { background-position: -112px 0; }
.ui-icon-caret-2-n-s { background-position: -128px 0; }
.ui-icon-caret-2-e-w { background-position: -144px 0; }
.ui-icon-triangle-1-n { background-position: 0 -16px; }
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
.ui-icon-triangle-1-e { background-position: -32px -16px; }
.ui-icon-triangle-1-se { background-position: -48px -16px; }
.ui-icon-triangle-1-s { background-position: -65px -16px; }
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
.ui-icon-triangle-1-w { background-position: -96px -16px; }
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
.ui-icon-arrow-1-n { background-position: 0 -32px; }
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
.ui-icon-arrow-1-e { background-position: -32px -32px; }
.ui-icon-arrow-1-se { background-position: -48px -32px; }
.ui-icon-arrow-1-s { background-position: -65px -32px; }
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
.ui-icon-arrow-1-w { background-position: -96px -32px; }
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
.ui-icon-arrow-4 { background-position: 0 -80px; }
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
.ui-icon-extlink { background-position: -32px -80px; }
.ui-icon-newwin { background-position: -48px -80px; }
.ui-icon-refresh { background-position: -64px -80px; }
.ui-icon-shuffle { background-position: -80px -80px; }
.ui-icon-transfer-e-w { background-position: -96px -80px; }
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
.ui-icon-folder-collapsed { background-position: 0 -96px; }
.ui-icon-folder-open { background-position: -16px -96px; }
.ui-icon-document { background-position: -32px -96px; }
.ui-icon-document-b { background-position: -48px -96px; }
.ui-icon-note { background-position: -64px -96px; }
.ui-icon-mail-closed { background-position: -80px -96px; }
.ui-icon-mail-open { background-position: -96px -96px; }
.ui-icon-suitcase { background-position: -112px -96px; }
.ui-icon-comment { background-position: -128px -96px; }
.ui-icon-person { background-position: -144px -96px; }
.ui-icon-print { background-position: -160px -96px; }
.ui-icon-trash { background-position: -176px -96px; }
.ui-icon-locked { background-position: -192px -96px; }
.ui-icon-unlocked { background-position: -208px -96px; }
.ui-icon-bookmark { background-position: -224px -96px; }
.ui-icon-tag { background-position: -240px -96px; }
.ui-icon-home { background-position: 0 -112px; }
.ui-icon-flag { background-position: -16px -112px; }
.ui-icon-calendar { background-position: -32px -112px; }
.ui-icon-cart { background-position: -48px -112px; }
.ui-icon-pencil { background-position: -64px -112px; }
.ui-icon-clock { background-position: -80px -112px; }
.ui-icon-disk { background-position: -96px -112px; }
.ui-icon-calculator { background-position: -112px -112px; }
.ui-icon-zoomin { background-position: -128px -112px; }
.ui-icon-zoomout { background-position: -144px -112px; }
.ui-icon-search { background-position: -160px -112px; }
.ui-icon-wrench { background-position: -176px -112px; }
.ui-icon-gear { background-position: -192px -112px; }
.ui-icon-heart { background-position: -208px -112px; }
.ui-icon-star { background-position: -224px -112px; }
.ui-icon-link { background-position: -240px -112px; }
.ui-icon-cancel { background-position: 0 -128px; }
.ui-icon-plus { background-position: -16px -128px; }
.ui-icon-plusthick { background-position: -32px -128px; }
.ui-icon-minus { background-position: -48px -128px; }
.ui-icon-minusthick { background-position: -64px -128px; }
.ui-icon-close { background-position: -80px -128px; }
.ui-icon-closethick { background-position: -96px -128px; }
.ui-icon-key { background-position: -112px -128px; }
.ui-icon-lightbulb { background-position: -128px -128px; }
.ui-icon-scissors { background-position: -144px -128px; }
.ui-icon-clipboard { background-position: -160px -128px; }
.ui-icon-copy { background-position: -176px -128px; }
.ui-icon-contact { background-position: -192px -128px; }
.ui-icon-image { background-position: -208px -128px; }
.ui-icon-video { background-position: -224px -128px; }
.ui-icon-script { background-position: -240px -128px; }
.ui-icon-alert { background-position: 0 -144px; }
.ui-icon-info { background-position: -16px -144px; }
.ui-icon-notice { background-position: -32px -144px; }
.ui-icon-help { background-position: -48px -144px; }
.ui-icon-check { background-position: -64px -144px; }
.ui-icon-bullet { background-position: -80px -144px; }
.ui-icon-radio-on { background-position: -96px -144px; }
.ui-icon-radio-off { background-position: -112px -144px; }
.ui-icon-pin-w { background-position: -128px -144px; }
.ui-icon-pin-s { background-position: -144px -144px; }
.ui-icon-play { background-position: 0 -160px; }
.ui-icon-pause { background-position: -16px -160px; }
.ui-icon-seek-next { background-position: -32px -160px; }
.ui-icon-seek-prev { background-position: -48px -160px; }
.ui-icon-seek-end { background-position: -64px -160px; }
.ui-icon-seek-start { background-position: -80px -160px; }
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
.ui-icon-seek-first { background-position: -80px -160px; }
.ui-icon-stop { background-position: -96px -160px; }
.ui-icon-eject { background-position: -112px -160px; }
.ui-icon-volume-off { background-position: -128px -160px; }
.ui-icon-volume-on { background-position: -144px -160px; }
.ui-icon-power { background-position: 0 -176px; }
.ui-icon-signal-diag { background-position: -16px -176px; }
.ui-icon-signal { background-position: -32px -176px; }
.ui-icon-battery-0 { background-position: -48px -176px; }
.ui-icon-battery-1 { background-position: -64px -176px; }
.ui-icon-battery-2 { background-position: -80px -176px; }
.ui-icon-battery-3 { background-position: -96px -176px; }
.ui-icon-circle-plus { background-position: 0 -192px; }
.ui-icon-circle-minus { background-position: -16px -192px; }
.ui-icon-circle-close { background-position: -32px -192px; }
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
.ui-icon-circle-zoomin { background-position: -176px -192px; }
.ui-icon-circle-zoomout { background-position: -192px -192px; }
.ui-icon-circle-check { background-position: -208px -192px; }
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
.ui-icon-circlesmall-close { background-position: -32px -208px; }
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
.ui-icon-squaresmall-close { background-position: -80px -208px; }
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }


/* Misc visuals
----------------------------------*/

/* Corner radius */
.ui-corner-all,
.ui-corner-top,
.ui-corner-left,
.ui-corner-tl {
	border-top-left-radius: 3px;
}
.ui-corner-all,
.ui-corner-top,
.ui-corner-right,
.ui-corner-tr {
	border-top-right-radius: 3px;
}
.ui-corner-all,
.ui-corner-bottom,
.ui-corner-left,
.ui-corner-bl {
	border-bottom-left-radius: 3px;
}
.ui-corner-all,
.ui-corner-bottom,
.ui-corner-right,
.ui-corner-br {
	border-bottom-right-radius: 3px;
}

/* Overlays */
.ui-widget-overlay {
	background: #aaaaaa;
	opacity: .003;
	filter: Alpha(Opacity=.3); /* support: IE8 */
}
.ui-widget-shadow {
	-webkit-box-shadow: 0px 0px 5px #666666;
	box-shadow: 0px 0px 5px #666666;
}

shiny/www/shared/jqueryui/index.html METASEP
<!doctype html>
<html lang="us">
<head>
	<meta charset="utf-8">
	<title>jQuery UI Example Page</title>
	<link href="jquery-ui.css" rel="stylesheet">
	<style>
	body{
		font-family: "Trebuchet MS", sans-serif;
		margin: 50px;
	}
	.demoHeaders {
		margin-top: 2em;
	}
	#dialog-link {
		padding: .4em 1em .4em 20px;
		text-decoration: none;
		position: relative;
	}
	#dialog-link span.ui-icon {
		margin: 0 5px 0 0;
		position: absolute;
		left: .2em;
		top: 50%;
		margin-top: -8px;
	}
	#icons {
		margin: 0;
		padding: 0;
	}
	#icons li {
		margin: 2px;
		position: relative;
		padding: 4px 0;
		cursor: pointer;
		float: left;
		list-style: none;
	}
	#icons span.ui-icon {
		float: left;
		margin: 0 4px;
	}
	.fakewindowcontain .ui-widget-overlay {
		position: absolute;
	}
	select {
		width: 200px;
	}
	</style>
</head>
<body>

<h1>Welcome to jQuery UI!</h1>

<div class="ui-widget">
	<p>This page demonstrates the widgets and theme you selected in Download Builder. Please make sure you are using them with a compatible jQuery version.</p>
</div>

<h1>YOUR COMPONENTS:</h1>


<!-- Accordion -->
<h2 class="demoHeaders">Accordion</h2>
<div id="accordion">
	<h3>First</h3>
	<div>Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.</div>
	<h3>Second</h3>
	<div>Phasellus mattis tincidunt nibh.</div>
	<h3>Third</h3>
	<div>Nam dui erat, auctor a, dignissim quis.</div>
</div>



<!-- Autocomplete -->
<h2 class="demoHeaders">Autocomplete</h2>
<div>
	<input id="autocomplete" title="type &quot;a&quot;">
</div>



<!-- Button -->
<h2 class="demoHeaders">Button</h2>
<button id="button">A button element</button>
<button id="button-icon">An icon-only button</button>



<!-- Checkboxradio -->
<h2 class="demoHeaders">Checkboxradio</h2>
<form style="margin-top: 1em;">
	<div id="radioset">
		<input type="radio" id="radio1" name="radio"><label for="radio1">Choice 1</label>
		<input type="radio" id="radio2" name="radio" checked="checked"><label for="radio2">Choice 2</label>
		<input type="radio" id="radio3" name="radio"><label for="radio3">Choice 3</label>
	</div>
</form>



<!-- Controlgroup -->
<h2 class="demoHeaders">Controlgroup</h2>
<fieldset>
	<legend>Rental Car</legend>
	<div id="controlgroup">
		<select id="car-type">
			<option>Compact car</option>
			<option>Midsize car</option>
			<option>Full size car</option>
			<option>SUV</option>
			<option>Luxury</option>
			<option>Truck</option>
			<option>Van</option>
		</select>
		<label for="transmission-standard">Standard</label>
		<input type="radio" name="transmission" id="transmission-standard">
		<label for="transmission-automatic">Automatic</label>
		<input type="radio" name="transmission" id="transmission-automatic">
		<label for="insurance">Insurance</label>
		<input type="checkbox" name="insurance" id="insurance">
		<label for="horizontal-spinner" class="ui-controlgroup-label"># of cars</label>
		<input id="horizontal-spinner" class="ui-spinner-input">
		<button>Book Now!</button>
	</div>
</fieldset>



<!-- Tabs -->
<h2 class="demoHeaders">Tabs</h2>
<div id="tabs">
	<ul>
		<li><a href="#tabs-1">First</a></li>
		<li><a href="#tabs-2">Second</a></li>
		<li><a href="#tabs-3">Third</a></li>
	</ul>
	<div id="tabs-1">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</div>
	<div id="tabs-2">Phasellus mattis tincidunt nibh. Cras orci urna, blandit id, pretium vel, aliquet ornare, felis. Maecenas scelerisque sem non nisl. Fusce sed lorem in enim dictum bibendum.</div>
	<div id="tabs-3">Nam dui erat, auctor a, dignissim quis, sollicitudin eu, felis. Pellentesque nisi urna, interdum eget, sagittis et, consequat vestibulum, lacus. Mauris porttitor ullamcorper augue.</div>
</div>



<h2 class="demoHeaders">Dialog</h2>
<p>
	<button id="dialog-link" class="ui-button ui-corner-all ui-widget">
		<span class="ui-icon ui-icon-newwin"></span>Open Dialog
	</button>
</p>

<h2 class="demoHeaders">Overlay and Shadow Classes</h2>
<div style="position: relative; width: 96%; height: 200px; padding:1% 2%; overflow:hidden;" class="fakewindowcontain">
	<p>Lorem ipsum dolor sit amet,  Nulla nec tortor. Donec id elit quis purus consectetur consequat. </p><p>Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. </p><p>Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. </p><p>Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. </p><p>Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. </p><p>Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. </p>

	<!-- ui-dialog -->
	<div class="ui-widget-overlay ui-front"></div>
	<div style="position: absolute; width: 320px; left: 50px; top: 30px; padding: 1.2em" class="ui-widget ui-front ui-widget-content ui-corner-all ui-widget-shadow">
		Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
	</div>

</div>

<!-- ui-dialog -->
<div id="dialog" title="Dialog Title">
	<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>



<h2 class="demoHeaders">Framework Icons (content color preview)</h2>
<ul id="icons" class="ui-widget ui-helper-clearfix">
	<li class="ui-state-default ui-corner-all" title=".ui-icon-caret-1-n"><span class="ui-icon ui-icon-caret-1-n"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-caret-1-ne"><span class="ui-icon ui-icon-caret-1-ne"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-caret-1-e"><span class="ui-icon ui-icon-caret-1-e"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-caret-1-se"><span class="ui-icon ui-icon-caret-1-se"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-caret-1-s"><span class="ui-icon ui-icon-caret-1-s"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-caret-1-sw"><span class="ui-icon ui-icon-caret-1-sw"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-caret-1-w"><span class="ui-icon ui-icon-caret-1-w"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-caret-1-nw"><span class="ui-icon ui-icon-caret-1-nw"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-caret-2-n-s"><span class="ui-icon ui-icon-caret-2-n-s"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-caret-2-e-w"><span class="ui-icon ui-icon-caret-2-e-w"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-n"><span class="ui-icon ui-icon-triangle-1-n"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-ne"><span class="ui-icon ui-icon-triangle-1-ne"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-e"><span class="ui-icon ui-icon-triangle-1-e"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-se"><span class="ui-icon ui-icon-triangle-1-se"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-s"><span class="ui-icon ui-icon-triangle-1-s"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-sw"><span class="ui-icon ui-icon-triangle-1-sw"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-w"><span class="ui-icon ui-icon-triangle-1-w"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-nw"><span class="ui-icon ui-icon-triangle-1-nw"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-2-n-s"><span class="ui-icon ui-icon-triangle-2-n-s"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-2-e-w"><span class="ui-icon ui-icon-triangle-2-e-w"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-n"><span class="ui-icon ui-icon-arrow-1-n"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-ne"><span class="ui-icon ui-icon-arrow-1-ne"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-e"><span class="ui-icon ui-icon-arrow-1-e"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-se"><span class="ui-icon ui-icon-arrow-1-se"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-s"><span class="ui-icon ui-icon-arrow-1-s"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-sw"><span class="ui-icon ui-icon-arrow-1-sw"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-w"><span class="ui-icon ui-icon-arrow-1-w"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-nw"><span class="ui-icon ui-icon-arrow-1-nw"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-2-n-s"><span class="ui-icon ui-icon-arrow-2-n-s"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-2-ne-sw"><span class="ui-icon ui-icon-arrow-2-ne-sw"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-2-e-w"><span class="ui-icon ui-icon-arrow-2-e-w"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-2-se-nw"><span class="ui-icon ui-icon-arrow-2-se-nw"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowstop-1-n"><span class="ui-icon ui-icon-arrowstop-1-n"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowstop-1-e"><span class="ui-icon ui-icon-arrowstop-1-e"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowstop-1-s"><span class="ui-icon ui-icon-arrowstop-1-s"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowstop-1-w"><span class="ui-icon ui-icon-arrowstop-1-w"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-n"><span class="ui-icon ui-icon-arrowthick-1-n"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-ne"><span class="ui-icon ui-icon-arrowthick-1-ne"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-e"><span class="ui-icon ui-icon-arrowthick-1-e"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-se"><span class="ui-icon ui-icon-arrowthick-1-se"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-s"><span class="ui-icon ui-icon-arrowthick-1-s"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-sw"><span class="ui-icon ui-icon-arrowthick-1-sw"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-w"><span class="ui-icon ui-icon-arrowthick-1-w"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-nw"><span class="ui-icon ui-icon-arrowthick-1-nw"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-2-n-s"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-2-ne-sw"><span class="ui-icon ui-icon-arrowthick-2-ne-sw"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-2-e-w"><span class="ui-icon ui-icon-arrowthick-2-e-w"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-2-se-nw"><span class="ui-icon ui-icon-arrowthick-2-se-nw"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthickstop-1-n"><span class="ui-icon ui-icon-arrowthickstop-1-n"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthickstop-1-e"><span class="ui-icon ui-icon-arrowthickstop-1-e"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthickstop-1-s"><span class="ui-icon ui-icon-arrowthickstop-1-s"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthickstop-1-w"><span class="ui-icon ui-icon-arrowthickstop-1-w"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturnthick-1-w"><span class="ui-icon ui-icon-arrowreturnthick-1-w"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturnthick-1-n"><span class="ui-icon ui-icon-arrowreturnthick-1-n"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturnthick-1-e"><span class="ui-icon ui-icon-arrowreturnthick-1-e"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturnthick-1-s"><span class="ui-icon ui-icon-arrowreturnthick-1-s"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturn-1-w"><span class="ui-icon ui-icon-arrowreturn-1-w"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturn-1-n"><span class="ui-icon ui-icon-arrowreturn-1-n"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturn-1-e"><span class="ui-icon ui-icon-arrowreturn-1-e"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturn-1-s"><span class="ui-icon ui-icon-arrowreturn-1-s"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowrefresh-1-w"><span class="ui-icon ui-icon-arrowrefresh-1-w"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowrefresh-1-n"><span class="ui-icon ui-icon-arrowrefresh-1-n"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowrefresh-1-e"><span class="ui-icon ui-icon-arrowrefresh-1-e"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowrefresh-1-s"><span class="ui-icon ui-icon-arrowrefresh-1-s"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-4"><span class="ui-icon ui-icon-arrow-4"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-4-diag"><span class="ui-icon ui-icon-arrow-4-diag"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-extlink"><span class="ui-icon ui-icon-extlink"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-newwin"><span class="ui-icon ui-icon-newwin"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-refresh"><span class="ui-icon ui-icon-refresh"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-shuffle"><span class="ui-icon ui-icon-shuffle"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-transfer-e-w"><span class="ui-icon ui-icon-transfer-e-w"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-transferthick-e-w"><span class="ui-icon ui-icon-transferthick-e-w"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-folder-collapsed"><span class="ui-icon ui-icon-folder-collapsed"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-folder-open"><span class="ui-icon ui-icon-folder-open"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-document"><span class="ui-icon ui-icon-document"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-document-b"><span class="ui-icon ui-icon-document-b"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-note"><span class="ui-icon ui-icon-note"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-mail-closed"><span class="ui-icon ui-icon-mail-closed"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-mail-open"><span class="ui-icon ui-icon-mail-open"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-suitcase"><span class="ui-icon ui-icon-suitcase"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-comment"><span class="ui-icon ui-icon-comment"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-person"><span class="ui-icon ui-icon-person"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-print"><span class="ui-icon ui-icon-print"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-trash"><span class="ui-icon ui-icon-trash"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-locked"><span class="ui-icon ui-icon-locked"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-unlocked"><span class="ui-icon ui-icon-unlocked"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-bookmark"><span class="ui-icon ui-icon-bookmark"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-tag"><span class="ui-icon ui-icon-tag"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-home"><span class="ui-icon ui-icon-home"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-flag"><span class="ui-icon ui-icon-flag"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-calculator"><span class="ui-icon ui-icon-calculator"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-cart"><span class="ui-icon ui-icon-cart"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-pencil"><span class="ui-icon ui-icon-pencil"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-clock"><span class="ui-icon ui-icon-clock"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-disk"><span class="ui-icon ui-icon-disk"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-calendar"><span class="ui-icon ui-icon-calendar"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-zoomin"><span class="ui-icon ui-icon-zoomin"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-zoomout"><span class="ui-icon ui-icon-zoomout"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-search"><span class="ui-icon ui-icon-search"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-wrench"><span class="ui-icon ui-icon-wrench"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-gear"><span class="ui-icon ui-icon-gear"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-heart"><span class="ui-icon ui-icon-heart"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-star"><span class="ui-icon ui-icon-star"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-link"><span class="ui-icon ui-icon-link"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-cancel"><span class="ui-icon ui-icon-cancel"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-plus"><span class="ui-icon ui-icon-plus"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-plusthick"><span class="ui-icon ui-icon-plusthick"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-minus"><span class="ui-icon ui-icon-minus"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-minusthick"><span class="ui-icon ui-icon-minusthick"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-close"><span class="ui-icon ui-icon-close"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-closethick"><span class="ui-icon ui-icon-closethick"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-key"><span class="ui-icon ui-icon-key"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-lightbulb"><span class="ui-icon ui-icon-lightbulb"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-scissors"><span class="ui-icon ui-icon-scissors"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-clipboard"><span class="ui-icon ui-icon-clipboard"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-copy"><span class="ui-icon ui-icon-copy"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-contact"><span class="ui-icon ui-icon-contact"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-image"><span class="ui-icon ui-icon-image"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-video"><span class="ui-icon ui-icon-video"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-script"><span class="ui-icon ui-icon-script"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-alert"><span class="ui-icon ui-icon-alert"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-info"><span class="ui-icon ui-icon-info"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-notice"><span class="ui-icon ui-icon-notice"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-help"><span class="ui-icon ui-icon-help"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-check"><span class="ui-icon ui-icon-check"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-bullet"><span class="ui-icon ui-icon-bullet"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-radio-off"><span class="ui-icon ui-icon-radio-off"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-radio-on"><span class="ui-icon ui-icon-radio-on"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-pin-w"><span class="ui-icon ui-icon-pin-w"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-pin-s"><span class="ui-icon ui-icon-pin-s"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-play"><span class="ui-icon ui-icon-play"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-pause"><span class="ui-icon ui-icon-pause"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-seek-next"><span class="ui-icon ui-icon-seek-next"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-seek-prev"><span class="ui-icon ui-icon-seek-prev"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-seek-end"><span class="ui-icon ui-icon-seek-end"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-seek-first"><span class="ui-icon ui-icon-seek-first"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-stop"><span class="ui-icon ui-icon-stop"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-eject"><span class="ui-icon ui-icon-eject"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-volume-off"><span class="ui-icon ui-icon-volume-off"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-volume-on"><span class="ui-icon ui-icon-volume-on"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-power"><span class="ui-icon ui-icon-power"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-signal-diag"><span class="ui-icon ui-icon-signal-diag"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-signal"><span class="ui-icon ui-icon-signal"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-battery-0"><span class="ui-icon ui-icon-battery-0"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-battery-1"><span class="ui-icon ui-icon-battery-1"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-battery-2"><span class="ui-icon ui-icon-battery-2"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-battery-3"><span class="ui-icon ui-icon-battery-3"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-plus"><span class="ui-icon ui-icon-circle-plus"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-minus"><span class="ui-icon ui-icon-circle-minus"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-close"><span class="ui-icon ui-icon-circle-close"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-triangle-e"><span class="ui-icon ui-icon-circle-triangle-e"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-triangle-s"><span class="ui-icon ui-icon-circle-triangle-s"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-triangle-w"><span class="ui-icon ui-icon-circle-triangle-w"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-triangle-n"><span class="ui-icon ui-icon-circle-triangle-n"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-arrow-e"><span class="ui-icon ui-icon-circle-arrow-e"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-arrow-s"><span class="ui-icon ui-icon-circle-arrow-s"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-arrow-w"><span class="ui-icon ui-icon-circle-arrow-w"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-arrow-n"><span class="ui-icon ui-icon-circle-arrow-n"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-zoomin"><span class="ui-icon ui-icon-circle-zoomin"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-zoomout"><span class="ui-icon ui-icon-circle-zoomout"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-check"><span class="ui-icon ui-icon-circle-check"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-circlesmall-plus"><span class="ui-icon ui-icon-circlesmall-plus"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-circlesmall-minus"><span class="ui-icon ui-icon-circlesmall-minus"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-circlesmall-close"><span class="ui-icon ui-icon-circlesmall-close"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-squaresmall-plus"><span class="ui-icon ui-icon-squaresmall-plus"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-squaresmall-minus"><span class="ui-icon ui-icon-squaresmall-minus"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-squaresmall-close"><span class="ui-icon ui-icon-squaresmall-close"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-grip-dotted-vertical"><span class="ui-icon ui-icon-grip-dotted-vertical"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-grip-dotted-horizontal"><span class="ui-icon ui-icon-grip-dotted-horizontal"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-grip-solid-vertical"><span class="ui-icon ui-icon-grip-solid-vertical"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-grip-solid-horizontal"><span class="ui-icon ui-icon-grip-solid-horizontal"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-gripsmall-diagonal-se"><span class="ui-icon ui-icon-gripsmall-diagonal-se"></span></li>
	<li class="ui-state-default ui-corner-all" title=".ui-icon-grip-diagonal-se"><span class="ui-icon ui-icon-grip-diagonal-se"></span></li>
</ul>


<!-- Slider -->
<h2 class="demoHeaders">Slider</h2>
<div id="slider"></div>



<!-- Datepicker -->
<h2 class="demoHeaders">Datepicker</h2>
<div id="datepicker"></div>



<!-- Progressbar -->
<h2 class="demoHeaders">Progressbar</h2>
<div id="progressbar"></div>



<!-- Progressbar -->
<h2 class="demoHeaders">Selectmenu</h2>
<select id="selectmenu">
	<option>Slower</option>
	<option>Slow</option>
	<option selected="selected">Medium</option>
	<option>Fast</option>
	<option>Faster</option>
</select>



<!-- Spinner -->
<h2 class="demoHeaders">Spinner</h2>
<input id="spinner">



<!-- Menu -->
<h2 class="demoHeaders">Menu</h2>
<ul style="width:100px;" id="menu">
	<li><div>Item 1</div></li>
	<li><div>Item 2</div></li>
	<li><div>Item 3</div>
		<ul>
			<li><div>Item 3-1</div></li>
			<li><div>Item 3-2</div></li>
			<li><div>Item 3-3</div></li>
			<li><div>Item 3-4</div></li>
			<li><div>Item 3-5</div></li>
		</ul>
	</li>
	<li><div>Item 4</div></li>
	<li><div>Item 5</div></li>
</ul>



<!-- Tooltip -->
<h2 class="demoHeaders">Tooltip</h2>
<p id="tooltip">
	<a href="#" title="That&apos;s what this widget is">Tooltips</a> can be attached to any element. When you hover
the element with your mouse, the title attribute is displayed in a little box next to the element, just like a native tooltip.
</p>


<!-- Highlight / Error -->
<h2 class="demoHeaders">Highlight / Error</h2>
<div class="ui-widget">
	<div class="ui-state-highlight ui-corner-all" style="margin-top: 20px; padding: 0 .7em;">
		<p><span class="ui-icon ui-icon-info" style="float: left; margin-right: .3em;"></span>
		<strong>Hey!</strong> Sample ui-state-highlight style.</p>
	</div>
</div>
<br>
<div class="ui-widget">
	<div class="ui-state-error ui-corner-all" style="padding: 0 .7em;">
		<p><span class="ui-icon ui-icon-alert" style="float: left; margin-right: .3em;"></span>
		<strong>Alert:</strong> Sample ui-state-error style.</p>
	</div>
</div>

<script src="external/jquery/jquery.js"></script>
<script src="jquery-ui.js"></script>
<script>

$( "#accordion" ).accordion();



var availableTags = [
	"ActionScript",
	"AppleScript",
	"Asp",
	"BASIC",
	"C",
	"C++",
	"Clojure",
	"COBOL",
	"ColdFusion",
	"Erlang",
	"Fortran",
	"Groovy",
	"Haskell",
	"Java",
	"JavaScript",
	"Lisp",
	"Perl",
	"PHP",
	"Python",
	"Ruby",
	"Scala",
	"Scheme"
];
$( "#autocomplete" ).autocomplete({
	source: availableTags
});



$( "#button" ).button();
$( "#button-icon" ).button({
	icon: "ui-icon-gear",
	showLabel: false
});



$( "#radioset" ).buttonset();



$( "#controlgroup" ).controlgroup();



$( "#tabs" ).tabs();



$( "#dialog" ).dialog({
	autoOpen: false,
	width: 400,
	buttons: [
		{
			text: "Ok",
			click: function() {
				$( this ).dialog( "close" );
			}
		},
		{
			text: "Cancel",
			click: function() {
				$( this ).dialog( "close" );
			}
		}
	]
});

// Link to open the dialog
$( "#dialog-link" ).click(function( event ) {
	$( "#dialog" ).dialog( "open" );
	event.preventDefault();
});



$( "#datepicker" ).datepicker({
	inline: true
});



$( "#slider" ).slider({
	range: true,
	values: [ 17, 67 ]
});



$( "#progressbar" ).progressbar({
	value: 20
});



$( "#spinner" ).spinner();



$( "#menu" ).menu();



$( "#tooltip" ).tooltip();



$( "#selectmenu" ).selectmenu();


// Hover states on the static widgets
$( "#dialog-link, #icons li" ).hover(
	function() {
		$( this ).addClass( "ui-state-hover" );
	},
	function() {
		$( this ).removeClass( "ui-state-hover" );
	}
);
</script>
</body>
</html>

shiny/www/shared/jqueryui/README METASEP
This a full jQuery UI build, downloaded from:
https://jqueryui.com/resources/download/jquery-ui-1.12.1.zip

The copy of jQuery that is bundled with the download, under external/, is not
included because Shiny already has its own copy of jQuery.

shiny/www/shared/jqueryui/AUTHORS.txt METASEP
Authors ordered by first contribution
A list of current team members is available at http://jqueryui.com/about

Paul Bakaus <paul.bakaus@gmail.com>
Richard Worth <rdworth@gmail.com>
Yehuda Katz <wycats@gmail.com>
Sean Catchpole <sean@sunsean.com>
John Resig <jeresig@gmail.com>
Tane Piper <piper.tane@gmail.com>
Dmitri Gaskin <dmitrig01@gmail.com>
Klaus Hartl <klaus.hartl@gmail.com>
Stefan Petre <stefan.petre@gmail.com>
Gilles van den Hoven <gilles@webunity.nl>
Micheil Bryan Smith <micheil@brandedcode.com>
Jörn Zaefferer <joern.zaefferer@gmail.com>
Marc Grabanski <m@marcgrabanski.com>
Keith Wood <kbwood@iinet.com.au>
Brandon Aaron <brandon.aaron@gmail.com>
Scott González <scott.gonzalez@gmail.com>
Eduardo Lundgren <eduardolundgren@gmail.com>
Aaron Eisenberger <aaronchi@gmail.com>
Joan Piedra <theneojp@gmail.com>
Bruno Basto <b.basto@gmail.com>
Remy Sharp <remy@leftlogic.com>
Bohdan Ganicky <bohdan.ganicky@gmail.com>
David Bolter <david.bolter@gmail.com>
Chi Cheng <cloudream@gmail.com>
Ca-Phun Ung <pazu2k@gmail.com>
Ariel Flesler <aflesler@gmail.com>
Maggie Wachs <maggie@filamentgroup.com>
Scott Jehl <scottjehl@gmail.com>
Todd Parker <todd@filamentgroup.com>
Andrew Powell <andrew@shellscape.org>
Brant Burnett <btburnett3@gmail.com>
Douglas Neiner <doug@dougneiner.com>
Paul Irish <paul.irish@gmail.com>
Ralph Whitbeck <ralph.whitbeck@gmail.com>
Thibault Duplessis <thibault.duplessis@gmail.com>
Dominique Vincent <dominique.vincent@toitl.com>
Jack Hsu <jack.hsu@gmail.com>
Adam Sontag <ajpiano@ajpiano.com>
Carl Fürstenberg <carl@excito.com>
Kevin Dalman <development@allpro.net>
Alberto Fernández Capel <afcapel@gmail.com>
Jacek Jędrzejewski (http://jacek.jedrzejewski.name)
Ting Kuei <ting@kuei.com>
Samuel Cormier-Iijima <sam@chide.it>
Jon Palmer <jonspalmer@gmail.com>
Ben Hollis <bhollis@amazon.com>
Justin MacCarthy <Justin@Rubystars.biz>
Eyal Kobrigo <kobrigo@hotmail.com>
Tiago Freire <tiago.freire@gmail.com>
Diego Tres <diegotres@gmail.com>
Holger Rüprich <holger@rueprich.de>
Ziling Zhao <zilingzhao@gmail.com>
Mike Alsup <malsup@gmail.com>
Robson Braga Araujo <robsonbraga@gmail.com>
Pierre-Henri Ausseil <ph.ausseil@gmail.com>
Christopher McCulloh <cmcculloh@gmail.com>
Andrew Newcomb <ext.github@preceptsoftware.co.uk>
Lim Chee Aun <cheeaun@gmail.com>
Jorge Barreiro <yortx.barry@gmail.com>
Daniel Steigerwald <daniel@steigerwald.cz>
John Firebaugh <john_firebaugh@bigfix.com>
John Enters <github@darkdark.net>
Andrey Kapitcyn <ru.m157y@gmail.com>
Dmitry Petrov <dpetroff@gmail.com>
Eric Hynds <eric@hynds.net>
Chairat Sunthornwiphat <pipo@sixhead.com>
Josh Varner <josh.varner@gmail.com>
Stéphane Raimbault <stephane.raimbault@gmail.com>
Jay Merrifield <fracmak@gmail.com>
J. Ryan Stinnett <jryans@gmail.com>
Peter Heiberg <peter@heiberg.se>
Alex Dovenmuehle <adovenmuehle@gmail.com>
Jamie Gegerson <git@jamiegegerson.com>
Raymond Schwartz <skeetergraphics@gmail.com>
Phillip Barnes <philbar@gmail.com>
Kyle Wilkinson <kai@wikyd.org>
Khaled AlHourani <me@khaledalhourani.com>
Marian Rudzynski <mr@impaled.org>
Jean-Francois Remy <jeff@melix.org>
Doug Blood <dougblood@gmail.com>
Filippo Cavallarin <filippo.cavallarin@codseq.it>
Heiko Henning <heiko@thehennings.ch>
Aliaksandr Rahalevich <saksmlz@gmail.com>
Mario Visic <mario@mariovisic.com>
Xavi Ramirez <xavi.rmz@gmail.com>
Max Schnur <max.schnur@gmail.com>
Saji Nediyanchath <saji89@gmail.com>
Corey Frang <gnarf37@gmail.com>
Aaron Peterson <aaronp123@yahoo.com>
Ivan Peters <ivan@ivanpeters.com>
Mohamed Cherif Bouchelaghem <cherifbouchelaghem@yahoo.fr>
Marcos Sousa <falecomigo@marcossousa.com>
Michael DellaNoce <mdellanoce@mailtrust.com>
George Marshall <echosx@gmail.com>
Tobias Brunner <tobias@strongswan.org>
Martin Solli <msolli@gmail.com>
David Petersen <public@petersendidit.com>
Dan Heberden <danheberden@gmail.com>
William Kevin Manire <williamkmanire@gmail.com>
Gilmore Davidson <gilmoreorless@gmail.com>
Michael Wu <michaelmwu@gmail.com>
Adam Parod <mystic414@gmail.com>
Guillaume Gautreau <guillaume+github@ghusse.com>
Marcel Toele <EleotleCram@gmail.com>
Dan Streetman <ddstreet@ieee.org>
Matt Hoskins <matt@nipltd.com>
Giovanni Giacobbi <giovanni@giacobbi.net>
Kyle Florence <kyle.florence@gmail.com>
Pavol Hluchý <lopo@losys.sk>
Hans Hillen <hans.hillen@gmail.com>
Mark Johnson <virgofx@live.com>
Trey Hunner <treyhunner@gmail.com>
Shane Whittet <whittet@gmail.com>
Edward A Faulkner <ef@alum.mit.edu>
Adam Baratz <adam@adambaratz.com>
Kato Kazuyoshi <kato.kazuyoshi@gmail.com>
Eike Send <eike.send@gmail.com>
Kris Borchers <kris.borchers@gmail.com>
Eddie Monge <eddie@eddiemonge.com>
Israel Tsadok <itsadok@gmail.com>
Carson McDonald <carson@ioncannon.net>
Jason Davies <jason@jasondavies.com>
Garrison Locke <gplocke@gmail.com>
David Murdoch <david@davidmurdoch.com>
Benjamin Scott Boyle <benjamins.boyle@gmail.com>
Jesse Baird <jebaird@gmail.com>
Jonathan Vingiano <jvingiano@gmail.com>
Dylan Just <dev@ephox.com>
Hiroshi Tomita <tomykaira@gmail.com>
Glenn Goodrich <glenn.goodrich@gmail.com>
Tarafder Ashek-E-Elahi <mail.ashek@gmail.com>
Ryan Neufeld <ryan@neufeldmail.com>
Marc Neuwirth <marc.neuwirth@gmail.com>
Philip Graham <philip.robert.graham@gmail.com>
Benjamin Sterling <benjamin.sterling@kenzomedia.com>
Wesley Walser <waw325@gmail.com>
Kouhei Sutou <kou@clear-code.com>
Karl Kirch <karlkrch@gmail.com>
Chris Kelly <ckdake@ckdake.com>
Jason Oster <jay@kodewerx.org>
Felix Nagel <info@felixnagel.com>
Alexander Polomoshnov <alex.polomoshnov@gmail.com>
David Leal <dgleal@gmail.com>
Igor Milla <igor.fsp.milla@gmail.com>
Dave Methvin <dave.methvin@gmail.com>
Florian Gutmann <f.gutmann@chronimo.com>
Marwan Al Jubeh <marwan.aljubeh@gmail.com>
Milan Broum <midlis@googlemail.com>
Sebastian Sauer <info@dynpages.de>
Gaëtan Muller <m.gaetan89@gmail.com>
Michel Weimerskirch <michel@weimerskirch.net>
William Griffiths <william@ycymro.com>
Stojce Slavkovski <stojce@gmail.com>
David Soms <david.soms@gmail.com>
David De Sloovere <david.desloovere@outlook.com>
Michael P. Jung <michael.jung@terreon.de>
Shannon Pekary <spekary@gmail.com>
Dan Wellman <danwellman@hotmail.com>
Matthew Edward Hutton <meh@corefiling.co.uk>
James Khoury <james@jameskhoury.com>
Rob Loach <robloach@gmail.com>
Alberto Monteiro <betimbrasil@gmail.com>
Alex Rhea <alex.rhea@gmail.com>
Krzysztof Rosiński <rozwell69@gmail.com>
Ryan Olton <oltonr@gmail.com>
Genie <386@mail.com>
Rick Waldron <waldron.rick@gmail.com>
Ian Simpson <spoonlikesham@gmail.com>
Lev Kitsis <spam4lev@gmail.com>
TJ VanToll <tj.vantoll@gmail.com>
Justin Domnitz <jdomnitz@gmail.com>
Douglas Cerna <douglascerna@yahoo.com>
Bert ter Heide <bertjh@hotmail.com>
Jasvir Nagra <jasvir@gmail.com>
Yuriy Khabarov <13real008@gmail.com>
Harri Kilpiö <harri.kilpio@gmail.com>
Lado Lomidze <lado.lomidze@gmail.com>
Amir E. Aharoni <amir.aharoni@mail.huji.ac.il>
Simon Sattes <simon.sattes@gmail.com>
Jo Liss <joliss42@gmail.com>
Guntupalli Karunakar <karunakarg@yahoo.com>
Shahyar Ghobadpour <shahyar@gmail.com>
Lukasz Lipinski <uzza17@gmail.com>
Timo Tijhof <krinklemail@gmail.com>
Jason Moon <jmoon@socialcast.com>
Martin Frost <martinf55@hotmail.com>
Eneko Illarramendi <eneko@illarra.com>
EungJun Yi <semtlenori@gmail.com>
Courtland Allen <courtlandallen@gmail.com>
Viktar Varvanovich <non4eg@gmail.com>
Danny Trunk <dtrunk90@gmail.com>
Pavel Stetina <pavel.stetina@nangu.tv>
Michael Stay <metaweta@gmail.com>
Steven Roussey <sroussey@gmail.com>
Michael Hollis <hollis21@gmail.com>
Lee Rowlands <lee.rowlands@previousnext.com.au>
Timmy Willison <timmywillisn@gmail.com>
Karl Swedberg <kswedberg@gmail.com>
Baoju Yuan <the_guy_1987@hotmail.com>
Maciej Mroziński <maciej.k.mrozinski@gmail.com>
Luis Dalmolin <luis.nh@gmail.com>
Mark Aaron Shirley <maspwr@gmail.com>
Martin Hoch <martin@fidion.de>
Jiayi Yang <tr870829@gmail.com>
Philipp Benjamin Köppchen <xgxtpbk@gws.ms>
Sindre Sorhus <sindresorhus@gmail.com>
Bernhard Sirlinger <bernhard.sirlinger@tele2.de>
Jared A. Scheel <jared@jaredscheel.com>
Rafael Xavier de Souza <rxaviers@gmail.com>
John Chen <zhang.z.chen@intel.com>
Robert Beuligmann <robertbeuligmann@gmail.com>
Dale Kocian <dale.kocian@gmail.com>
Mike Sherov <mike.sherov@gmail.com>
Andrew Couch <andy@couchand.com>
Marc-Andre Lafortune <github@marc-andre.ca>
Nate Eagle <nate.eagle@teamaol.com>
David Souther <davidsouther@gmail.com>
Mathias Stenbom <mathias@stenbom.com>
Sergey Kartashov <ebishkek@yandex.ru>
Avinash R <nashpapa@gmail.com>
Ethan Romba <ethanromba@gmail.com>
Cory Gackenheimer <cory.gack@gmail.com>
Juan Pablo Kaniefsky <jpkaniefsky@gmail.com>
Roman Salnikov <bardt.dz@gmail.com>
Anika Henke <anika@selfthinker.org>
Samuel Bovée <samycookie2000@yahoo.fr>
Fabrício Matté <ult_combo@hotmail.com>
Viktor Kojouharov <vkojouharov@gmail.com>
Pawel Maruszczyk (http://hrabstwo.net)
Pavel Selitskas <p.selitskas@gmail.com>
Bjørn Johansen <post@bjornjohansen.no>
Matthieu Penant <thieum22@hotmail.com>
Dominic Barnes <dominic@dbarnes.info>
David Sullivan <david.sullivan@gmail.com>
Thomas Jaggi <thomas@responsive.ch>
Vahid Sohrabloo <vahid4134@gmail.com>
Travis Carden <travis.carden@gmail.com>
Bruno M. Custódio <bruno@brunomcustodio.com>
Nathanael Silverman <nathanael.silverman@gmail.com>
Christian Wenz <christian@wenz.org>
Steve Urmston <steve@urm.st>
Zaven Muradyan <megalivoithos@gmail.com>
Woody Gilk <shadowhand@deviantart.com>
Zbigniew Motyka <zbigniew.motyka@gmail.com>
Suhail Alkowaileet <xsoh.k7@gmail.com>
Toshi MARUYAMA <marutosijp2@yahoo.co.jp>
David Hansen <hansede@gmail.com>
Brian Grinstead <briangrinstead@gmail.com>
Christian Klammer <christian314159@gmail.com>
Steven Luscher <jquerycla@steveluscher.com>
Gan Eng Chin <engchin.gan@gmail.com>
Gabriel Schulhof <gabriel.schulhof@intel.com>
Alexander Schmitz <arschmitz@gmail.com>
Vilhjálmur Skúlason <vis@dmm.is>
Siebrand Mazeland <siebrand@kitano.nl>
Mohsen Ekhtiari <mohsenekhtiari@yahoo.com>
Pere Orga <gotrunks@gmail.com>
Jasper de Groot <mail@ugomobi.com>
Stephane Deschamps <stephane.deschamps@gmail.com>
Jyoti Deka <dekajp@gmail.com>
Andrei Picus <office.nightcrawler@gmail.com>
Ondrej Novy <novy@ondrej.org>
Jacob McCutcheon <jacob.mccutcheon@gmail.com>
Monika Piotrowicz <monika.piotrowicz@gmail.com>
Imants Horsts <imants.horsts@inbox.lv>
Eric Dahl <eric.c.dahl@gmail.com>
Dave Stein <dave@behance.com>
Dylan Barrell <dylan@barrell.com>
Daniel DeGroff <djdegroff@gmail.com>
Michael Wiencek <mwtuea@gmail.com>
Thomas Meyer <meyertee@gmail.com>
Ruslan Yakhyaev <ruslan@ruslan.io>
Brian J. Dowling <bjd-dev@simplicity.net>
Ben Higgins <ben@extrahop.com>
Yermo Lamers <yml@yml.com>
Patrick Stapleton <github@gdi2290.com>
Trisha Crowley <trisha.crowley@gmail.com>
Usman Akeju <akeju00+github@gmail.com>
Rodrigo Menezes <rod333@gmail.com>
Jacques Perrault <jacques_perrault@us.ibm.com>
Frederik Elvhage <frederik.elvhage@googlemail.com>
Will Holley <willholley@gmail.com>
Uri Gilad <antishok@gmail.com>
Richard Gibson <richard.gibson@gmail.com>
Simen Bekkhus <sbekkhus91@gmail.com>
Chen Eshchar <eshcharc@gmail.com>
Bruno Pérel <brunoperel@gmail.com>
Mohammed Alshehri <m@dralshehri.com>
Lisa Seacat DeLuca <ldeluca@us.ibm.com>
Anne-Gaelle Colom <coloma@westminster.ac.uk>
Adam Foster <slimfoster@gmail.com>
Luke Page <luke.a.page@gmail.com>
Daniel Owens <daniel@matchstickmixup.com>
Michael Orchard <morchard@scottlogic.co.uk>
Marcus Warren <marcus@envoke.com>
Nils Heuermann <nils@world-of-scripts.de>
Marco Ziech <marco@ziech.net>
Patricia Juarez <patrixd@gmail.com>
Ben Mosher <me@benmosher.com>
Ablay Keldibek <atomio.ak@gmail.com>
Thomas Applencourt <thomas.applencourt@irsamc.ups-tlse.fr>
Jiabao Wu <jiabao.foss@gmail.com>
Eric Lee Carraway <github@ericcarraway.com>
Victor Homyakov <vkhomyackov@gmail.com>
Myeongjin Lee <aranet100@gmail.com>
Liran Sharir <lsharir@gmail.com>
Weston Ruter <weston@xwp.co>
Mani Mishra <manimishra902@gmail.com>
Hannah Methvin <hannahmethvin@gmail.com>
Leonardo Balter <leonardo.balter@gmail.com>
Benjamin Albert <benjamin_a5@yahoo.com>
Michał Gołębiowski <m.goleb@gmail.com>
Alyosha Pushak <alyosha.pushak@gmail.com>
Fahad Ahmad <fahadahmad41@hotmail.com>
Matt Brundage <github@mattbrundage.com>
Francesc Baeta <francesc.baeta@gmail.com>
Piotr Baran <piotros@wp.pl>
Mukul Hase <mukulhase@gmail.com>
Konstantin Dinev <kdinev@mail.bw.edu>
Rand Scullard <rand@randscullard.com>
Dan Strohl <dan@wjcg.net>
Maksim Ryzhikov <rv.maksim@gmail.com>
Amine HADDAD <haddad@allegorie.tv>
Amanpreet Singh <apsdehal@gmail.com>
Alexey Balchunas <bleshik@gmail.com>
Peter Kehl <peter.kehl@gmail.com>
Peter Dave Hello <hsu@peterdavehello.org>
Johannes Schäfer <johnschaefer@gmx.de>
Ville Skyttä <ville.skytta@iki.fi>
Ryan Oriecuia <ryan.oriecuia@visioncritical.com>

shiny/www/shared/jquery/jquery-3.6.0.min.map METASEP
{"version":3,"sources":["jquery-3.6.0.js"],"names":["global","factory","module","exports","document","w","Error","window","this","noGlobal","arr","getProto","Object","getPrototypeOf","slice","flat","array","call","concat","apply","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","support","isFunction","obj","nodeType","item","isWindow","preservedScriptAttributes","type","src","nonce","noModule","DOMEval","code","node","doc","i","val","script","createElement","text","getAttribute","setAttribute","head","appendChild","parentNode","removeChild","toType","version","jQuery","selector","context","fn","init","isArrayLike","length","prototype","jquery","constructor","toArray","get","num","pushStack","elems","ret","merge","prevObject","each","callback","map","elem","arguments","first","eq","last","even","grep","_elem","odd","len","j","end","sort","splice","extend","options","name","copy","copyIsArray","clone","target","deep","isPlainObject","Array","isArray","undefined","expando","Math","random","replace","isReady","error","msg","noop","proto","Ctor","isEmptyObject","globalEval","makeArray","results","inArray","second","invert","matches","callbackExpect","arg","value","guid","Symbol","iterator","split","_i","toLowerCase","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","a","b","pop","pushNative","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","inDisabledFieldset","addCombinator","disabled","nodeName","dir","next","childNodes","e","els","seed","m","nid","match","groups","newSelector","newContext","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","testContext","scope","toSelector","join","querySelectorAll","qsaError","removeAttribute","keys","cache","key","cacheLength","shift","markFunction","assert","el","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","documentElement","hasCompare","subWindow","defaultView","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","tag","tmp","input","innerHTML","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","specified","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","_argument","simple","forward","ofType","_context","xml","uniqueCache","outerCache","nodeIndex","start","parent","useCache","lastChild","uniqueID","pseudo","args","setFilters","idx","matched","not","matcher","unmatched","has","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","header","button","_matchIndexes","lt","gt","radio","checkbox","file","password","image","submit","reset","tokens","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","_name","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","n","rneedsContext","rsingleTag","winnow","qualifier","self","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","prev","sibling","targets","l","closest","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","method","promise","fail","then","Callbacks","object","_","flag","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","remove","disable","lock","fireWith","Deferred","func","tuples","state","always","deferred","catch","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","setTimeout","stateString","when","singleValue","remaining","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","stack","console","warn","message","readyException","readyList","completed","removeEventListener","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","toUpperCase","camelCase","string","acceptData","owner","Data","uid","defineProperty","configurable","set","data","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","style","display","css","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","showHide","show","values","body","hide","toggle","div","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","cloneNode","noCloneChecked","option","wrapMap","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","buildFragment","scripts","selection","ignored","wrap","attached","fragment","nodes","htmlPrefilter","createTextNode","rtypenamespace","returnTrue","returnFalse","expectSync","err","safeActiveElement","on","types","one","origFn","event","off","leverageNative","notAsync","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","preventDefault","trigger","Event","handleObjIn","eventHandle","events","t","handleObj","handlers","namespaces","origType","elemData","create","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","enumerable","originalEvent","writable","load","noBubble","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","now","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","char","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","opener","getComputedStyle","swap","old","rboxStyle","curCSS","computed","width","minWidth","maxWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","offsetWidth","measure","round","parseFloat","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","height","parseInt","borderTopWidth","borderBottomWidth","offsetHeight","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","max","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","order","orphans","widows","zIndex","zoom","origName","isCustomProp","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","left","margin","padding","border","prefix","suffix","expand","expanded","parts","propHooks","run","percent","eased","duration","pos","step","fx","scrollTop","scrollLeft","linear","p","swing","cos","PI","fxNow","inProgress","opt","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","bind","complete","timer","anim","*","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","time","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","for","class","addClass","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","isValidValue","classNames","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","parserErrorElem","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","s","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","json","responseFields","converters","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","isSuccess","response","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","text script","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","unbind","delegate","undelegate","hover","fnOver","fnOut","proxy","holdReady","hold","parseJSON","isNumeric","isNaN","trim","define","amd","_jQuery","_$","$","noConflict"],"mappings":"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","file":"jquery-3.6.0.min.js"}
shiny/www/shared/jquery/jquery-3.6.0.min.js METASEP
/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),j=function(e,t){return e===t&&(l=!0),0},D={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&D.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(j),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(j).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var D,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^([^.]*)(?:\.(.+)|)/;function we(){return!0}function Te(){return!1}function Ce(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ee(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ee(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Te;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n&&n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,we)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=be.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=be.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click",we),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?we:Te,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Te,isPropagationStopped:Te,isImmediatePropagationStopped:Te,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=we,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=we,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=we,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Se(this,e,Ce),!1},trigger:function(){return Se(this,e),!0},_default:function(){return!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return Ee(this,e,t,n,r)},one:function(e,t,n,r){return Ee(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Te),this.each(function(){S.event.remove(this,e,n,t)})}});var ke=/<script|<style|<link/i,Ae=/checked\s*(?:[^=]|=\s*.checked.)/i,Ne=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function He(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Ae.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),He(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),De)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,qe),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(Ne,""),u,l))}return n}function Oe(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Le(o[r],a[r]);else Le(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Oe(this,e,!0)},remove:function(e){return Oe(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return He(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||je(this,e).appendChild(e)})},prepend:function(){return He(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=je(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!ke.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return He(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Pe=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Re=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Me=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ie=new RegExp(ne.join("|"),"i");function We(e,t,n){var r,i,o,a,s=e.style;return(n=n||Re(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Pe.test(a)&&Ie.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function Fe(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,re.removeChild(e)),a}}))}();var Be=["Webkit","Moz","ms"],$e=E.createElement("div").style,_e={};function ze(e){var t=S.cssProps[e]||_e[e];return t||(e in $e?e:_e[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Be.length;while(n--)if((e=Be[n]+t)in $e)return e}(e)||e)}var Ue=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ve={position:"absolute",visibility:"hidden",display:"block"},Ge={letterSpacing:"0",fontWeight:"400"};function Ye(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Qe(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Je(e,t,n){var r=Re(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=We(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Pe.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Qe(e,t,n||(i?"border":"content"),o,r,a)+"px"}function Ke(e,t,n,r,i){return new Ke.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=We(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Xe.test(t),l=e.style;if(u||(t=ze(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Xe.test(t)||(t=ze(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=We(e,t,r)),"normal"===i&&t in Ge&&(i=Ge[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ue.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Je(e,u,n):Me(e,Ve,function(){return Je(e,u,n)})},set:function(e,t,n){var r,i=Re(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Qe(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Qe(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Ye(0,t,s)}}}),S.cssHooks.marginLeft=Fe(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(We(e,"marginLeft"))||e.getBoundingClientRect().left-Me(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Ye)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Re(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=Ke).prototype={constructor:Ke,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=Ke.propHooks[this.prop];return e&&e.get?e.get(this):Ke.propHooks._default.get(this)},run:function(e){var t,n=Ke.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ke.propHooks._default.set(this),this}}).init.prototype=Ke.prototype,(Ke.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[ze(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=Ke.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=Ke.prototype.init,S.fx.step={};var Ze,et,tt,nt,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function ot(){et&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(ot):C.setTimeout(ot,S.fx.interval),S.fx.tick())}function at(){return C.setTimeout(function(){Ze=void 0}),Ze=Date.now()}function st(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ut(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function lt(o,e,t){var n,a,r=0,i=lt.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=Ze||at(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:Ze||at(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=lt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ut,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(lt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],lt.tweeners[n]=lt.tweeners[n]||[],lt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],rt.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ut(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?lt.prefilters.unshift(e):lt.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=lt(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&it.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(st(r,!0),e,t,n)}}),S.each({slideDown:st("show"),slideUp:st("hide"),slideToggle:st("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(Ze=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),Ze=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){et||(et=!0,ot())},S.fx.stop=function(){et=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},tt=E.createElement("input"),nt=E.createElement("select").appendChild(E.createElement("option")),tt.type="checkbox",y.checkOn=""!==tt.value,y.optSelected=nt.selected,(tt=E.createElement("input")).value="t",tt.type="radio",y.radioValue="t"===tt.value;var ct,ft=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?ct:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ct={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=ft[t]||S.find.attr;ft[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=ft[o],ft[o]=r,r=null!=a(e,t,n)?o:null,ft[o]=i),r}});var pt=/^(?:input|select|textarea|button)$/i,dt=/^(?:a|area)$/i;function ht(e){return(e.match(P)||[]).join(" ")}function gt(e){return e.getAttribute&&e.getAttribute("class")||""}function vt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):pt.test(e.nodeName)||dt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,gt(this)))});if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,gt(this)))});if(!arguments.length)return this.attr("class","");if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,gt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=vt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=gt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+ht(gt(n))+" ").indexOf(t))return!0;return!1}});var yt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(yt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:ht(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var mt=/^(?:focusinfocus|focusoutblur)$/,xt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!mt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,mt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,xt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,xt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var bt=C.location,wt={guid:Date.now()},Tt=/\?/;S.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||S.error("Invalid XML: "+(n?S.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var Ct=/\[\]$/,Et=/\r?\n/g,St=/^(?:submit|button|image|reset|file)$/i,kt=/^(?:input|select|textarea|keygen)/i;function At(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||Ct.test(n)?i(n,t):At(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)At(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)At(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&kt.test(this.nodeName)&&!St.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(Et,"\r\n")}}):{name:t.name,value:n.replace(Et,"\r\n")}}).get()}});var Nt=/%20/g,jt=/#.*$/,Dt=/([?&])_=[^&]*/,qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Lt=/^(?:GET|HEAD)$/,Ht=/^\/\//,Ot={},Pt={},Rt="*/".concat("*"),Mt=E.createElement("a");function It(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Wt(t,i,o,a){var s={},u=t===Pt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Ft(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Mt.href=bt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Rt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ft(Ft(e,S.ajaxSettings),t):Ft(S.ajaxSettings,e)},ajaxPrefilter:It(Ot),ajaxTransport:It(Pt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=qt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||bt.href)+"").replace(Ht,bt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Mt.protocol+"//"+Mt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Wt(Ot,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Lt.test(v.type),f=v.url.replace(jt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Nt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Tt.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Dt,"$1"),o=(Tt.test(f)?"&":"?")+"_="+wt.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+Rt+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Wt(Pt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&S.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Bt={0:200,1223:204},$t=S.ajaxSettings.xhr();y.cors=!!$t&&"withCredentials"in $t,y.ajax=$t=!!$t,S.ajaxTransport(function(i){var o,a;if(y.cors||$t&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Bt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=ht(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Xt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Xt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Vt=C.jQuery,Gt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Gt),e&&C.jQuery===S&&(C.jQuery=Vt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});

shiny/www/shared/jquery/jquery-3.6.0.js METASEP
/*!
 * jQuery JavaScript Library v3.6.0
 * https://jquery.com/
 *
 * Includes Sizzle.js
 * https://sizzlejs.com/
 *
 * Copyright OpenJS Foundation and other contributors
 * Released under the MIT license
 * https://jquery.org/license
 *
 * Date: 2021-03-02T17:08Z
 */
( function( global, factory ) {

	"use strict";

	if ( typeof module === "object" && typeof module.exports === "object" ) {

		// For CommonJS and CommonJS-like environments where a proper `window`
		// is present, execute the factory and get jQuery.
		// For environments that do not have a `window` with a `document`
		// (such as Node.js), expose a factory as module.exports.
		// This accentuates the need for the creation of a real `window`.
		// e.g. var jQuery = require("jquery")(window);
		// See ticket #14549 for more info.
		module.exports = global.document ?
			factory( global, true ) :
			function( w ) {
				if ( !w.document ) {
					throw new Error( "jQuery requires a window with a document" );
				}
				return factory( w );
			};
	} else {
		factory( global );
	}

// Pass this if window is not defined yet
} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {

// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
// enough that all such attempts are guarded in a try block.
"use strict";

var arr = [];

var getProto = Object.getPrototypeOf;

var slice = arr.slice;

var flat = arr.flat ? function( array ) {
	return arr.flat.call( array );
} : function( array ) {
	return arr.concat.apply( [], array );
};


var push = arr.push;

var indexOf = arr.indexOf;

var class2type = {};

var toString = class2type.toString;

var hasOwn = class2type.hasOwnProperty;

var fnToString = hasOwn.toString;

var ObjectFunctionString = fnToString.call( Object );

var support = {};

var isFunction = function isFunction( obj ) {

		// Support: Chrome <=57, Firefox <=52
		// In some browsers, typeof returns "function" for HTML <object> elements
		// (i.e., `typeof document.createElement( "object" ) === "function"`).
		// We don't want to classify *any* DOM node as a function.
		// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5
		// Plus for old WebKit, typeof returns "function" for HTML collections
		// (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756)
		return typeof obj === "function" && typeof obj.nodeType !== "number" &&
			typeof obj.item !== "function";
	};


var isWindow = function isWindow( obj ) {
		return obj != null && obj === obj.window;
	};


var document = window.document;



	var preservedScriptAttributes = {
		type: true,
		src: true,
		nonce: true,
		noModule: true
	};

	function DOMEval( code, node, doc ) {
		doc = doc || document;

		var i, val,
			script = doc.createElement( "script" );

		script.text = code;
		if ( node ) {
			for ( i in preservedScriptAttributes ) {

				// Support: Firefox 64+, Edge 18+
				// Some browsers don't support the "nonce" property on scripts.
				// On the other hand, just using `getAttribute` is not enough as
				// the `nonce` attribute is reset to an empty string whenever it
				// becomes browsing-context connected.
				// See https://github.com/whatwg/html/issues/2369
				// See https://html.spec.whatwg.org/#nonce-attributes
				// The `node.getAttribute` check was added for the sake of
				// `jQuery.globalEval` so that it can fake a nonce-containing node
				// via an object.
				val = node[ i ] || node.getAttribute && node.getAttribute( i );
				if ( val ) {
					script.setAttribute( i, val );
				}
			}
		}
		doc.head.appendChild( script ).parentNode.removeChild( script );
	}


function toType( obj ) {
	if ( obj == null ) {
		return obj + "";
	}

	// Support: Android <=2.3 only (functionish RegExp)
	return typeof obj === "object" || typeof obj === "function" ?
		class2type[ toString.call( obj ) ] || "object" :
		typeof obj;
}
/* global Symbol */
// Defining this global in .eslintrc.json would create a danger of using the global
// unguarded in another place, it seems safer to define global only for this module



var
	version = "3.6.0",

	// Define a local copy of jQuery
	jQuery = function( selector, context ) {

		// The jQuery object is actually just the init constructor 'enhanced'
		// Need init if jQuery is called (just allow error to be thrown if not included)
		return new jQuery.fn.init( selector, context );
	};

jQuery.fn = jQuery.prototype = {

	// The current version of jQuery being used
	jquery: version,

	constructor: jQuery,

	// The default length of a jQuery object is 0
	length: 0,

	toArray: function() {
		return slice.call( this );
	},

	// Get the Nth element in the matched element set OR
	// Get the whole matched element set as a clean array
	get: function( num ) {

		// Return all the elements in a clean array
		if ( num == null ) {
			return slice.call( this );
		}

		// Return just the one element from the set
		return num < 0 ? this[ num + this.length ] : this[ num ];
	},

	// Take an array of elements and push it onto the stack
	// (returning the new matched element set)
	pushStack: function( elems ) {

		// Build a new jQuery matched element set
		var ret = jQuery.merge( this.constructor(), elems );

		// Add the old object onto the stack (as a reference)
		ret.prevObject = this;

		// Return the newly-formed element set
		return ret;
	},

	// Execute a callback for every element in the matched set.
	each: function( callback ) {
		return jQuery.each( this, callback );
	},

	map: function( callback ) {
		return this.pushStack( jQuery.map( this, function( elem, i ) {
			return callback.call( elem, i, elem );
		} ) );
	},

	slice: function() {
		return this.pushStack( slice.apply( this, arguments ) );
	},

	first: function() {
		return this.eq( 0 );
	},

	last: function() {
		return this.eq( -1 );
	},

	even: function() {
		return this.pushStack( jQuery.grep( this, function( _elem, i ) {
			return ( i + 1 ) % 2;
		} ) );
	},

	odd: function() {
		return this.pushStack( jQuery.grep( this, function( _elem, i ) {
			return i % 2;
		} ) );
	},

	eq: function( i ) {
		var len = this.length,
			j = +i + ( i < 0 ? len : 0 );
		return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
	},

	end: function() {
		return this.prevObject || this.constructor();
	},

	// For internal use only.
	// Behaves like an Array's method, not like a jQuery method.
	push: push,
	sort: arr.sort,
	splice: arr.splice
};

jQuery.extend = jQuery.fn.extend = function() {
	var options, name, src, copy, copyIsArray, clone,
		target = arguments[ 0 ] || {},
		i = 1,
		length = arguments.length,
		deep = false;

	// Handle a deep copy situation
	if ( typeof target === "boolean" ) {
		deep = target;

		// Skip the boolean and the target
		target = arguments[ i ] || {};
		i++;
	}

	// Handle case when target is a string or something (possible in deep copy)
	if ( typeof target !== "object" && !isFunction( target ) ) {
		target = {};
	}

	// Extend jQuery itself if only one argument is passed
	if ( i === length ) {
		target = this;
		i--;
	}

	for ( ; i < length; i++ ) {

		// Only deal with non-null/undefined values
		if ( ( options = arguments[ i ] ) != null ) {

			// Extend the base object
			for ( name in options ) {
				copy = options[ name ];

				// Prevent Object.prototype pollution
				// Prevent never-ending loop
				if ( name === "__proto__" || target === copy ) {
					continue;
				}

				// Recurse if we're merging plain objects or arrays
				if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
					( copyIsArray = Array.isArray( copy ) ) ) ) {
					src = target[ name ];

					// Ensure proper type for the source value
					if ( copyIsArray && !Array.isArray( src ) ) {
						clone = [];
					} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {
						clone = {};
					} else {
						clone = src;
					}
					copyIsArray = false;

					// Never move original objects, clone them
					target[ name ] = jQuery.extend( deep, clone, copy );

				// Don't bring in undefined values
				} else if ( copy !== undefined ) {
					target[ name ] = copy;
				}
			}
		}
	}

	// Return the modified object
	return target;
};

jQuery.extend( {

	// Unique for each copy of jQuery on the page
	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),

	// Assume jQuery is ready without the ready module
	isReady: true,

	error: function( msg ) {
		throw new Error( msg );
	},

	noop: function() {},

	isPlainObject: function( obj ) {
		var proto, Ctor;

		// Detect obvious negatives
		// Use toString instead of jQuery.type to catch host objects
		if ( !obj || toString.call( obj ) !== "[object Object]" ) {
			return false;
		}

		proto = getProto( obj );

		// Objects with no prototype (e.g., `Object.create( null )`) are plain
		if ( !proto ) {
			return true;
		}

		// Objects with prototype are plain iff they were constructed by a global Object function
		Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
		return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
	},

	isEmptyObject: function( obj ) {
		var name;

		for ( name in obj ) {
			return false;
		}
		return true;
	},

	// Evaluates a script in a provided context; falls back to the global one
	// if not specified.
	globalEval: function( code, options, doc ) {
		DOMEval( code, { nonce: options && options.nonce }, doc );
	},

	each: function( obj, callback ) {
		var length, i = 0;

		if ( isArrayLike( obj ) ) {
			length = obj.length;
			for ( ; i < length; i++ ) {
				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
					break;
				}
			}
		} else {
			for ( i in obj ) {
				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
					break;
				}
			}
		}

		return obj;
	},

	// results is for internal usage only
	makeArray: function( arr, results ) {
		var ret = results || [];

		if ( arr != null ) {
			if ( isArrayLike( Object( arr ) ) ) {
				jQuery.merge( ret,
					typeof arr === "string" ?
						[ arr ] : arr
				);
			} else {
				push.call( ret, arr );
			}
		}

		return ret;
	},

	inArray: function( elem, arr, i ) {
		return arr == null ? -1 : indexOf.call( arr, elem, i );
	},

	// Support: Android <=4.0 only, PhantomJS 1 only
	// push.apply(_, arraylike) throws on ancient WebKit
	merge: function( first, second ) {
		var len = +second.length,
			j = 0,
			i = first.length;

		for ( ; j < len; j++ ) {
			first[ i++ ] = second[ j ];
		}

		first.length = i;

		return first;
	},

	grep: function( elems, callback, invert ) {
		var callbackInverse,
			matches = [],
			i = 0,
			length = elems.length,
			callbackExpect = !invert;

		// Go through the array, only saving the items
		// that pass the validator function
		for ( ; i < length; i++ ) {
			callbackInverse = !callback( elems[ i ], i );
			if ( callbackInverse !== callbackExpect ) {
				matches.push( elems[ i ] );
			}
		}

		return matches;
	},

	// arg is for internal usage only
	map: function( elems, callback, arg ) {
		var length, value,
			i = 0,
			ret = [];

		// Go through the array, translating each of the items to their new values
		if ( isArrayLike( elems ) ) {
			length = elems.length;
			for ( ; i < length; i++ ) {
				value = callback( elems[ i ], i, arg );

				if ( value != null ) {
					ret.push( value );
				}
			}

		// Go through every key on the object,
		} else {
			for ( i in elems ) {
				value = callback( elems[ i ], i, arg );

				if ( value != null ) {
					ret.push( value );
				}
			}
		}

		// Flatten any nested arrays
		return flat( ret );
	},

	// A global GUID counter for objects
	guid: 1,

	// jQuery.support is not used in Core but other projects attach their
	// properties to it so it needs to exist.
	support: support
} );

if ( typeof Symbol === "function" ) {
	jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
}

// Populate the class2type map
jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
	function( _i, name ) {
		class2type[ "[object " + name + "]" ] = name.toLowerCase();
	} );

function isArrayLike( obj ) {

	// Support: real iOS 8.2 only (not reproducible in simulator)
	// `in` check used to prevent JIT error (gh-2145)
	// hasOwn isn't used here due to false negatives
	// regarding Nodelist length in IE
	var length = !!obj && "length" in obj && obj.length,
		type = toType( obj );

	if ( isFunction( obj ) || isWindow( obj ) ) {
		return false;
	}

	return type === "array" || length === 0 ||
		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
}
var Sizzle =
/*!
 * Sizzle CSS Selector Engine v2.3.6
 * https://sizzlejs.com/
 *
 * Copyright JS Foundation and other contributors
 * Released under the MIT license
 * https://js.foundation/
 *
 * Date: 2021-02-16
 */
( function( window ) {
var i,
	support,
	Expr,
	getText,
	isXML,
	tokenize,
	compile,
	select,
	outermostContext,
	sortInput,
	hasDuplicate,

	// Local document vars
	setDocument,
	document,
	docElem,
	documentIsHTML,
	rbuggyQSA,
	rbuggyMatches,
	matches,
	contains,

	// Instance-specific data
	expando = "sizzle" + 1 * new Date(),
	preferredDoc = window.document,
	dirruns = 0,
	done = 0,
	classCache = createCache(),
	tokenCache = createCache(),
	compilerCache = createCache(),
	nonnativeSelectorCache = createCache(),
	sortOrder = function( a, b ) {
		if ( a === b ) {
			hasDuplicate = true;
		}
		return 0;
	},

	// Instance methods
	hasOwn = ( {} ).hasOwnProperty,
	arr = [],
	pop = arr.pop,
	pushNative = arr.push,
	push = arr.push,
	slice = arr.slice,

	// Use a stripped-down indexOf as it's faster than native
	// https://jsperf.com/thor-indexof-vs-for/5
	indexOf = function( list, elem ) {
		var i = 0,
			len = list.length;
		for ( ; i < len; i++ ) {
			if ( list[ i ] === elem ) {
				return i;
			}
		}
		return -1;
	},

	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" +
		"ismap|loop|multiple|open|readonly|required|scoped",

	// Regular expressions

	// http://www.w3.org/TR/css3-selectors/#whitespace
	whitespace = "[\\x20\\t\\r\\n\\f]",

	// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram
	identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace +
		"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",

	// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
	attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +

		// Operator (capture 2)
		"*([*^$|!~]?=)" + whitespace +

		// "Attribute values must be CSS identifiers [capture 5]
		// or strings [capture 3 or capture 4]"
		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" +
		whitespace + "*\\]",

	pseudos = ":(" + identifier + ")(?:\\((" +

		// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
		// 1. quoted (capture 3; capture 4 or capture 5)
		"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +

		// 2. simple (capture 6)
		"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +

		// 3. anything else (capture 2)
		".*" +
		")\\)|)",

	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
	rwhitespace = new RegExp( whitespace + "+", "g" ),
	rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" +
		whitespace + "+$", "g" ),

	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
	rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace +
		"*" ),
	rdescend = new RegExp( whitespace + "|>" ),

	rpseudo = new RegExp( pseudos ),
	ridentifier = new RegExp( "^" + identifier + "$" ),

	matchExpr = {
		"ID": new RegExp( "^#(" + identifier + ")" ),
		"CLASS": new RegExp( "^\\.(" + identifier + ")" ),
		"TAG": new RegExp( "^(" + identifier + "|[*])" ),
		"ATTR": new RegExp( "^" + attributes ),
		"PSEUDO": new RegExp( "^" + pseudos ),
		"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" +
			whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" +
			whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
		"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),

		// For use in libraries implementing .is()
		// We use this for POS matching in `select`
		"needsContext": new RegExp( "^" + whitespace +
			"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace +
			"*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
	},

	rhtml = /HTML$/i,
	rinputs = /^(?:input|select|textarea|button)$/i,
	rheader = /^h\d$/i,

	rnative = /^[^{]+\{\s*\[native \w/,

	// Easily-parseable/retrievable ID or TAG or CLASS selectors
	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,

	rsibling = /[+~]/,

	// CSS escapes
	// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
	runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ),
	funescape = function( escape, nonHex ) {
		var high = "0x" + escape.slice( 1 ) - 0x10000;

		return nonHex ?

			// Strip the backslash prefix from a non-hex escape sequence
			nonHex :

			// Replace a hexadecimal escape sequence with the encoded Unicode code point
			// Support: IE <=11+
			// For values outside the Basic Multilingual Plane (BMP), manually construct a
			// surrogate pair
			high < 0 ?
				String.fromCharCode( high + 0x10000 ) :
				String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
	},

	// CSS string/identifier serialization
	// https://drafts.csswg.org/cssom/#common-serializing-idioms
	rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
	fcssescape = function( ch, asCodePoint ) {
		if ( asCodePoint ) {

			// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
			if ( ch === "\0" ) {
				return "\uFFFD";
			}

			// Control characters and (dependent upon position) numbers get escaped as code points
			return ch.slice( 0, -1 ) + "\\" +
				ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
		}

		// Other potentially-special ASCII characters get backslash-escaped
		return "\\" + ch;
	},

	// Used for iframes
	// See setDocument()
	// Removing the function wrapper causes a "Permission Denied"
	// error in IE
	unloadHandler = function() {
		setDocument();
	},

	inDisabledFieldset = addCombinator(
		function( elem ) {
			return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset";
		},
		{ dir: "parentNode", next: "legend" }
	);

// Optimize for push.apply( _, NodeList )
try {
	push.apply(
		( arr = slice.call( preferredDoc.childNodes ) ),
		preferredDoc.childNodes
	);

	// Support: Android<4.0
	// Detect silently failing push.apply
	// eslint-disable-next-line no-unused-expressions
	arr[ preferredDoc.childNodes.length ].nodeType;
} catch ( e ) {
	push = { apply: arr.length ?

		// Leverage slice if possible
		function( target, els ) {
			pushNative.apply( target, slice.call( els ) );
		} :

		// Support: IE<9
		// Otherwise append directly
		function( target, els ) {
			var j = target.length,
				i = 0;

			// Can't trust NodeList.length
			while ( ( target[ j++ ] = els[ i++ ] ) ) {}
			target.length = j - 1;
		}
	};
}

function Sizzle( selector, context, results, seed ) {
	var m, i, elem, nid, match, groups, newSelector,
		newContext = context && context.ownerDocument,

		// nodeType defaults to 9, since context defaults to document
		nodeType = context ? context.nodeType : 9;

	results = results || [];

	// Return early from calls with invalid selector or context
	if ( typeof selector !== "string" || !selector ||
		nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {

		return results;
	}

	// Try to shortcut find operations (as opposed to filters) in HTML documents
	if ( !seed ) {
		setDocument( context );
		context = context || document;

		if ( documentIsHTML ) {

			// If the selector is sufficiently simple, try using a "get*By*" DOM method
			// (excepting DocumentFragment context, where the methods don't exist)
			if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {

				// ID selector
				if ( ( m = match[ 1 ] ) ) {

					// Document context
					if ( nodeType === 9 ) {
						if ( ( elem = context.getElementById( m ) ) ) {

							// Support: IE, Opera, Webkit
							// TODO: identify versions
							// getElementById can match elements by name instead of ID
							if ( elem.id === m ) {
								results.push( elem );
								return results;
							}
						} else {
							return results;
						}

					// Element context
					} else {

						// Support: IE, Opera, Webkit
						// TODO: identify versions
						// getElementById can match elements by name instead of ID
						if ( newContext && ( elem = newContext.getElementById( m ) ) &&
							contains( context, elem ) &&
							elem.id === m ) {

							results.push( elem );
							return results;
						}
					}

				// Type selector
				} else if ( match[ 2 ] ) {
					push.apply( results, context.getElementsByTagName( selector ) );
					return results;

				// Class selector
				} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&
					context.getElementsByClassName ) {

					push.apply( results, context.getElementsByClassName( m ) );
					return results;
				}
			}

			// Take advantage of querySelectorAll
			if ( support.qsa &&
				!nonnativeSelectorCache[ selector + " " ] &&
				( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&

				// Support: IE 8 only
				// Exclude object elements
				( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) {

				newSelector = selector;
				newContext = context;

				// qSA considers elements outside a scoping root when evaluating child or
				// descendant combinators, which is not what we want.
				// In such cases, we work around the behavior by prefixing every selector in the
				// list with an ID selector referencing the scope context.
				// The technique has to be used as well when a leading combinator is used
				// as such selectors are not recognized by querySelectorAll.
				// Thanks to Andrew Dupont for this technique.
				if ( nodeType === 1 &&
					( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {

					// Expand context for sibling selectors
					newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
						context;

					// We can use :scope instead of the ID hack if the browser
					// supports it & if we're not changing the context.
					if ( newContext !== context || !support.scope ) {

						// Capture the context ID, setting it first if necessary
						if ( ( nid = context.getAttribute( "id" ) ) ) {
							nid = nid.replace( rcssescape, fcssescape );
						} else {
							context.setAttribute( "id", ( nid = expando ) );
						}
					}

					// Prefix every selector in the list
					groups = tokenize( selector );
					i = groups.length;
					while ( i-- ) {
						groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " +
							toSelector( groups[ i ] );
					}
					newSelector = groups.join( "," );
				}

				try {
					push.apply( results,
						newContext.querySelectorAll( newSelector )
					);
					return results;
				} catch ( qsaError ) {
					nonnativeSelectorCache( selector, true );
				} finally {
					if ( nid === expando ) {
						context.removeAttribute( "id" );
					}
				}
			}
		}
	}

	// All others
	return select( selector.replace( rtrim, "$1" ), context, results, seed );
}

/**
 * Create key-value caches of limited size
 * @returns {function(string, object)} Returns the Object data after storing it on itself with
 *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
 *	deleting the oldest entry
 */
function createCache() {
	var keys = [];

	function cache( key, value ) {

		// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
		if ( keys.push( key + " " ) > Expr.cacheLength ) {

			// Only keep the most recent entries
			delete cache[ keys.shift() ];
		}
		return ( cache[ key + " " ] = value );
	}
	return cache;
}

/**
 * Mark a function for special use by Sizzle
 * @param {Function} fn The function to mark
 */
function markFunction( fn ) {
	fn[ expando ] = true;
	return fn;
}

/**
 * Support testing using an element
 * @param {Function} fn Passed the created element and returns a boolean result
 */
function assert( fn ) {
	var el = document.createElement( "fieldset" );

	try {
		return !!fn( el );
	} catch ( e ) {
		return false;
	} finally {

		// Remove from its parent by default
		if ( el.parentNode ) {
			el.parentNode.removeChild( el );
		}

		// release memory in IE
		el = null;
	}
}

/**
 * Adds the same handler for all of the specified attrs
 * @param {String} attrs Pipe-separated list of attributes
 * @param {Function} handler The method that will be applied
 */
function addHandle( attrs, handler ) {
	var arr = attrs.split( "|" ),
		i = arr.length;

	while ( i-- ) {
		Expr.attrHandle[ arr[ i ] ] = handler;
	}
}

/**
 * Checks document order of two siblings
 * @param {Element} a
 * @param {Element} b
 * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
 */
function siblingCheck( a, b ) {
	var cur = b && a,
		diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
			a.sourceIndex - b.sourceIndex;

	// Use IE sourceIndex if available on both nodes
	if ( diff ) {
		return diff;
	}

	// Check if b follows a
	if ( cur ) {
		while ( ( cur = cur.nextSibling ) ) {
			if ( cur === b ) {
				return -1;
			}
		}
	}

	return a ? 1 : -1;
}

/**
 * Returns a function to use in pseudos for input types
 * @param {String} type
 */
function createInputPseudo( type ) {
	return function( elem ) {
		var name = elem.nodeName.toLowerCase();
		return name === "input" && elem.type === type;
	};
}

/**
 * Returns a function to use in pseudos for buttons
 * @param {String} type
 */
function createButtonPseudo( type ) {
	return function( elem ) {
		var name = elem.nodeName.toLowerCase();
		return ( name === "input" || name === "button" ) && elem.type === type;
	};
}

/**
 * Returns a function to use in pseudos for :enabled/:disabled
 * @param {Boolean} disabled true for :disabled; false for :enabled
 */
function createDisabledPseudo( disabled ) {

	// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
	return function( elem ) {

		// Only certain elements can match :enabled or :disabled
		// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
		// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
		if ( "form" in elem ) {

			// Check for inherited disabledness on relevant non-disabled elements:
			// * listed form-associated elements in a disabled fieldset
			//   https://html.spec.whatwg.org/multipage/forms.html#category-listed
			//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
			// * option elements in a disabled optgroup
			//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
			// All such elements have a "form" property.
			if ( elem.parentNode && elem.disabled === false ) {

				// Option elements defer to a parent optgroup if present
				if ( "label" in elem ) {
					if ( "label" in elem.parentNode ) {
						return elem.parentNode.disabled === disabled;
					} else {
						return elem.disabled === disabled;
					}
				}

				// Support: IE 6 - 11
				// Use the isDisabled shortcut property to check for disabled fieldset ancestors
				return elem.isDisabled === disabled ||

					// Where there is no isDisabled, check manually
					/* jshint -W018 */
					elem.isDisabled !== !disabled &&
					inDisabledFieldset( elem ) === disabled;
			}

			return elem.disabled === disabled;

		// Try to winnow out elements that can't be disabled before trusting the disabled property.
		// Some victims get caught in our net (label, legend, menu, track), but it shouldn't
		// even exist on them, let alone have a boolean value.
		} else if ( "label" in elem ) {
			return elem.disabled === disabled;
		}

		// Remaining elements are neither :enabled nor :disabled
		return false;
	};
}

/**
 * Returns a function to use in pseudos for positionals
 * @param {Function} fn
 */
function createPositionalPseudo( fn ) {
	return markFunction( function( argument ) {
		argument = +argument;
		return markFunction( function( seed, matches ) {
			var j,
				matchIndexes = fn( [], seed.length, argument ),
				i = matchIndexes.length;

			// Match elements found at the specified indexes
			while ( i-- ) {
				if ( seed[ ( j = matchIndexes[ i ] ) ] ) {
					seed[ j ] = !( matches[ j ] = seed[ j ] );
				}
			}
		} );
	} );
}

/**
 * Checks a node for validity as a Sizzle context
 * @param {Element|Object=} context
 * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
 */
function testContext( context ) {
	return context && typeof context.getElementsByTagName !== "undefined" && context;
}

// Expose support vars for convenience
support = Sizzle.support = {};

/**
 * Detects XML nodes
 * @param {Element|Object} elem An element or a document
 * @returns {Boolean} True iff elem is a non-HTML XML node
 */
isXML = Sizzle.isXML = function( elem ) {
	var namespace = elem && elem.namespaceURI,
		docElem = elem && ( elem.ownerDocument || elem ).documentElement;

	// Support: IE <=8
	// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
	// https://bugs.jquery.com/ticket/4833
	return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" );
};

/**
 * Sets document-related variables once based on the current document
 * @param {Element|Object} [doc] An element or document object to use to set the document
 * @returns {Object} Returns the current document
 */
setDocument = Sizzle.setDocument = function( node ) {
	var hasCompare, subWindow,
		doc = node ? node.ownerDocument || node : preferredDoc;

	// Return early if doc is invalid or already selected
	// Support: IE 11+, Edge 17 - 18+
	// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
	// two documents; shallow comparisons work.
	// eslint-disable-next-line eqeqeq
	if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {
		return document;
	}

	// Update global variables
	document = doc;
	docElem = document.documentElement;
	documentIsHTML = !isXML( document );

	// Support: IE 9 - 11+, Edge 12 - 18+
	// Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
	// Support: IE 11+, Edge 17 - 18+
	// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
	// two documents; shallow comparisons work.
	// eslint-disable-next-line eqeqeq
	if ( preferredDoc != document &&
		( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {

		// Support: IE 11, Edge
		if ( subWindow.addEventListener ) {
			subWindow.addEventListener( "unload", unloadHandler, false );

		// Support: IE 9 - 10 only
		} else if ( subWindow.attachEvent ) {
			subWindow.attachEvent( "onunload", unloadHandler );
		}
	}

	// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,
	// Safari 4 - 5 only, Opera <=11.6 - 12.x only
	// IE/Edge & older browsers don't support the :scope pseudo-class.
	// Support: Safari 6.0 only
	// Safari 6.0 supports :scope but it's an alias of :root there.
	support.scope = assert( function( el ) {
		docElem.appendChild( el ).appendChild( document.createElement( "div" ) );
		return typeof el.querySelectorAll !== "undefined" &&
			!el.querySelectorAll( ":scope fieldset div" ).length;
	} );

	/* Attributes
	---------------------------------------------------------------------- */

	// Support: IE<8
	// Verify that getAttribute really returns attributes and not properties
	// (excepting IE8 booleans)
	support.attributes = assert( function( el ) {
		el.className = "i";
		return !el.getAttribute( "className" );
	} );

	/* getElement(s)By*
	---------------------------------------------------------------------- */

	// Check if getElementsByTagName("*") returns only elements
	support.getElementsByTagName = assert( function( el ) {
		el.appendChild( document.createComment( "" ) );
		return !el.getElementsByTagName( "*" ).length;
	} );

	// Support: IE<9
	support.getElementsByClassName = rnative.test( document.getElementsByClassName );

	// Support: IE<10
	// Check if getElementById returns elements by name
	// The broken getElementById methods don't pick up programmatically-set names,
	// so use a roundabout getElementsByName test
	support.getById = assert( function( el ) {
		docElem.appendChild( el ).id = expando;
		return !document.getElementsByName || !document.getElementsByName( expando ).length;
	} );

	// ID filter and find
	if ( support.getById ) {
		Expr.filter[ "ID" ] = function( id ) {
			var attrId = id.replace( runescape, funescape );
			return function( elem ) {
				return elem.getAttribute( "id" ) === attrId;
			};
		};
		Expr.find[ "ID" ] = function( id, context ) {
			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
				var elem = context.getElementById( id );
				return elem ? [ elem ] : [];
			}
		};
	} else {
		Expr.filter[ "ID" ] =  function( id ) {
			var attrId = id.replace( runescape, funescape );
			return function( elem ) {
				var node = typeof elem.getAttributeNode !== "undefined" &&
					elem.getAttributeNode( "id" );
				return node && node.value === attrId;
			};
		};

		// Support: IE 6 - 7 only
		// getElementById is not reliable as a find shortcut
		Expr.find[ "ID" ] = function( id, context ) {
			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
				var node, i, elems,
					elem = context.getElementById( id );

				if ( elem ) {

					// Verify the id attribute
					node = elem.getAttributeNode( "id" );
					if ( node && node.value === id ) {
						return [ elem ];
					}

					// Fall back on getElementsByName
					elems = context.getElementsByName( id );
					i = 0;
					while ( ( elem = elems[ i++ ] ) ) {
						node = elem.getAttributeNode( "id" );
						if ( node && node.value === id ) {
							return [ elem ];
						}
					}
				}

				return [];
			}
		};
	}

	// Tag
	Expr.find[ "TAG" ] = support.getElementsByTagName ?
		function( tag, context ) {
			if ( typeof context.getElementsByTagName !== "undefined" ) {
				return context.getElementsByTagName( tag );

			// DocumentFragment nodes don't have gEBTN
			} else if ( support.qsa ) {
				return context.querySelectorAll( tag );
			}
		} :

		function( tag, context ) {
			var elem,
				tmp = [],
				i = 0,

				// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
				results = context.getElementsByTagName( tag );

			// Filter out possible comments
			if ( tag === "*" ) {
				while ( ( elem = results[ i++ ] ) ) {
					if ( elem.nodeType === 1 ) {
						tmp.push( elem );
					}
				}

				return tmp;
			}
			return results;
		};

	// Class
	Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) {
		if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
			return context.getElementsByClassName( className );
		}
	};

	/* QSA/matchesSelector
	---------------------------------------------------------------------- */

	// QSA and matchesSelector support

	// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
	rbuggyMatches = [];

	// qSa(:focus) reports false when true (Chrome 21)
	// We allow this because of a bug in IE8/9 that throws an error
	// whenever `document.activeElement` is accessed on an iframe
	// So, we allow :focus to pass through QSA all the time to avoid the IE error
	// See https://bugs.jquery.com/ticket/13378
	rbuggyQSA = [];

	if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {

		// Build QSA regex
		// Regex strategy adopted from Diego Perini
		assert( function( el ) {

			var input;

			// Select is set to empty string on purpose
			// This is to test IE's treatment of not explicitly
			// setting a boolean content attribute,
			// since its presence should be enough
			// https://bugs.jquery.com/ticket/12359
			docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
				"<select id='" + expando + "-\r\\' msallowcapture=''>" +
				"<option selected=''></option></select>";

			// Support: IE8, Opera 11-12.16
			// Nothing should be selected when empty strings follow ^= or $= or *=
			// The test attribute must be unknown in Opera but "safe" for WinRT
			// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
			if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) {
				rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
			}

			// Support: IE8
			// Boolean attributes and "value" are not treated correctly
			if ( !el.querySelectorAll( "[selected]" ).length ) {
				rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
			}

			// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
			if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
				rbuggyQSA.push( "~=" );
			}

			// Support: IE 11+, Edge 15 - 18+
			// IE 11/Edge don't find elements on a `[name='']` query in some cases.
			// Adding a temporary attribute to the document before the selection works
			// around the issue.
			// Interestingly, IE 10 & older don't seem to have the issue.
			input = document.createElement( "input" );
			input.setAttribute( "name", "" );
			el.appendChild( input );
			if ( !el.querySelectorAll( "[name='']" ).length ) {
				rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" +
					whitespace + "*(?:''|\"\")" );
			}

			// Webkit/Opera - :checked should return selected option elements
			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
			// IE8 throws error here and will not see later tests
			if ( !el.querySelectorAll( ":checked" ).length ) {
				rbuggyQSA.push( ":checked" );
			}

			// Support: Safari 8+, iOS 8+
			// https://bugs.webkit.org/show_bug.cgi?id=136851
			// In-page `selector#id sibling-combinator selector` fails
			if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
				rbuggyQSA.push( ".#.+[+~]" );
			}

			// Support: Firefox <=3.6 - 5 only
			// Old Firefox doesn't throw on a badly-escaped identifier.
			el.querySelectorAll( "\\\f" );
			rbuggyQSA.push( "[\\r\\n\\f]" );
		} );

		assert( function( el ) {
			el.innerHTML = "<a href='' disabled='disabled'></a>" +
				"<select disabled='disabled'><option/></select>";

			// Support: Windows 8 Native Apps
			// The type and name attributes are restricted during .innerHTML assignment
			var input = document.createElement( "input" );
			input.setAttribute( "type", "hidden" );
			el.appendChild( input ).setAttribute( "name", "D" );

			// Support: IE8
			// Enforce case-sensitivity of name attribute
			if ( el.querySelectorAll( "[name=d]" ).length ) {
				rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
			}

			// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
			// IE8 throws error here and will not see later tests
			if ( el.querySelectorAll( ":enabled" ).length !== 2 ) {
				rbuggyQSA.push( ":enabled", ":disabled" );
			}

			// Support: IE9-11+
			// IE's :disabled selector does not pick up the children of disabled fieldsets
			docElem.appendChild( el ).disabled = true;
			if ( el.querySelectorAll( ":disabled" ).length !== 2 ) {
				rbuggyQSA.push( ":enabled", ":disabled" );
			}

			// Support: Opera 10 - 11 only
			// Opera 10-11 does not throw on post-comma invalid pseudos
			el.querySelectorAll( "*,:x" );
			rbuggyQSA.push( ",.*:" );
		} );
	}

	if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||
		docElem.webkitMatchesSelector ||
		docElem.mozMatchesSelector ||
		docElem.oMatchesSelector ||
		docElem.msMatchesSelector ) ) ) ) {

		assert( function( el ) {

			// Check to see if it's possible to do matchesSelector
			// on a disconnected node (IE 9)
			support.disconnectedMatch = matches.call( el, "*" );

			// This should fail with an exception
			// Gecko does not error, returns false instead
			matches.call( el, "[s!='']:x" );
			rbuggyMatches.push( "!=", pseudos );
		} );
	}

	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) );
	rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) );

	/* Contains
	---------------------------------------------------------------------- */
	hasCompare = rnative.test( docElem.compareDocumentPosition );

	// Element contains another
	// Purposefully self-exclusive
	// As in, an element does not contain itself
	contains = hasCompare || rnative.test( docElem.contains ) ?
		function( a, b ) {
			var adown = a.nodeType === 9 ? a.documentElement : a,
				bup = b && b.parentNode;
			return a === bup || !!( bup && bup.nodeType === 1 && (
				adown.contains ?
					adown.contains( bup ) :
					a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
			) );
		} :
		function( a, b ) {
			if ( b ) {
				while ( ( b = b.parentNode ) ) {
					if ( b === a ) {
						return true;
					}
				}
			}
			return false;
		};

	/* Sorting
	---------------------------------------------------------------------- */

	// Document order sorting
	sortOrder = hasCompare ?
	function( a, b ) {

		// Flag for duplicate removal
		if ( a === b ) {
			hasDuplicate = true;
			return 0;
		}

		// Sort on method existence if only one input has compareDocumentPosition
		var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
		if ( compare ) {
			return compare;
		}

		// Calculate position if both inputs belong to the same document
		// Support: IE 11+, Edge 17 - 18+
		// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
		// two documents; shallow comparisons work.
		// eslint-disable-next-line eqeqeq
		compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?
			a.compareDocumentPosition( b ) :

			// Otherwise we know they are disconnected
			1;

		// Disconnected nodes
		if ( compare & 1 ||
			( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {

			// Choose the first element that is related to our preferred document
			// Support: IE 11+, Edge 17 - 18+
			// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
			// two documents; shallow comparisons work.
			// eslint-disable-next-line eqeqeq
			if ( a == document || a.ownerDocument == preferredDoc &&
				contains( preferredDoc, a ) ) {
				return -1;
			}

			// Support: IE 11+, Edge 17 - 18+
			// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
			// two documents; shallow comparisons work.
			// eslint-disable-next-line eqeqeq
			if ( b == document || b.ownerDocument == preferredDoc &&
				contains( preferredDoc, b ) ) {
				return 1;
			}

			// Maintain original order
			return sortInput ?
				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
				0;
		}

		return compare & 4 ? -1 : 1;
	} :
	function( a, b ) {

		// Exit early if the nodes are identical
		if ( a === b ) {
			hasDuplicate = true;
			return 0;
		}

		var cur,
			i = 0,
			aup = a.parentNode,
			bup = b.parentNode,
			ap = [ a ],
			bp = [ b ];

		// Parentless nodes are either documents or disconnected
		if ( !aup || !bup ) {

			// Support: IE 11+, Edge 17 - 18+
			// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
			// two documents; shallow comparisons work.
			/* eslint-disable eqeqeq */
			return a == document ? -1 :
				b == document ? 1 :
				/* eslint-enable eqeqeq */
				aup ? -1 :
				bup ? 1 :
				sortInput ?
				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
				0;

		// If the nodes are siblings, we can do a quick check
		} else if ( aup === bup ) {
			return siblingCheck( a, b );
		}

		// Otherwise we need full lists of their ancestors for comparison
		cur = a;
		while ( ( cur = cur.parentNode ) ) {
			ap.unshift( cur );
		}
		cur = b;
		while ( ( cur = cur.parentNode ) ) {
			bp.unshift( cur );
		}

		// Walk down the tree looking for a discrepancy
		while ( ap[ i ] === bp[ i ] ) {
			i++;
		}

		return i ?

			// Do a sibling check if the nodes have a common ancestor
			siblingCheck( ap[ i ], bp[ i ] ) :

			// Otherwise nodes in our document sort first
			// Support: IE 11+, Edge 17 - 18+
			// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
			// two documents; shallow comparisons work.
			/* eslint-disable eqeqeq */
			ap[ i ] == preferredDoc ? -1 :
			bp[ i ] == preferredDoc ? 1 :
			/* eslint-enable eqeqeq */
			0;
	};

	return document;
};

Sizzle.matches = function( expr, elements ) {
	return Sizzle( expr, null, null, elements );
};

Sizzle.matchesSelector = function( elem, expr ) {
	setDocument( elem );

	if ( support.matchesSelector && documentIsHTML &&
		!nonnativeSelectorCache[ expr + " " ] &&
		( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
		( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {

		try {
			var ret = matches.call( elem, expr );

			// IE 9's matchesSelector returns false on disconnected nodes
			if ( ret || support.disconnectedMatch ||

				// As well, disconnected nodes are said to be in a document
				// fragment in IE 9
				elem.document && elem.document.nodeType !== 11 ) {
				return ret;
			}
		} catch ( e ) {
			nonnativeSelectorCache( expr, true );
		}
	}

	return Sizzle( expr, document, null, [ elem ] ).length > 0;
};

Sizzle.contains = function( context, elem ) {

	// Set document vars if needed
	// Support: IE 11+, Edge 17 - 18+
	// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
	// two documents; shallow comparisons work.
	// eslint-disable-next-line eqeqeq
	if ( ( context.ownerDocument || context ) != document ) {
		setDocument( context );
	}
	return contains( context, elem );
};

Sizzle.attr = function( elem, name ) {

	// Set document vars if needed
	// Support: IE 11+, Edge 17 - 18+
	// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
	// two documents; shallow comparisons work.
	// eslint-disable-next-line eqeqeq
	if ( ( elem.ownerDocument || elem ) != document ) {
		setDocument( elem );
	}

	var fn = Expr.attrHandle[ name.toLowerCase() ],

		// Don't get fooled by Object.prototype properties (jQuery #13807)
		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
			fn( elem, name, !documentIsHTML ) :
			undefined;

	return val !== undefined ?
		val :
		support.attributes || !documentIsHTML ?
			elem.getAttribute( name ) :
			( val = elem.getAttributeNode( name ) ) && val.specified ?
				val.value :
				null;
};

Sizzle.escape = function( sel ) {
	return ( sel + "" ).replace( rcssescape, fcssescape );
};

Sizzle.error = function( msg ) {
	throw new Error( "Syntax error, unrecognized expression: " + msg );
};

/**
 * Document sorting and removing duplicates
 * @param {ArrayLike} results
 */
Sizzle.uniqueSort = function( results ) {
	var elem,
		duplicates = [],
		j = 0,
		i = 0;

	// Unless we *know* we can detect duplicates, assume their presence
	hasDuplicate = !support.detectDuplicates;
	sortInput = !support.sortStable && results.slice( 0 );
	results.sort( sortOrder );

	if ( hasDuplicate ) {
		while ( ( elem = results[ i++ ] ) ) {
			if ( elem === results[ i ] ) {
				j = duplicates.push( i );
			}
		}
		while ( j-- ) {
			results.splice( duplicates[ j ], 1 );
		}
	}

	// Clear input after sorting to release objects
	// See https://github.com/jquery/sizzle/pull/225
	sortInput = null;

	return results;
};

/**
 * Utility function for retrieving the text value of an array of DOM nodes
 * @param {Array|Element} elem
 */
getText = Sizzle.getText = function( elem ) {
	var node,
		ret = "",
		i = 0,
		nodeType = elem.nodeType;

	if ( !nodeType ) {

		// If no nodeType, this is expected to be an array
		while ( ( node = elem[ i++ ] ) ) {

			// Do not traverse comment nodes
			ret += getText( node );
		}
	} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {

		// Use textContent for elements
		// innerText usage removed for consistency of new lines (jQuery #11153)
		if ( typeof elem.textContent === "string" ) {
			return elem.textContent;
		} else {

			// Traverse its children
			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
				ret += getText( elem );
			}
		}
	} else if ( nodeType === 3 || nodeType === 4 ) {
		return elem.nodeValue;
	}

	// Do not include comment or processing instruction nodes

	return ret;
};

Expr = Sizzle.selectors = {

	// Can be adjusted by the user
	cacheLength: 50,

	createPseudo: markFunction,

	match: matchExpr,

	attrHandle: {},

	find: {},

	relative: {
		">": { dir: "parentNode", first: true },
		" ": { dir: "parentNode" },
		"+": { dir: "previousSibling", first: true },
		"~": { dir: "previousSibling" }
	},

	preFilter: {
		"ATTR": function( match ) {
			match[ 1 ] = match[ 1 ].replace( runescape, funescape );

			// Move the given value to match[3] whether quoted or unquoted
			match[ 3 ] = ( match[ 3 ] || match[ 4 ] ||
				match[ 5 ] || "" ).replace( runescape, funescape );

			if ( match[ 2 ] === "~=" ) {
				match[ 3 ] = " " + match[ 3 ] + " ";
			}

			return match.slice( 0, 4 );
		},

		"CHILD": function( match ) {

			/* matches from matchExpr["CHILD"]
				1 type (only|nth|...)
				2 what (child|of-type)
				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
				4 xn-component of xn+y argument ([+-]?\d*n|)
				5 sign of xn-component
				6 x of xn-component
				7 sign of y-component
				8 y of y-component
			*/
			match[ 1 ] = match[ 1 ].toLowerCase();

			if ( match[ 1 ].slice( 0, 3 ) === "nth" ) {

				// nth-* requires argument
				if ( !match[ 3 ] ) {
					Sizzle.error( match[ 0 ] );
				}

				// numeric x and y parameters for Expr.filter.CHILD
				// remember that false/true cast respectively to 0/1
				match[ 4 ] = +( match[ 4 ] ?
					match[ 5 ] + ( match[ 6 ] || 1 ) :
					2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) );
				match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" );

				// other types prohibit arguments
			} else if ( match[ 3 ] ) {
				Sizzle.error( match[ 0 ] );
			}

			return match;
		},

		"PSEUDO": function( match ) {
			var excess,
				unquoted = !match[ 6 ] && match[ 2 ];

			if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) {
				return null;
			}

			// Accept quoted arguments as-is
			if ( match[ 3 ] ) {
				match[ 2 ] = match[ 4 ] || match[ 5 ] || "";

			// Strip excess characters from unquoted arguments
			} else if ( unquoted && rpseudo.test( unquoted ) &&

				// Get excess from tokenize (recursively)
				( excess = tokenize( unquoted, true ) ) &&

				// advance to the next closing parenthesis
				( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) {

				// excess is a negative index
				match[ 0 ] = match[ 0 ].slice( 0, excess );
				match[ 2 ] = unquoted.slice( 0, excess );
			}

			// Return only captures needed by the pseudo filter method (type and argument)
			return match.slice( 0, 3 );
		}
	},

	filter: {

		"TAG": function( nodeNameSelector ) {
			var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
			return nodeNameSelector === "*" ?
				function() {
					return true;
				} :
				function( elem ) {
					return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
				};
		},

		"CLASS": function( className ) {
			var pattern = classCache[ className + " " ];

			return pattern ||
				( pattern = new RegExp( "(^|" + whitespace +
					")" + className + "(" + whitespace + "|$)" ) ) && classCache(
						className, function( elem ) {
							return pattern.test(
								typeof elem.className === "string" && elem.className ||
								typeof elem.getAttribute !== "undefined" &&
									elem.getAttribute( "class" ) ||
								""
							);
				} );
		},

		"ATTR": function( name, operator, check ) {
			return function( elem ) {
				var result = Sizzle.attr( elem, name );

				if ( result == null ) {
					return operator === "!=";
				}
				if ( !operator ) {
					return true;
				}

				result += "";

				/* eslint-disable max-len */

				return operator === "=" ? result === check :
					operator === "!=" ? result !== check :
					operator === "^=" ? check && result.indexOf( check ) === 0 :
					operator === "*=" ? check && result.indexOf( check ) > -1 :
					operator === "$=" ? check && result.slice( -check.length ) === check :
					operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
					operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
					false;
				/* eslint-enable max-len */

			};
		},

		"CHILD": function( type, what, _argument, first, last ) {
			var simple = type.slice( 0, 3 ) !== "nth",
				forward = type.slice( -4 ) !== "last",
				ofType = what === "of-type";

			return first === 1 && last === 0 ?

				// Shortcut for :nth-*(n)
				function( elem ) {
					return !!elem.parentNode;
				} :

				function( elem, _context, xml ) {
					var cache, uniqueCache, outerCache, node, nodeIndex, start,
						dir = simple !== forward ? "nextSibling" : "previousSibling",
						parent = elem.parentNode,
						name = ofType && elem.nodeName.toLowerCase(),
						useCache = !xml && !ofType,
						diff = false;

					if ( parent ) {

						// :(first|last|only)-(child|of-type)
						if ( simple ) {
							while ( dir ) {
								node = elem;
								while ( ( node = node[ dir ] ) ) {
									if ( ofType ?
										node.nodeName.toLowerCase() === name :
										node.nodeType === 1 ) {

										return false;
									}
								}

								// Reverse direction for :only-* (if we haven't yet done so)
								start = dir = type === "only" && !start && "nextSibling";
							}
							return true;
						}

						start = [ forward ? parent.firstChild : parent.lastChild ];

						// non-xml :nth-child(...) stores cache data on `parent`
						if ( forward && useCache ) {

							// Seek `elem` from a previously-cached index

							// ...in a gzip-friendly way
							node = parent;
							outerCache = node[ expando ] || ( node[ expando ] = {} );

							// Support: IE <9 only
							// Defend against cloned attroperties (jQuery gh-1709)
							uniqueCache = outerCache[ node.uniqueID ] ||
								( outerCache[ node.uniqueID ] = {} );

							cache = uniqueCache[ type ] || [];
							nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
							diff = nodeIndex && cache[ 2 ];
							node = nodeIndex && parent.childNodes[ nodeIndex ];

							while ( ( node = ++nodeIndex && node && node[ dir ] ||

								// Fallback to seeking `elem` from the start
								( diff = nodeIndex = 0 ) || start.pop() ) ) {

								// When found, cache indexes on `parent` and break
								if ( node.nodeType === 1 && ++diff && node === elem ) {
									uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
									break;
								}
							}

						} else {

							// Use previously-cached element index if available
							if ( useCache ) {

								// ...in a gzip-friendly way
								node = elem;
								outerCache = node[ expando ] || ( node[ expando ] = {} );

								// Support: IE <9 only
								// Defend against cloned attroperties (jQuery gh-1709)
								uniqueCache = outerCache[ node.uniqueID ] ||
									( outerCache[ node.uniqueID ] = {} );

								cache = uniqueCache[ type ] || [];
								nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
								diff = nodeIndex;
							}

							// xml :nth-child(...)
							// or :nth-last-child(...) or :nth(-last)?-of-type(...)
							if ( diff === false ) {

								// Use the same loop as above to seek `elem` from the start
								while ( ( node = ++nodeIndex && node && node[ dir ] ||
									( diff = nodeIndex = 0 ) || start.pop() ) ) {

									if ( ( ofType ?
										node.nodeName.toLowerCase() === name :
										node.nodeType === 1 ) &&
										++diff ) {

										// Cache the index of each encountered element
										if ( useCache ) {
											outerCache = node[ expando ] ||
												( node[ expando ] = {} );

											// Support: IE <9 only
											// Defend against cloned attroperties (jQuery gh-1709)
											uniqueCache = outerCache[ node.uniqueID ] ||
												( outerCache[ node.uniqueID ] = {} );

											uniqueCache[ type ] = [ dirruns, diff ];
										}

										if ( node === elem ) {
											break;
										}
									}
								}
							}
						}

						// Incorporate the offset, then check against cycle size
						diff -= last;
						return diff === first || ( diff % first === 0 && diff / first >= 0 );
					}
				};
		},

		"PSEUDO": function( pseudo, argument ) {

			// pseudo-class names are case-insensitive
			// http://www.w3.org/TR/selectors/#pseudo-classes
			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
			// Remember that setFilters inherits from pseudos
			var args,
				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
					Sizzle.error( "unsupported pseudo: " + pseudo );

			// The user may use createPseudo to indicate that
			// arguments are needed to create the filter function
			// just as Sizzle does
			if ( fn[ expando ] ) {
				return fn( argument );
			}

			// But maintain support for old signatures
			if ( fn.length > 1 ) {
				args = [ pseudo, pseudo, "", argument ];
				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
					markFunction( function( seed, matches ) {
						var idx,
							matched = fn( seed, argument ),
							i = matched.length;
						while ( i-- ) {
							idx = indexOf( seed, matched[ i ] );
							seed[ idx ] = !( matches[ idx ] = matched[ i ] );
						}
					} ) :
					function( elem ) {
						return fn( elem, 0, args );
					};
			}

			return fn;
		}
	},

	pseudos: {

		// Potentially complex pseudos
		"not": markFunction( function( selector ) {

			// Trim the selector passed to compile
			// to avoid treating leading and trailing
			// spaces as combinators
			var input = [],
				results = [],
				matcher = compile( selector.replace( rtrim, "$1" ) );

			return matcher[ expando ] ?
				markFunction( function( seed, matches, _context, xml ) {
					var elem,
						unmatched = matcher( seed, null, xml, [] ),
						i = seed.length;

					// Match elements unmatched by `matcher`
					while ( i-- ) {
						if ( ( elem = unmatched[ i ] ) ) {
							seed[ i ] = !( matches[ i ] = elem );
						}
					}
				} ) :
				function( elem, _context, xml ) {
					input[ 0 ] = elem;
					matcher( input, null, xml, results );

					// Don't keep the element (issue #299)
					input[ 0 ] = null;
					return !results.pop();
				};
		} ),

		"has": markFunction( function( selector ) {
			return function( elem ) {
				return Sizzle( selector, elem ).length > 0;
			};
		} ),

		"contains": markFunction( function( text ) {
			text = text.replace( runescape, funescape );
			return function( elem ) {
				return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;
			};
		} ),

		// "Whether an element is represented by a :lang() selector
		// is based solely on the element's language value
		// being equal to the identifier C,
		// or beginning with the identifier C immediately followed by "-".
		// The matching of C against the element's language value is performed case-insensitively.
		// The identifier C does not have to be a valid language name."
		// http://www.w3.org/TR/selectors/#lang-pseudo
		"lang": markFunction( function( lang ) {

			// lang value must be a valid identifier
			if ( !ridentifier.test( lang || "" ) ) {
				Sizzle.error( "unsupported lang: " + lang );
			}
			lang = lang.replace( runescape, funescape ).toLowerCase();
			return function( elem ) {
				var elemLang;
				do {
					if ( ( elemLang = documentIsHTML ?
						elem.lang :
						elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) {

						elemLang = elemLang.toLowerCase();
						return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
					}
				} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );
				return false;
			};
		} ),

		// Miscellaneous
		"target": function( elem ) {
			var hash = window.location && window.location.hash;
			return hash && hash.slice( 1 ) === elem.id;
		},

		"root": function( elem ) {
			return elem === docElem;
		},

		"focus": function( elem ) {
			return elem === document.activeElement &&
				( !document.hasFocus || document.hasFocus() ) &&
				!!( elem.type || elem.href || ~elem.tabIndex );
		},

		// Boolean properties
		"enabled": createDisabledPseudo( false ),
		"disabled": createDisabledPseudo( true ),

		"checked": function( elem ) {

			// In CSS3, :checked should return both checked and selected elements
			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
			var nodeName = elem.nodeName.toLowerCase();
			return ( nodeName === "input" && !!elem.checked ) ||
				( nodeName === "option" && !!elem.selected );
		},

		"selected": function( elem ) {

			// Accessing this property makes selected-by-default
			// options in Safari work properly
			if ( elem.parentNode ) {
				// eslint-disable-next-line no-unused-expressions
				elem.parentNode.selectedIndex;
			}

			return elem.selected === true;
		},

		// Contents
		"empty": function( elem ) {

			// http://www.w3.org/TR/selectors/#empty-pseudo
			// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
			//   but not by others (comment: 8; processing instruction: 7; etc.)
			// nodeType < 6 works because attributes (2) do not appear as children
			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
				if ( elem.nodeType < 6 ) {
					return false;
				}
			}
			return true;
		},

		"parent": function( elem ) {
			return !Expr.pseudos[ "empty" ]( elem );
		},

		// Element/input types
		"header": function( elem ) {
			return rheader.test( elem.nodeName );
		},

		"input": function( elem ) {
			return rinputs.test( elem.nodeName );
		},

		"button": function( elem ) {
			var name = elem.nodeName.toLowerCase();
			return name === "input" && elem.type === "button" || name === "button";
		},

		"text": function( elem ) {
			var attr;
			return elem.nodeName.toLowerCase() === "input" &&
				elem.type === "text" &&

				// Support: IE<8
				// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
				( ( attr = elem.getAttribute( "type" ) ) == null ||
					attr.toLowerCase() === "text" );
		},

		// Position-in-collection
		"first": createPositionalPseudo( function() {
			return [ 0 ];
		} ),

		"last": createPositionalPseudo( function( _matchIndexes, length ) {
			return [ length - 1 ];
		} ),

		"eq": createPositionalPseudo( function( _matchIndexes, length, argument ) {
			return [ argument < 0 ? argument + length : argument ];
		} ),

		"even": createPositionalPseudo( function( matchIndexes, length ) {
			var i = 0;
			for ( ; i < length; i += 2 ) {
				matchIndexes.push( i );
			}
			return matchIndexes;
		} ),

		"odd": createPositionalPseudo( function( matchIndexes, length ) {
			var i = 1;
			for ( ; i < length; i += 2 ) {
				matchIndexes.push( i );
			}
			return matchIndexes;
		} ),

		"lt": createPositionalPseudo( function( matchIndexes, length, argument ) {
			var i = argument < 0 ?
				argument + length :
				argument > length ?
					length :
					argument;
			for ( ; --i >= 0; ) {
				matchIndexes.push( i );
			}
			return matchIndexes;
		} ),

		"gt": createPositionalPseudo( function( matchIndexes, length, argument ) {
			var i = argument < 0 ? argument + length : argument;
			for ( ; ++i < length; ) {
				matchIndexes.push( i );
			}
			return matchIndexes;
		} )
	}
};

Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ];

// Add button/input type pseudos
for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
	Expr.pseudos[ i ] = createInputPseudo( i );
}
for ( i in { submit: true, reset: true } ) {
	Expr.pseudos[ i ] = createButtonPseudo( i );
}

// Easy API for creating new setFilters
function setFilters() {}
setFilters.prototype = Expr.filters = Expr.pseudos;
Expr.setFilters = new setFilters();

tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
	var matched, match, tokens, type,
		soFar, groups, preFilters,
		cached = tokenCache[ selector + " " ];

	if ( cached ) {
		return parseOnly ? 0 : cached.slice( 0 );
	}

	soFar = selector;
	groups = [];
	preFilters = Expr.preFilter;

	while ( soFar ) {

		// Comma and first run
		if ( !matched || ( match = rcomma.exec( soFar ) ) ) {
			if ( match ) {

				// Don't consume trailing commas as valid
				soFar = soFar.slice( match[ 0 ].length ) || soFar;
			}
			groups.push( ( tokens = [] ) );
		}

		matched = false;

		// Combinators
		if ( ( match = rcombinators.exec( soFar ) ) ) {
			matched = match.shift();
			tokens.push( {
				value: matched,

				// Cast descendant combinators to space
				type: match[ 0 ].replace( rtrim, " " )
			} );
			soFar = soFar.slice( matched.length );
		}

		// Filters
		for ( type in Expr.filter ) {
			if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||
				( match = preFilters[ type ]( match ) ) ) ) {
				matched = match.shift();
				tokens.push( {
					value: matched,
					type: type,
					matches: match
				} );
				soFar = soFar.slice( matched.length );
			}
		}

		if ( !matched ) {
			break;
		}
	}

	// Return the length of the invalid excess
	// if we're just parsing
	// Otherwise, throw an error or return tokens
	return parseOnly ?
		soFar.length :
		soFar ?
			Sizzle.error( selector ) :

			// Cache the tokens
			tokenCache( selector, groups ).slice( 0 );
};

function toSelector( tokens ) {
	var i = 0,
		len = tokens.length,
		selector = "";
	for ( ; i < len; i++ ) {
		selector += tokens[ i ].value;
	}
	return selector;
}

function addCombinator( matcher, combinator, base ) {
	var dir = combinator.dir,
		skip = combinator.next,
		key = skip || dir,
		checkNonElements = base && key === "parentNode",
		doneName = done++;

	return combinator.first ?

		// Check against closest ancestor/preceding element
		function( elem, context, xml ) {
			while ( ( elem = elem[ dir ] ) ) {
				if ( elem.nodeType === 1 || checkNonElements ) {
					return matcher( elem, context, xml );
				}
			}
			return false;
		} :

		// Check against all ancestor/preceding elements
		function( elem, context, xml ) {
			var oldCache, uniqueCache, outerCache,
				newCache = [ dirruns, doneName ];

			// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
			if ( xml ) {
				while ( ( elem = elem[ dir ] ) ) {
					if ( elem.nodeType === 1 || checkNonElements ) {
						if ( matcher( elem, context, xml ) ) {
							return true;
						}
					}
				}
			} else {
				while ( ( elem = elem[ dir ] ) ) {
					if ( elem.nodeType === 1 || checkNonElements ) {
						outerCache = elem[ expando ] || ( elem[ expando ] = {} );

						// Support: IE <9 only
						// Defend against cloned attroperties (jQuery gh-1709)
						uniqueCache = outerCache[ elem.uniqueID ] ||
							( outerCache[ elem.uniqueID ] = {} );

						if ( skip && skip === elem.nodeName.toLowerCase() ) {
							elem = elem[ dir ] || elem;
						} else if ( ( oldCache = uniqueCache[ key ] ) &&
							oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {

							// Assign to newCache so results back-propagate to previous elements
							return ( newCache[ 2 ] = oldCache[ 2 ] );
						} else {

							// Reuse newcache so results back-propagate to previous elements
							uniqueCache[ key ] = newCache;

							// A match means we're done; a fail means we have to keep checking
							if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {
								return true;
							}
						}
					}
				}
			}
			return false;
		};
}

function elementMatcher( matchers ) {
	return matchers.length > 1 ?
		function( elem, context, xml ) {
			var i = matchers.length;
			while ( i-- ) {
				if ( !matchers[ i ]( elem, context, xml ) ) {
					return false;
				}
			}
			return true;
		} :
		matchers[ 0 ];
}

function multipleContexts( selector, contexts, results ) {
	var i = 0,
		len = contexts.length;
	for ( ; i < len; i++ ) {
		Sizzle( selector, contexts[ i ], results );
	}
	return results;
}

function condense( unmatched, map, filter, context, xml ) {
	var elem,
		newUnmatched = [],
		i = 0,
		len = unmatched.length,
		mapped = map != null;

	for ( ; i < len; i++ ) {
		if ( ( elem = unmatched[ i ] ) ) {
			if ( !filter || filter( elem, context, xml ) ) {
				newUnmatched.push( elem );
				if ( mapped ) {
					map.push( i );
				}
			}
		}
	}

	return newUnmatched;
}

function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
	if ( postFilter && !postFilter[ expando ] ) {
		postFilter = setMatcher( postFilter );
	}
	if ( postFinder && !postFinder[ expando ] ) {
		postFinder = setMatcher( postFinder, postSelector );
	}
	return markFunction( function( seed, results, context, xml ) {
		var temp, i, elem,
			preMap = [],
			postMap = [],
			preexisting = results.length,

			// Get initial elements from seed or context
			elems = seed || multipleContexts(
				selector || "*",
				context.nodeType ? [ context ] : context,
				[]
			),

			// Prefilter to get matcher input, preserving a map for seed-results synchronization
			matcherIn = preFilter && ( seed || !selector ) ?
				condense( elems, preMap, preFilter, context, xml ) :
				elems,

			matcherOut = matcher ?

				// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
				postFinder || ( seed ? preFilter : preexisting || postFilter ) ?

					// ...intermediate processing is necessary
					[] :

					// ...otherwise use results directly
					results :
				matcherIn;

		// Find primary matches
		if ( matcher ) {
			matcher( matcherIn, matcherOut, context, xml );
		}

		// Apply postFilter
		if ( postFilter ) {
			temp = condense( matcherOut, postMap );
			postFilter( temp, [], context, xml );

			// Un-match failing elements by moving them back to matcherIn
			i = temp.length;
			while ( i-- ) {
				if ( ( elem = temp[ i ] ) ) {
					matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );
				}
			}
		}

		if ( seed ) {
			if ( postFinder || preFilter ) {
				if ( postFinder ) {

					// Get the final matcherOut by condensing this intermediate into postFinder contexts
					temp = [];
					i = matcherOut.length;
					while ( i-- ) {
						if ( ( elem = matcherOut[ i ] ) ) {

							// Restore matcherIn since elem is not yet a final match
							temp.push( ( matcherIn[ i ] = elem ) );
						}
					}
					postFinder( null, ( matcherOut = [] ), temp, xml );
				}

				// Move matched elements from seed to results to keep them synchronized
				i = matcherOut.length;
				while ( i-- ) {
					if ( ( elem = matcherOut[ i ] ) &&
						( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {

						seed[ temp ] = !( results[ temp ] = elem );
					}
				}
			}

		// Add elements to results, through postFinder if defined
		} else {
			matcherOut = condense(
				matcherOut === results ?
					matcherOut.splice( preexisting, matcherOut.length ) :
					matcherOut
			);
			if ( postFinder ) {
				postFinder( null, results, matcherOut, xml );
			} else {
				push.apply( results, matcherOut );
			}
		}
	} );
}

function matcherFromTokens( tokens ) {
	var checkContext, matcher, j,
		len = tokens.length,
		leadingRelative = Expr.relative[ tokens[ 0 ].type ],
		implicitRelative = leadingRelative || Expr.relative[ " " ],
		i = leadingRelative ? 1 : 0,

		// The foundational matcher ensures that elements are reachable from top-level context(s)
		matchContext = addCombinator( function( elem ) {
			return elem === checkContext;
		}, implicitRelative, true ),
		matchAnyContext = addCombinator( function( elem ) {
			return indexOf( checkContext, elem ) > -1;
		}, implicitRelative, true ),
		matchers = [ function( elem, context, xml ) {
			var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
				( checkContext = context ).nodeType ?
					matchContext( elem, context, xml ) :
					matchAnyContext( elem, context, xml ) );

			// Avoid hanging onto element (issue #299)
			checkContext = null;
			return ret;
		} ];

	for ( ; i < len; i++ ) {
		if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {
			matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];
		} else {
			matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );

			// Return special upon seeing a positional matcher
			if ( matcher[ expando ] ) {

				// Find the next relative operator (if any) for proper handling
				j = ++i;
				for ( ; j < len; j++ ) {
					if ( Expr.relative[ tokens[ j ].type ] ) {
						break;
					}
				}
				return setMatcher(
					i > 1 && elementMatcher( matchers ),
					i > 1 && toSelector(

					// If the preceding token was a descendant combinator, insert an implicit any-element `*`
					tokens
						.slice( 0, i - 1 )
						.concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } )
					).replace( rtrim, "$1" ),
					matcher,
					i < j && matcherFromTokens( tokens.slice( i, j ) ),
					j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),
					j < len && toSelector( tokens )
				);
			}
			matchers.push( matcher );
		}
	}

	return elementMatcher( matchers );
}

function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
	var bySet = setMatchers.length > 0,
		byElement = elementMatchers.length > 0,
		superMatcher = function( seed, context, xml, results, outermost ) {
			var elem, j, matcher,
				matchedCount = 0,
				i = "0",
				unmatched = seed && [],
				setMatched = [],
				contextBackup = outermostContext,

				// We must always have either seed elements or outermost context
				elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ),

				// Use integer dirruns iff this is the outermost matcher
				dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),
				len = elems.length;

			if ( outermost ) {

				// Support: IE 11+, Edge 17 - 18+
				// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
				// two documents; shallow comparisons work.
				// eslint-disable-next-line eqeqeq
				outermostContext = context == document || context || outermost;
			}

			// Add elements passing elementMatchers directly to results
			// Support: IE<9, Safari
			// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
			for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {
				if ( byElement && elem ) {
					j = 0;

					// Support: IE 11+, Edge 17 - 18+
					// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
					// two documents; shallow comparisons work.
					// eslint-disable-next-line eqeqeq
					if ( !context && elem.ownerDocument != document ) {
						setDocument( elem );
						xml = !documentIsHTML;
					}
					while ( ( matcher = elementMatchers[ j++ ] ) ) {
						if ( matcher( elem, context || document, xml ) ) {
							results.push( elem );
							break;
						}
					}
					if ( outermost ) {
						dirruns = dirrunsUnique;
					}
				}

				// Track unmatched elements for set filters
				if ( bySet ) {

					// They will have gone through all possible matchers
					if ( ( elem = !matcher && elem ) ) {
						matchedCount--;
					}

					// Lengthen the array for every element, matched or not
					if ( seed ) {
						unmatched.push( elem );
					}
				}
			}

			// `i` is now the count of elements visited above, and adding it to `matchedCount`
			// makes the latter nonnegative.
			matchedCount += i;

			// Apply set filters to unmatched elements
			// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
			// equals `i`), unless we didn't visit _any_ elements in the above loop because we have
			// no element matchers and no seed.
			// Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
			// case, which will result in a "00" `matchedCount` that differs from `i` but is also
			// numerically zero.
			if ( bySet && i !== matchedCount ) {
				j = 0;
				while ( ( matcher = setMatchers[ j++ ] ) ) {
					matcher( unmatched, setMatched, context, xml );
				}

				if ( seed ) {

					// Reintegrate element matches to eliminate the need for sorting
					if ( matchedCount > 0 ) {
						while ( i-- ) {
							if ( !( unmatched[ i ] || setMatched[ i ] ) ) {
								setMatched[ i ] = pop.call( results );
							}
						}
					}

					// Discard index placeholder values to get only actual matches
					setMatched = condense( setMatched );
				}

				// Add matches to results
				push.apply( results, setMatched );

				// Seedless set matches succeeding multiple successful matchers stipulate sorting
				if ( outermost && !seed && setMatched.length > 0 &&
					( matchedCount + setMatchers.length ) > 1 ) {

					Sizzle.uniqueSort( results );
				}
			}

			// Override manipulation of globals by nested matchers
			if ( outermost ) {
				dirruns = dirrunsUnique;
				outermostContext = contextBackup;
			}

			return unmatched;
		};

	return bySet ?
		markFunction( superMatcher ) :
		superMatcher;
}

compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
	var i,
		setMatchers = [],
		elementMatchers = [],
		cached = compilerCache[ selector + " " ];

	if ( !cached ) {

		// Generate a function of recursive functions that can be used to check each element
		if ( !match ) {
			match = tokenize( selector );
		}
		i = match.length;
		while ( i-- ) {
			cached = matcherFromTokens( match[ i ] );
			if ( cached[ expando ] ) {
				setMatchers.push( cached );
			} else {
				elementMatchers.push( cached );
			}
		}

		// Cache the compiled function
		cached = compilerCache(
			selector,
			matcherFromGroupMatchers( elementMatchers, setMatchers )
		);

		// Save selector and tokenization
		cached.selector = selector;
	}
	return cached;
};

/**
 * A low-level selection function that works with Sizzle's compiled
 *  selector functions
 * @param {String|Function} selector A selector or a pre-compiled
 *  selector function built with Sizzle.compile
 * @param {Element} context
 * @param {Array} [results]
 * @param {Array} [seed] A set of elements to match against
 */
select = Sizzle.select = function( selector, context, results, seed ) {
	var i, tokens, token, type, find,
		compiled = typeof selector === "function" && selector,
		match = !seed && tokenize( ( selector = compiled.selector || selector ) );

	results = results || [];

	// Try to minimize operations if there is only one selector in the list and no seed
	// (the latter of which guarantees us context)
	if ( match.length === 1 ) {

		// Reduce context if the leading compound selector is an ID
		tokens = match[ 0 ] = match[ 0 ].slice( 0 );
		if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" &&
			context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {

			context = ( Expr.find[ "ID" ]( token.matches[ 0 ]
				.replace( runescape, funescape ), context ) || [] )[ 0 ];
			if ( !context ) {
				return results;

			// Precompiled matchers will still verify ancestry, so step up a level
			} else if ( compiled ) {
				context = context.parentNode;
			}

			selector = selector.slice( tokens.shift().value.length );
		}

		// Fetch a seed set for right-to-left matching
		i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length;
		while ( i-- ) {
			token = tokens[ i ];

			// Abort if we hit a combinator
			if ( Expr.relative[ ( type = token.type ) ] ) {
				break;
			}
			if ( ( find = Expr.find[ type ] ) ) {

				// Search, expanding context for leading sibling combinators
				if ( ( seed = find(
					token.matches[ 0 ].replace( runescape, funescape ),
					rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||
						context
				) ) ) {

					// If seed is empty or no tokens remain, we can return early
					tokens.splice( i, 1 );
					selector = seed.length && toSelector( tokens );
					if ( !selector ) {
						push.apply( results, seed );
						return results;
					}

					break;
				}
			}
		}
	}

	// Compile and execute a filtering function if one is not provided
	// Provide `match` to avoid retokenization if we modified the selector above
	( compiled || compile( selector, match ) )(
		seed,
		context,
		!documentIsHTML,
		results,
		!context || rsibling.test( selector ) && testContext( context.parentNode ) || context
	);
	return results;
};

// One-time assignments

// Sort stability
support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando;

// Support: Chrome 14-35+
// Always assume duplicates if they aren't passed to the comparison function
support.detectDuplicates = !!hasDuplicate;

// Initialize against the default document
setDocument();

// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
// Detached nodes confoundingly follow *each other*
support.sortDetached = assert( function( el ) {

	// Should return 1, but returns 4 (following)
	return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1;
} );

// Support: IE<8
// Prevent attribute/property "interpolation"
// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
if ( !assert( function( el ) {
	el.innerHTML = "<a href='#'></a>";
	return el.firstChild.getAttribute( "href" ) === "#";
} ) ) {
	addHandle( "type|href|height|width", function( elem, name, isXML ) {
		if ( !isXML ) {
			return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
		}
	} );
}

// Support: IE<9
// Use defaultValue in place of getAttribute("value")
if ( !support.attributes || !assert( function( el ) {
	el.innerHTML = "<input/>";
	el.firstChild.setAttribute( "value", "" );
	return el.firstChild.getAttribute( "value" ) === "";
} ) ) {
	addHandle( "value", function( elem, _name, isXML ) {
		if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
			return elem.defaultValue;
		}
	} );
}

// Support: IE<9
// Use getAttributeNode to fetch booleans when getAttribute lies
if ( !assert( function( el ) {
	return el.getAttribute( "disabled" ) == null;
} ) ) {
	addHandle( booleans, function( elem, name, isXML ) {
		var val;
		if ( !isXML ) {
			return elem[ name ] === true ? name.toLowerCase() :
				( val = elem.getAttributeNode( name ) ) && val.specified ?
					val.value :
					null;
		}
	} );
}

return Sizzle;

} )( window );



jQuery.find = Sizzle;
jQuery.expr = Sizzle.selectors;

// Deprecated
jQuery.expr[ ":" ] = jQuery.expr.pseudos;
jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
jQuery.text = Sizzle.getText;
jQuery.isXMLDoc = Sizzle.isXML;
jQuery.contains = Sizzle.contains;
jQuery.escapeSelector = Sizzle.escape;




var dir = function( elem, dir, until ) {
	var matched = [],
		truncate = until !== undefined;

	while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
		if ( elem.nodeType === 1 ) {
			if ( truncate && jQuery( elem ).is( until ) ) {
				break;
			}
			matched.push( elem );
		}
	}
	return matched;
};


var siblings = function( n, elem ) {
	var matched = [];

	for ( ; n; n = n.nextSibling ) {
		if ( n.nodeType === 1 && n !== elem ) {
			matched.push( n );
		}
	}

	return matched;
};


var rneedsContext = jQuery.expr.match.needsContext;



function nodeName( elem, name ) {

	return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();

}
var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );



// Implement the identical functionality for filter and not
function winnow( elements, qualifier, not ) {
	if ( isFunction( qualifier ) ) {
		return jQuery.grep( elements, function( elem, i ) {
			return !!qualifier.call( elem, i, elem ) !== not;
		} );
	}

	// Single element
	if ( qualifier.nodeType ) {
		return jQuery.grep( elements, function( elem ) {
			return ( elem === qualifier ) !== not;
		} );
	}

	// Arraylike of elements (jQuery, arguments, Array)
	if ( typeof qualifier !== "string" ) {
		return jQuery.grep( elements, function( elem ) {
			return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
		} );
	}

	// Filtered directly for both simple and complex selectors
	return jQuery.filter( qualifier, elements, not );
}

jQuery.filter = function( expr, elems, not ) {
	var elem = elems[ 0 ];

	if ( not ) {
		expr = ":not(" + expr + ")";
	}

	if ( elems.length === 1 && elem.nodeType === 1 ) {
		return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
	}

	return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
		return elem.nodeType === 1;
	} ) );
};

jQuery.fn.extend( {
	find: function( selector ) {
		var i, ret,
			len = this.length,
			self = this;

		if ( typeof selector !== "string" ) {
			return this.pushStack( jQuery( selector ).filter( function() {
				for ( i = 0; i < len; i++ ) {
					if ( jQuery.contains( self[ i ], this ) ) {
						return true;
					}
				}
			} ) );
		}

		ret = this.pushStack( [] );

		for ( i = 0; i < len; i++ ) {
			jQuery.find( selector, self[ i ], ret );
		}

		return len > 1 ? jQuery.uniqueSort( ret ) : ret;
	},
	filter: function( selector ) {
		return this.pushStack( winnow( this, selector || [], false ) );
	},
	not: function( selector ) {
		return this.pushStack( winnow( this, selector || [], true ) );
	},
	is: function( selector ) {
		return !!winnow(
			this,

			// If this is a positional/relative selector, check membership in the returned set
			// so $("p:first").is("p:last") won't return true for a doc with two "p".
			typeof selector === "string" && rneedsContext.test( selector ) ?
				jQuery( selector ) :
				selector || [],
			false
		).length;
	}
} );


// Initialize a jQuery object


// A central reference to the root jQuery(document)
var rootjQuery,

	// A simple way to check for HTML strings
	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
	// Strict HTML recognition (#11290: must start with <)
	// Shortcut simple #id case for speed
	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,

	init = jQuery.fn.init = function( selector, context, root ) {
		var match, elem;

		// HANDLE: $(""), $(null), $(undefined), $(false)
		if ( !selector ) {
			return this;
		}

		// Method init() accepts an alternate rootjQuery
		// so migrate can support jQuery.sub (gh-2101)
		root = root || rootjQuery;

		// Handle HTML strings
		if ( typeof selector === "string" ) {
			if ( selector[ 0 ] === "<" &&
				selector[ selector.length - 1 ] === ">" &&
				selector.length >= 3 ) {

				// Assume that strings that start and end with <> are HTML and skip the regex check
				match = [ null, selector, null ];

			} else {
				match = rquickExpr.exec( selector );
			}

			// Match html or make sure no context is specified for #id
			if ( match && ( match[ 1 ] || !context ) ) {

				// HANDLE: $(html) -> $(array)
				if ( match[ 1 ] ) {
					context = context instanceof jQuery ? context[ 0 ] : context;

					// Option to run scripts is true for back-compat
					// Intentionally let the error be thrown if parseHTML is not present
					jQuery.merge( this, jQuery.parseHTML(
						match[ 1 ],
						context && context.nodeType ? context.ownerDocument || context : document,
						true
					) );

					// HANDLE: $(html, props)
					if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
						for ( match in context ) {

							// Properties of context are called as methods if possible
							if ( isFunction( this[ match ] ) ) {
								this[ match ]( context[ match ] );

							// ...and otherwise set as attributes
							} else {
								this.attr( match, context[ match ] );
							}
						}
					}

					return this;

				// HANDLE: $(#id)
				} else {
					elem = document.getElementById( match[ 2 ] );

					if ( elem ) {

						// Inject the element directly into the jQuery object
						this[ 0 ] = elem;
						this.length = 1;
					}
					return this;
				}

			// HANDLE: $(expr, $(...))
			} else if ( !context || context.jquery ) {
				return ( context || root ).find( selector );

			// HANDLE: $(expr, context)
			// (which is just equivalent to: $(context).find(expr)
			} else {
				return this.constructor( context ).find( selector );
			}

		// HANDLE: $(DOMElement)
		} else if ( selector.nodeType ) {
			this[ 0 ] = selector;
			this.length = 1;
			return this;

		// HANDLE: $(function)
		// Shortcut for document ready
		} else if ( isFunction( selector ) ) {
			return root.ready !== undefined ?
				root.ready( selector ) :

				// Execute immediately if ready is not present
				selector( jQuery );
		}

		return jQuery.makeArray( selector, this );
	};

// Give the init function the jQuery prototype for later instantiation
init.prototype = jQuery.fn;

// Initialize central reference
rootjQuery = jQuery( document );


var rparentsprev = /^(?:parents|prev(?:Until|All))/,

	// Methods guaranteed to produce a unique set when starting from a unique set
	guaranteedUnique = {
		children: true,
		contents: true,
		next: true,
		prev: true
	};

jQuery.fn.extend( {
	has: function( target ) {
		var targets = jQuery( target, this ),
			l = targets.length;

		return this.filter( function() {
			var i = 0;
			for ( ; i < l; i++ ) {
				if ( jQuery.contains( this, targets[ i ] ) ) {
					return true;
				}
			}
		} );
	},

	closest: function( selectors, context ) {
		var cur,
			i = 0,
			l = this.length,
			matched = [],
			targets = typeof selectors !== "string" && jQuery( selectors );

		// Positional selectors never match, since there's no _selection_ context
		if ( !rneedsContext.test( selectors ) ) {
			for ( ; i < l; i++ ) {
				for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {

					// Always skip document fragments
					if ( cur.nodeType < 11 && ( targets ?
						targets.index( cur ) > -1 :

						// Don't pass non-elements to Sizzle
						cur.nodeType === 1 &&
							jQuery.find.matchesSelector( cur, selectors ) ) ) {

						matched.push( cur );
						break;
					}
				}
			}
		}

		return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
	},

	// Determine the position of an element within the set
	index: function( elem ) {

		// No argument, return index in parent
		if ( !elem ) {
			return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
		}

		// Index in selector
		if ( typeof elem === "string" ) {
			return indexOf.call( jQuery( elem ), this[ 0 ] );
		}

		// Locate the position of the desired element
		return indexOf.call( this,

			// If it receives a jQuery object, the first element is used
			elem.jquery ? elem[ 0 ] : elem
		);
	},

	add: function( selector, context ) {
		return this.pushStack(
			jQuery.uniqueSort(
				jQuery.merge( this.get(), jQuery( selector, context ) )
			)
		);
	},

	addBack: function( selector ) {
		return this.add( selector == null ?
			this.prevObject : this.prevObject.filter( selector )
		);
	}
} );

function sibling( cur, dir ) {
	while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
	return cur;
}

jQuery.each( {
	parent: function( elem ) {
		var parent = elem.parentNode;
		return parent && parent.nodeType !== 11 ? parent : null;
	},
	parents: function( elem ) {
		return dir( elem, "parentNode" );
	},
	parentsUntil: function( elem, _i, until ) {
		return dir( elem, "parentNode", until );
	},
	next: function( elem ) {
		return sibling( elem, "nextSibling" );
	},
	prev: function( elem ) {
		return sibling( elem, "previousSibling" );
	},
	nextAll: function( elem ) {
		return dir( elem, "nextSibling" );
	},
	prevAll: function( elem ) {
		return dir( elem, "previousSibling" );
	},
	nextUntil: function( elem, _i, until ) {
		return dir( elem, "nextSibling", until );
	},
	prevUntil: function( elem, _i, until ) {
		return dir( elem, "previousSibling", until );
	},
	siblings: function( elem ) {
		return siblings( ( elem.parentNode || {} ).firstChild, elem );
	},
	children: function( elem ) {
		return siblings( elem.firstChild );
	},
	contents: function( elem ) {
		if ( elem.contentDocument != null &&

			// Support: IE 11+
			// <object> elements with no `data` attribute has an object
			// `contentDocument` with a `null` prototype.
			getProto( elem.contentDocument ) ) {

			return elem.contentDocument;
		}

		// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
		// Treat the template element as a regular one in browsers that
		// don't support it.
		if ( nodeName( elem, "template" ) ) {
			elem = elem.content || elem;
		}

		return jQuery.merge( [], elem.childNodes );
	}
}, function( name, fn ) {
	jQuery.fn[ name ] = function( until, selector ) {
		var matched = jQuery.map( this, fn, until );

		if ( name.slice( -5 ) !== "Until" ) {
			selector = until;
		}

		if ( selector && typeof selector === "string" ) {
			matched = jQuery.filter( selector, matched );
		}

		if ( this.length > 1 ) {

			// Remove duplicates
			if ( !guaranteedUnique[ name ] ) {
				jQuery.uniqueSort( matched );
			}

			// Reverse order for parents* and prev-derivatives
			if ( rparentsprev.test( name ) ) {
				matched.reverse();
			}
		}

		return this.pushStack( matched );
	};
} );
var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );



// Convert String-formatted options into Object-formatted ones
function createOptions( options ) {
	var object = {};
	jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
		object[ flag ] = true;
	} );
	return object;
}

/*
 * Create a callback list using the following parameters:
 *
 *	options: an optional list of space-separated options that will change how
 *			the callback list behaves or a more traditional option object
 *
 * By default a callback list will act like an event callback list and can be
 * "fired" multiple times.
 *
 * Possible options:
 *
 *	once:			will ensure the callback list can only be fired once (like a Deferred)
 *
 *	memory:			will keep track of previous values and will call any callback added
 *					after the list has been fired right away with the latest "memorized"
 *					values (like a Deferred)
 *
 *	unique:			will ensure a callback can only be added once (no duplicate in the list)
 *
 *	stopOnFalse:	interrupt callings when a callback returns false
 *
 */
jQuery.Callbacks = function( options ) {

	// Convert options from String-formatted to Object-formatted if needed
	// (we check in cache first)
	options = typeof options === "string" ?
		createOptions( options ) :
		jQuery.extend( {}, options );

	var // Flag to know if list is currently firing
		firing,

		// Last fire value for non-forgettable lists
		memory,

		// Flag to know if list was already fired
		fired,

		// Flag to prevent firing
		locked,

		// Actual callback list
		list = [],

		// Queue of execution data for repeatable lists
		queue = [],

		// Index of currently firing callback (modified by add/remove as needed)
		firingIndex = -1,

		// Fire callbacks
		fire = function() {

			// Enforce single-firing
			locked = locked || options.once;

			// Execute callbacks for all pending executions,
			// respecting firingIndex overrides and runtime changes
			fired = firing = true;
			for ( ; queue.length; firingIndex = -1 ) {
				memory = queue.shift();
				while ( ++firingIndex < list.length ) {

					// Run callback and check for early termination
					if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
						options.stopOnFalse ) {

						// Jump to end and forget the data so .add doesn't re-fire
						firingIndex = list.length;
						memory = false;
					}
				}
			}

			// Forget the data if we're done with it
			if ( !options.memory ) {
				memory = false;
			}

			firing = false;

			// Clean up if we're done firing for good
			if ( locked ) {

				// Keep an empty list if we have data for future add calls
				if ( memory ) {
					list = [];

				// Otherwise, this object is spent
				} else {
					list = "";
				}
			}
		},

		// Actual Callbacks object
		self = {

			// Add a callback or a collection of callbacks to the list
			add: function() {
				if ( list ) {

					// If we have memory from a past run, we should fire after adding
					if ( memory && !firing ) {
						firingIndex = list.length - 1;
						queue.push( memory );
					}

					( function add( args ) {
						jQuery.each( args, function( _, arg ) {
							if ( isFunction( arg ) ) {
								if ( !options.unique || !self.has( arg ) ) {
									list.push( arg );
								}
							} else if ( arg && arg.length && toType( arg ) !== "string" ) {

								// Inspect recursively
								add( arg );
							}
						} );
					} )( arguments );

					if ( memory && !firing ) {
						fire();
					}
				}
				return this;
			},

			// Remove a callback from the list
			remove: function() {
				jQuery.each( arguments, function( _, arg ) {
					var index;
					while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
						list.splice( index, 1 );

						// Handle firing indexes
						if ( index <= firingIndex ) {
							firingIndex--;
						}
					}
				} );
				return this;
			},

			// Check if a given callback is in the list.
			// If no argument is given, return whether or not list has callbacks attached.
			has: function( fn ) {
				return fn ?
					jQuery.inArray( fn, list ) > -1 :
					list.length > 0;
			},

			// Remove all callbacks from the list
			empty: function() {
				if ( list ) {
					list = [];
				}
				return this;
			},

			// Disable .fire and .add
			// Abort any current/pending executions
			// Clear all callbacks and values
			disable: function() {
				locked = queue = [];
				list = memory = "";
				return this;
			},
			disabled: function() {
				return !list;
			},

			// Disable .fire
			// Also disable .add unless we have memory (since it would have no effect)
			// Abort any pending executions
			lock: function() {
				locked = queue = [];
				if ( !memory && !firing ) {
					list = memory = "";
				}
				return this;
			},
			locked: function() {
				return !!locked;
			},

			// Call all callbacks with the given context and arguments
			fireWith: function( context, args ) {
				if ( !locked ) {
					args = args || [];
					args = [ context, args.slice ? args.slice() : args ];
					queue.push( args );
					if ( !firing ) {
						fire();
					}
				}
				return this;
			},

			// Call all the callbacks with the given arguments
			fire: function() {
				self.fireWith( this, arguments );
				return this;
			},

			// To know if the callbacks have already been called at least once
			fired: function() {
				return !!fired;
			}
		};

	return self;
};


function Identity( v ) {
	return v;
}
function Thrower( ex ) {
	throw ex;
}

function adoptValue( value, resolve, reject, noValue ) {
	var method;

	try {

		// Check for promise aspect first to privilege synchronous behavior
		if ( value && isFunction( ( method = value.promise ) ) ) {
			method.call( value ).done( resolve ).fail( reject );

		// Other thenables
		} else if ( value && isFunction( ( method = value.then ) ) ) {
			method.call( value, resolve, reject );

		// Other non-thenables
		} else {

			// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
			// * false: [ value ].slice( 0 ) => resolve( value )
			// * true: [ value ].slice( 1 ) => resolve()
			resolve.apply( undefined, [ value ].slice( noValue ) );
		}

	// For Promises/A+, convert exceptions into rejections
	// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
	// Deferred#then to conditionally suppress rejection.
	} catch ( value ) {

		// Support: Android 4.0 only
		// Strict mode functions invoked without .call/.apply get global-object context
		reject.apply( undefined, [ value ] );
	}
}

jQuery.extend( {

	Deferred: function( func ) {
		var tuples = [

				// action, add listener, callbacks,
				// ... .then handlers, argument index, [final state]
				[ "notify", "progress", jQuery.Callbacks( "memory" ),
					jQuery.Callbacks( "memory" ), 2 ],
				[ "resolve", "done", jQuery.Callbacks( "once memory" ),
					jQuery.Callbacks( "once memory" ), 0, "resolved" ],
				[ "reject", "fail", jQuery.Callbacks( "once memory" ),
					jQuery.Callbacks( "once memory" ), 1, "rejected" ]
			],
			state = "pending",
			promise = {
				state: function() {
					return state;
				},
				always: function() {
					deferred.done( arguments ).fail( arguments );
					return this;
				},
				"catch": function( fn ) {
					return promise.then( null, fn );
				},

				// Keep pipe for back-compat
				pipe: function( /* fnDone, fnFail, fnProgress */ ) {
					var fns = arguments;

					return jQuery.Deferred( function( newDefer ) {
						jQuery.each( tuples, function( _i, tuple ) {

							// Map tuples (progress, done, fail) to arguments (done, fail, progress)
							var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];

							// deferred.progress(function() { bind to newDefer or newDefer.notify })
							// deferred.done(function() { bind to newDefer or newDefer.resolve })
							// deferred.fail(function() { bind to newDefer or newDefer.reject })
							deferred[ tuple[ 1 ] ]( function() {
								var returned = fn && fn.apply( this, arguments );
								if ( returned && isFunction( returned.promise ) ) {
									returned.promise()
										.progress( newDefer.notify )
										.done( newDefer.resolve )
										.fail( newDefer.reject );
								} else {
									newDefer[ tuple[ 0 ] + "With" ](
										this,
										fn ? [ returned ] : arguments
									);
								}
							} );
						} );
						fns = null;
					} ).promise();
				},
				then: function( onFulfilled, onRejected, onProgress ) {
					var maxDepth = 0;
					function resolve( depth, deferred, handler, special ) {
						return function() {
							var that = this,
								args = arguments,
								mightThrow = function() {
									var returned, then;

									// Support: Promises/A+ section 2.3.3.3.3
									// https://promisesaplus.com/#point-59
									// Ignore double-resolution attempts
									if ( depth < maxDepth ) {
										return;
									}

									returned = handler.apply( that, args );

									// Support: Promises/A+ section 2.3.1
									// https://promisesaplus.com/#point-48
									if ( returned === deferred.promise() ) {
										throw new TypeError( "Thenable self-resolution" );
									}

									// Support: Promises/A+ sections 2.3.3.1, 3.5
									// https://promisesaplus.com/#point-54
									// https://promisesaplus.com/#point-75
									// Retrieve `then` only once
									then = returned &&

										// Support: Promises/A+ section 2.3.4
										// https://promisesaplus.com/#point-64
										// Only check objects and functions for thenability
										( typeof returned === "object" ||
											typeof returned === "function" ) &&
										returned.then;

									// Handle a returned thenable
									if ( isFunction( then ) ) {

										// Special processors (notify) just wait for resolution
										if ( special ) {
											then.call(
												returned,
												resolve( maxDepth, deferred, Identity, special ),
												resolve( maxDepth, deferred, Thrower, special )
											);

										// Normal processors (resolve) also hook into progress
										} else {

											// ...and disregard older resolution values
											maxDepth++;

											then.call(
												returned,
												resolve( maxDepth, deferred, Identity, special ),
												resolve( maxDepth, deferred, Thrower, special ),
												resolve( maxDepth, deferred, Identity,
													deferred.notifyWith )
											);
										}

									// Handle all other returned values
									} else {

										// Only substitute handlers pass on context
										// and multiple values (non-spec behavior)
										if ( handler !== Identity ) {
											that = undefined;
											args = [ returned ];
										}

										// Process the value(s)
										// Default process is resolve
										( special || deferred.resolveWith )( that, args );
									}
								},

								// Only normal processors (resolve) catch and reject exceptions
								process = special ?
									mightThrow :
									function() {
										try {
											mightThrow();
										} catch ( e ) {

											if ( jQuery.Deferred.exceptionHook ) {
												jQuery.Deferred.exceptionHook( e,
													process.stackTrace );
											}

											// Support: Promises/A+ section 2.3.3.3.4.1
											// https://promisesaplus.com/#point-61
											// Ignore post-resolution exceptions
											if ( depth + 1 >= maxDepth ) {

												// Only substitute handlers pass on context
												// and multiple values (non-spec behavior)
												if ( handler !== Thrower ) {
													that = undefined;
													args = [ e ];
												}

												deferred.rejectWith( that, args );
											}
										}
									};

							// Support: Promises/A+ section 2.3.3.3.1
							// https://promisesaplus.com/#point-57
							// Re-resolve promises immediately to dodge false rejection from
							// subsequent errors
							if ( depth ) {
								process();
							} else {

								// Call an optional hook to record the stack, in case of exception
								// since it's otherwise lost when execution goes async
								if ( jQuery.Deferred.getStackHook ) {
									process.stackTrace = jQuery.Deferred.getStackHook();
								}
								window.setTimeout( process );
							}
						};
					}

					return jQuery.Deferred( function( newDefer ) {

						// progress_handlers.add( ... )
						tuples[ 0 ][ 3 ].add(
							resolve(
								0,
								newDefer,
								isFunction( onProgress ) ?
									onProgress :
									Identity,
								newDefer.notifyWith
							)
						);

						// fulfilled_handlers.add( ... )
						tuples[ 1 ][ 3 ].add(
							resolve(
								0,
								newDefer,
								isFunction( onFulfilled ) ?
									onFulfilled :
									Identity
							)
						);

						// rejected_handlers.add( ... )
						tuples[ 2 ][ 3 ].add(
							resolve(
								0,
								newDefer,
								isFunction( onRejected ) ?
									onRejected :
									Thrower
							)
						);
					} ).promise();
				},

				// Get a promise for this deferred
				// If obj is provided, the promise aspect is added to the object
				promise: function( obj ) {
					return obj != null ? jQuery.extend( obj, promise ) : promise;
				}
			},
			deferred = {};

		// Add list-specific methods
		jQuery.each( tuples, function( i, tuple ) {
			var list = tuple[ 2 ],
				stateString = tuple[ 5 ];

			// promise.progress = list.add
			// promise.done = list.add
			// promise.fail = list.add
			promise[ tuple[ 1 ] ] = list.add;

			// Handle state
			if ( stateString ) {
				list.add(
					function() {

						// state = "resolved" (i.e., fulfilled)
						// state = "rejected"
						state = stateString;
					},

					// rejected_callbacks.disable
					// fulfilled_callbacks.disable
					tuples[ 3 - i ][ 2 ].disable,

					// rejected_handlers.disable
					// fulfilled_handlers.disable
					tuples[ 3 - i ][ 3 ].disable,

					// progress_callbacks.lock
					tuples[ 0 ][ 2 ].lock,

					// progress_handlers.lock
					tuples[ 0 ][ 3 ].lock
				);
			}

			// progress_handlers.fire
			// fulfilled_handlers.fire
			// rejected_handlers.fire
			list.add( tuple[ 3 ].fire );

			// deferred.notify = function() { deferred.notifyWith(...) }
			// deferred.resolve = function() { deferred.resolveWith(...) }
			// deferred.reject = function() { deferred.rejectWith(...) }
			deferred[ tuple[ 0 ] ] = function() {
				deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
				return this;
			};

			// deferred.notifyWith = list.fireWith
			// deferred.resolveWith = list.fireWith
			// deferred.rejectWith = list.fireWith
			deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
		} );

		// Make the deferred a promise
		promise.promise( deferred );

		// Call given func if any
		if ( func ) {
			func.call( deferred, deferred );
		}

		// All done!
		return deferred;
	},

	// Deferred helper
	when: function( singleValue ) {
		var

			// count of uncompleted subordinates
			remaining = arguments.length,

			// count of unprocessed arguments
			i = remaining,

			// subordinate fulfillment data
			resolveContexts = Array( i ),
			resolveValues = slice.call( arguments ),

			// the primary Deferred
			primary = jQuery.Deferred(),

			// subordinate callback factory
			updateFunc = function( i ) {
				return function( value ) {
					resolveContexts[ i ] = this;
					resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
					if ( !( --remaining ) ) {
						primary.resolveWith( resolveContexts, resolveValues );
					}
				};
			};

		// Single- and empty arguments are adopted like Promise.resolve
		if ( remaining <= 1 ) {
			adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,
				!remaining );

			// Use .then() to unwrap secondary thenables (cf. gh-3000)
			if ( primary.state() === "pending" ||
				isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {

				return primary.then();
			}
		}

		// Multiple arguments are aggregated like Promise.all array elements
		while ( i-- ) {
			adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );
		}

		return primary.promise();
	}
} );


// These usually indicate a programmer mistake during development,
// warn about them ASAP rather than swallowing them by default.
var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;

jQuery.Deferred.exceptionHook = function( error, stack ) {

	// Support: IE 8 - 9 only
	// Console exists when dev tools are open, which can happen at any time
	if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
		window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
	}
};




jQuery.readyException = function( error ) {
	window.setTimeout( function() {
		throw error;
	} );
};




// The deferred used on DOM ready
var readyList = jQuery.Deferred();

jQuery.fn.ready = function( fn ) {

	readyList
		.then( fn )

		// Wrap jQuery.readyException in a function so that the lookup
		// happens at the time of error handling instead of callback
		// registration.
		.catch( function( error ) {
			jQuery.readyException( error );
		} );

	return this;
};

jQuery.extend( {

	// Is the DOM ready to be used? Set to true once it occurs.
	isReady: false,

	// A counter to track how many items to wait for before
	// the ready event fires. See #6781
	readyWait: 1,

	// Handle when the DOM is ready
	ready: function( wait ) {

		// Abort if there are pending holds or we're already ready
		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
			return;
		}

		// Remember that the DOM is ready
		jQuery.isReady = true;

		// If a normal DOM Ready event fired, decrement, and wait if need be
		if ( wait !== true && --jQuery.readyWait > 0 ) {
			return;
		}

		// If there are functions bound, to execute
		readyList.resolveWith( document, [ jQuery ] );
	}
} );

jQuery.ready.then = readyList.then;

// The ready event handler and self cleanup method
function completed() {
	document.removeEventListener( "DOMContentLoaded", completed );
	window.removeEventListener( "load", completed );
	jQuery.ready();
}

// Catch cases where $(document).ready() is called
// after the browser event has already occurred.
// Support: IE <=9 - 10 only
// Older IE sometimes signals "interactive" too soon
if ( document.readyState === "complete" ||
	( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {

	// Handle it asynchronously to allow scripts the opportunity to delay ready
	window.setTimeout( jQuery.ready );

} else {

	// Use the handy event callback
	document.addEventListener( "DOMContentLoaded", completed );

	// A fallback to window.onload, that will always work
	window.addEventListener( "load", completed );
}




// Multifunctional method to get and set values of a collection
// The value/s can optionally be executed if it's a function
var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
	var i = 0,
		len = elems.length,
		bulk = key == null;

	// Sets many values
	if ( toType( key ) === "object" ) {
		chainable = true;
		for ( i in key ) {
			access( elems, fn, i, key[ i ], true, emptyGet, raw );
		}

	// Sets one value
	} else if ( value !== undefined ) {
		chainable = true;

		if ( !isFunction( value ) ) {
			raw = true;
		}

		if ( bulk ) {

			// Bulk operations run against the entire set
			if ( raw ) {
				fn.call( elems, value );
				fn = null;

			// ...except when executing function values
			} else {
				bulk = fn;
				fn = function( elem, _key, value ) {
					return bulk.call( jQuery( elem ), value );
				};
			}
		}

		if ( fn ) {
			for ( ; i < len; i++ ) {
				fn(
					elems[ i ], key, raw ?
						value :
						value.call( elems[ i ], i, fn( elems[ i ], key ) )
				);
			}
		}
	}

	if ( chainable ) {
		return elems;
	}

	// Gets
	if ( bulk ) {
		return fn.call( elems );
	}

	return len ? fn( elems[ 0 ], key ) : emptyGet;
};


// Matches dashed string for camelizing
var rmsPrefix = /^-ms-/,
	rdashAlpha = /-([a-z])/g;

// Used by camelCase as callback to replace()
function fcamelCase( _all, letter ) {
	return letter.toUpperCase();
}

// Convert dashed to camelCase; used by the css and data modules
// Support: IE <=9 - 11, Edge 12 - 15
// Microsoft forgot to hump their vendor prefix (#9572)
function camelCase( string ) {
	return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
}
var acceptData = function( owner ) {

	// Accepts only:
	//  - Node
	//    - Node.ELEMENT_NODE
	//    - Node.DOCUMENT_NODE
	//  - Object
	//    - Any
	return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
};




function Data() {
	this.expando = jQuery.expando + Data.uid++;
}

Data.uid = 1;

Data.prototype = {

	cache: function( owner ) {

		// Check if the owner object already has a cache
		var value = owner[ this.expando ];

		// If not, create one
		if ( !value ) {
			value = {};

			// We can accept data for non-element nodes in modern browsers,
			// but we should not, see #8335.
			// Always return an empty object.
			if ( acceptData( owner ) ) {

				// If it is a node unlikely to be stringify-ed or looped over
				// use plain assignment
				if ( owner.nodeType ) {
					owner[ this.expando ] = value;

				// Otherwise secure it in a non-enumerable property
				// configurable must be true to allow the property to be
				// deleted when data is removed
				} else {
					Object.defineProperty( owner, this.expando, {
						value: value,
						configurable: true
					} );
				}
			}
		}

		return value;
	},
	set: function( owner, data, value ) {
		var prop,
			cache = this.cache( owner );

		// Handle: [ owner, key, value ] args
		// Always use camelCase key (gh-2257)
		if ( typeof data === "string" ) {
			cache[ camelCase( data ) ] = value;

		// Handle: [ owner, { properties } ] args
		} else {

			// Copy the properties one-by-one to the cache object
			for ( prop in data ) {
				cache[ camelCase( prop ) ] = data[ prop ];
			}
		}
		return cache;
	},
	get: function( owner, key ) {
		return key === undefined ?
			this.cache( owner ) :

			// Always use camelCase key (gh-2257)
			owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];
	},
	access: function( owner, key, value ) {

		// In cases where either:
		//
		//   1. No key was specified
		//   2. A string key was specified, but no value provided
		//
		// Take the "read" path and allow the get method to determine
		// which value to return, respectively either:
		//
		//   1. The entire cache object
		//   2. The data stored at the key
		//
		if ( key === undefined ||
				( ( key && typeof key === "string" ) && value === undefined ) ) {

			return this.get( owner, key );
		}

		// When the key is not a string, or both a key and value
		// are specified, set or extend (existing objects) with either:
		//
		//   1. An object of properties
		//   2. A key and value
		//
		this.set( owner, key, value );

		// Since the "set" path can have two possible entry points
		// return the expected data based on which path was taken[*]
		return value !== undefined ? value : key;
	},
	remove: function( owner, key ) {
		var i,
			cache = owner[ this.expando ];

		if ( cache === undefined ) {
			return;
		}

		if ( key !== undefined ) {

			// Support array or space separated string of keys
			if ( Array.isArray( key ) ) {

				// If key is an array of keys...
				// We always set camelCase keys, so remove that.
				key = key.map( camelCase );
			} else {
				key = camelCase( key );

				// If a key with the spaces exists, use it.
				// Otherwise, create an array by matching non-whitespace
				key = key in cache ?
					[ key ] :
					( key.match( rnothtmlwhite ) || [] );
			}

			i = key.length;

			while ( i-- ) {
				delete cache[ key[ i ] ];
			}
		}

		// Remove the expando if there's no more data
		if ( key === undefined || jQuery.isEmptyObject( cache ) ) {

			// Support: Chrome <=35 - 45
			// Webkit & Blink performance suffers when deleting properties
			// from DOM nodes, so set to undefined instead
			// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
			if ( owner.nodeType ) {
				owner[ this.expando ] = undefined;
			} else {
				delete owner[ this.expando ];
			}
		}
	},
	hasData: function( owner ) {
		var cache = owner[ this.expando ];
		return cache !== undefined && !jQuery.isEmptyObject( cache );
	}
};
var dataPriv = new Data();

var dataUser = new Data();



//	Implementation Summary
//
//	1. Enforce API surface and semantic compatibility with 1.9.x branch
//	2. Improve the module's maintainability by reducing the storage
//		paths to a single mechanism.
//	3. Use the same single mechanism to support "private" and "user" data.
//	4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
//	5. Avoid exposing implementation details on user objects (eg. expando properties)
//	6. Provide a clear path for implementation upgrade to WeakMap in 2014

var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
	rmultiDash = /[A-Z]/g;

function getData( data ) {
	if ( data === "true" ) {
		return true;
	}

	if ( data === "false" ) {
		return false;
	}

	if ( data === "null" ) {
		return null;
	}

	// Only convert to a number if it doesn't change the string
	if ( data === +data + "" ) {
		return +data;
	}

	if ( rbrace.test( data ) ) {
		return JSON.parse( data );
	}

	return data;
}

function dataAttr( elem, key, data ) {
	var name;

	// If nothing was found internally, try to fetch any
	// data from the HTML5 data-* attribute
	if ( data === undefined && elem.nodeType === 1 ) {
		name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
		data = elem.getAttribute( name );

		if ( typeof data === "string" ) {
			try {
				data = getData( data );
			} catch ( e ) {}

			// Make sure we set the data so it isn't changed later
			dataUser.set( elem, key, data );
		} else {
			data = undefined;
		}
	}
	return data;
}

jQuery.extend( {
	hasData: function( elem ) {
		return dataUser.hasData( elem ) || dataPriv.hasData( elem );
	},

	data: function( elem, name, data ) {
		return dataUser.access( elem, name, data );
	},

	removeData: function( elem, name ) {
		dataUser.remove( elem, name );
	},

	// TODO: Now that all calls to _data and _removeData have been replaced
	// with direct calls to dataPriv methods, these can be deprecated.
	_data: function( elem, name, data ) {
		return dataPriv.access( elem, name, data );
	},

	_removeData: function( elem, name ) {
		dataPriv.remove( elem, name );
	}
} );

jQuery.fn.extend( {
	data: function( key, value ) {
		var i, name, data,
			elem = this[ 0 ],
			attrs = elem && elem.attributes;

		// Gets all values
		if ( key === undefined ) {
			if ( this.length ) {
				data = dataUser.get( elem );

				if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
					i = attrs.length;
					while ( i-- ) {

						// Support: IE 11 only
						// The attrs elements can be null (#14894)
						if ( attrs[ i ] ) {
							name = attrs[ i ].name;
							if ( name.indexOf( "data-" ) === 0 ) {
								name = camelCase( name.slice( 5 ) );
								dataAttr( elem, name, data[ name ] );
							}
						}
					}
					dataPriv.set( elem, "hasDataAttrs", true );
				}
			}

			return data;
		}

		// Sets multiple values
		if ( typeof key === "object" ) {
			return this.each( function() {
				dataUser.set( this, key );
			} );
		}

		return access( this, function( value ) {
			var data;

			// The calling jQuery object (element matches) is not empty
			// (and therefore has an element appears at this[ 0 ]) and the
			// `value` parameter was not undefined. An empty jQuery object
			// will result in `undefined` for elem = this[ 0 ] which will
			// throw an exception if an attempt to read a data cache is made.
			if ( elem && value === undefined ) {

				// Attempt to get data from the cache
				// The key will always be camelCased in Data
				data = dataUser.get( elem, key );
				if ( data !== undefined ) {
					return data;
				}

				// Attempt to "discover" the data in
				// HTML5 custom data-* attrs
				data = dataAttr( elem, key );
				if ( data !== undefined ) {
					return data;
				}

				// We tried really hard, but the data doesn't exist.
				return;
			}

			// Set the data...
			this.each( function() {

				// We always store the camelCased key
				dataUser.set( this, key, value );
			} );
		}, null, value, arguments.length > 1, null, true );
	},

	removeData: function( key ) {
		return this.each( function() {
			dataUser.remove( this, key );
		} );
	}
} );


jQuery.extend( {
	queue: function( elem, type, data ) {
		var queue;

		if ( elem ) {
			type = ( type || "fx" ) + "queue";
			queue = dataPriv.get( elem, type );

			// Speed up dequeue by getting out quickly if this is just a lookup
			if ( data ) {
				if ( !queue || Array.isArray( data ) ) {
					queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
				} else {
					queue.push( data );
				}
			}
			return queue || [];
		}
	},

	dequeue: function( elem, type ) {
		type = type || "fx";

		var queue = jQuery.queue( elem, type ),
			startLength = queue.length,
			fn = queue.shift(),
			hooks = jQuery._queueHooks( elem, type ),
			next = function() {
				jQuery.dequeue( elem, type );
			};

		// If the fx queue is dequeued, always remove the progress sentinel
		if ( fn === "inprogress" ) {
			fn = queue.shift();
			startLength--;
		}

		if ( fn ) {

			// Add a progress sentinel to prevent the fx queue from being
			// automatically dequeued
			if ( type === "fx" ) {
				queue.unshift( "inprogress" );
			}

			// Clear up the last queue stop function
			delete hooks.stop;
			fn.call( elem, next, hooks );
		}

		if ( !startLength && hooks ) {
			hooks.empty.fire();
		}
	},

	// Not public - generate a queueHooks object, or return the current one
	_queueHooks: function( elem, type ) {
		var key = type + "queueHooks";
		return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
			empty: jQuery.Callbacks( "once memory" ).add( function() {
				dataPriv.remove( elem, [ type + "queue", key ] );
			} )
		} );
	}
} );

jQuery.fn.extend( {
	queue: function( type, data ) {
		var setter = 2;

		if ( typeof type !== "string" ) {
			data = type;
			type = "fx";
			setter--;
		}

		if ( arguments.length < setter ) {
			return jQuery.queue( this[ 0 ], type );
		}

		return data === undefined ?
			this :
			this.each( function() {
				var queue = jQuery.queue( this, type, data );

				// Ensure a hooks for this queue
				jQuery._queueHooks( this, type );

				if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
					jQuery.dequeue( this, type );
				}
			} );
	},
	dequeue: function( type ) {
		return this.each( function() {
			jQuery.dequeue( this, type );
		} );
	},
	clearQueue: function( type ) {
		return this.queue( type || "fx", [] );
	},

	// Get a promise resolved when queues of a certain type
	// are emptied (fx is the type by default)
	promise: function( type, obj ) {
		var tmp,
			count = 1,
			defer = jQuery.Deferred(),
			elements = this,
			i = this.length,
			resolve = function() {
				if ( !( --count ) ) {
					defer.resolveWith( elements, [ elements ] );
				}
			};

		if ( typeof type !== "string" ) {
			obj = type;
			type = undefined;
		}
		type = type || "fx";

		while ( i-- ) {
			tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
			if ( tmp && tmp.empty ) {
				count++;
				tmp.empty.add( resolve );
			}
		}
		resolve();
		return defer.promise( obj );
	}
} );
var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;

var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );


var cssExpand = [ "Top", "Right", "Bottom", "Left" ];

var documentElement = document.documentElement;



	var isAttached = function( elem ) {
			return jQuery.contains( elem.ownerDocument, elem );
		},
		composed = { composed: true };

	// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only
	// Check attachment across shadow DOM boundaries when possible (gh-3504)
	// Support: iOS 10.0-10.2 only
	// Early iOS 10 versions support `attachShadow` but not `getRootNode`,
	// leading to errors. We need to check for `getRootNode`.
	if ( documentElement.getRootNode ) {
		isAttached = function( elem ) {
			return jQuery.contains( elem.ownerDocument, elem ) ||
				elem.getRootNode( composed ) === elem.ownerDocument;
		};
	}
var isHiddenWithinTree = function( elem, el ) {

		// isHiddenWithinTree might be called from jQuery#filter function;
		// in that case, element will be second argument
		elem = el || elem;

		// Inline style trumps all
		return elem.style.display === "none" ||
			elem.style.display === "" &&

			// Otherwise, check computed style
			// Support: Firefox <=43 - 45
			// Disconnected elements can have computed display: none, so first confirm that elem is
			// in the document.
			isAttached( elem ) &&

			jQuery.css( elem, "display" ) === "none";
	};



function adjustCSS( elem, prop, valueParts, tween ) {
	var adjusted, scale,
		maxIterations = 20,
		currentValue = tween ?
			function() {
				return tween.cur();
			} :
			function() {
				return jQuery.css( elem, prop, "" );
			},
		initial = currentValue(),
		unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),

		// Starting value computation is required for potential unit mismatches
		initialInUnit = elem.nodeType &&
			( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
			rcssNum.exec( jQuery.css( elem, prop ) );

	if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {

		// Support: Firefox <=54
		// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)
		initial = initial / 2;

		// Trust units reported by jQuery.css
		unit = unit || initialInUnit[ 3 ];

		// Iteratively approximate from a nonzero starting point
		initialInUnit = +initial || 1;

		while ( maxIterations-- ) {

			// Evaluate and update our best guess (doubling guesses that zero out).
			// Finish if the scale equals or crosses 1 (making the old*new product non-positive).
			jQuery.style( elem, prop, initialInUnit + unit );
			if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {
				maxIterations = 0;
			}
			initialInUnit = initialInUnit / scale;

		}

		initialInUnit = initialInUnit * 2;
		jQuery.style( elem, prop, initialInUnit + unit );

		// Make sure we update the tween properties later on
		valueParts = valueParts || [];
	}

	if ( valueParts ) {
		initialInUnit = +initialInUnit || +initial || 0;

		// Apply relative offset (+=/-=) if specified
		adjusted = valueParts[ 1 ] ?
			initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
			+valueParts[ 2 ];
		if ( tween ) {
			tween.unit = unit;
			tween.start = initialInUnit;
			tween.end = adjusted;
		}
	}
	return adjusted;
}


var defaultDisplayMap = {};

function getDefaultDisplay( elem ) {
	var temp,
		doc = elem.ownerDocument,
		nodeName = elem.nodeName,
		display = defaultDisplayMap[ nodeName ];

	if ( display ) {
		return display;
	}

	temp = doc.body.appendChild( doc.createElement( nodeName ) );
	display = jQuery.css( temp, "display" );

	temp.parentNode.removeChild( temp );

	if ( display === "none" ) {
		display = "block";
	}
	defaultDisplayMap[ nodeName ] = display;

	return display;
}

function showHide( elements, show ) {
	var display, elem,
		values = [],
		index = 0,
		length = elements.length;

	// Determine new display value for elements that need to change
	for ( ; index < length; index++ ) {
		elem = elements[ index ];
		if ( !elem.style ) {
			continue;
		}

		display = elem.style.display;
		if ( show ) {

			// Since we force visibility upon cascade-hidden elements, an immediate (and slow)
			// check is required in this first loop unless we have a nonempty display value (either
			// inline or about-to-be-restored)
			if ( display === "none" ) {
				values[ index ] = dataPriv.get( elem, "display" ) || null;
				if ( !values[ index ] ) {
					elem.style.display = "";
				}
			}
			if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
				values[ index ] = getDefaultDisplay( elem );
			}
		} else {
			if ( display !== "none" ) {
				values[ index ] = "none";

				// Remember what we're overwriting
				dataPriv.set( elem, "display", display );
			}
		}
	}

	// Set the display of the elements in a second loop to avoid constant reflow
	for ( index = 0; index < length; index++ ) {
		if ( values[ index ] != null ) {
			elements[ index ].style.display = values[ index ];
		}
	}

	return elements;
}

jQuery.fn.extend( {
	show: function() {
		return showHide( this, true );
	},
	hide: function() {
		return showHide( this );
	},
	toggle: function( state ) {
		if ( typeof state === "boolean" ) {
			return state ? this.show() : this.hide();
		}

		return this.each( function() {
			if ( isHiddenWithinTree( this ) ) {
				jQuery( this ).show();
			} else {
				jQuery( this ).hide();
			}
		} );
	}
} );
var rcheckableType = ( /^(?:checkbox|radio)$/i );

var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i );

var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );



( function() {
	var fragment = document.createDocumentFragment(),
		div = fragment.appendChild( document.createElement( "div" ) ),
		input = document.createElement( "input" );

	// Support: Android 4.0 - 4.3 only
	// Check state lost if the name is set (#11217)
	// Support: Windows Web Apps (WWA)
	// `name` and `type` must use .setAttribute for WWA (#14901)
	input.setAttribute( "type", "radio" );
	input.setAttribute( "checked", "checked" );
	input.setAttribute( "name", "t" );

	div.appendChild( input );

	// Support: Android <=4.1 only
	// Older WebKit doesn't clone checked state correctly in fragments
	support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;

	// Support: IE <=11 only
	// Make sure textarea (and checkbox) defaultValue is properly cloned
	div.innerHTML = "<textarea>x</textarea>";
	support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;

	// Support: IE <=9 only
	// IE <=9 replaces <option> tags with their contents when inserted outside of
	// the select element.
	div.innerHTML = "<option></option>";
	support.option = !!div.lastChild;
} )();


// We have to close these tags to support XHTML (#13200)
var wrapMap = {

	// XHTML parsers do not magically insert elements in the
	// same way that tag soup parsers do. So we cannot shorten
	// this by omitting <tbody> or other required elements.
	thead: [ 1, "<table>", "</table>" ],
	col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
	tr: [ 2, "<table><tbody>", "</tbody></table>" ],
	td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],

	_default: [ 0, "", "" ]
};

wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
wrapMap.th = wrapMap.td;

// Support: IE <=9 only
if ( !support.option ) {
	wrapMap.optgroup = wrapMap.option = [ 1, "<select multiple='multiple'>", "</select>" ];
}


function getAll( context, tag ) {

	// Support: IE <=9 - 11 only
	// Use typeof to avoid zero-argument method invocation on host objects (#15151)
	var ret;

	if ( typeof context.getElementsByTagName !== "undefined" ) {
		ret = context.getElementsByTagName( tag || "*" );

	} else if ( typeof context.querySelectorAll !== "undefined" ) {
		ret = context.querySelectorAll( tag || "*" );

	} else {
		ret = [];
	}

	if ( tag === undefined || tag && nodeName( context, tag ) ) {
		return jQuery.merge( [ context ], ret );
	}

	return ret;
}


// Mark scripts as having already been evaluated
function setGlobalEval( elems, refElements ) {
	var i = 0,
		l = elems.length;

	for ( ; i < l; i++ ) {
		dataPriv.set(
			elems[ i ],
			"globalEval",
			!refElements || dataPriv.get( refElements[ i ], "globalEval" )
		);
	}
}


var rhtml = /<|&#?\w+;/;

function buildFragment( elems, context, scripts, selection, ignored ) {
	var elem, tmp, tag, wrap, attached, j,
		fragment = context.createDocumentFragment(),
		nodes = [],
		i = 0,
		l = elems.length;

	for ( ; i < l; i++ ) {
		elem = elems[ i ];

		if ( elem || elem === 0 ) {

			// Add nodes directly
			if ( toType( elem ) === "object" ) {

				// Support: Android <=4.0 only, PhantomJS 1 only
				// push.apply(_, arraylike) throws on ancient WebKit
				jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );

			// Convert non-html into a text node
			} else if ( !rhtml.test( elem ) ) {
				nodes.push( context.createTextNode( elem ) );

			// Convert html into DOM nodes
			} else {
				tmp = tmp || fragment.appendChild( context.createElement( "div" ) );

				// Deserialize a standard representation
				tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
				wrap = wrapMap[ tag ] || wrapMap._default;
				tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];

				// Descend through wrappers to the right content
				j = wrap[ 0 ];
				while ( j-- ) {
					tmp = tmp.lastChild;
				}

				// Support: Android <=4.0 only, PhantomJS 1 only
				// push.apply(_, arraylike) throws on ancient WebKit
				jQuery.merge( nodes, tmp.childNodes );

				// Remember the top-level container
				tmp = fragment.firstChild;

				// Ensure the created nodes are orphaned (#12392)
				tmp.textContent = "";
			}
		}
	}

	// Remove wrapper from fragment
	fragment.textContent = "";

	i = 0;
	while ( ( elem = nodes[ i++ ] ) ) {

		// Skip elements already in the context collection (trac-4087)
		if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
			if ( ignored ) {
				ignored.push( elem );
			}
			continue;
		}

		attached = isAttached( elem );

		// Append to fragment
		tmp = getAll( fragment.appendChild( elem ), "script" );

		// Preserve script evaluation history
		if ( attached ) {
			setGlobalEval( tmp );
		}

		// Capture executables
		if ( scripts ) {
			j = 0;
			while ( ( elem = tmp[ j++ ] ) ) {
				if ( rscriptType.test( elem.type || "" ) ) {
					scripts.push( elem );
				}
			}
		}
	}

	return fragment;
}


var rtypenamespace = /^([^.]*)(?:\.(.+)|)/;

function returnTrue() {
	return true;
}

function returnFalse() {
	return false;
}

// Support: IE <=9 - 11+
// focus() and blur() are asynchronous, except when they are no-op.
// So expect focus to be synchronous when the element is already active,
// and blur to be synchronous when the element is not already active.
// (focus and blur are always synchronous in other supported browsers,
// this just defines when we can count on it).
function expectSync( elem, type ) {
	return ( elem === safeActiveElement() ) === ( type === "focus" );
}

// Support: IE <=9 only
// Accessing document.activeElement can throw unexpectedly
// https://bugs.jquery.com/ticket/13393
function safeActiveElement() {
	try {
		return document.activeElement;
	} catch ( err ) { }
}

function on( elem, types, selector, data, fn, one ) {
	var origFn, type;

	// Types can be a map of types/handlers
	if ( typeof types === "object" ) {

		// ( types-Object, selector, data )
		if ( typeof selector !== "string" ) {

			// ( types-Object, data )
			data = data || selector;
			selector = undefined;
		}
		for ( type in types ) {
			on( elem, type, selector, data, types[ type ], one );
		}
		return elem;
	}

	if ( data == null && fn == null ) {

		// ( types, fn )
		fn = selector;
		data = selector = undefined;
	} else if ( fn == null ) {
		if ( typeof selector === "string" ) {

			// ( types, selector, fn )
			fn = data;
			data = undefined;
		} else {

			// ( types, data, fn )
			fn = data;
			data = selector;
			selector = undefined;
		}
	}
	if ( fn === false ) {
		fn = returnFalse;
	} else if ( !fn ) {
		return elem;
	}

	if ( one === 1 ) {
		origFn = fn;
		fn = function( event ) {

			// Can use an empty set, since event contains the info
			jQuery().off( event );
			return origFn.apply( this, arguments );
		};

		// Use same guid so caller can remove using origFn
		fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
	}
	return elem.each( function() {
		jQuery.event.add( this, types, fn, data, selector );
	} );
}

/*
 * Helper functions for managing events -- not part of the public interface.
 * Props to Dean Edwards' addEvent library for many of the ideas.
 */
jQuery.event = {

	global: {},

	add: function( elem, types, handler, data, selector ) {

		var handleObjIn, eventHandle, tmp,
			events, t, handleObj,
			special, handlers, type, namespaces, origType,
			elemData = dataPriv.get( elem );

		// Only attach events to objects that accept data
		if ( !acceptData( elem ) ) {
			return;
		}

		// Caller can pass in an object of custom data in lieu of the handler
		if ( handler.handler ) {
			handleObjIn = handler;
			handler = handleObjIn.handler;
			selector = handleObjIn.selector;
		}

		// Ensure that invalid selectors throw exceptions at attach time
		// Evaluate against documentElement in case elem is a non-element node (e.g., document)
		if ( selector ) {
			jQuery.find.matchesSelector( documentElement, selector );
		}

		// Make sure that the handler has a unique ID, used to find/remove it later
		if ( !handler.guid ) {
			handler.guid = jQuery.guid++;
		}

		// Init the element's event structure and main handler, if this is the first
		if ( !( events = elemData.events ) ) {
			events = elemData.events = Object.create( null );
		}
		if ( !( eventHandle = elemData.handle ) ) {
			eventHandle = elemData.handle = function( e ) {

				// Discard the second event of a jQuery.event.trigger() and
				// when an event is called after a page has unloaded
				return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
					jQuery.event.dispatch.apply( elem, arguments ) : undefined;
			};
		}

		// Handle multiple events separated by a space
		types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
		t = types.length;
		while ( t-- ) {
			tmp = rtypenamespace.exec( types[ t ] ) || [];
			type = origType = tmp[ 1 ];
			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();

			// There *must* be a type, no attaching namespace-only handlers
			if ( !type ) {
				continue;
			}

			// If event changes its type, use the special event handlers for the changed type
			special = jQuery.event.special[ type ] || {};

			// If selector defined, determine special event api type, otherwise given type
			type = ( selector ? special.delegateType : special.bindType ) || type;

			// Update special based on newly reset type
			special = jQuery.event.special[ type ] || {};

			// handleObj is passed to all event handlers
			handleObj = jQuery.extend( {
				type: type,
				origType: origType,
				data: data,
				handler: handler,
				guid: handler.guid,
				selector: selector,
				needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
				namespace: namespaces.join( "." )
			}, handleObjIn );

			// Init the event handler queue if we're the first
			if ( !( handlers = events[ type ] ) ) {
				handlers = events[ type ] = [];
				handlers.delegateCount = 0;

				// Only use addEventListener if the special events handler returns false
				if ( !special.setup ||
					special.setup.call( elem, data, namespaces, eventHandle ) === false ) {

					if ( elem.addEventListener ) {
						elem.addEventListener( type, eventHandle );
					}
				}
			}

			if ( special.add ) {
				special.add.call( elem, handleObj );

				if ( !handleObj.handler.guid ) {
					handleObj.handler.guid = handler.guid;
				}
			}

			// Add to the element's handler list, delegates in front
			if ( selector ) {
				handlers.splice( handlers.delegateCount++, 0, handleObj );
			} else {
				handlers.push( handleObj );
			}

			// Keep track of which events have ever been used, for event optimization
			jQuery.event.global[ type ] = true;
		}

	},

	// Detach an event or set of events from an element
	remove: function( elem, types, handler, selector, mappedTypes ) {

		var j, origCount, tmp,
			events, t, handleObj,
			special, handlers, type, namespaces, origType,
			elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );

		if ( !elemData || !( events = elemData.events ) ) {
			return;
		}

		// Once for each type.namespace in types; type may be omitted
		types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
		t = types.length;
		while ( t-- ) {
			tmp = rtypenamespace.exec( types[ t ] ) || [];
			type = origType = tmp[ 1 ];
			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();

			// Unbind all events (on this namespace, if provided) for the element
			if ( !type ) {
				for ( type in events ) {
					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
				}
				continue;
			}

			special = jQuery.event.special[ type ] || {};
			type = ( selector ? special.delegateType : special.bindType ) || type;
			handlers = events[ type ] || [];
			tmp = tmp[ 2 ] &&
				new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );

			// Remove matching events
			origCount = j = handlers.length;
			while ( j-- ) {
				handleObj = handlers[ j ];

				if ( ( mappedTypes || origType === handleObj.origType ) &&
					( !handler || handler.guid === handleObj.guid ) &&
					( !tmp || tmp.test( handleObj.namespace ) ) &&
					( !selector || selector === handleObj.selector ||
						selector === "**" && handleObj.selector ) ) {
					handlers.splice( j, 1 );

					if ( handleObj.selector ) {
						handlers.delegateCount--;
					}
					if ( special.remove ) {
						special.remove.call( elem, handleObj );
					}
				}
			}

			// Remove generic event handler if we removed something and no more handlers exist
			// (avoids potential for endless recursion during removal of special event handlers)
			if ( origCount && !handlers.length ) {
				if ( !special.teardown ||
					special.teardown.call( elem, namespaces, elemData.handle ) === false ) {

					jQuery.removeEvent( elem, type, elemData.handle );
				}

				delete events[ type ];
			}
		}

		// Remove data and the expando if it's no longer used
		if ( jQuery.isEmptyObject( events ) ) {
			dataPriv.remove( elem, "handle events" );
		}
	},

	dispatch: function( nativeEvent ) {

		var i, j, ret, matched, handleObj, handlerQueue,
			args = new Array( arguments.length ),

			// Make a writable jQuery.Event from the native event object
			event = jQuery.event.fix( nativeEvent ),

			handlers = (
				dataPriv.get( this, "events" ) || Object.create( null )
			)[ event.type ] || [],
			special = jQuery.event.special[ event.type ] || {};

		// Use the fix-ed jQuery.Event rather than the (read-only) native event
		args[ 0 ] = event;

		for ( i = 1; i < arguments.length; i++ ) {
			args[ i ] = arguments[ i ];
		}

		event.delegateTarget = this;

		// Call the preDispatch hook for the mapped type, and let it bail if desired
		if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
			return;
		}

		// Determine handlers
		handlerQueue = jQuery.event.handlers.call( this, event, handlers );

		// Run delegates first; they may want to stop propagation beneath us
		i = 0;
		while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
			event.currentTarget = matched.elem;

			j = 0;
			while ( ( handleObj = matched.handlers[ j++ ] ) &&
				!event.isImmediatePropagationStopped() ) {

				// If the event is namespaced, then each handler is only invoked if it is
				// specially universal or its namespaces are a superset of the event's.
				if ( !event.rnamespace || handleObj.namespace === false ||
					event.rnamespace.test( handleObj.namespace ) ) {

					event.handleObj = handleObj;
					event.data = handleObj.data;

					ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
						handleObj.handler ).apply( matched.elem, args );

					if ( ret !== undefined ) {
						if ( ( event.result = ret ) === false ) {
							event.preventDefault();
							event.stopPropagation();
						}
					}
				}
			}
		}

		// Call the postDispatch hook for the mapped type
		if ( special.postDispatch ) {
			special.postDispatch.call( this, event );
		}

		return event.result;
	},

	handlers: function( event, handlers ) {
		var i, handleObj, sel, matchedHandlers, matchedSelectors,
			handlerQueue = [],
			delegateCount = handlers.delegateCount,
			cur = event.target;

		// Find delegate handlers
		if ( delegateCount &&

			// Support: IE <=9
			// Black-hole SVG <use> instance trees (trac-13180)
			cur.nodeType &&

			// Support: Firefox <=42
			// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
			// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
			// Support: IE 11 only
			// ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
			!( event.type === "click" && event.button >= 1 ) ) {

			for ( ; cur !== this; cur = cur.parentNode || this ) {

				// Don't check non-elements (#13208)
				// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
				if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
					matchedHandlers = [];
					matchedSelectors = {};
					for ( i = 0; i < delegateCount; i++ ) {
						handleObj = handlers[ i ];

						// Don't conflict with Object.prototype properties (#13203)
						sel = handleObj.selector + " ";

						if ( matchedSelectors[ sel ] === undefined ) {
							matchedSelectors[ sel ] = handleObj.needsContext ?
								jQuery( sel, this ).index( cur ) > -1 :
								jQuery.find( sel, this, null, [ cur ] ).length;
						}
						if ( matchedSelectors[ sel ] ) {
							matchedHandlers.push( handleObj );
						}
					}
					if ( matchedHandlers.length ) {
						handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
					}
				}
			}
		}

		// Add the remaining (directly-bound) handlers
		cur = this;
		if ( delegateCount < handlers.length ) {
			handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
		}

		return handlerQueue;
	},

	addProp: function( name, hook ) {
		Object.defineProperty( jQuery.Event.prototype, name, {
			enumerable: true,
			configurable: true,

			get: isFunction( hook ) ?
				function() {
					if ( this.originalEvent ) {
						return hook( this.originalEvent );
					}
				} :
				function() {
					if ( this.originalEvent ) {
						return this.originalEvent[ name ];
					}
				},

			set: function( value ) {
				Object.defineProperty( this, name, {
					enumerable: true,
					configurable: true,
					writable: true,
					value: value
				} );
			}
		} );
	},

	fix: function( originalEvent ) {
		return originalEvent[ jQuery.expando ] ?
			originalEvent :
			new jQuery.Event( originalEvent );
	},

	special: {
		load: {

			// Prevent triggered image.load events from bubbling to window.load
			noBubble: true
		},
		click: {

			// Utilize native event to ensure correct state for checkable inputs
			setup: function( data ) {

				// For mutual compressibility with _default, replace `this` access with a local var.
				// `|| data` is dead code meant only to preserve the variable through minification.
				var el = this || data;

				// Claim the first handler
				if ( rcheckableType.test( el.type ) &&
					el.click && nodeName( el, "input" ) ) {

					// dataPriv.set( el, "click", ... )
					leverageNative( el, "click", returnTrue );
				}

				// Return false to allow normal processing in the caller
				return false;
			},
			trigger: function( data ) {

				// For mutual compressibility with _default, replace `this` access with a local var.
				// `|| data` is dead code meant only to preserve the variable through minification.
				var el = this || data;

				// Force setup before triggering a click
				if ( rcheckableType.test( el.type ) &&
					el.click && nodeName( el, "input" ) ) {

					leverageNative( el, "click" );
				}

				// Return non-false to allow normal event-path propagation
				return true;
			},

			// For cross-browser consistency, suppress native .click() on links
			// Also prevent it if we're currently inside a leveraged native-event stack
			_default: function( event ) {
				var target = event.target;
				return rcheckableType.test( target.type ) &&
					target.click && nodeName( target, "input" ) &&
					dataPriv.get( target, "click" ) ||
					nodeName( target, "a" );
			}
		},

		beforeunload: {
			postDispatch: function( event ) {

				// Support: Firefox 20+
				// Firefox doesn't alert if the returnValue field is not set.
				if ( event.result !== undefined && event.originalEvent ) {
					event.originalEvent.returnValue = event.result;
				}
			}
		}
	}
};

// Ensure the presence of an event listener that handles manually-triggered
// synthetic events by interrupting progress until reinvoked in response to
// *native* events that it fires directly, ensuring that state changes have
// already occurred before other listeners are invoked.
function leverageNative( el, type, expectSync ) {

	// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add
	if ( !expectSync ) {
		if ( dataPriv.get( el, type ) === undefined ) {
			jQuery.event.add( el, type, returnTrue );
		}
		return;
	}

	// Register the controller as a special universal handler for all event namespaces
	dataPriv.set( el, type, false );
	jQuery.event.add( el, type, {
		namespace: false,
		handler: function( event ) {
			var notAsync, result,
				saved = dataPriv.get( this, type );

			if ( ( event.isTrigger & 1 ) && this[ type ] ) {

				// Interrupt processing of the outer synthetic .trigger()ed event
				// Saved data should be false in such cases, but might be a leftover capture object
				// from an async native handler (gh-4350)
				if ( !saved.length ) {

					// Store arguments for use when handling the inner native event
					// There will always be at least one argument (an event object), so this array
					// will not be confused with a leftover capture object.
					saved = slice.call( arguments );
					dataPriv.set( this, type, saved );

					// Trigger the native event and capture its result
					// Support: IE <=9 - 11+
					// focus() and blur() are asynchronous
					notAsync = expectSync( this, type );
					this[ type ]();
					result = dataPriv.get( this, type );
					if ( saved !== result || notAsync ) {
						dataPriv.set( this, type, false );
					} else {
						result = {};
					}
					if ( saved !== result ) {

						// Cancel the outer synthetic event
						event.stopImmediatePropagation();
						event.preventDefault();

						// Support: Chrome 86+
						// In Chrome, if an element having a focusout handler is blurred by
						// clicking outside of it, it invokes the handler synchronously. If
						// that handler calls `.remove()` on the element, the data is cleared,
						// leaving `result` undefined. We need to guard against this.
						return result && result.value;
					}

				// If this is an inner synthetic event for an event with a bubbling surrogate
				// (focus or blur), assume that the surrogate already propagated from triggering the
				// native event and prevent that from happening again here.
				// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the
				// bubbling surrogate propagates *after* the non-bubbling base), but that seems
				// less bad than duplication.
				} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {
					event.stopPropagation();
				}

			// If this is a native event triggered above, everything is now in order
			// Fire an inner synthetic event with the original arguments
			} else if ( saved.length ) {

				// ...and capture the result
				dataPriv.set( this, type, {
					value: jQuery.event.trigger(

						// Support: IE <=9 - 11+
						// Extend with the prototype to reset the above stopImmediatePropagation()
						jQuery.extend( saved[ 0 ], jQuery.Event.prototype ),
						saved.slice( 1 ),
						this
					)
				} );

				// Abort handling of the native event
				event.stopImmediatePropagation();
			}
		}
	} );
}

jQuery.removeEvent = function( elem, type, handle ) {

	// This "if" is needed for plain objects
	if ( elem.removeEventListener ) {
		elem.removeEventListener( type, handle );
	}
};

jQuery.Event = function( src, props ) {

	// Allow instantiation without the 'new' keyword
	if ( !( this instanceof jQuery.Event ) ) {
		return new jQuery.Event( src, props );
	}

	// Event object
	if ( src && src.type ) {
		this.originalEvent = src;
		this.type = src.type;

		// Events bubbling up the document may have been marked as prevented
		// by a handler lower down the tree; reflect the correct value.
		this.isDefaultPrevented = src.defaultPrevented ||
				src.defaultPrevented === undefined &&

				// Support: Android <=2.3 only
				src.returnValue === false ?
			returnTrue :
			returnFalse;

		// Create target properties
		// Support: Safari <=6 - 7 only
		// Target should not be a text node (#504, #13143)
		this.target = ( src.target && src.target.nodeType === 3 ) ?
			src.target.parentNode :
			src.target;

		this.currentTarget = src.currentTarget;
		this.relatedTarget = src.relatedTarget;

	// Event type
	} else {
		this.type = src;
	}

	// Put explicitly provided properties onto the event object
	if ( props ) {
		jQuery.extend( this, props );
	}

	// Create a timestamp if incoming event doesn't have one
	this.timeStamp = src && src.timeStamp || Date.now();

	// Mark it as fixed
	this[ jQuery.expando ] = true;
};

// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
jQuery.Event.prototype = {
	constructor: jQuery.Event,
	isDefaultPrevented: returnFalse,
	isPropagationStopped: returnFalse,
	isImmediatePropagationStopped: returnFalse,
	isSimulated: false,

	preventDefault: function() {
		var e = this.originalEvent;

		this.isDefaultPrevented = returnTrue;

		if ( e && !this.isSimulated ) {
			e.preventDefault();
		}
	},
	stopPropagation: function() {
		var e = this.originalEvent;

		this.isPropagationStopped = returnTrue;

		if ( e && !this.isSimulated ) {
			e.stopPropagation();
		}
	},
	stopImmediatePropagation: function() {
		var e = this.originalEvent;

		this.isImmediatePropagationStopped = returnTrue;

		if ( e && !this.isSimulated ) {
			e.stopImmediatePropagation();
		}

		this.stopPropagation();
	}
};

// Includes all common event props including KeyEvent and MouseEvent specific props
jQuery.each( {
	altKey: true,
	bubbles: true,
	cancelable: true,
	changedTouches: true,
	ctrlKey: true,
	detail: true,
	eventPhase: true,
	metaKey: true,
	pageX: true,
	pageY: true,
	shiftKey: true,
	view: true,
	"char": true,
	code: true,
	charCode: true,
	key: true,
	keyCode: true,
	button: true,
	buttons: true,
	clientX: true,
	clientY: true,
	offsetX: true,
	offsetY: true,
	pointerId: true,
	pointerType: true,
	screenX: true,
	screenY: true,
	targetTouches: true,
	toElement: true,
	touches: true,
	which: true
}, jQuery.event.addProp );

jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) {
	jQuery.event.special[ type ] = {

		// Utilize native event if possible so blur/focus sequence is correct
		setup: function() {

			// Claim the first handler
			// dataPriv.set( this, "focus", ... )
			// dataPriv.set( this, "blur", ... )
			leverageNative( this, type, expectSync );

			// Return false to allow normal processing in the caller
			return false;
		},
		trigger: function() {

			// Force setup before trigger
			leverageNative( this, type );

			// Return non-false to allow normal event-path propagation
			return true;
		},

		// Suppress native focus or blur as it's already being fired
		// in leverageNative.
		_default: function() {
			return true;
		},

		delegateType: delegateType
	};
} );

// Create mouseenter/leave events using mouseover/out and event-time checks
// so that event delegation works in jQuery.
// Do the same for pointerenter/pointerleave and pointerover/pointerout
//
// Support: Safari 7 only
// Safari sends mouseenter too often; see:
// https://bugs.chromium.org/p/chromium/issues/detail?id=470258
// for the description of the bug (it existed in older Chrome versions as well).
jQuery.each( {
	mouseenter: "mouseover",
	mouseleave: "mouseout",
	pointerenter: "pointerover",
	pointerleave: "pointerout"
}, function( orig, fix ) {
	jQuery.event.special[ orig ] = {
		delegateType: fix,
		bindType: fix,

		handle: function( event ) {
			var ret,
				target = this,
				related = event.relatedTarget,
				handleObj = event.handleObj;

			// For mouseenter/leave call the handler if related is outside the target.
			// NB: No relatedTarget if the mouse left/entered the browser window
			if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
				event.type = handleObj.origType;
				ret = handleObj.handler.apply( this, arguments );
				event.type = fix;
			}
			return ret;
		}
	};
} );

jQuery.fn.extend( {

	on: function( types, selector, data, fn ) {
		return on( this, types, selector, data, fn );
	},
	one: function( types, selector, data, fn ) {
		return on( this, types, selector, data, fn, 1 );
	},
	off: function( types, selector, fn ) {
		var handleObj, type;
		if ( types && types.preventDefault && types.handleObj ) {

			// ( event )  dispatched jQuery.Event
			handleObj = types.handleObj;
			jQuery( types.delegateTarget ).off(
				handleObj.namespace ?
					handleObj.origType + "." + handleObj.namespace :
					handleObj.origType,
				handleObj.selector,
				handleObj.handler
			);
			return this;
		}
		if ( typeof types === "object" ) {

			// ( types-object [, selector] )
			for ( type in types ) {
				this.off( type, selector, types[ type ] );
			}
			return this;
		}
		if ( selector === false || typeof selector === "function" ) {

			// ( types [, fn] )
			fn = selector;
			selector = undefined;
		}
		if ( fn === false ) {
			fn = returnFalse;
		}
		return this.each( function() {
			jQuery.event.remove( this, types, fn, selector );
		} );
	}
} );


var

	// Support: IE <=10 - 11, Edge 12 - 13 only
	// In IE/Edge using regex groups here causes severe slowdowns.
	// See https://connect.microsoft.com/IE/feedback/details/1736512/
	rnoInnerhtml = /<script|<style|<link/i,

	// checked="checked" or checked
	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
	rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;

// Prefer a tbody over its parent table for containing new rows
function manipulationTarget( elem, content ) {
	if ( nodeName( elem, "table" ) &&
		nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {

		return jQuery( elem ).children( "tbody" )[ 0 ] || elem;
	}

	return elem;
}

// Replace/restore the type attribute of script elements for safe DOM manipulation
function disableScript( elem ) {
	elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
	return elem;
}
function restoreScript( elem ) {
	if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) {
		elem.type = elem.type.slice( 5 );
	} else {
		elem.removeAttribute( "type" );
	}

	return elem;
}

function cloneCopyEvent( src, dest ) {
	var i, l, type, pdataOld, udataOld, udataCur, events;

	if ( dest.nodeType !== 1 ) {
		return;
	}

	// 1. Copy private data: events, handlers, etc.
	if ( dataPriv.hasData( src ) ) {
		pdataOld = dataPriv.get( src );
		events = pdataOld.events;

		if ( events ) {
			dataPriv.remove( dest, "handle events" );

			for ( type in events ) {
				for ( i = 0, l = events[ type ].length; i < l; i++ ) {
					jQuery.event.add( dest, type, events[ type ][ i ] );
				}
			}
		}
	}

	// 2. Copy user data
	if ( dataUser.hasData( src ) ) {
		udataOld = dataUser.access( src );
		udataCur = jQuery.extend( {}, udataOld );

		dataUser.set( dest, udataCur );
	}
}

// Fix IE bugs, see support tests
function fixInput( src, dest ) {
	var nodeName = dest.nodeName.toLowerCase();

	// Fails to persist the checked state of a cloned checkbox or radio button.
	if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
		dest.checked = src.checked;

	// Fails to return the selected option to the default selected state when cloning options
	} else if ( nodeName === "input" || nodeName === "textarea" ) {
		dest.defaultValue = src.defaultValue;
	}
}

function domManip( collection, args, callback, ignored ) {

	// Flatten any nested arrays
	args = flat( args );

	var fragment, first, scripts, hasScripts, node, doc,
		i = 0,
		l = collection.length,
		iNoClone = l - 1,
		value = args[ 0 ],
		valueIsFunction = isFunction( value );

	// We can't cloneNode fragments that contain checked, in WebKit
	if ( valueIsFunction ||
			( l > 1 && typeof value === "string" &&
				!support.checkClone && rchecked.test( value ) ) ) {
		return collection.each( function( index ) {
			var self = collection.eq( index );
			if ( valueIsFunction ) {
				args[ 0 ] = value.call( this, index, self.html() );
			}
			domManip( self, args, callback, ignored );
		} );
	}

	if ( l ) {
		fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
		first = fragment.firstChild;

		if ( fragment.childNodes.length === 1 ) {
			fragment = first;
		}

		// Require either new content or an interest in ignored elements to invoke the callback
		if ( first || ignored ) {
			scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
			hasScripts = scripts.length;

			// Use the original fragment for the last item
			// instead of the first because it can end up
			// being emptied incorrectly in certain situations (#8070).
			for ( ; i < l; i++ ) {
				node = fragment;

				if ( i !== iNoClone ) {
					node = jQuery.clone( node, true, true );

					// Keep references to cloned scripts for later restoration
					if ( hasScripts ) {

						// Support: Android <=4.0 only, PhantomJS 1 only
						// push.apply(_, arraylike) throws on ancient WebKit
						jQuery.merge( scripts, getAll( node, "script" ) );
					}
				}

				callback.call( collection[ i ], node, i );
			}

			if ( hasScripts ) {
				doc = scripts[ scripts.length - 1 ].ownerDocument;

				// Reenable scripts
				jQuery.map( scripts, restoreScript );

				// Evaluate executable scripts on first document insertion
				for ( i = 0; i < hasScripts; i++ ) {
					node = scripts[ i ];
					if ( rscriptType.test( node.type || "" ) &&
						!dataPriv.access( node, "globalEval" ) &&
						jQuery.contains( doc, node ) ) {

						if ( node.src && ( node.type || "" ).toLowerCase()  !== "module" ) {

							// Optional AJAX dependency, but won't run scripts if not present
							if ( jQuery._evalUrl && !node.noModule ) {
								jQuery._evalUrl( node.src, {
									nonce: node.nonce || node.getAttribute( "nonce" )
								}, doc );
							}
						} else {
							DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc );
						}
					}
				}
			}
		}
	}

	return collection;
}

function remove( elem, selector, keepData ) {
	var node,
		nodes = selector ? jQuery.filter( selector, elem ) : elem,
		i = 0;

	for ( ; ( node = nodes[ i ] ) != null; i++ ) {
		if ( !keepData && node.nodeType === 1 ) {
			jQuery.cleanData( getAll( node ) );
		}

		if ( node.parentNode ) {
			if ( keepData && isAttached( node ) ) {
				setGlobalEval( getAll( node, "script" ) );
			}
			node.parentNode.removeChild( node );
		}
	}

	return elem;
}

jQuery.extend( {
	htmlPrefilter: function( html ) {
		return html;
	},

	clone: function( elem, dataAndEvents, deepDataAndEvents ) {
		var i, l, srcElements, destElements,
			clone = elem.cloneNode( true ),
			inPage = isAttached( elem );

		// Fix IE cloning issues
		if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
				!jQuery.isXMLDoc( elem ) ) {

			// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
			destElements = getAll( clone );
			srcElements = getAll( elem );

			for ( i = 0, l = srcElements.length; i < l; i++ ) {
				fixInput( srcElements[ i ], destElements[ i ] );
			}
		}

		// Copy the events from the original to the clone
		if ( dataAndEvents ) {
			if ( deepDataAndEvents ) {
				srcElements = srcElements || getAll( elem );
				destElements = destElements || getAll( clone );

				for ( i = 0, l = srcElements.length; i < l; i++ ) {
					cloneCopyEvent( srcElements[ i ], destElements[ i ] );
				}
			} else {
				cloneCopyEvent( elem, clone );
			}
		}

		// Preserve script evaluation history
		destElements = getAll( clone, "script" );
		if ( destElements.length > 0 ) {
			setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
		}

		// Return the cloned set
		return clone;
	},

	cleanData: function( elems ) {
		var data, elem, type,
			special = jQuery.event.special,
			i = 0;

		for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
			if ( acceptData( elem ) ) {
				if ( ( data = elem[ dataPriv.expando ] ) ) {
					if ( data.events ) {
						for ( type in data.events ) {
							if ( special[ type ] ) {
								jQuery.event.remove( elem, type );

							// This is a shortcut to avoid jQuery.event.remove's overhead
							} else {
								jQuery.removeEvent( elem, type, data.handle );
							}
						}
					}

					// Support: Chrome <=35 - 45+
					// Assign undefined instead of using delete, see Data#remove
					elem[ dataPriv.expando ] = undefined;
				}
				if ( elem[ dataUser.expando ] ) {

					// Support: Chrome <=35 - 45+
					// Assign undefined instead of using delete, see Data#remove
					elem[ dataUser.expando ] = undefined;
				}
			}
		}
	}
} );

jQuery.fn.extend( {
	detach: function( selector ) {
		return remove( this, selector, true );
	},

	remove: function( selector ) {
		return remove( this, selector );
	},

	text: function( value ) {
		return access( this, function( value ) {
			return value === undefined ?
				jQuery.text( this ) :
				this.empty().each( function() {
					if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
						this.textContent = value;
					}
				} );
		}, null, value, arguments.length );
	},

	append: function() {
		return domManip( this, arguments, function( elem ) {
			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
				var target = manipulationTarget( this, elem );
				target.appendChild( elem );
			}
		} );
	},

	prepend: function() {
		return domManip( this, arguments, function( elem ) {
			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
				var target = manipulationTarget( this, elem );
				target.insertBefore( elem, target.firstChild );
			}
		} );
	},

	before: function() {
		return domManip( this, arguments, function( elem ) {
			if ( this.parentNode ) {
				this.parentNode.insertBefore( elem, this );
			}
		} );
	},

	after: function() {
		return domManip( this, arguments, function( elem ) {
			if ( this.parentNode ) {
				this.parentNode.insertBefore( elem, this.nextSibling );
			}
		} );
	},

	empty: function() {
		var elem,
			i = 0;

		for ( ; ( elem = this[ i ] ) != null; i++ ) {
			if ( elem.nodeType === 1 ) {

				// Prevent memory leaks
				jQuery.cleanData( getAll( elem, false ) );

				// Remove any remaining nodes
				elem.textContent = "";
			}
		}

		return this;
	},

	clone: function( dataAndEvents, deepDataAndEvents ) {
		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;

		return this.map( function() {
			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
		} );
	},

	html: function( value ) {
		return access( this, function( value ) {
			var elem = this[ 0 ] || {},
				i = 0,
				l = this.length;

			if ( value === undefined && elem.nodeType === 1 ) {
				return elem.innerHTML;
			}

			// See if we can take a shortcut and just use innerHTML
			if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
				!wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {

				value = jQuery.htmlPrefilter( value );

				try {
					for ( ; i < l; i++ ) {
						elem = this[ i ] || {};

						// Remove element nodes and prevent memory leaks
						if ( elem.nodeType === 1 ) {
							jQuery.cleanData( getAll( elem, false ) );
							elem.innerHTML = value;
						}
					}

					elem = 0;

				// If using innerHTML throws an exception, use the fallback method
				} catch ( e ) {}
			}

			if ( elem ) {
				this.empty().append( value );
			}
		}, null, value, arguments.length );
	},

	replaceWith: function() {
		var ignored = [];

		// Make the changes, replacing each non-ignored context element with the new content
		return domManip( this, arguments, function( elem ) {
			var parent = this.parentNode;

			if ( jQuery.inArray( this, ignored ) < 0 ) {
				jQuery.cleanData( getAll( this ) );
				if ( parent ) {
					parent.replaceChild( elem, this );
				}
			}

		// Force callback invocation
		}, ignored );
	}
} );

jQuery.each( {
	appendTo: "append",
	prependTo: "prepend",
	insertBefore: "before",
	insertAfter: "after",
	replaceAll: "replaceWith"
}, function( name, original ) {
	jQuery.fn[ name ] = function( selector ) {
		var elems,
			ret = [],
			insert = jQuery( selector ),
			last = insert.length - 1,
			i = 0;

		for ( ; i <= last; i++ ) {
			elems = i === last ? this : this.clone( true );
			jQuery( insert[ i ] )[ original ]( elems );

			// Support: Android <=4.0 only, PhantomJS 1 only
			// .get() because push.apply(_, arraylike) throws on ancient WebKit
			push.apply( ret, elems.get() );
		}

		return this.pushStack( ret );
	};
} );
var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );

var getStyles = function( elem ) {

		// Support: IE <=11 only, Firefox <=30 (#15098, #14150)
		// IE throws on elements created in popups
		// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
		var view = elem.ownerDocument.defaultView;

		if ( !view || !view.opener ) {
			view = window;
		}

		return view.getComputedStyle( elem );
	};

var swap = function( elem, options, callback ) {
	var ret, name,
		old = {};

	// Remember the old values, and insert the new ones
	for ( name in options ) {
		old[ name ] = elem.style[ name ];
		elem.style[ name ] = options[ name ];
	}

	ret = callback.call( elem );

	// Revert the old values
	for ( name in options ) {
		elem.style[ name ] = old[ name ];
	}

	return ret;
};


var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );



( function() {

	// Executing both pixelPosition & boxSizingReliable tests require only one layout
	// so they're executed at the same time to save the second computation.
	function computeStyleTests() {

		// This is a singleton, we need to execute it only once
		if ( !div ) {
			return;
		}

		container.style.cssText = "position:absolute;left:-11111px;width:60px;" +
			"margin-top:1px;padding:0;border:0";
		div.style.cssText =
			"position:relative;display:block;box-sizing:border-box;overflow:scroll;" +
			"margin:auto;border:1px;padding:1px;" +
			"width:60%;top:1%";
		documentElement.appendChild( container ).appendChild( div );

		var divStyle = window.getComputedStyle( div );
		pixelPositionVal = divStyle.top !== "1%";

		// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
		reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;

		// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3
		// Some styles come back with percentage values, even though they shouldn't
		div.style.right = "60%";
		pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;

		// Support: IE 9 - 11 only
		// Detect misreporting of content dimensions for box-sizing:border-box elements
		boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;

		// Support: IE 9 only
		// Detect overflow:scroll screwiness (gh-3699)
		// Support: Chrome <=64
		// Don't get tricked when zoom affects offsetWidth (gh-4029)
		div.style.position = "absolute";
		scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;

		documentElement.removeChild( container );

		// Nullify the div so it wouldn't be stored in the memory and
		// it will also be a sign that checks already performed
		div = null;
	}

	function roundPixelMeasures( measure ) {
		return Math.round( parseFloat( measure ) );
	}

	var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,
		reliableTrDimensionsVal, reliableMarginLeftVal,
		container = document.createElement( "div" ),
		div = document.createElement( "div" );

	// Finish early in limited (non-browser) environments
	if ( !div.style ) {
		return;
	}

	// Support: IE <=9 - 11 only
	// Style of cloned element affects source element cloned (#8908)
	div.style.backgroundClip = "content-box";
	div.cloneNode( true ).style.backgroundClip = "";
	support.clearCloneStyle = div.style.backgroundClip === "content-box";

	jQuery.extend( support, {
		boxSizingReliable: function() {
			computeStyleTests();
			return boxSizingReliableVal;
		},
		pixelBoxStyles: function() {
			computeStyleTests();
			return pixelBoxStylesVal;
		},
		pixelPosition: function() {
			computeStyleTests();
			return pixelPositionVal;
		},
		reliableMarginLeft: function() {
			computeStyleTests();
			return reliableMarginLeftVal;
		},
		scrollboxSize: function() {
			computeStyleTests();
			return scrollboxSizeVal;
		},

		// Support: IE 9 - 11+, Edge 15 - 18+
		// IE/Edge misreport `getComputedStyle` of table rows with width/height
		// set in CSS while `offset*` properties report correct values.
		// Behavior in IE 9 is more subtle than in newer versions & it passes
		// some versions of this test; make sure not to make it pass there!
		//
		// Support: Firefox 70+
		// Only Firefox includes border widths
		// in computed dimensions. (gh-4529)
		reliableTrDimensions: function() {
			var table, tr, trChild, trStyle;
			if ( reliableTrDimensionsVal == null ) {
				table = document.createElement( "table" );
				tr = document.createElement( "tr" );
				trChild = document.createElement( "div" );

				table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate";
				tr.style.cssText = "border:1px solid";

				// Support: Chrome 86+
				// Height set through cssText does not get applied.
				// Computed height then comes back as 0.
				tr.style.height = "1px";
				trChild.style.height = "9px";

				// Support: Android 8 Chrome 86+
				// In our bodyBackground.html iframe,
				// display for all div elements is set to "inline",
				// which causes a problem only in Android 8 Chrome 86.
				// Ensuring the div is display: block
				// gets around this issue.
				trChild.style.display = "block";

				documentElement
					.appendChild( table )
					.appendChild( tr )
					.appendChild( trChild );

				trStyle = window.getComputedStyle( tr );
				reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +
					parseInt( trStyle.borderTopWidth, 10 ) +
					parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;

				documentElement.removeChild( table );
			}
			return reliableTrDimensionsVal;
		}
	} );
} )();


function curCSS( elem, name, computed ) {
	var width, minWidth, maxWidth, ret,

		// Support: Firefox 51+
		// Retrieving style before computed somehow
		// fixes an issue with getting wrong values
		// on detached elements
		style = elem.style;

	computed = computed || getStyles( elem );

	// getPropertyValue is needed for:
	//   .css('filter') (IE 9 only, #12537)
	//   .css('--customProperty) (#3144)
	if ( computed ) {
		ret = computed.getPropertyValue( name ) || computed[ name ];

		if ( ret === "" && !isAttached( elem ) ) {
			ret = jQuery.style( elem, name );
		}

		// A tribute to the "awesome hack by Dean Edwards"
		// Android Browser returns percentage for some values,
		// but width seems to be reliably pixels.
		// This is against the CSSOM draft spec:
		// https://drafts.csswg.org/cssom/#resolved-values
		if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {

			// Remember the original values
			width = style.width;
			minWidth = style.minWidth;
			maxWidth = style.maxWidth;

			// Put in the new values to get a computed value out
			style.minWidth = style.maxWidth = style.width = ret;
			ret = computed.width;

			// Revert the changed values
			style.width = width;
			style.minWidth = minWidth;
			style.maxWidth = maxWidth;
		}
	}

	return ret !== undefined ?

		// Support: IE <=9 - 11 only
		// IE returns zIndex value as an integer.
		ret + "" :
		ret;
}


function addGetHookIf( conditionFn, hookFn ) {

	// Define the hook, we'll check on the first run if it's really needed.
	return {
		get: function() {
			if ( conditionFn() ) {

				// Hook not needed (or it's not possible to use it due
				// to missing dependency), remove it.
				delete this.get;
				return;
			}

			// Hook needed; redefine it so that the support test is not executed again.
			return ( this.get = hookFn ).apply( this, arguments );
		}
	};
}


var cssPrefixes = [ "Webkit", "Moz", "ms" ],
	emptyStyle = document.createElement( "div" ).style,
	vendorProps = {};

// Return a vendor-prefixed property or undefined
function vendorPropName( name ) {

	// Check for vendor prefixed names
	var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
		i = cssPrefixes.length;

	while ( i-- ) {
		name = cssPrefixes[ i ] + capName;
		if ( name in emptyStyle ) {
			return name;
		}
	}
}

// Return a potentially-mapped jQuery.cssProps or vendor prefixed property
function finalPropName( name ) {
	var final = jQuery.cssProps[ name ] || vendorProps[ name ];

	if ( final ) {
		return final;
	}
	if ( name in emptyStyle ) {
		return name;
	}
	return vendorProps[ name ] = vendorPropName( name ) || name;
}


var

	// Swappable if display is none or starts with table
	// except "table", "table-cell", or "table-caption"
	// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
	rdisplayswap = /^(none|table(?!-c[ea]).+)/,
	rcustomProp = /^--/,
	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
	cssNormalTransform = {
		letterSpacing: "0",
		fontWeight: "400"
	};

function setPositiveNumber( _elem, value, subtract ) {

	// Any relative (+/-) values have already been
	// normalized at this point
	var matches = rcssNum.exec( value );
	return matches ?

		// Guard against undefined "subtract", e.g., when used as in cssHooks
		Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
		value;
}

function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {
	var i = dimension === "width" ? 1 : 0,
		extra = 0,
		delta = 0;

	// Adjustment may not be necessary
	if ( box === ( isBorderBox ? "border" : "content" ) ) {
		return 0;
	}

	for ( ; i < 4; i += 2 ) {

		// Both box models exclude margin
		if ( box === "margin" ) {
			delta += jQuery.css( elem, box + cssExpand[ i ], true, styles );
		}

		// If we get here with a content-box, we're seeking "padding" or "border" or "margin"
		if ( !isBorderBox ) {

			// Add padding
			delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );

			// For "border" or "margin", add border
			if ( box !== "padding" ) {
				delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );

			// But still keep track of it otherwise
			} else {
				extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
			}

		// If we get here with a border-box (content + padding + border), we're seeking "content" or
		// "padding" or "margin"
		} else {

			// For "content", subtract padding
			if ( box === "content" ) {
				delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
			}

			// For "content" or "padding", subtract border
			if ( box !== "margin" ) {
				delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
			}
		}
	}

	// Account for positive content-box scroll gutter when requested by providing computedVal
	if ( !isBorderBox && computedVal >= 0 ) {

		// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border
		// Assuming integer scroll gutter, subtract the rest and round down
		delta += Math.max( 0, Math.ceil(
			elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
			computedVal -
			delta -
			extra -
			0.5

		// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter
		// Use an explicit zero to avoid NaN (gh-3964)
		) ) || 0;
	}

	return delta;
}

function getWidthOrHeight( elem, dimension, extra ) {

	// Start with computed style
	var styles = getStyles( elem ),

		// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).
		// Fake content-box until we know it's needed to know the true value.
		boxSizingNeeded = !support.boxSizingReliable() || extra,
		isBorderBox = boxSizingNeeded &&
			jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
		valueIsBorderBox = isBorderBox,

		val = curCSS( elem, dimension, styles ),
		offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );

	// Support: Firefox <=54
	// Return a confounding non-pixel value or feign ignorance, as appropriate.
	if ( rnumnonpx.test( val ) ) {
		if ( !extra ) {
			return val;
		}
		val = "auto";
	}


	// Support: IE 9 - 11 only
	// Use offsetWidth/offsetHeight for when box sizing is unreliable.
	// In those cases, the computed value can be trusted to be border-box.
	if ( ( !support.boxSizingReliable() && isBorderBox ||

		// Support: IE 10 - 11+, Edge 15 - 18+
		// IE/Edge misreport `getComputedStyle` of table rows with width/height
		// set in CSS while `offset*` properties report correct values.
		// Interestingly, in some cases IE 9 doesn't suffer from this issue.
		!support.reliableTrDimensions() && nodeName( elem, "tr" ) ||

		// Fall back to offsetWidth/offsetHeight when value is "auto"
		// This happens for inline elements with no explicit setting (gh-3571)
		val === "auto" ||

		// Support: Android <=4.1 - 4.3 only
		// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)
		!parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) &&

		// Make sure the element is visible & connected
		elem.getClientRects().length ) {

		isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";

		// Where available, offsetWidth/offsetHeight approximate border box dimensions.
		// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the
		// retrieved value as a content box dimension.
		valueIsBorderBox = offsetProp in elem;
		if ( valueIsBorderBox ) {
			val = elem[ offsetProp ];
		}
	}

	// Normalize "" and auto
	val = parseFloat( val ) || 0;

	// Adjust for the element's box model
	return ( val +
		boxModelAdjustment(
			elem,
			dimension,
			extra || ( isBorderBox ? "border" : "content" ),
			valueIsBorderBox,
			styles,

			// Provide the current computed size to request scroll gutter calculation (gh-3589)
			val
		)
	) + "px";
}

jQuery.extend( {

	// Add in style property hooks for overriding the default
	// behavior of getting and setting a style property
	cssHooks: {
		opacity: {
			get: function( elem, computed ) {
				if ( computed ) {

					// We should always get a number back from opacity
					var ret = curCSS( elem, "opacity" );
					return ret === "" ? "1" : ret;
				}
			}
		}
	},

	// Don't automatically add "px" to these possibly-unitless properties
	cssNumber: {
		"animationIterationCount": true,
		"columnCount": true,
		"fillOpacity": true,
		"flexGrow": true,
		"flexShrink": true,
		"fontWeight": true,
		"gridArea": true,
		"gridColumn": true,
		"gridColumnEnd": true,
		"gridColumnStart": true,
		"gridRow": true,
		"gridRowEnd": true,
		"gridRowStart": true,
		"lineHeight": true,
		"opacity": true,
		"order": true,
		"orphans": true,
		"widows": true,
		"zIndex": true,
		"zoom": true
	},

	// Add in properties whose names you wish to fix before
	// setting or getting the value
	cssProps: {},

	// Get and set the style property on a DOM Node
	style: function( elem, name, value, extra ) {

		// Don't set styles on text and comment nodes
		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
			return;
		}

		// Make sure that we're working with the right name
		var ret, type, hooks,
			origName = camelCase( name ),
			isCustomProp = rcustomProp.test( name ),
			style = elem.style;

		// Make sure that we're working with the right name. We don't
		// want to query the value if it is a CSS custom property
		// since they are user-defined.
		if ( !isCustomProp ) {
			name = finalPropName( origName );
		}

		// Gets hook for the prefixed version, then unprefixed version
		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];

		// Check if we're setting a value
		if ( value !== undefined ) {
			type = typeof value;

			// Convert "+=" or "-=" to relative numbers (#7345)
			if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
				value = adjustCSS( elem, name, ret );

				// Fixes bug #9237
				type = "number";
			}

			// Make sure that null and NaN values aren't set (#7116)
			if ( value == null || value !== value ) {
				return;
			}

			// If a number was passed in, add the unit (except for certain CSS properties)
			// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append
			// "px" to a few hardcoded values.
			if ( type === "number" && !isCustomProp ) {
				value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
			}

			// background-* props affect original clone's values
			if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
				style[ name ] = "inherit";
			}

			// If a hook was provided, use that value, otherwise just set the specified value
			if ( !hooks || !( "set" in hooks ) ||
				( value = hooks.set( elem, value, extra ) ) !== undefined ) {

				if ( isCustomProp ) {
					style.setProperty( name, value );
				} else {
					style[ name ] = value;
				}
			}

		} else {

			// If a hook was provided get the non-computed value from there
			if ( hooks && "get" in hooks &&
				( ret = hooks.get( elem, false, extra ) ) !== undefined ) {

				return ret;
			}

			// Otherwise just get the value from the style object
			return style[ name ];
		}
	},

	css: function( elem, name, extra, styles ) {
		var val, num, hooks,
			origName = camelCase( name ),
			isCustomProp = rcustomProp.test( name );

		// Make sure that we're working with the right name. We don't
		// want to modify the value if it is a CSS custom property
		// since they are user-defined.
		if ( !isCustomProp ) {
			name = finalPropName( origName );
		}

		// Try prefixed name followed by the unprefixed name
		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];

		// If a hook was provided get the computed value from there
		if ( hooks && "get" in hooks ) {
			val = hooks.get( elem, true, extra );
		}

		// Otherwise, if a way to get the computed value exists, use that
		if ( val === undefined ) {
			val = curCSS( elem, name, styles );
		}

		// Convert "normal" to computed value
		if ( val === "normal" && name in cssNormalTransform ) {
			val = cssNormalTransform[ name ];
		}

		// Make numeric if forced or a qualifier was provided and val looks numeric
		if ( extra === "" || extra ) {
			num = parseFloat( val );
			return extra === true || isFinite( num ) ? num || 0 : val;
		}

		return val;
	}
} );

jQuery.each( [ "height", "width" ], function( _i, dimension ) {
	jQuery.cssHooks[ dimension ] = {
		get: function( elem, computed, extra ) {
			if ( computed ) {

				// Certain elements can have dimension info if we invisibly show them
				// but it must have a current display style that would benefit
				return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&

					// Support: Safari 8+
					// Table columns in Safari have non-zero offsetWidth & zero
					// getBoundingClientRect().width unless display is changed.
					// Support: IE <=11 only
					// Running getBoundingClientRect on a disconnected node
					// in IE throws an error.
					( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
					swap( elem, cssShow, function() {
						return getWidthOrHeight( elem, dimension, extra );
					} ) :
					getWidthOrHeight( elem, dimension, extra );
			}
		},

		set: function( elem, value, extra ) {
			var matches,
				styles = getStyles( elem ),

				// Only read styles.position if the test has a chance to fail
				// to avoid forcing a reflow.
				scrollboxSizeBuggy = !support.scrollboxSize() &&
					styles.position === "absolute",

				// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)
				boxSizingNeeded = scrollboxSizeBuggy || extra,
				isBorderBox = boxSizingNeeded &&
					jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
				subtract = extra ?
					boxModelAdjustment(
						elem,
						dimension,
						extra,
						isBorderBox,
						styles
					) :
					0;

			// Account for unreliable border-box dimensions by comparing offset* to computed and
			// faking a content-box to get border and padding (gh-3699)
			if ( isBorderBox && scrollboxSizeBuggy ) {
				subtract -= Math.ceil(
					elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
					parseFloat( styles[ dimension ] ) -
					boxModelAdjustment( elem, dimension, "border", false, styles ) -
					0.5
				);
			}

			// Convert to pixels if value adjustment is needed
			if ( subtract && ( matches = rcssNum.exec( value ) ) &&
				( matches[ 3 ] || "px" ) !== "px" ) {

				elem.style[ dimension ] = value;
				value = jQuery.css( elem, dimension );
			}

			return setPositiveNumber( elem, value, subtract );
		}
	};
} );

jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
	function( elem, computed ) {
		if ( computed ) {
			return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
				elem.getBoundingClientRect().left -
					swap( elem, { marginLeft: 0 }, function() {
						return elem.getBoundingClientRect().left;
					} )
			) + "px";
		}
	}
);

// These hooks are used by animate to expand properties
jQuery.each( {
	margin: "",
	padding: "",
	border: "Width"
}, function( prefix, suffix ) {
	jQuery.cssHooks[ prefix + suffix ] = {
		expand: function( value ) {
			var i = 0,
				expanded = {},

				// Assumes a single number if not a string
				parts = typeof value === "string" ? value.split( " " ) : [ value ];

			for ( ; i < 4; i++ ) {
				expanded[ prefix + cssExpand[ i ] + suffix ] =
					parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
			}

			return expanded;
		}
	};

	if ( prefix !== "margin" ) {
		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
	}
} );

jQuery.fn.extend( {
	css: function( name, value ) {
		return access( this, function( elem, name, value ) {
			var styles, len,
				map = {},
				i = 0;

			if ( Array.isArray( name ) ) {
				styles = getStyles( elem );
				len = name.length;

				for ( ; i < len; i++ ) {
					map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
				}

				return map;
			}

			return value !== undefined ?
				jQuery.style( elem, name, value ) :
				jQuery.css( elem, name );
		}, name, value, arguments.length > 1 );
	}
} );


function Tween( elem, options, prop, end, easing ) {
	return new Tween.prototype.init( elem, options, prop, end, easing );
}
jQuery.Tween = Tween;

Tween.prototype = {
	constructor: Tween,
	init: function( elem, options, prop, end, easing, unit ) {
		this.elem = elem;
		this.prop = prop;
		this.easing = easing || jQuery.easing._default;
		this.options = options;
		this.start = this.now = this.cur();
		this.end = end;
		this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
	},
	cur: function() {
		var hooks = Tween.propHooks[ this.prop ];

		return hooks && hooks.get ?
			hooks.get( this ) :
			Tween.propHooks._default.get( this );
	},
	run: function( percent ) {
		var eased,
			hooks = Tween.propHooks[ this.prop ];

		if ( this.options.duration ) {
			this.pos = eased = jQuery.easing[ this.easing ](
				percent, this.options.duration * percent, 0, 1, this.options.duration
			);
		} else {
			this.pos = eased = percent;
		}
		this.now = ( this.end - this.start ) * eased + this.start;

		if ( this.options.step ) {
			this.options.step.call( this.elem, this.now, this );
		}

		if ( hooks && hooks.set ) {
			hooks.set( this );
		} else {
			Tween.propHooks._default.set( this );
		}
		return this;
	}
};

Tween.prototype.init.prototype = Tween.prototype;

Tween.propHooks = {
	_default: {
		get: function( tween ) {
			var result;

			// Use a property on the element directly when it is not a DOM element,
			// or when there is no matching style property that exists.
			if ( tween.elem.nodeType !== 1 ||
				tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {
				return tween.elem[ tween.prop ];
			}

			// Passing an empty string as a 3rd parameter to .css will automatically
			// attempt a parseFloat and fallback to a string if the parse fails.
			// Simple values such as "10px" are parsed to Float;
			// complex values such as "rotate(1rad)" are returned as-is.
			result = jQuery.css( tween.elem, tween.prop, "" );

			// Empty strings, null, undefined and "auto" are converted to 0.
			return !result || result === "auto" ? 0 : result;
		},
		set: function( tween ) {

			// Use step hook for back compat.
			// Use cssHook if its there.
			// Use .style if available and use plain properties where available.
			if ( jQuery.fx.step[ tween.prop ] ) {
				jQuery.fx.step[ tween.prop ]( tween );
			} else if ( tween.elem.nodeType === 1 && (
				jQuery.cssHooks[ tween.prop ] ||
					tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {
				jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
			} else {
				tween.elem[ tween.prop ] = tween.now;
			}
		}
	}
};

// Support: IE <=9 only
// Panic based approach to setting things on disconnected nodes
Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
	set: function( tween ) {
		if ( tween.elem.nodeType && tween.elem.parentNode ) {
			tween.elem[ tween.prop ] = tween.now;
		}
	}
};

jQuery.easing = {
	linear: function( p ) {
		return p;
	},
	swing: function( p ) {
		return 0.5 - Math.cos( p * Math.PI ) / 2;
	},
	_default: "swing"
};

jQuery.fx = Tween.prototype.init;

// Back compat <1.8 extension point
jQuery.fx.step = {};




var
	fxNow, inProgress,
	rfxtypes = /^(?:toggle|show|hide)$/,
	rrun = /queueHooks$/;

function schedule() {
	if ( inProgress ) {
		if ( document.hidden === false && window.requestAnimationFrame ) {
			window.requestAnimationFrame( schedule );
		} else {
			window.setTimeout( schedule, jQuery.fx.interval );
		}

		jQuery.fx.tick();
	}
}

// Animations created synchronously will run synchronously
function createFxNow() {
	window.setTimeout( function() {
		fxNow = undefined;
	} );
	return ( fxNow = Date.now() );
}

// Generate parameters to create a standard animation
function genFx( type, includeWidth ) {
	var which,
		i = 0,
		attrs = { height: type };

	// If we include width, step value is 1 to do all cssExpand values,
	// otherwise step value is 2 to skip over Left and Right
	includeWidth = includeWidth ? 1 : 0;
	for ( ; i < 4; i += 2 - includeWidth ) {
		which = cssExpand[ i ];
		attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
	}

	if ( includeWidth ) {
		attrs.opacity = attrs.width = type;
	}

	return attrs;
}

function createTween( value, prop, animation ) {
	var tween,
		collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),
		index = 0,
		length = collection.length;
	for ( ; index < length; index++ ) {
		if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {

			// We're done with this property
			return tween;
		}
	}
}

function defaultPrefilter( elem, props, opts ) {
	var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,
		isBox = "width" in props || "height" in props,
		anim = this,
		orig = {},
		style = elem.style,
		hidden = elem.nodeType && isHiddenWithinTree( elem ),
		dataShow = dataPriv.get( elem, "fxshow" );

	// Queue-skipping animations hijack the fx hooks
	if ( !opts.queue ) {
		hooks = jQuery._queueHooks( elem, "fx" );
		if ( hooks.unqueued == null ) {
			hooks.unqueued = 0;
			oldfire = hooks.empty.fire;
			hooks.empty.fire = function() {
				if ( !hooks.unqueued ) {
					oldfire();
				}
			};
		}
		hooks.unqueued++;

		anim.always( function() {

			// Ensure the complete handler is called before this completes
			anim.always( function() {
				hooks.unqueued--;
				if ( !jQuery.queue( elem, "fx" ).length ) {
					hooks.empty.fire();
				}
			} );
		} );
	}

	// Detect show/hide animations
	for ( prop in props ) {
		value = props[ prop ];
		if ( rfxtypes.test( value ) ) {
			delete props[ prop ];
			toggle = toggle || value === "toggle";
			if ( value === ( hidden ? "hide" : "show" ) ) {

				// Pretend to be hidden if this is a "show" and
				// there is still data from a stopped show/hide
				if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
					hidden = true;

				// Ignore all other no-op show/hide data
				} else {
					continue;
				}
			}
			orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
		}
	}

	// Bail out if this is a no-op like .hide().hide()
	propTween = !jQuery.isEmptyObject( props );
	if ( !propTween && jQuery.isEmptyObject( orig ) ) {
		return;
	}

	// Restrict "overflow" and "display" styles during box animations
	if ( isBox && elem.nodeType === 1 ) {

		// Support: IE <=9 - 11, Edge 12 - 15
		// Record all 3 overflow attributes because IE does not infer the shorthand
		// from identically-valued overflowX and overflowY and Edge just mirrors
		// the overflowX value there.
		opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];

		// Identify a display type, preferring old show/hide data over the CSS cascade
		restoreDisplay = dataShow && dataShow.display;
		if ( restoreDisplay == null ) {
			restoreDisplay = dataPriv.get( elem, "display" );
		}
		display = jQuery.css( elem, "display" );
		if ( display === "none" ) {
			if ( restoreDisplay ) {
				display = restoreDisplay;
			} else {

				// Get nonempty value(s) by temporarily forcing visibility
				showHide( [ elem ], true );
				restoreDisplay = elem.style.display || restoreDisplay;
				display = jQuery.css( elem, "display" );
				showHide( [ elem ] );
			}
		}

		// Animate inline elements as inline-block
		if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) {
			if ( jQuery.css( elem, "float" ) === "none" ) {

				// Restore the original display value at the end of pure show/hide animations
				if ( !propTween ) {
					anim.done( function() {
						style.display = restoreDisplay;
					} );
					if ( restoreDisplay == null ) {
						display = style.display;
						restoreDisplay = display === "none" ? "" : display;
					}
				}
				style.display = "inline-block";
			}
		}
	}

	if ( opts.overflow ) {
		style.overflow = "hidden";
		anim.always( function() {
			style.overflow = opts.overflow[ 0 ];
			style.overflowX = opts.overflow[ 1 ];
			style.overflowY = opts.overflow[ 2 ];
		} );
	}

	// Implement show/hide animations
	propTween = false;
	for ( prop in orig ) {

		// General show/hide setup for this element animation
		if ( !propTween ) {
			if ( dataShow ) {
				if ( "hidden" in dataShow ) {
					hidden = dataShow.hidden;
				}
			} else {
				dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } );
			}

			// Store hidden/visible for toggle so `.stop().toggle()` "reverses"
			if ( toggle ) {
				dataShow.hidden = !hidden;
			}

			// Show elements before animating them
			if ( hidden ) {
				showHide( [ elem ], true );
			}

			/* eslint-disable no-loop-func */

			anim.done( function() {

				/* eslint-enable no-loop-func */

				// The final step of a "hide" animation is actually hiding the element
				if ( !hidden ) {
					showHide( [ elem ] );
				}
				dataPriv.remove( elem, "fxshow" );
				for ( prop in orig ) {
					jQuery.style( elem, prop, orig[ prop ] );
				}
			} );
		}

		// Per-property setup
		propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
		if ( !( prop in dataShow ) ) {
			dataShow[ prop ] = propTween.start;
			if ( hidden ) {
				propTween.end = propTween.start;
				propTween.start = 0;
			}
		}
	}
}

function propFilter( props, specialEasing ) {
	var index, name, easing, value, hooks;

	// camelCase, specialEasing and expand cssHook pass
	for ( index in props ) {
		name = camelCase( index );
		easing = specialEasing[ name ];
		value = props[ index ];
		if ( Array.isArray( value ) ) {
			easing = value[ 1 ];
			value = props[ index ] = value[ 0 ];
		}

		if ( index !== name ) {
			props[ name ] = value;
			delete props[ index ];
		}

		hooks = jQuery.cssHooks[ name ];
		if ( hooks && "expand" in hooks ) {
			value = hooks.expand( value );
			delete props[ name ];

			// Not quite $.extend, this won't overwrite existing keys.
			// Reusing 'index' because we have the correct "name"
			for ( index in value ) {
				if ( !( index in props ) ) {
					props[ index ] = value[ index ];
					specialEasing[ index ] = easing;
				}
			}
		} else {
			specialEasing[ name ] = easing;
		}
	}
}

function Animation( elem, properties, options ) {
	var result,
		stopped,
		index = 0,
		length = Animation.prefilters.length,
		deferred = jQuery.Deferred().always( function() {

			// Don't match elem in the :animated selector
			delete tick.elem;
		} ),
		tick = function() {
			if ( stopped ) {
				return false;
			}
			var currentTime = fxNow || createFxNow(),
				remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),

				// Support: Android 2.3 only
				// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
				temp = remaining / animation.duration || 0,
				percent = 1 - temp,
				index = 0,
				length = animation.tweens.length;

			for ( ; index < length; index++ ) {
				animation.tweens[ index ].run( percent );
			}

			deferred.notifyWith( elem, [ animation, percent, remaining ] );

			// If there's more to do, yield
			if ( percent < 1 && length ) {
				return remaining;
			}

			// If this was an empty animation, synthesize a final progress notification
			if ( !length ) {
				deferred.notifyWith( elem, [ animation, 1, 0 ] );
			}

			// Resolve the animation and report its conclusion
			deferred.resolveWith( elem, [ animation ] );
			return false;
		},
		animation = deferred.promise( {
			elem: elem,
			props: jQuery.extend( {}, properties ),
			opts: jQuery.extend( true, {
				specialEasing: {},
				easing: jQuery.easing._default
			}, options ),
			originalProperties: properties,
			originalOptions: options,
			startTime: fxNow || createFxNow(),
			duration: options.duration,
			tweens: [],
			createTween: function( prop, end ) {
				var tween = jQuery.Tween( elem, animation.opts, prop, end,
					animation.opts.specialEasing[ prop ] || animation.opts.easing );
				animation.tweens.push( tween );
				return tween;
			},
			stop: function( gotoEnd ) {
				var index = 0,

					// If we are going to the end, we want to run all the tweens
					// otherwise we skip this part
					length = gotoEnd ? animation.tweens.length : 0;
				if ( stopped ) {
					return this;
				}
				stopped = true;
				for ( ; index < length; index++ ) {
					animation.tweens[ index ].run( 1 );
				}

				// Resolve when we played the last frame; otherwise, reject
				if ( gotoEnd ) {
					deferred.notifyWith( elem, [ animation, 1, 0 ] );
					deferred.resolveWith( elem, [ animation, gotoEnd ] );
				} else {
					deferred.rejectWith( elem, [ animation, gotoEnd ] );
				}
				return this;
			}
		} ),
		props = animation.props;

	propFilter( props, animation.opts.specialEasing );

	for ( ; index < length; index++ ) {
		result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
		if ( result ) {
			if ( isFunction( result.stop ) ) {
				jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
					result.stop.bind( result );
			}
			return result;
		}
	}

	jQuery.map( props, createTween, animation );

	if ( isFunction( animation.opts.start ) ) {
		animation.opts.start.call( elem, animation );
	}

	// Attach callbacks from options
	animation
		.progress( animation.opts.progress )
		.done( animation.opts.done, animation.opts.complete )
		.fail( animation.opts.fail )
		.always( animation.opts.always );

	jQuery.fx.timer(
		jQuery.extend( tick, {
			elem: elem,
			anim: animation,
			queue: animation.opts.queue
		} )
	);

	return animation;
}

jQuery.Animation = jQuery.extend( Animation, {

	tweeners: {
		"*": [ function( prop, value ) {
			var tween = this.createTween( prop, value );
			adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );
			return tween;
		} ]
	},

	tweener: function( props, callback ) {
		if ( isFunction( props ) ) {
			callback = props;
			props = [ "*" ];
		} else {
			props = props.match( rnothtmlwhite );
		}

		var prop,
			index = 0,
			length = props.length;

		for ( ; index < length; index++ ) {
			prop = props[ index ];
			Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
			Animation.tweeners[ prop ].unshift( callback );
		}
	},

	prefilters: [ defaultPrefilter ],

	prefilter: function( callback, prepend ) {
		if ( prepend ) {
			Animation.prefilters.unshift( callback );
		} else {
			Animation.prefilters.push( callback );
		}
	}
} );

jQuery.speed = function( speed, easing, fn ) {
	var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
		complete: fn || !fn && easing ||
			isFunction( speed ) && speed,
		duration: speed,
		easing: fn && easing || easing && !isFunction( easing ) && easing
	};

	// Go to the end state if fx are off
	if ( jQuery.fx.off ) {
		opt.duration = 0;

	} else {
		if ( typeof opt.duration !== "number" ) {
			if ( opt.duration in jQuery.fx.speeds ) {
				opt.duration = jQuery.fx.speeds[ opt.duration ];

			} else {
				opt.duration = jQuery.fx.speeds._default;
			}
		}
	}

	// Normalize opt.queue - true/undefined/null -> "fx"
	if ( opt.queue == null || opt.queue === true ) {
		opt.queue = "fx";
	}

	// Queueing
	opt.old = opt.complete;

	opt.complete = function() {
		if ( isFunction( opt.old ) ) {
			opt.old.call( this );
		}

		if ( opt.queue ) {
			jQuery.dequeue( this, opt.queue );
		}
	};

	return opt;
};

jQuery.fn.extend( {
	fadeTo: function( speed, to, easing, callback ) {

		// Show any hidden elements after setting opacity to 0
		return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show()

			// Animate to the value specified
			.end().animate( { opacity: to }, speed, easing, callback );
	},
	animate: function( prop, speed, easing, callback ) {
		var empty = jQuery.isEmptyObject( prop ),
			optall = jQuery.speed( speed, easing, callback ),
			doAnimation = function() {

				// Operate on a copy of prop so per-property easing won't be lost
				var anim = Animation( this, jQuery.extend( {}, prop ), optall );

				// Empty animations, or finishing resolves immediately
				if ( empty || dataPriv.get( this, "finish" ) ) {
					anim.stop( true );
				}
			};

		doAnimation.finish = doAnimation;

		return empty || optall.queue === false ?
			this.each( doAnimation ) :
			this.queue( optall.queue, doAnimation );
	},
	stop: function( type, clearQueue, gotoEnd ) {
		var stopQueue = function( hooks ) {
			var stop = hooks.stop;
			delete hooks.stop;
			stop( gotoEnd );
		};

		if ( typeof type !== "string" ) {
			gotoEnd = clearQueue;
			clearQueue = type;
			type = undefined;
		}
		if ( clearQueue ) {
			this.queue( type || "fx", [] );
		}

		return this.each( function() {
			var dequeue = true,
				index = type != null && type + "queueHooks",
				timers = jQuery.timers,
				data = dataPriv.get( this );

			if ( index ) {
				if ( data[ index ] && data[ index ].stop ) {
					stopQueue( data[ index ] );
				}
			} else {
				for ( index in data ) {
					if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
						stopQueue( data[ index ] );
					}
				}
			}

			for ( index = timers.length; index--; ) {
				if ( timers[ index ].elem === this &&
					( type == null || timers[ index ].queue === type ) ) {

					timers[ index ].anim.stop( gotoEnd );
					dequeue = false;
					timers.splice( index, 1 );
				}
			}

			// Start the next in the queue if the last step wasn't forced.
			// Timers currently will call their complete callbacks, which
			// will dequeue but only if they were gotoEnd.
			if ( dequeue || !gotoEnd ) {
				jQuery.dequeue( this, type );
			}
		} );
	},
	finish: function( type ) {
		if ( type !== false ) {
			type = type || "fx";
		}
		return this.each( function() {
			var index,
				data = dataPriv.get( this ),
				queue = data[ type + "queue" ],
				hooks = data[ type + "queueHooks" ],
				timers = jQuery.timers,
				length = queue ? queue.length : 0;

			// Enable finishing flag on private data
			data.finish = true;

			// Empty the queue first
			jQuery.queue( this, type, [] );

			if ( hooks && hooks.stop ) {
				hooks.stop.call( this, true );
			}

			// Look for any active animations, and finish them
			for ( index = timers.length; index--; ) {
				if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
					timers[ index ].anim.stop( true );
					timers.splice( index, 1 );
				}
			}

			// Look for any animations in the old queue and finish them
			for ( index = 0; index < length; index++ ) {
				if ( queue[ index ] && queue[ index ].finish ) {
					queue[ index ].finish.call( this );
				}
			}

			// Turn off finishing flag
			delete data.finish;
		} );
	}
} );

jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) {
	var cssFn = jQuery.fn[ name ];
	jQuery.fn[ name ] = function( speed, easing, callback ) {
		return speed == null || typeof speed === "boolean" ?
			cssFn.apply( this, arguments ) :
			this.animate( genFx( name, true ), speed, easing, callback );
	};
} );

// Generate shortcuts for custom animations
jQuery.each( {
	slideDown: genFx( "show" ),
	slideUp: genFx( "hide" ),
	slideToggle: genFx( "toggle" ),
	fadeIn: { opacity: "show" },
	fadeOut: { opacity: "hide" },
	fadeToggle: { opacity: "toggle" }
}, function( name, props ) {
	jQuery.fn[ name ] = function( speed, easing, callback ) {
		return this.animate( props, speed, easing, callback );
	};
} );

jQuery.timers = [];
jQuery.fx.tick = function() {
	var timer,
		i = 0,
		timers = jQuery.timers;

	fxNow = Date.now();

	for ( ; i < timers.length; i++ ) {
		timer = timers[ i ];

		// Run the timer and safely remove it when done (allowing for external removal)
		if ( !timer() && timers[ i ] === timer ) {
			timers.splice( i--, 1 );
		}
	}

	if ( !timers.length ) {
		jQuery.fx.stop();
	}
	fxNow = undefined;
};

jQuery.fx.timer = function( timer ) {
	jQuery.timers.push( timer );
	jQuery.fx.start();
};

jQuery.fx.interval = 13;
jQuery.fx.start = function() {
	if ( inProgress ) {
		return;
	}

	inProgress = true;
	schedule();
};

jQuery.fx.stop = function() {
	inProgress = null;
};

jQuery.fx.speeds = {
	slow: 600,
	fast: 200,

	// Default speed
	_default: 400
};


// Based off of the plugin by Clint Helfers, with permission.
// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
jQuery.fn.delay = function( time, type ) {
	time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
	type = type || "fx";

	return this.queue( type, function( next, hooks ) {
		var timeout = window.setTimeout( next, time );
		hooks.stop = function() {
			window.clearTimeout( timeout );
		};
	} );
};


( function() {
	var input = document.createElement( "input" ),
		select = document.createElement( "select" ),
		opt = select.appendChild( document.createElement( "option" ) );

	input.type = "checkbox";

	// Support: Android <=4.3 only
	// Default value for a checkbox should be "on"
	support.checkOn = input.value !== "";

	// Support: IE <=11 only
	// Must access selectedIndex to make default options select
	support.optSelected = opt.selected;

	// Support: IE <=11 only
	// An input loses its value after becoming a radio
	input = document.createElement( "input" );
	input.value = "t";
	input.type = "radio";
	support.radioValue = input.value === "t";
} )();


var boolHook,
	attrHandle = jQuery.expr.attrHandle;

jQuery.fn.extend( {
	attr: function( name, value ) {
		return access( this, jQuery.attr, name, value, arguments.length > 1 );
	},

	removeAttr: function( name ) {
		return this.each( function() {
			jQuery.removeAttr( this, name );
		} );
	}
} );

jQuery.extend( {
	attr: function( elem, name, value ) {
		var ret, hooks,
			nType = elem.nodeType;

		// Don't get/set attributes on text, comment and attribute nodes
		if ( nType === 3 || nType === 8 || nType === 2 ) {
			return;
		}

		// Fallback to prop when attributes are not supported
		if ( typeof elem.getAttribute === "undefined" ) {
			return jQuery.prop( elem, name, value );
		}

		// Attribute hooks are determined by the lowercase version
		// Grab necessary hook if one is defined
		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
			hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
				( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
		}

		if ( value !== undefined ) {
			if ( value === null ) {
				jQuery.removeAttr( elem, name );
				return;
			}

			if ( hooks && "set" in hooks &&
				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
				return ret;
			}

			elem.setAttribute( name, value + "" );
			return value;
		}

		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
			return ret;
		}

		ret = jQuery.find.attr( elem, name );

		// Non-existent attributes return null, we normalize to undefined
		return ret == null ? undefined : ret;
	},

	attrHooks: {
		type: {
			set: function( elem, value ) {
				if ( !support.radioValue && value === "radio" &&
					nodeName( elem, "input" ) ) {
					var val = elem.value;
					elem.setAttribute( "type", value );
					if ( val ) {
						elem.value = val;
					}
					return value;
				}
			}
		}
	},

	removeAttr: function( elem, value ) {
		var name,
			i = 0,

			// Attribute names can contain non-HTML whitespace characters
			// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
			attrNames = value && value.match( rnothtmlwhite );

		if ( attrNames && elem.nodeType === 1 ) {
			while ( ( name = attrNames[ i++ ] ) ) {
				elem.removeAttribute( name );
			}
		}
	}
} );

// Hooks for boolean attributes
boolHook = {
	set: function( elem, value, name ) {
		if ( value === false ) {

			// Remove boolean attributes when set to false
			jQuery.removeAttr( elem, name );
		} else {
			elem.setAttribute( name, name );
		}
		return name;
	}
};

jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) {
	var getter = attrHandle[ name ] || jQuery.find.attr;

	attrHandle[ name ] = function( elem, name, isXML ) {
		var ret, handle,
			lowercaseName = name.toLowerCase();

		if ( !isXML ) {

			// Avoid an infinite loop by temporarily removing this function from the getter
			handle = attrHandle[ lowercaseName ];
			attrHandle[ lowercaseName ] = ret;
			ret = getter( elem, name, isXML ) != null ?
				lowercaseName :
				null;
			attrHandle[ lowercaseName ] = handle;
		}
		return ret;
	};
} );




var rfocusable = /^(?:input|select|textarea|button)$/i,
	rclickable = /^(?:a|area)$/i;

jQuery.fn.extend( {
	prop: function( name, value ) {
		return access( this, jQuery.prop, name, value, arguments.length > 1 );
	},

	removeProp: function( name ) {
		return this.each( function() {
			delete this[ jQuery.propFix[ name ] || name ];
		} );
	}
} );

jQuery.extend( {
	prop: function( elem, name, value ) {
		var ret, hooks,
			nType = elem.nodeType;

		// Don't get/set properties on text, comment and attribute nodes
		if ( nType === 3 || nType === 8 || nType === 2 ) {
			return;
		}

		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {

			// Fix name and attach hooks
			name = jQuery.propFix[ name ] || name;
			hooks = jQuery.propHooks[ name ];
		}

		if ( value !== undefined ) {
			if ( hooks && "set" in hooks &&
				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
				return ret;
			}

			return ( elem[ name ] = value );
		}

		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
			return ret;
		}

		return elem[ name ];
	},

	propHooks: {
		tabIndex: {
			get: function( elem ) {

				// Support: IE <=9 - 11 only
				// elem.tabIndex doesn't always return the
				// correct value when it hasn't been explicitly set
				// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
				// Use proper attribute retrieval(#12072)
				var tabindex = jQuery.find.attr( elem, "tabindex" );

				if ( tabindex ) {
					return parseInt( tabindex, 10 );
				}

				if (
					rfocusable.test( elem.nodeName ) ||
					rclickable.test( elem.nodeName ) &&
					elem.href
				) {
					return 0;
				}

				return -1;
			}
		}
	},

	propFix: {
		"for": "htmlFor",
		"class": "className"
	}
} );

// Support: IE <=11 only
// Accessing the selectedIndex property
// forces the browser to respect setting selected
// on the option
// The getter ensures a default option is selected
// when in an optgroup
// eslint rule "no-unused-expressions" is disabled for this code
// since it considers such accessions noop
if ( !support.optSelected ) {
	jQuery.propHooks.selected = {
		get: function( elem ) {

			/* eslint no-unused-expressions: "off" */

			var parent = elem.parentNode;
			if ( parent && parent.parentNode ) {
				parent.parentNode.selectedIndex;
			}
			return null;
		},
		set: function( elem ) {

			/* eslint no-unused-expressions: "off" */

			var parent = elem.parentNode;
			if ( parent ) {
				parent.selectedIndex;

				if ( parent.parentNode ) {
					parent.parentNode.selectedIndex;
				}
			}
		}
	};
}

jQuery.each( [
	"tabIndex",
	"readOnly",
	"maxLength",
	"cellSpacing",
	"cellPadding",
	"rowSpan",
	"colSpan",
	"useMap",
	"frameBorder",
	"contentEditable"
], function() {
	jQuery.propFix[ this.toLowerCase() ] = this;
} );




	// Strip and collapse whitespace according to HTML spec
	// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace
	function stripAndCollapse( value ) {
		var tokens = value.match( rnothtmlwhite ) || [];
		return tokens.join( " " );
	}


function getClass( elem ) {
	return elem.getAttribute && elem.getAttribute( "class" ) || "";
}

function classesToArray( value ) {
	if ( Array.isArray( value ) ) {
		return value;
	}
	if ( typeof value === "string" ) {
		return value.match( rnothtmlwhite ) || [];
	}
	return [];
}

jQuery.fn.extend( {
	addClass: function( value ) {
		var classes, elem, cur, curValue, clazz, j, finalValue,
			i = 0;

		if ( isFunction( value ) ) {
			return this.each( function( j ) {
				jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
			} );
		}

		classes = classesToArray( value );

		if ( classes.length ) {
			while ( ( elem = this[ i++ ] ) ) {
				curValue = getClass( elem );
				cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );

				if ( cur ) {
					j = 0;
					while ( ( clazz = classes[ j++ ] ) ) {
						if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
							cur += clazz + " ";
						}
					}

					// Only assign if different to avoid unneeded rendering.
					finalValue = stripAndCollapse( cur );
					if ( curValue !== finalValue ) {
						elem.setAttribute( "class", finalValue );
					}
				}
			}
		}

		return this;
	},

	removeClass: function( value ) {
		var classes, elem, cur, curValue, clazz, j, finalValue,
			i = 0;

		if ( isFunction( value ) ) {
			return this.each( function( j ) {
				jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
			} );
		}

		if ( !arguments.length ) {
			return this.attr( "class", "" );
		}

		classes = classesToArray( value );

		if ( classes.length ) {
			while ( ( elem = this[ i++ ] ) ) {
				curValue = getClass( elem );

				// This expression is here for better compressibility (see addClass)
				cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );

				if ( cur ) {
					j = 0;
					while ( ( clazz = classes[ j++ ] ) ) {

						// Remove *all* instances
						while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
							cur = cur.replace( " " + clazz + " ", " " );
						}
					}

					// Only assign if different to avoid unneeded rendering.
					finalValue = stripAndCollapse( cur );
					if ( curValue !== finalValue ) {
						elem.setAttribute( "class", finalValue );
					}
				}
			}
		}

		return this;
	},

	toggleClass: function( value, stateVal ) {
		var type = typeof value,
			isValidValue = type === "string" || Array.isArray( value );

		if ( typeof stateVal === "boolean" && isValidValue ) {
			return stateVal ? this.addClass( value ) : this.removeClass( value );
		}

		if ( isFunction( value ) ) {
			return this.each( function( i ) {
				jQuery( this ).toggleClass(
					value.call( this, i, getClass( this ), stateVal ),
					stateVal
				);
			} );
		}

		return this.each( function() {
			var className, i, self, classNames;

			if ( isValidValue ) {

				// Toggle individual class names
				i = 0;
				self = jQuery( this );
				classNames = classesToArray( value );

				while ( ( className = classNames[ i++ ] ) ) {

					// Check each className given, space separated list
					if ( self.hasClass( className ) ) {
						self.removeClass( className );
					} else {
						self.addClass( className );
					}
				}

			// Toggle whole class name
			} else if ( value === undefined || type === "boolean" ) {
				className = getClass( this );
				if ( className ) {

					// Store className if set
					dataPriv.set( this, "__className__", className );
				}

				// If the element has a class name or if we're passed `false`,
				// then remove the whole classname (if there was one, the above saved it).
				// Otherwise bring back whatever was previously saved (if anything),
				// falling back to the empty string if nothing was stored.
				if ( this.setAttribute ) {
					this.setAttribute( "class",
						className || value === false ?
							"" :
							dataPriv.get( this, "__className__" ) || ""
					);
				}
			}
		} );
	},

	hasClass: function( selector ) {
		var className, elem,
			i = 0;

		className = " " + selector + " ";
		while ( ( elem = this[ i++ ] ) ) {
			if ( elem.nodeType === 1 &&
				( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
				return true;
			}
		}

		return false;
	}
} );




var rreturn = /\r/g;

jQuery.fn.extend( {
	val: function( value ) {
		var hooks, ret, valueIsFunction,
			elem = this[ 0 ];

		if ( !arguments.length ) {
			if ( elem ) {
				hooks = jQuery.valHooks[ elem.type ] ||
					jQuery.valHooks[ elem.nodeName.toLowerCase() ];

				if ( hooks &&
					"get" in hooks &&
					( ret = hooks.get( elem, "value" ) ) !== undefined
				) {
					return ret;
				}

				ret = elem.value;

				// Handle most common string cases
				if ( typeof ret === "string" ) {
					return ret.replace( rreturn, "" );
				}

				// Handle cases where value is null/undef or number
				return ret == null ? "" : ret;
			}

			return;
		}

		valueIsFunction = isFunction( value );

		return this.each( function( i ) {
			var val;

			if ( this.nodeType !== 1 ) {
				return;
			}

			if ( valueIsFunction ) {
				val = value.call( this, i, jQuery( this ).val() );
			} else {
				val = value;
			}

			// Treat null/undefined as ""; convert numbers to string
			if ( val == null ) {
				val = "";

			} else if ( typeof val === "number" ) {
				val += "";

			} else if ( Array.isArray( val ) ) {
				val = jQuery.map( val, function( value ) {
					return value == null ? "" : value + "";
				} );
			}

			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];

			// If set returns undefined, fall back to normal setting
			if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
				this.value = val;
			}
		} );
	}
} );

jQuery.extend( {
	valHooks: {
		option: {
			get: function( elem ) {

				var val = jQuery.find.attr( elem, "value" );
				return val != null ?
					val :

					// Support: IE <=10 - 11 only
					// option.text throws exceptions (#14686, #14858)
					// Strip and collapse whitespace
					// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
					stripAndCollapse( jQuery.text( elem ) );
			}
		},
		select: {
			get: function( elem ) {
				var value, option, i,
					options = elem.options,
					index = elem.selectedIndex,
					one = elem.type === "select-one",
					values = one ? null : [],
					max = one ? index + 1 : options.length;

				if ( index < 0 ) {
					i = max;

				} else {
					i = one ? index : 0;
				}

				// Loop through all the selected options
				for ( ; i < max; i++ ) {
					option = options[ i ];

					// Support: IE <=9 only
					// IE8-9 doesn't update selected after form reset (#2551)
					if ( ( option.selected || i === index ) &&

							// Don't return options that are disabled or in a disabled optgroup
							!option.disabled &&
							( !option.parentNode.disabled ||
								!nodeName( option.parentNode, "optgroup" ) ) ) {

						// Get the specific value for the option
						value = jQuery( option ).val();

						// We don't need an array for one selects
						if ( one ) {
							return value;
						}

						// Multi-Selects return an array
						values.push( value );
					}
				}

				return values;
			},

			set: function( elem, value ) {
				var optionSet, option,
					options = elem.options,
					values = jQuery.makeArray( value ),
					i = options.length;

				while ( i-- ) {
					option = options[ i ];

					/* eslint-disable no-cond-assign */

					if ( option.selected =
						jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
					) {
						optionSet = true;
					}

					/* eslint-enable no-cond-assign */
				}

				// Force browsers to behave consistently when non-matching value is set
				if ( !optionSet ) {
					elem.selectedIndex = -1;
				}
				return values;
			}
		}
	}
} );

// Radios and checkboxes getter/setter
jQuery.each( [ "radio", "checkbox" ], function() {
	jQuery.valHooks[ this ] = {
		set: function( elem, value ) {
			if ( Array.isArray( value ) ) {
				return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
			}
		}
	};
	if ( !support.checkOn ) {
		jQuery.valHooks[ this ].get = function( elem ) {
			return elem.getAttribute( "value" ) === null ? "on" : elem.value;
		};
	}
} );




// Return jQuery for attributes-only inclusion


support.focusin = "onfocusin" in window;


var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
	stopPropagationCallback = function( e ) {
		e.stopPropagation();
	};

jQuery.extend( jQuery.event, {

	trigger: function( event, data, elem, onlyHandlers ) {

		var i, cur, tmp, bubbleType, ontype, handle, special, lastElement,
			eventPath = [ elem || document ],
			type = hasOwn.call( event, "type" ) ? event.type : event,
			namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];

		cur = lastElement = tmp = elem = elem || document;

		// Don't do events on text and comment nodes
		if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
			return;
		}

		// focus/blur morphs to focusin/out; ensure we're not firing them right now
		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
			return;
		}

		if ( type.indexOf( "." ) > -1 ) {

			// Namespaced trigger; create a regexp to match event type in handle()
			namespaces = type.split( "." );
			type = namespaces.shift();
			namespaces.sort();
		}
		ontype = type.indexOf( ":" ) < 0 && "on" + type;

		// Caller can pass in a jQuery.Event object, Object, or just an event type string
		event = event[ jQuery.expando ] ?
			event :
			new jQuery.Event( type, typeof event === "object" && event );

		// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
		event.isTrigger = onlyHandlers ? 2 : 3;
		event.namespace = namespaces.join( "." );
		event.rnamespace = event.namespace ?
			new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
			null;

		// Clean up the event in case it is being reused
		event.result = undefined;
		if ( !event.target ) {
			event.target = elem;
		}

		// Clone any incoming data and prepend the event, creating the handler arg list
		data = data == null ?
			[ event ] :
			jQuery.makeArray( data, [ event ] );

		// Allow special events to draw outside the lines
		special = jQuery.event.special[ type ] || {};
		if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
			return;
		}

		// Determine event propagation path in advance, per W3C events spec (#9951)
		// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
		if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {

			bubbleType = special.delegateType || type;
			if ( !rfocusMorph.test( bubbleType + type ) ) {
				cur = cur.parentNode;
			}
			for ( ; cur; cur = cur.parentNode ) {
				eventPath.push( cur );
				tmp = cur;
			}

			// Only add window if we got to document (e.g., not plain obj or detached DOM)
			if ( tmp === ( elem.ownerDocument || document ) ) {
				eventPath.push( tmp.defaultView || tmp.parentWindow || window );
			}
		}

		// Fire handlers on the event path
		i = 0;
		while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
			lastElement = cur;
			event.type = i > 1 ?
				bubbleType :
				special.bindType || type;

			// jQuery handler
			handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] &&
				dataPriv.get( cur, "handle" );
			if ( handle ) {
				handle.apply( cur, data );
			}

			// Native handler
			handle = ontype && cur[ ontype ];
			if ( handle && handle.apply && acceptData( cur ) ) {
				event.result = handle.apply( cur, data );
				if ( event.result === false ) {
					event.preventDefault();
				}
			}
		}
		event.type = type;

		// If nobody prevented the default action, do it now
		if ( !onlyHandlers && !event.isDefaultPrevented() ) {

			if ( ( !special._default ||
				special._default.apply( eventPath.pop(), data ) === false ) &&
				acceptData( elem ) ) {

				// Call a native DOM method on the target with the same name as the event.
				// Don't do default actions on window, that's where global variables be (#6170)
				if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {

					// Don't re-trigger an onFOO event when we call its FOO() method
					tmp = elem[ ontype ];

					if ( tmp ) {
						elem[ ontype ] = null;
					}

					// Prevent re-triggering of the same event, since we already bubbled it above
					jQuery.event.triggered = type;

					if ( event.isPropagationStopped() ) {
						lastElement.addEventListener( type, stopPropagationCallback );
					}

					elem[ type ]();

					if ( event.isPropagationStopped() ) {
						lastElement.removeEventListener( type, stopPropagationCallback );
					}

					jQuery.event.triggered = undefined;

					if ( tmp ) {
						elem[ ontype ] = tmp;
					}
				}
			}
		}

		return event.result;
	},

	// Piggyback on a donor event to simulate a different one
	// Used only for `focus(in | out)` events
	simulate: function( type, elem, event ) {
		var e = jQuery.extend(
			new jQuery.Event(),
			event,
			{
				type: type,
				isSimulated: true
			}
		);

		jQuery.event.trigger( e, null, elem );
	}

} );

jQuery.fn.extend( {

	trigger: function( type, data ) {
		return this.each( function() {
			jQuery.event.trigger( type, data, this );
		} );
	},
	triggerHandler: function( type, data ) {
		var elem = this[ 0 ];
		if ( elem ) {
			return jQuery.event.trigger( type, data, elem, true );
		}
	}
} );


// Support: Firefox <=44
// Firefox doesn't have focus(in | out) events
// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
//
// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
// focus(in | out) events fire after focus & blur events,
// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
if ( !support.focusin ) {
	jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {

		// Attach a single capturing handler on the document while someone wants focusin/focusout
		var handler = function( event ) {
			jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
		};

		jQuery.event.special[ fix ] = {
			setup: function() {

				// Handle: regular nodes (via `this.ownerDocument`), window
				// (via `this.document`) & document (via `this`).
				var doc = this.ownerDocument || this.document || this,
					attaches = dataPriv.access( doc, fix );

				if ( !attaches ) {
					doc.addEventListener( orig, handler, true );
				}
				dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
			},
			teardown: function() {
				var doc = this.ownerDocument || this.document || this,
					attaches = dataPriv.access( doc, fix ) - 1;

				if ( !attaches ) {
					doc.removeEventListener( orig, handler, true );
					dataPriv.remove( doc, fix );

				} else {
					dataPriv.access( doc, fix, attaches );
				}
			}
		};
	} );
}
var location = window.location;

var nonce = { guid: Date.now() };

var rquery = ( /\?/ );



// Cross-browser xml parsing
jQuery.parseXML = function( data ) {
	var xml, parserErrorElem;
	if ( !data || typeof data !== "string" ) {
		return null;
	}

	// Support: IE 9 - 11 only
	// IE throws on parseFromString with invalid input.
	try {
		xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
	} catch ( e ) {}

	parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ];
	if ( !xml || parserErrorElem ) {
		jQuery.error( "Invalid XML: " + (
			parserErrorElem ?
				jQuery.map( parserErrorElem.childNodes, function( el ) {
					return el.textContent;
				} ).join( "\n" ) :
				data
		) );
	}
	return xml;
};


var
	rbracket = /\[\]$/,
	rCRLF = /\r?\n/g,
	rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
	rsubmittable = /^(?:input|select|textarea|keygen)/i;

function buildParams( prefix, obj, traditional, add ) {
	var name;

	if ( Array.isArray( obj ) ) {

		// Serialize array item.
		jQuery.each( obj, function( i, v ) {
			if ( traditional || rbracket.test( prefix ) ) {

				// Treat each array item as a scalar.
				add( prefix, v );

			} else {

				// Item is non-scalar (array or object), encode its numeric index.
				buildParams(
					prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
					v,
					traditional,
					add
				);
			}
		} );

	} else if ( !traditional && toType( obj ) === "object" ) {

		// Serialize object item.
		for ( name in obj ) {
			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
		}

	} else {

		// Serialize scalar item.
		add( prefix, obj );
	}
}

// Serialize an array of form elements or a set of
// key/values into a query string
jQuery.param = function( a, traditional ) {
	var prefix,
		s = [],
		add = function( key, valueOrFunction ) {

			// If value is a function, invoke it and use its return value
			var value = isFunction( valueOrFunction ) ?
				valueOrFunction() :
				valueOrFunction;

			s[ s.length ] = encodeURIComponent( key ) + "=" +
				encodeURIComponent( value == null ? "" : value );
		};

	if ( a == null ) {
		return "";
	}

	// If an array was passed in, assume that it is an array of form elements.
	if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {

		// Serialize the form elements
		jQuery.each( a, function() {
			add( this.name, this.value );
		} );

	} else {

		// If traditional, encode the "old" way (the way 1.3.2 or older
		// did it), otherwise encode params recursively.
		for ( prefix in a ) {
			buildParams( prefix, a[ prefix ], traditional, add );
		}
	}

	// Return the resulting serialization
	return s.join( "&" );
};

jQuery.fn.extend( {
	serialize: function() {
		return jQuery.param( this.serializeArray() );
	},
	serializeArray: function() {
		return this.map( function() {

			// Can add propHook for "elements" to filter or add form elements
			var elements = jQuery.prop( this, "elements" );
			return elements ? jQuery.makeArray( elements ) : this;
		} ).filter( function() {
			var type = this.type;

			// Use .is( ":disabled" ) so that fieldset[disabled] works
			return this.name && !jQuery( this ).is( ":disabled" ) &&
				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
				( this.checked || !rcheckableType.test( type ) );
		} ).map( function( _i, elem ) {
			var val = jQuery( this ).val();

			if ( val == null ) {
				return null;
			}

			if ( Array.isArray( val ) ) {
				return jQuery.map( val, function( val ) {
					return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
				} );
			}

			return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
		} ).get();
	}
} );


var
	r20 = /%20/g,
	rhash = /#.*$/,
	rantiCache = /([?&])_=[^&]*/,
	rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,

	// #7653, #8125, #8152: local protocol detection
	rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
	rnoContent = /^(?:GET|HEAD)$/,
	rprotocol = /^\/\//,

	/* Prefilters
	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
	 * 2) These are called:
	 *    - BEFORE asking for a transport
	 *    - AFTER param serialization (s.data is a string if s.processData is true)
	 * 3) key is the dataType
	 * 4) the catchall symbol "*" can be used
	 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
	 */
	prefilters = {},

	/* Transports bindings
	 * 1) key is the dataType
	 * 2) the catchall symbol "*" can be used
	 * 3) selection will start with transport dataType and THEN go to "*" if needed
	 */
	transports = {},

	// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
	allTypes = "*/".concat( "*" ),

	// Anchor tag for parsing the document origin
	originAnchor = document.createElement( "a" );

originAnchor.href = location.href;

// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
function addToPrefiltersOrTransports( structure ) {

	// dataTypeExpression is optional and defaults to "*"
	return function( dataTypeExpression, func ) {

		if ( typeof dataTypeExpression !== "string" ) {
			func = dataTypeExpression;
			dataTypeExpression = "*";
		}

		var dataType,
			i = 0,
			dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];

		if ( isFunction( func ) ) {

			// For each dataType in the dataTypeExpression
			while ( ( dataType = dataTypes[ i++ ] ) ) {

				// Prepend if requested
				if ( dataType[ 0 ] === "+" ) {
					dataType = dataType.slice( 1 ) || "*";
					( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );

				// Otherwise append
				} else {
					( structure[ dataType ] = structure[ dataType ] || [] ).push( func );
				}
			}
		}
	};
}

// Base inspection function for prefilters and transports
function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {

	var inspected = {},
		seekingTransport = ( structure === transports );

	function inspect( dataType ) {
		var selected;
		inspected[ dataType ] = true;
		jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
			var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
			if ( typeof dataTypeOrTransport === "string" &&
				!seekingTransport && !inspected[ dataTypeOrTransport ] ) {

				options.dataTypes.unshift( dataTypeOrTransport );
				inspect( dataTypeOrTransport );
				return false;
			} else if ( seekingTransport ) {
				return !( selected = dataTypeOrTransport );
			}
		} );
		return selected;
	}

	return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
}

// A special extend for ajax options
// that takes "flat" options (not to be deep extended)
// Fixes #9887
function ajaxExtend( target, src ) {
	var key, deep,
		flatOptions = jQuery.ajaxSettings.flatOptions || {};

	for ( key in src ) {
		if ( src[ key ] !== undefined ) {
			( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
		}
	}
	if ( deep ) {
		jQuery.extend( true, target, deep );
	}

	return target;
}

/* Handles responses to an ajax request:
 * - finds the right dataType (mediates between content-type and expected dataType)
 * - returns the corresponding response
 */
function ajaxHandleResponses( s, jqXHR, responses ) {

	var ct, type, finalDataType, firstDataType,
		contents = s.contents,
		dataTypes = s.dataTypes;

	// Remove auto dataType and get content-type in the process
	while ( dataTypes[ 0 ] === "*" ) {
		dataTypes.shift();
		if ( ct === undefined ) {
			ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );
		}
	}

	// Check if we're dealing with a known content-type
	if ( ct ) {
		for ( type in contents ) {
			if ( contents[ type ] && contents[ type ].test( ct ) ) {
				dataTypes.unshift( type );
				break;
			}
		}
	}

	// Check to see if we have a response for the expected dataType
	if ( dataTypes[ 0 ] in responses ) {
		finalDataType = dataTypes[ 0 ];
	} else {

		// Try convertible dataTypes
		for ( type in responses ) {
			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {
				finalDataType = type;
				break;
			}
			if ( !firstDataType ) {
				firstDataType = type;
			}
		}

		// Or just use first one
		finalDataType = finalDataType || firstDataType;
	}

	// If we found a dataType
	// We add the dataType to the list if needed
	// and return the corresponding response
	if ( finalDataType ) {
		if ( finalDataType !== dataTypes[ 0 ] ) {
			dataTypes.unshift( finalDataType );
		}
		return responses[ finalDataType ];
	}
}

/* Chain conversions given the request and the original response
 * Also sets the responseXXX fields on the jqXHR instance
 */
function ajaxConvert( s, response, jqXHR, isSuccess ) {
	var conv2, current, conv, tmp, prev,
		converters = {},

		// Work with a copy of dataTypes in case we need to modify it for conversion
		dataTypes = s.dataTypes.slice();

	// Create converters map with lowercased keys
	if ( dataTypes[ 1 ] ) {
		for ( conv in s.converters ) {
			converters[ conv.toLowerCase() ] = s.converters[ conv ];
		}
	}

	current = dataTypes.shift();

	// Convert to each sequential dataType
	while ( current ) {

		if ( s.responseFields[ current ] ) {
			jqXHR[ s.responseFields[ current ] ] = response;
		}

		// Apply the dataFilter if provided
		if ( !prev && isSuccess && s.dataFilter ) {
			response = s.dataFilter( response, s.dataType );
		}

		prev = current;
		current = dataTypes.shift();

		if ( current ) {

			// There's only work to do if current dataType is non-auto
			if ( current === "*" ) {

				current = prev;

			// Convert response if prev dataType is non-auto and differs from current
			} else if ( prev !== "*" && prev !== current ) {

				// Seek a direct converter
				conv = converters[ prev + " " + current ] || converters[ "* " + current ];

				// If none found, seek a pair
				if ( !conv ) {
					for ( conv2 in converters ) {

						// If conv2 outputs current
						tmp = conv2.split( " " );
						if ( tmp[ 1 ] === current ) {

							// If prev can be converted to accepted input
							conv = converters[ prev + " " + tmp[ 0 ] ] ||
								converters[ "* " + tmp[ 0 ] ];
							if ( conv ) {

								// Condense equivalence converters
								if ( conv === true ) {
									conv = converters[ conv2 ];

								// Otherwise, insert the intermediate dataType
								} else if ( converters[ conv2 ] !== true ) {
									current = tmp[ 0 ];
									dataTypes.unshift( tmp[ 1 ] );
								}
								break;
							}
						}
					}
				}

				// Apply converter (if not an equivalence)
				if ( conv !== true ) {

					// Unless errors are allowed to bubble, catch and return them
					if ( conv && s.throws ) {
						response = conv( response );
					} else {
						try {
							response = conv( response );
						} catch ( e ) {
							return {
								state: "parsererror",
								error: conv ? e : "No conversion from " + prev + " to " + current
							};
						}
					}
				}
			}
		}
	}

	return { state: "success", data: response };
}

jQuery.extend( {

	// Counter for holding the number of active queries
	active: 0,

	// Last-Modified header cache for next request
	lastModified: {},
	etag: {},

	ajaxSettings: {
		url: location.href,
		type: "GET",
		isLocal: rlocalProtocol.test( location.protocol ),
		global: true,
		processData: true,
		async: true,
		contentType: "application/x-www-form-urlencoded; charset=UTF-8",

		/*
		timeout: 0,
		data: null,
		dataType: null,
		username: null,
		password: null,
		cache: null,
		throws: false,
		traditional: false,
		headers: {},
		*/

		accepts: {
			"*": allTypes,
			text: "text/plain",
			html: "text/html",
			xml: "application/xml, text/xml",
			json: "application/json, text/javascript"
		},

		contents: {
			xml: /\bxml\b/,
			html: /\bhtml/,
			json: /\bjson\b/
		},

		responseFields: {
			xml: "responseXML",
			text: "responseText",
			json: "responseJSON"
		},

		// Data converters
		// Keys separate source (or catchall "*") and destination types with a single space
		converters: {

			// Convert anything to text
			"* text": String,

			// Text to html (true = no transformation)
			"text html": true,

			// Evaluate text as a json expression
			"text json": JSON.parse,

			// Parse text as xml
			"text xml": jQuery.parseXML
		},

		// For options that shouldn't be deep extended:
		// you can add your own custom options here if
		// and when you create one that shouldn't be
		// deep extended (see ajaxExtend)
		flatOptions: {
			url: true,
			context: true
		}
	},

	// Creates a full fledged settings object into target
	// with both ajaxSettings and settings fields.
	// If target is omitted, writes into ajaxSettings.
	ajaxSetup: function( target, settings ) {
		return settings ?

			// Building a settings object
			ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :

			// Extending ajaxSettings
			ajaxExtend( jQuery.ajaxSettings, target );
	},

	ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
	ajaxTransport: addToPrefiltersOrTransports( transports ),

	// Main method
	ajax: function( url, options ) {

		// If url is an object, simulate pre-1.5 signature
		if ( typeof url === "object" ) {
			options = url;
			url = undefined;
		}

		// Force options to be an object
		options = options || {};

		var transport,

			// URL without anti-cache param
			cacheURL,

			// Response headers
			responseHeadersString,
			responseHeaders,

			// timeout handle
			timeoutTimer,

			// Url cleanup var
			urlAnchor,

			// Request state (becomes false upon send and true upon completion)
			completed,

			// To know if global events are to be dispatched
			fireGlobals,

			// Loop variable
			i,

			// uncached part of the url
			uncached,

			// Create the final options object
			s = jQuery.ajaxSetup( {}, options ),

			// Callbacks context
			callbackContext = s.context || s,

			// Context for global events is callbackContext if it is a DOM node or jQuery collection
			globalEventContext = s.context &&
				( callbackContext.nodeType || callbackContext.jquery ) ?
				jQuery( callbackContext ) :
				jQuery.event,

			// Deferreds
			deferred = jQuery.Deferred(),
			completeDeferred = jQuery.Callbacks( "once memory" ),

			// Status-dependent callbacks
			statusCode = s.statusCode || {},

			// Headers (they are sent all at once)
			requestHeaders = {},
			requestHeadersNames = {},

			// Default abort message
			strAbort = "canceled",

			// Fake xhr
			jqXHR = {
				readyState: 0,

				// Builds headers hashtable if needed
				getResponseHeader: function( key ) {
					var match;
					if ( completed ) {
						if ( !responseHeaders ) {
							responseHeaders = {};
							while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
								responseHeaders[ match[ 1 ].toLowerCase() + " " ] =
									( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] )
										.concat( match[ 2 ] );
							}
						}
						match = responseHeaders[ key.toLowerCase() + " " ];
					}
					return match == null ? null : match.join( ", " );
				},

				// Raw string
				getAllResponseHeaders: function() {
					return completed ? responseHeadersString : null;
				},

				// Caches the header
				setRequestHeader: function( name, value ) {
					if ( completed == null ) {
						name = requestHeadersNames[ name.toLowerCase() ] =
							requestHeadersNames[ name.toLowerCase() ] || name;
						requestHeaders[ name ] = value;
					}
					return this;
				},

				// Overrides response content-type header
				overrideMimeType: function( type ) {
					if ( completed == null ) {
						s.mimeType = type;
					}
					return this;
				},

				// Status-dependent callbacks
				statusCode: function( map ) {
					var code;
					if ( map ) {
						if ( completed ) {

							// Execute the appropriate callbacks
							jqXHR.always( map[ jqXHR.status ] );
						} else {

							// Lazy-add the new callbacks in a way that preserves old ones
							for ( code in map ) {
								statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
							}
						}
					}
					return this;
				},

				// Cancel the request
				abort: function( statusText ) {
					var finalText = statusText || strAbort;
					if ( transport ) {
						transport.abort( finalText );
					}
					done( 0, finalText );
					return this;
				}
			};

		// Attach deferreds
		deferred.promise( jqXHR );

		// Add protocol if not provided (prefilters might expect it)
		// Handle falsy url in the settings object (#10093: consistency with old signature)
		// We also use the url parameter if available
		s.url = ( ( url || s.url || location.href ) + "" )
			.replace( rprotocol, location.protocol + "//" );

		// Alias method option to type as per ticket #12004
		s.type = options.method || options.type || s.method || s.type;

		// Extract dataTypes list
		s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ];

		// A cross-domain request is in order when the origin doesn't match the current origin.
		if ( s.crossDomain == null ) {
			urlAnchor = document.createElement( "a" );

			// Support: IE <=8 - 11, Edge 12 - 15
			// IE throws exception on accessing the href property if url is malformed,
			// e.g. http://example.com:80x/
			try {
				urlAnchor.href = s.url;

				// Support: IE <=8 - 11 only
				// Anchor's host property isn't correctly set when s.url is relative
				urlAnchor.href = urlAnchor.href;
				s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
					urlAnchor.protocol + "//" + urlAnchor.host;
			} catch ( e ) {

				// If there is an error parsing the URL, assume it is crossDomain,
				// it can be rejected by the transport if it is invalid
				s.crossDomain = true;
			}
		}

		// Convert data if not already a string
		if ( s.data && s.processData && typeof s.data !== "string" ) {
			s.data = jQuery.param( s.data, s.traditional );
		}

		// Apply prefilters
		inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );

		// If request was aborted inside a prefilter, stop there
		if ( completed ) {
			return jqXHR;
		}

		// We can fire global events as of now if asked to
		// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
		fireGlobals = jQuery.event && s.global;

		// Watch for a new set of requests
		if ( fireGlobals && jQuery.active++ === 0 ) {
			jQuery.event.trigger( "ajaxStart" );
		}

		// Uppercase the type
		s.type = s.type.toUpperCase();

		// Determine if request has content
		s.hasContent = !rnoContent.test( s.type );

		// Save the URL in case we're toying with the If-Modified-Since
		// and/or If-None-Match header later on
		// Remove hash to simplify url manipulation
		cacheURL = s.url.replace( rhash, "" );

		// More options handling for requests with no content
		if ( !s.hasContent ) {

			// Remember the hash so we can put it back
			uncached = s.url.slice( cacheURL.length );

			// If data is available and should be processed, append data to url
			if ( s.data && ( s.processData || typeof s.data === "string" ) ) {
				cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;

				// #9682: remove data so that it's not used in an eventual retry
				delete s.data;
			}

			// Add or update anti-cache param if needed
			if ( s.cache === false ) {
				cacheURL = cacheURL.replace( rantiCache, "$1" );
				uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) +
					uncached;
			}

			// Put hash and anti-cache on the URL that will be requested (gh-1732)
			s.url = cacheURL + uncached;

		// Change '%20' to '+' if this is encoded form body content (gh-2658)
		} else if ( s.data && s.processData &&
			( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) {
			s.data = s.data.replace( r20, "+" );
		}

		// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
		if ( s.ifModified ) {
			if ( jQuery.lastModified[ cacheURL ] ) {
				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
			}
			if ( jQuery.etag[ cacheURL ] ) {
				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
			}
		}

		// Set the correct header, if data is being sent
		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
			jqXHR.setRequestHeader( "Content-Type", s.contentType );
		}

		// Set the Accepts header for the server, depending on the dataType
		jqXHR.setRequestHeader(
			"Accept",
			s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?
				s.accepts[ s.dataTypes[ 0 ] ] +
					( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
				s.accepts[ "*" ]
		);

		// Check for headers option
		for ( i in s.headers ) {
			jqXHR.setRequestHeader( i, s.headers[ i ] );
		}

		// Allow custom headers/mimetypes and early abort
		if ( s.beforeSend &&
			( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {

			// Abort if not done already and return
			return jqXHR.abort();
		}

		// Aborting is no longer a cancellation
		strAbort = "abort";

		// Install callbacks on deferreds
		completeDeferred.add( s.complete );
		jqXHR.done( s.success );
		jqXHR.fail( s.error );

		// Get transport
		transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );

		// If no transport, we auto-abort
		if ( !transport ) {
			done( -1, "No Transport" );
		} else {
			jqXHR.readyState = 1;

			// Send global event
			if ( fireGlobals ) {
				globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
			}

			// If request was aborted inside ajaxSend, stop there
			if ( completed ) {
				return jqXHR;
			}

			// Timeout
			if ( s.async && s.timeout > 0 ) {
				timeoutTimer = window.setTimeout( function() {
					jqXHR.abort( "timeout" );
				}, s.timeout );
			}

			try {
				completed = false;
				transport.send( requestHeaders, done );
			} catch ( e ) {

				// Rethrow post-completion exceptions
				if ( completed ) {
					throw e;
				}

				// Propagate others as results
				done( -1, e );
			}
		}

		// Callback for when everything is done
		function done( status, nativeStatusText, responses, headers ) {
			var isSuccess, success, error, response, modified,
				statusText = nativeStatusText;

			// Ignore repeat invocations
			if ( completed ) {
				return;
			}

			completed = true;

			// Clear timeout if it exists
			if ( timeoutTimer ) {
				window.clearTimeout( timeoutTimer );
			}

			// Dereference transport for early garbage collection
			// (no matter how long the jqXHR object will be used)
			transport = undefined;

			// Cache response headers
			responseHeadersString = headers || "";

			// Set readyState
			jqXHR.readyState = status > 0 ? 4 : 0;

			// Determine if successful
			isSuccess = status >= 200 && status < 300 || status === 304;

			// Get response data
			if ( responses ) {
				response = ajaxHandleResponses( s, jqXHR, responses );
			}

			// Use a noop converter for missing script but not if jsonp
			if ( !isSuccess &&
				jQuery.inArray( "script", s.dataTypes ) > -1 &&
				jQuery.inArray( "json", s.dataTypes ) < 0 ) {
				s.converters[ "text script" ] = function() {};
			}

			// Convert no matter what (that way responseXXX fields are always set)
			response = ajaxConvert( s, response, jqXHR, isSuccess );

			// If successful, handle type chaining
			if ( isSuccess ) {

				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
				if ( s.ifModified ) {
					modified = jqXHR.getResponseHeader( "Last-Modified" );
					if ( modified ) {
						jQuery.lastModified[ cacheURL ] = modified;
					}
					modified = jqXHR.getResponseHeader( "etag" );
					if ( modified ) {
						jQuery.etag[ cacheURL ] = modified;
					}
				}

				// if no content
				if ( status === 204 || s.type === "HEAD" ) {
					statusText = "nocontent";

				// if not modified
				} else if ( status === 304 ) {
					statusText = "notmodified";

				// If we have data, let's convert it
				} else {
					statusText = response.state;
					success = response.data;
					error = response.error;
					isSuccess = !error;
				}
			} else {

				// Extract error from statusText and normalize for non-aborts
				error = statusText;
				if ( status || !statusText ) {
					statusText = "error";
					if ( status < 0 ) {
						status = 0;
					}
				}
			}

			// Set data for the fake xhr object
			jqXHR.status = status;
			jqXHR.statusText = ( nativeStatusText || statusText ) + "";

			// Success/Error
			if ( isSuccess ) {
				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
			} else {
				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
			}

			// Status-dependent callbacks
			jqXHR.statusCode( statusCode );
			statusCode = undefined;

			if ( fireGlobals ) {
				globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
					[ jqXHR, s, isSuccess ? success : error ] );
			}

			// Complete
			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );

			if ( fireGlobals ) {
				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );

				// Handle the global AJAX counter
				if ( !( --jQuery.active ) ) {
					jQuery.event.trigger( "ajaxStop" );
				}
			}
		}

		return jqXHR;
	},

	getJSON: function( url, data, callback ) {
		return jQuery.get( url, data, callback, "json" );
	},

	getScript: function( url, callback ) {
		return jQuery.get( url, undefined, callback, "script" );
	}
} );

jQuery.each( [ "get", "post" ], function( _i, method ) {
	jQuery[ method ] = function( url, data, callback, type ) {

		// Shift arguments if data argument was omitted
		if ( isFunction( data ) ) {
			type = type || callback;
			callback = data;
			data = undefined;
		}

		// The url can be an options object (which then must have .url)
		return jQuery.ajax( jQuery.extend( {
			url: url,
			type: method,
			dataType: type,
			data: data,
			success: callback
		}, jQuery.isPlainObject( url ) && url ) );
	};
} );

jQuery.ajaxPrefilter( function( s ) {
	var i;
	for ( i in s.headers ) {
		if ( i.toLowerCase() === "content-type" ) {
			s.contentType = s.headers[ i ] || "";
		}
	}
} );


jQuery._evalUrl = function( url, options, doc ) {
	return jQuery.ajax( {
		url: url,

		// Make this explicit, since user can override this through ajaxSetup (#11264)
		type: "GET",
		dataType: "script",
		cache: true,
		async: false,
		global: false,

		// Only evaluate the response if it is successful (gh-4126)
		// dataFilter is not invoked for failure responses, so using it instead
		// of the default converter is kludgy but it works.
		converters: {
			"text script": function() {}
		},
		dataFilter: function( response ) {
			jQuery.globalEval( response, options, doc );
		}
	} );
};


jQuery.fn.extend( {
	wrapAll: function( html ) {
		var wrap;

		if ( this[ 0 ] ) {
			if ( isFunction( html ) ) {
				html = html.call( this[ 0 ] );
			}

			// The elements to wrap the target around
			wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );

			if ( this[ 0 ].parentNode ) {
				wrap.insertBefore( this[ 0 ] );
			}

			wrap.map( function() {
				var elem = this;

				while ( elem.firstElementChild ) {
					elem = elem.firstElementChild;
				}

				return elem;
			} ).append( this );
		}

		return this;
	},

	wrapInner: function( html ) {
		if ( isFunction( html ) ) {
			return this.each( function( i ) {
				jQuery( this ).wrapInner( html.call( this, i ) );
			} );
		}

		return this.each( function() {
			var self = jQuery( this ),
				contents = self.contents();

			if ( contents.length ) {
				contents.wrapAll( html );

			} else {
				self.append( html );
			}
		} );
	},

	wrap: function( html ) {
		var htmlIsFunction = isFunction( html );

		return this.each( function( i ) {
			jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );
		} );
	},

	unwrap: function( selector ) {
		this.parent( selector ).not( "body" ).each( function() {
			jQuery( this ).replaceWith( this.childNodes );
		} );
		return this;
	}
} );


jQuery.expr.pseudos.hidden = function( elem ) {
	return !jQuery.expr.pseudos.visible( elem );
};
jQuery.expr.pseudos.visible = function( elem ) {
	return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
};




jQuery.ajaxSettings.xhr = function() {
	try {
		return new window.XMLHttpRequest();
	} catch ( e ) {}
};

var xhrSuccessStatus = {

		// File protocol always yields status code 0, assume 200
		0: 200,

		// Support: IE <=9 only
		// #1450: sometimes IE returns 1223 when it should be 204
		1223: 204
	},
	xhrSupported = jQuery.ajaxSettings.xhr();

support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
support.ajax = xhrSupported = !!xhrSupported;

jQuery.ajaxTransport( function( options ) {
	var callback, errorCallback;

	// Cross domain only allowed if supported through XMLHttpRequest
	if ( support.cors || xhrSupported && !options.crossDomain ) {
		return {
			send: function( headers, complete ) {
				var i,
					xhr = options.xhr();

				xhr.open(
					options.type,
					options.url,
					options.async,
					options.username,
					options.password
				);

				// Apply custom fields if provided
				if ( options.xhrFields ) {
					for ( i in options.xhrFields ) {
						xhr[ i ] = options.xhrFields[ i ];
					}
				}

				// Override mime type if needed
				if ( options.mimeType && xhr.overrideMimeType ) {
					xhr.overrideMimeType( options.mimeType );
				}

				// X-Requested-With header
				// For cross-domain requests, seeing as conditions for a preflight are
				// akin to a jigsaw puzzle, we simply never set it to be sure.
				// (it can always be set on a per-request basis or even using ajaxSetup)
				// For same-domain requests, won't change header if already provided.
				if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
					headers[ "X-Requested-With" ] = "XMLHttpRequest";
				}

				// Set headers
				for ( i in headers ) {
					xhr.setRequestHeader( i, headers[ i ] );
				}

				// Callback
				callback = function( type ) {
					return function() {
						if ( callback ) {
							callback = errorCallback = xhr.onload =
								xhr.onerror = xhr.onabort = xhr.ontimeout =
									xhr.onreadystatechange = null;

							if ( type === "abort" ) {
								xhr.abort();
							} else if ( type === "error" ) {

								// Support: IE <=9 only
								// On a manual native abort, IE9 throws
								// errors on any property access that is not readyState
								if ( typeof xhr.status !== "number" ) {
									complete( 0, "error" );
								} else {
									complete(

										// File: protocol always yields status 0; see #8605, #14207
										xhr.status,
										xhr.statusText
									);
								}
							} else {
								complete(
									xhrSuccessStatus[ xhr.status ] || xhr.status,
									xhr.statusText,

									// Support: IE <=9 only
									// IE9 has no XHR2 but throws on binary (trac-11426)
									// For XHR2 non-text, let the caller handle it (gh-2498)
									( xhr.responseType || "text" ) !== "text"  ||
									typeof xhr.responseText !== "string" ?
										{ binary: xhr.response } :
										{ text: xhr.responseText },
									xhr.getAllResponseHeaders()
								);
							}
						}
					};
				};

				// Listen to events
				xhr.onload = callback();
				errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" );

				// Support: IE 9 only
				// Use onreadystatechange to replace onabort
				// to handle uncaught aborts
				if ( xhr.onabort !== undefined ) {
					xhr.onabort = errorCallback;
				} else {
					xhr.onreadystatechange = function() {

						// Check readyState before timeout as it changes
						if ( xhr.readyState === 4 ) {

							// Allow onerror to be called first,
							// but that will not handle a native abort
							// Also, save errorCallback to a variable
							// as xhr.onerror cannot be accessed
							window.setTimeout( function() {
								if ( callback ) {
									errorCallback();
								}
							} );
						}
					};
				}

				// Create the abort callback
				callback = callback( "abort" );

				try {

					// Do send the request (this may raise an exception)
					xhr.send( options.hasContent && options.data || null );
				} catch ( e ) {

					// #14683: Only rethrow if this hasn't been notified as an error yet
					if ( callback ) {
						throw e;
					}
				}
			},

			abort: function() {
				if ( callback ) {
					callback();
				}
			}
		};
	}
} );




// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)
jQuery.ajaxPrefilter( function( s ) {
	if ( s.crossDomain ) {
		s.contents.script = false;
	}
} );

// Install script dataType
jQuery.ajaxSetup( {
	accepts: {
		script: "text/javascript, application/javascript, " +
			"application/ecmascript, application/x-ecmascript"
	},
	contents: {
		script: /\b(?:java|ecma)script\b/
	},
	converters: {
		"text script": function( text ) {
			jQuery.globalEval( text );
			return text;
		}
	}
} );

// Handle cache's special case and crossDomain
jQuery.ajaxPrefilter( "script", function( s ) {
	if ( s.cache === undefined ) {
		s.cache = false;
	}
	if ( s.crossDomain ) {
		s.type = "GET";
	}
} );

// Bind script tag hack transport
jQuery.ajaxTransport( "script", function( s ) {

	// This transport only deals with cross domain or forced-by-attrs requests
	if ( s.crossDomain || s.scriptAttrs ) {
		var script, callback;
		return {
			send: function( _, complete ) {
				script = jQuery( "<script>" )
					.attr( s.scriptAttrs || {} )
					.prop( { charset: s.scriptCharset, src: s.url } )
					.on( "load error", callback = function( evt ) {
						script.remove();
						callback = null;
						if ( evt ) {
							complete( evt.type === "error" ? 404 : 200, evt.type );
						}
					} );

				// Use native DOM manipulation to avoid our domManip AJAX trickery
				document.head.appendChild( script[ 0 ] );
			},
			abort: function() {
				if ( callback ) {
					callback();
				}
			}
		};
	}
} );




var oldCallbacks = [],
	rjsonp = /(=)\?(?=&|$)|\?\?/;

// Default jsonp settings
jQuery.ajaxSetup( {
	jsonp: "callback",
	jsonpCallback: function() {
		var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce.guid++ ) );
		this[ callback ] = true;
		return callback;
	}
} );

// Detect, normalize options and install callbacks for jsonp requests
jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {

	var callbackName, overwritten, responseContainer,
		jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
			"url" :
			typeof s.data === "string" &&
				( s.contentType || "" )
					.indexOf( "application/x-www-form-urlencoded" ) === 0 &&
				rjsonp.test( s.data ) && "data"
		);

	// Handle iff the expected data type is "jsonp" or we have a parameter to set
	if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {

		// Get callback name, remembering preexisting value associated with it
		callbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?
			s.jsonpCallback() :
			s.jsonpCallback;

		// Insert callback into url or form data
		if ( jsonProp ) {
			s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
		} else if ( s.jsonp !== false ) {
			s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
		}

		// Use data converter to retrieve json after script execution
		s.converters[ "script json" ] = function() {
			if ( !responseContainer ) {
				jQuery.error( callbackName + " was not called" );
			}
			return responseContainer[ 0 ];
		};

		// Force json dataType
		s.dataTypes[ 0 ] = "json";

		// Install callback
		overwritten = window[ callbackName ];
		window[ callbackName ] = function() {
			responseContainer = arguments;
		};

		// Clean-up function (fires after converters)
		jqXHR.always( function() {

			// If previous value didn't exist - remove it
			if ( overwritten === undefined ) {
				jQuery( window ).removeProp( callbackName );

			// Otherwise restore preexisting value
			} else {
				window[ callbackName ] = overwritten;
			}

			// Save back as free
			if ( s[ callbackName ] ) {

				// Make sure that re-using the options doesn't screw things around
				s.jsonpCallback = originalSettings.jsonpCallback;

				// Save the callback name for future use
				oldCallbacks.push( callbackName );
			}

			// Call if it was a function and we have a response
			if ( responseContainer && isFunction( overwritten ) ) {
				overwritten( responseContainer[ 0 ] );
			}

			responseContainer = overwritten = undefined;
		} );

		// Delegate to script
		return "script";
	}
} );




// Support: Safari 8 only
// In Safari 8 documents created via document.implementation.createHTMLDocument
// collapse sibling forms: the second one becomes a child of the first one.
// Because of that, this security measure has to be disabled in Safari 8.
// https://bugs.webkit.org/show_bug.cgi?id=137337
support.createHTMLDocument = ( function() {
	var body = document.implementation.createHTMLDocument( "" ).body;
	body.innerHTML = "<form></form><form></form>";
	return body.childNodes.length === 2;
} )();


// Argument "data" should be string of html
// context (optional): If specified, the fragment will be created in this context,
// defaults to document
// keepScripts (optional): If true, will include scripts passed in the html string
jQuery.parseHTML = function( data, context, keepScripts ) {
	if ( typeof data !== "string" ) {
		return [];
	}
	if ( typeof context === "boolean" ) {
		keepScripts = context;
		context = false;
	}

	var base, parsed, scripts;

	if ( !context ) {

		// Stop scripts or inline event handlers from being executed immediately
		// by using document.implementation
		if ( support.createHTMLDocument ) {
			context = document.implementation.createHTMLDocument( "" );

			// Set the base href for the created document
			// so any parsed elements with URLs
			// are based on the document's URL (gh-2965)
			base = context.createElement( "base" );
			base.href = document.location.href;
			context.head.appendChild( base );
		} else {
			context = document;
		}
	}

	parsed = rsingleTag.exec( data );
	scripts = !keepScripts && [];

	// Single tag
	if ( parsed ) {
		return [ context.createElement( parsed[ 1 ] ) ];
	}

	parsed = buildFragment( [ data ], context, scripts );

	if ( scripts && scripts.length ) {
		jQuery( scripts ).remove();
	}

	return jQuery.merge( [], parsed.childNodes );
};


/**
 * Load a url into a page
 */
jQuery.fn.load = function( url, params, callback ) {
	var selector, type, response,
		self = this,
		off = url.indexOf( " " );

	if ( off > -1 ) {
		selector = stripAndCollapse( url.slice( off ) );
		url = url.slice( 0, off );
	}

	// If it's a function
	if ( isFunction( params ) ) {

		// We assume that it's the callback
		callback = params;
		params = undefined;

	// Otherwise, build a param string
	} else if ( params && typeof params === "object" ) {
		type = "POST";
	}

	// If we have elements to modify, make the request
	if ( self.length > 0 ) {
		jQuery.ajax( {
			url: url,

			// If "type" variable is undefined, then "GET" method will be used.
			// Make value of this field explicit since
			// user can override it through ajaxSetup method
			type: type || "GET",
			dataType: "html",
			data: params
		} ).done( function( responseText ) {

			// Save response for use in complete callback
			response = arguments;

			self.html( selector ?

				// If a selector was specified, locate the right elements in a dummy div
				// Exclude scripts to avoid IE 'Permission Denied' errors
				jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :

				// Otherwise use the full result
				responseText );

		// If the request succeeds, this function gets "data", "status", "jqXHR"
		// but they are ignored because response was set above.
		// If it fails, this function gets "jqXHR", "status", "error"
		} ).always( callback && function( jqXHR, status ) {
			self.each( function() {
				callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
			} );
		} );
	}

	return this;
};




jQuery.expr.pseudos.animated = function( elem ) {
	return jQuery.grep( jQuery.timers, function( fn ) {
		return elem === fn.elem;
	} ).length;
};




jQuery.offset = {
	setOffset: function( elem, options, i ) {
		var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
			position = jQuery.css( elem, "position" ),
			curElem = jQuery( elem ),
			props = {};

		// Set position first, in-case top/left are set even on static elem
		if ( position === "static" ) {
			elem.style.position = "relative";
		}

		curOffset = curElem.offset();
		curCSSTop = jQuery.css( elem, "top" );
		curCSSLeft = jQuery.css( elem, "left" );
		calculatePosition = ( position === "absolute" || position === "fixed" ) &&
			( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;

		// Need to be able to calculate position if either
		// top or left is auto and position is either absolute or fixed
		if ( calculatePosition ) {
			curPosition = curElem.position();
			curTop = curPosition.top;
			curLeft = curPosition.left;

		} else {
			curTop = parseFloat( curCSSTop ) || 0;
			curLeft = parseFloat( curCSSLeft ) || 0;
		}

		if ( isFunction( options ) ) {

			// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
			options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
		}

		if ( options.top != null ) {
			props.top = ( options.top - curOffset.top ) + curTop;
		}
		if ( options.left != null ) {
			props.left = ( options.left - curOffset.left ) + curLeft;
		}

		if ( "using" in options ) {
			options.using.call( elem, props );

		} else {
			curElem.css( props );
		}
	}
};

jQuery.fn.extend( {

	// offset() relates an element's border box to the document origin
	offset: function( options ) {

		// Preserve chaining for setter
		if ( arguments.length ) {
			return options === undefined ?
				this :
				this.each( function( i ) {
					jQuery.offset.setOffset( this, options, i );
				} );
		}

		var rect, win,
			elem = this[ 0 ];

		if ( !elem ) {
			return;
		}

		// Return zeros for disconnected and hidden (display: none) elements (gh-2310)
		// Support: IE <=11 only
		// Running getBoundingClientRect on a
		// disconnected node in IE throws an error
		if ( !elem.getClientRects().length ) {
			return { top: 0, left: 0 };
		}

		// Get document-relative position by adding viewport scroll to viewport-relative gBCR
		rect = elem.getBoundingClientRect();
		win = elem.ownerDocument.defaultView;
		return {
			top: rect.top + win.pageYOffset,
			left: rect.left + win.pageXOffset
		};
	},

	// position() relates an element's margin box to its offset parent's padding box
	// This corresponds to the behavior of CSS absolute positioning
	position: function() {
		if ( !this[ 0 ] ) {
			return;
		}

		var offsetParent, offset, doc,
			elem = this[ 0 ],
			parentOffset = { top: 0, left: 0 };

		// position:fixed elements are offset from the viewport, which itself always has zero offset
		if ( jQuery.css( elem, "position" ) === "fixed" ) {

			// Assume position:fixed implies availability of getBoundingClientRect
			offset = elem.getBoundingClientRect();

		} else {
			offset = this.offset();

			// Account for the *real* offset parent, which can be the document or its root element
			// when a statically positioned element is identified
			doc = elem.ownerDocument;
			offsetParent = elem.offsetParent || doc.documentElement;
			while ( offsetParent &&
				( offsetParent === doc.body || offsetParent === doc.documentElement ) &&
				jQuery.css( offsetParent, "position" ) === "static" ) {

				offsetParent = offsetParent.parentNode;
			}
			if ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {

				// Incorporate borders into its offset, since they are outside its content origin
				parentOffset = jQuery( offsetParent ).offset();
				parentOffset.top += jQuery.css( offsetParent, "borderTopWidth", true );
				parentOffset.left += jQuery.css( offsetParent, "borderLeftWidth", true );
			}
		}

		// Subtract parent offsets and element margins
		return {
			top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
			left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
		};
	},

	// This method will return documentElement in the following cases:
	// 1) For the element inside the iframe without offsetParent, this method will return
	//    documentElement of the parent window
	// 2) For the hidden or detached element
	// 3) For body or html element, i.e. in case of the html node - it will return itself
	//
	// but those exceptions were never presented as a real life use-cases
	// and might be considered as more preferable results.
	//
	// This logic, however, is not guaranteed and can change at any point in the future
	offsetParent: function() {
		return this.map( function() {
			var offsetParent = this.offsetParent;

			while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
				offsetParent = offsetParent.offsetParent;
			}

			return offsetParent || documentElement;
		} );
	}
} );

// Create scrollLeft and scrollTop methods
jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
	var top = "pageYOffset" === prop;

	jQuery.fn[ method ] = function( val ) {
		return access( this, function( elem, method, val ) {

			// Coalesce documents and windows
			var win;
			if ( isWindow( elem ) ) {
				win = elem;
			} else if ( elem.nodeType === 9 ) {
				win = elem.defaultView;
			}

			if ( val === undefined ) {
				return win ? win[ prop ] : elem[ method ];
			}

			if ( win ) {
				win.scrollTo(
					!top ? val : win.pageXOffset,
					top ? val : win.pageYOffset
				);

			} else {
				elem[ method ] = val;
			}
		}, method, val, arguments.length );
	};
} );

// Support: Safari <=7 - 9.1, Chrome <=37 - 49
// Add the top/left cssHooks using jQuery.fn.position
// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
// getComputedStyle returns percent when specified for top/left/bottom/right;
// rather than make the css module depend on the offset module, just check for it here
jQuery.each( [ "top", "left" ], function( _i, prop ) {
	jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
		function( elem, computed ) {
			if ( computed ) {
				computed = curCSS( elem, prop );

				// If curCSS returns percentage, fallback to offset
				return rnumnonpx.test( computed ) ?
					jQuery( elem ).position()[ prop ] + "px" :
					computed;
			}
		}
	);
} );


// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
	jQuery.each( {
		padding: "inner" + name,
		content: type,
		"": "outer" + name
	}, function( defaultExtra, funcName ) {

		// Margin is only for outerHeight, outerWidth
		jQuery.fn[ funcName ] = function( margin, value ) {
			var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
				extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );

			return access( this, function( elem, type, value ) {
				var doc;

				if ( isWindow( elem ) ) {

					// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
					return funcName.indexOf( "outer" ) === 0 ?
						elem[ "inner" + name ] :
						elem.document.documentElement[ "client" + name ];
				}

				// Get document width or height
				if ( elem.nodeType === 9 ) {
					doc = elem.documentElement;

					// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
					// whichever is greatest
					return Math.max(
						elem.body[ "scroll" + name ], doc[ "scroll" + name ],
						elem.body[ "offset" + name ], doc[ "offset" + name ],
						doc[ "client" + name ]
					);
				}

				return value === undefined ?

					// Get width or height on the element, requesting but not forcing parseFloat
					jQuery.css( elem, type, extra ) :

					// Set width or height on the element
					jQuery.style( elem, type, value, extra );
			}, type, chainable ? margin : undefined, chainable );
		};
	} );
} );


jQuery.each( [
	"ajaxStart",
	"ajaxStop",
	"ajaxComplete",
	"ajaxError",
	"ajaxSuccess",
	"ajaxSend"
], function( _i, type ) {
	jQuery.fn[ type ] = function( fn ) {
		return this.on( type, fn );
	};
} );




jQuery.fn.extend( {

	bind: function( types, data, fn ) {
		return this.on( types, null, data, fn );
	},
	unbind: function( types, fn ) {
		return this.off( types, null, fn );
	},

	delegate: function( selector, types, data, fn ) {
		return this.on( types, selector, data, fn );
	},
	undelegate: function( selector, types, fn ) {

		// ( namespace ) or ( selector, types [, fn] )
		return arguments.length === 1 ?
			this.off( selector, "**" ) :
			this.off( types, selector || "**", fn );
	},

	hover: function( fnOver, fnOut ) {
		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
	}
} );

jQuery.each(
	( "blur focus focusin focusout resize scroll click dblclick " +
	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
	"change select submit keydown keypress keyup contextmenu" ).split( " " ),
	function( _i, name ) {

		// Handle event binding
		jQuery.fn[ name ] = function( data, fn ) {
			return arguments.length > 0 ?
				this.on( name, null, data, fn ) :
				this.trigger( name );
		};
	}
);




// Support: Android <=4.0 only
// Make sure we trim BOM and NBSP
var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;

// Bind a function to a context, optionally partially applying any
// arguments.
// jQuery.proxy is deprecated to promote standards (specifically Function#bind)
// However, it is not slated for removal any time soon
jQuery.proxy = function( fn, context ) {
	var tmp, args, proxy;

	if ( typeof context === "string" ) {
		tmp = fn[ context ];
		context = fn;
		fn = tmp;
	}

	// Quick check to determine if target is callable, in the spec
	// this throws a TypeError, but we will just return undefined.
	if ( !isFunction( fn ) ) {
		return undefined;
	}

	// Simulated bind
	args = slice.call( arguments, 2 );
	proxy = function() {
		return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
	};

	// Set the guid of unique handler to the same of original handler, so it can be removed
	proxy.guid = fn.guid = fn.guid || jQuery.guid++;

	return proxy;
};

jQuery.holdReady = function( hold ) {
	if ( hold ) {
		jQuery.readyWait++;
	} else {
		jQuery.ready( true );
	}
};
jQuery.isArray = Array.isArray;
jQuery.parseJSON = JSON.parse;
jQuery.nodeName = nodeName;
jQuery.isFunction = isFunction;
jQuery.isWindow = isWindow;
jQuery.camelCase = camelCase;
jQuery.type = toType;

jQuery.now = Date.now;

jQuery.isNumeric = function( obj ) {

	// As of jQuery 3.0, isNumeric is limited to
	// strings and numbers (primitives or objects)
	// that can be coerced to finite numbers (gh-2662)
	var type = jQuery.type( obj );
	return ( type === "number" || type === "string" ) &&

		// parseFloat NaNs numeric-cast false positives ("")
		// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
		// subtraction forces infinities to NaN
		!isNaN( obj - parseFloat( obj ) );
};

jQuery.trim = function( text ) {
	return text == null ?
		"" :
		( text + "" ).replace( rtrim, "" );
};



// Register as a named AMD module, since jQuery can be concatenated with other
// files that may use define, but not via a proper concatenation script that
// understands anonymous AMD modules. A named AMD is safest and most robust
// way to register. Lowercase jquery is used because AMD module names are
// derived from file names, and jQuery is normally delivered in a lowercase
// file name. Do this after creating the global so that if an AMD module wants
// to call noConflict to hide this version of jQuery, it will work.

// Note that for maximum portability, libraries that are not jQuery should
// declare themselves as anonymous modules, and avoid setting a global if an
// AMD loader is present. jQuery is a special case. For more information, see
// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon

if ( typeof define === "function" && define.amd ) {
	define( "jquery", [], function() {
		return jQuery;
	} );
}




var

	// Map over jQuery in case of overwrite
	_jQuery = window.jQuery,

	// Map over the $ in case of overwrite
	_$ = window.$;

jQuery.noConflict = function( deep ) {
	if ( window.$ === jQuery ) {
		window.$ = _$;
	}

	if ( deep && window.jQuery === jQuery ) {
		window.jQuery = _jQuery;
	}

	return jQuery;
};

// Expose jQuery and $ identifiers, even in AMD
// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
// and CommonJS for browser emulators (#13566)
if ( typeof noGlobal === "undefined" ) {
	window.jQuery = window.$ = jQuery;
}




return jQuery;
} );

shiny/www/shared/highlight/rstudio.css METASEP
code {
  line-height: 150%;
}

pre .operator,
pre .paren {
  color: rgb(104, 118, 135)
}

pre .literal {
  color: rgb(88, 72, 246)
}

pre .number {
  color: rgb(0, 0, 205);
}

pre .comment {
  color: rgb(76, 136, 107);
  font-style: italic;
}

pre .keyword,
pre .id {
  color: rgb(0, 0, 255);
}

pre .identifier {
  color: rgb(0, 0, 0);
}

pre .string,
pre .attribute {
  color: rgb(3, 106, 7);
}

pre .doctype {
  color: rgb(104, 104, 92);
}

pre .tag,
pre .title {
  color: rgb(4, 29, 140);
}

pre .value {
  color: rgb(13, 105, 18);
}

.language-xml .attribute {
  color: rgb(0, 0, 0);
}

.language-css .attribute {
  color: rgb(110, 124, 219);
}

.language-css .value {
  color: rgb(23, 149, 30);
}

.language-css .number,
.language-css .hexcolor {
  color: rgb(7, 27, 201);
}

.language-css .function {
  color: rgb(61, 77, 113);
}

.language-css .tag {
  color: rgb(195, 13, 25);
}

.language-css .class {
  color: rgb(53, 132, 148);
}

.language-css .pseudo {
  color: rgb(13, 105, 18);
}

shiny/www/shared/highlight/highlight.pack.js METASEP
var hljs=new function(){function m(p){return p.replace(/&/gm,"&amp;").replace(/</gm,"&lt;")}function f(r,q,p){return RegExp(q,"m"+(r.cI?"i":"")+(p?"g":""))}function b(r){for(var p=0;p<r.childNodes.length;p++){var q=r.childNodes[p];if(q.nodeName=="CODE"){return q}if(!(q.nodeType==3&&q.nodeValue.match(/\s+/))){break}}}function h(t,s){var p="";for(var r=0;r<t.childNodes.length;r++){if(t.childNodes[r].nodeType==3){var q=t.childNodes[r].nodeValue;if(s){q=q.replace(/\n/g,"")}p+=q}else{if(t.childNodes[r].nodeName=="BR"){p+="\n"}else{p+=h(t.childNodes[r])}}}if(/MSIE [678]/.test(navigator.userAgent)){p=p.replace(/\r/g,"\n")}return p}function a(s){var r=s.className.split(/\s+/);r=r.concat(s.parentNode.className.split(/\s+/));for(var q=0;q<r.length;q++){var p=r[q].replace(/^language-/,"");if(e[p]){return p}}}function c(q){var p=[];(function(s,t){for(var r=0;r<s.childNodes.length;r++){if(s.childNodes[r].nodeType==3){t+=s.childNodes[r].nodeValue.length}else{if(s.childNodes[r].nodeName=="BR"){t+=1}else{if(s.childNodes[r].nodeType==1){p.push({event:"start",offset:t,node:s.childNodes[r]});t=arguments.callee(s.childNodes[r],t);p.push({event:"stop",offset:t,node:s.childNodes[r]})}}}}return t})(q,0);return p}function k(y,w,x){var q=0;var z="";var s=[];function u(){if(y.length&&w.length){if(y[0].offset!=w[0].offset){return(y[0].offset<w[0].offset)?y:w}else{return w[0].event=="start"?y:w}}else{return y.length?y:w}}function t(D){var A="<"+D.nodeName.toLowerCase();for(var B=0;B<D.attributes.length;B++){var C=D.attributes[B];A+=" "+C.nodeName.toLowerCase();if(C.value!==undefined&&C.value!==false&&C.value!==null){A+='="'+m(C.value)+'"'}}return A+">"}while(y.length||w.length){var v=u().splice(0,1)[0];z+=m(x.substr(q,v.offset-q));q=v.offset;if(v.event=="start"){z+=t(v.node);s.push(v.node)}else{if(v.event=="stop"){var p,r=s.length;do{r--;p=s[r];z+=("</"+p.nodeName.toLowerCase()+">")}while(p!=v.node);s.splice(r,1);while(r<s.length){z+=t(s[r]);r++}}}}return z+m(x.substr(q))}function j(){function q(x,y,v){if(x.compiled){return}var u;var s=[];if(x.k){x.lR=f(y,x.l||hljs.IR,true);for(var w in x.k){if(!x.k.hasOwnProperty(w)){continue}if(x.k[w] instanceof Object){u=x.k[w]}else{u=x.k;w="keyword"}for(var r in u){if(!u.hasOwnProperty(r)){continue}x.k[r]=[w,u[r]];s.push(r)}}}if(!v){if(x.bWK){x.b="\\b("+s.join("|")+")\\s"}x.bR=f(y,x.b?x.b:"\\B|\\b");if(!x.e&&!x.eW){x.e="\\B|\\b"}if(x.e){x.eR=f(y,x.e)}}if(x.i){x.iR=f(y,x.i)}if(x.r===undefined){x.r=1}if(!x.c){x.c=[]}x.compiled=true;for(var t=0;t<x.c.length;t++){if(x.c[t]=="self"){x.c[t]=x}q(x.c[t],y,false)}if(x.starts){q(x.starts,y,false)}}for(var p in e){if(!e.hasOwnProperty(p)){continue}q(e[p].dM,e[p],true)}}function d(B,C){if(!j.called){j();j.called=true}function q(r,M){for(var L=0;L<M.c.length;L++){if((M.c[L].bR.exec(r)||[null])[0]==r){return M.c[L]}}}function v(L,r){if(D[L].e&&D[L].eR.test(r)){return 1}if(D[L].eW){var M=v(L-1,r);return M?M+1:0}return 0}function w(r,L){return L.i&&L.iR.test(r)}function K(N,O){var M=[];for(var L=0;L<N.c.length;L++){M.push(N.c[L].b)}var r=D.length-1;do{if(D[r].e){M.push(D[r].e)}r--}while(D[r+1].eW);if(N.i){M.push(N.i)}return f(O,M.join("|"),true)}function p(M,L){var N=D[D.length-1];if(!N.t){N.t=K(N,E)}N.t.lastIndex=L;var r=N.t.exec(M);return r?[M.substr(L,r.index-L),r[0],false]:[M.substr(L),"",true]}function z(N,r){var L=E.cI?r[0].toLowerCase():r[0];var M=N.k[L];if(M&&M instanceof Array){return M}return false}function F(L,P){L=m(L);if(!P.k){return L}var r="";var O=0;P.lR.lastIndex=0;var M=P.lR.exec(L);while(M){r+=L.substr(O,M.index-O);var N=z(P,M);if(N){x+=N[1];r+='<span class="'+N[0]+'">'+M[0]+"</span>"}else{r+=M[0]}O=P.lR.lastIndex;M=P.lR.exec(L)}return r+L.substr(O,L.length-O)}function J(L,M){if(M.sL&&e[M.sL]){var r=d(M.sL,L);x+=r.keyword_count;return r.value}else{return F(L,M)}}function I(M,r){var L=M.cN?'<span class="'+M.cN+'">':"";if(M.rB){y+=L;M.buffer=""}else{if(M.eB){y+=m(r)+L;M.buffer=""}else{y+=L;M.buffer=r}}D.push(M);A+=M.r}function G(N,M,Q){var R=D[D.length-1];if(Q){y+=J(R.buffer+N,R);return false}var P=q(M,R);if(P){y+=J(R.buffer+N,R);I(P,M);return P.rB}var L=v(D.length-1,M);if(L){var O=R.cN?"</span>":"";if(R.rE){y+=J(R.buffer+N,R)+O}else{if(R.eE){y+=J(R.buffer+N,R)+O+m(M)}else{y+=J(R.buffer+N+M,R)+O}}while(L>1){O=D[D.length-2].cN?"</span>":"";y+=O;L--;D.length--}var r=D[D.length-1];D.length--;D[D.length-1].buffer="";if(r.starts){I(r.starts,"")}return R.rE}if(w(M,R)){throw"Illegal"}}var E=e[B];var D=[E.dM];var A=0;var x=0;var y="";try{var s,u=0;E.dM.buffer="";do{s=p(C,u);var t=G(s[0],s[1],s[2]);u+=s[0].length;if(!t){u+=s[1].length}}while(!s[2]);if(D.length>1){throw"Illegal"}return{r:A,keyword_count:x,value:y}}catch(H){if(H=="Illegal"){return{r:0,keyword_count:0,value:m(C)}}else{throw H}}}function g(t){var p={keyword_count:0,r:0,value:m(t)};var r=p;for(var q in e){if(!e.hasOwnProperty(q)){continue}var s=d(q,t);s.language=q;if(s.keyword_count+s.r>r.keyword_count+r.r){r=s}if(s.keyword_count+s.r>p.keyword_count+p.r){r=p;p=s}}if(r.language){p.second_best=r}return p}function i(r,q,p){if(q){r=r.replace(/^((<[^>]+>|\t)+)/gm,function(t,w,v,u){return w.replace(/\t/g,q)})}if(p){r=r.replace(/\n/g,"<br>")}return r}function n(t,w,r){var x=h(t,r);var v=a(t);var y,s;if(v){y=d(v,x)}else{return}var q=c(t);if(q.length){s=document.createElement("pre");s.innerHTML=y.value;y.value=k(q,c(s),x)}y.value=i(y.value,w,r);var u=t.className;if(!u.match("(\\s|^)(language-)?"+v+"(\\s|$)")){u=u?(u+" "+v):v}if(/MSIE [678]/.test(navigator.userAgent)&&t.tagName=="CODE"&&t.parentNode.tagName=="PRE"){s=t.parentNode;var p=document.createElement("div");p.innerHTML="<pre><code>"+y.value+"</code></pre>";t=p.firstChild.firstChild;p.firstChild.cN=s.cN;s.parentNode.replaceChild(p.firstChild,s)}else{t.innerHTML=y.value}t.className=u;t.result={language:v,kw:y.keyword_count,re:y.r};if(y.second_best){t.second_best={language:y.second_best.language,kw:y.second_best.keyword_count,re:y.second_best.r}}}function o(){if(o.called){return}o.called=true;var r=document.getElementsByTagName("pre");for(var p=0;p<r.length;p++){var q=b(r[p]);if(q){n(q,hljs.tabReplace)}}}function l(){if(window.addEventListener){window.addEventListener("DOMContentLoaded",o,false);window.addEventListener("load",o,false)}else{if(window.attachEvent){window.attachEvent("onload",o)}else{window.onload=o}}}var e={};this.LANGUAGES=e;this.highlight=d;this.highlightAuto=g;this.fixMarkup=i;this.highlightBlock=n;this.initHighlighting=o;this.initHighlightingOnLoad=l;this.IR="[a-zA-Z][a-zA-Z0-9_]*";this.UIR="[a-zA-Z_][a-zA-Z0-9_]*";this.NR="\\b\\d+(\\.\\d+)?";this.CNR="\\b(0[xX][a-fA-F0-9]+|(\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)";this.BNR="\\b(0b[01]+)";this.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|\\.|-|-=|/|/=|:|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";this.ER="(?![\\s\\S])";this.BE={b:"\\\\.",r:0};this.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[this.BE],r:0};this.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[this.BE],r:0};this.CLCM={cN:"comment",b:"//",e:"$"};this.CBLCLM={cN:"comment",b:"/\\*",e:"\\*/"};this.HCM={cN:"comment",b:"#",e:"$"};this.NM={cN:"number",b:this.NR,r:0};this.CNM={cN:"number",b:this.CNR,r:0};this.BNM={cN:"number",b:this.BNR,r:0};this.inherit=function(r,s){var p={};for(var q in r){p[q]=r[q]}if(s){for(var q in s){p[q]=s[q]}}return p}}();hljs.LANGUAGES.css=function(){var a={cN:"function",b:hljs.IR+"\\(",e:"\\)",c:[{eW:true,eE:true,c:[hljs.NM,hljs.ASM,hljs.QSM]}]};return{cI:true,dM:{i:"[=/|']",c:[hljs.CBLCLM,{cN:"id",b:"\\#[A-Za-z0-9_-]+"},{cN:"class",b:"\\.[A-Za-z0-9_-]+",r:0},{cN:"attr_selector",b:"\\[",e:"\\]",i:"$"},{cN:"pseudo",b:":(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\\\"\\']+"},{cN:"at_rule",b:"@(font-face|page)",l:"[a-z-]+",k:{"font-face":1,page:1}},{cN:"at_rule",b:"@",e:"[{;]",eE:true,k:{"import":1,page:1,media:1,charset:1},c:[a,hljs.ASM,hljs.QSM,hljs.NM]},{cN:"tag",b:hljs.IR,r:0},{cN:"rules",b:"{",e:"}",i:"[^\\s]",r:0,c:[hljs.CBLCLM,{cN:"rule",b:"[^\\s]",rB:true,e:";",eW:true,c:[{cN:"attribute",b:"[A-Z\\_\\.\\-]+",e:":",eE:true,i:"[^\\s]",starts:{cN:"value",eW:true,eE:true,c:[a,hljs.NM,hljs.QSM,hljs.ASM,hljs.CBLCLM,{cN:"hexcolor",b:"\\#[0-9A-F]+"},{cN:"important",b:"!important"}]}}]}]}]}}}();hljs.LANGUAGES.javascript={dM:{k:{keyword:{"in":1,"if":1,"for":1,"while":1,"finally":1,"var":1,"new":1,"function":1,"do":1,"return":1,"void":1,"else":1,"break":1,"catch":1,"instanceof":1,"with":1,"throw":1,"case":1,"default":1,"try":1,"this":1,"switch":1,"continue":1,"typeof":1,"delete":1},literal:{"true":1,"false":1,"null":1}},c:[hljs.ASM,hljs.QSM,hljs.CLCM,hljs.CBLCLM,hljs.CNM,{b:"("+hljs.RSR+"|\\b(case|return|throw)\\b)\\s*",k:{"return":1,"throw":1,"case":1},c:[hljs.CLCM,hljs.CBLCLM,{cN:"regexp",b:"/",e:"/[gim]*",c:[{b:"\\\\/"}]}],r:0},{cN:"function",bWK:true,e:"{",k:{"function":1},c:[{cN:"title",b:"[A-Za-z$_][0-9A-Za-z$_]*"},{cN:"params",b:"\\(",e:"\\)",c:[hljs.ASM,hljs.QSM,hljs.CLCM,hljs.CBLCLM]}]}]}};hljs.LANGUAGES.r={dM:{c:[hljs.HCM,{cN:"number",b:"\\b0[xX][0-9a-fA-F]+[Li]?\\b",e:hljs.IMMEDIATE_RE,r:0},{cN:"number",b:"\\b\\d+(?:[eE][+\\-]?\\d*)?L\\b",e:hljs.IMMEDIATE_RE,r:0},{cN:"number",b:"\\b\\d+\\.(?!\\d)(?:i\\b)?",e:hljs.IMMEDIATE_RE,r:1},{cN:"number",b:"\\b\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b",e:hljs.IMMEDIATE_RE,r:0},{cN:"number",b:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b",e:hljs.IMMEDIATE_RE,r:1},{cN:"keyword",b:"(?:tryCatch|library|setGeneric|setGroupGeneric)\\b",e:hljs.IMMEDIATE_RE,r:10},{cN:"keyword",b:"\\.\\.\\.",e:hljs.IMMEDIATE_RE,r:10},{cN:"keyword",b:"\\.\\.\\d+(?![\\w.])",e:hljs.IMMEDIATE_RE,r:10},{cN:"keyword",b:"\\b(?:function)",e:hljs.IMMEDIATE_RE,r:2},{cN:"keyword",b:"(?:if|in|break|next|repeat|else|for|return|switch|while|try|stop|warning|require|attach|detach|source|setMethod|setClass)\\b",e:hljs.IMMEDIATE_RE,r:1},{cN:"literal",b:"(?:NA|NA_integer_|NA_real_|NA_character_|NA_complex_)\\b",e:hljs.IMMEDIATE_RE,r:10},{cN:"literal",b:"(?:NULL|TRUE|FALSE|T|F|Inf|NaN)\\b",e:hljs.IMMEDIATE_RE,r:1},{cN:"identifier",b:"[a-zA-Z.][a-zA-Z0-9._]*\\b",e:hljs.IMMEDIATE_RE,r:0},{cN:"operator",b:"<\\-(?!\\s*\\d)",e:hljs.IMMEDIATE_RE,r:2},{cN:"operator",b:"\\->|<\\-",e:hljs.IMMEDIATE_RE,r:1},{cN:"operator",b:"%%|~",e:hljs.IMMEDIATE_RE},{cN:"operator",b:">=|<=|==|!=|\\|\\||&&|=|\\+|\\-|\\*|/|\\^|>|<|!|&|\\||\\$|:",e:hljs.IMMEDIATE_RE,r:0},{cN:"operator",b:"%",e:"%",i:"\\n",r:1},{cN:"identifier",b:"`",e:"`",r:0},{cN:"string",b:'"',e:'"',c:[hljs.BE],r:0},{cN:"string",b:"'",e:"'",c:[hljs.BE],r:0},{cN:"paren",b:"[[({\\])}]",e:hljs.IMMEDIATE_RE,r:0}]}};hljs.LANGUAGES.xml=function(){var b="[A-Za-z0-9\\._:-]+";var a={eW:true,c:[{cN:"attribute",b:b,r:0},{b:'="',rB:true,e:'"',c:[{cN:"value",b:'"',eW:true}]},{b:"='",rB:true,e:"'",c:[{cN:"value",b:"'",eW:true}]},{b:"=",c:[{cN:"value",b:"[^\\s/>]+"}]}]};return{cI:true,dM:{c:[{cN:"pi",b:"<\\?",e:"\\?>",r:10},{cN:"doctype",b:"<!DOCTYPE",e:">",r:10,c:[{b:"\\[",e:"\\]"}]},{cN:"comment",b:"<!--",e:"-->",r:10},{cN:"cdata",b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"tag",b:"<style(?=\\s|>|$)",e:">",k:{title:{style:1}},c:[a],starts:{cN:"css",e:"</style>",rE:true,sL:"css"}},{cN:"tag",b:"<script(?=\\s|>|$)",e:">",k:{title:{script:1}},c:[a],starts:{cN:"javascript",e:"<\/script>",rE:true,sL:"javascript"}},{cN:"vbscript",b:"<%",e:"%>",sL:"vbscript"},{cN:"tag",b:"</?",e:"/?>",c:[{cN:"title",b:"[^ />]+"},a]}]}}}();

shiny/www/shared/highlight/classref.txt METASEP
This is a full list of available classes corresponding to languages'
syntactic structures. The parentheses after language name contain identifiers
used as class names in `<code>` element.

Python ("python"):

  keyword          keyword
  built_in         built-in objects (None, False, True and Ellipsis)
  number           number
  string           string (of any type)
  comment          comment
  decorator        @-decorator for functions
  function         function header "def some_name(...):"
  class            class header "class SomeName(...):"
  title            name of a function or a class inside a header
  params           everything inside parentheses in a function's or class' header

Python profiler results ("profile"):

  number           number
  string           string
  built_in         built-in function entry
  filename         filename in an entry
  summary          profiling summary
  header           header of table of results
  keyword          column header
  function         function name in an entry (including parentheses)
  title            actual name of a function in an entry (excluding parentheses)
  prompt           interpreter prompt (>>> or ...)

Ruby ("ruby"):

  keyword          keyword
  string           string
  subst            in-string substitution (#{...})
  comment          comment
  yardoctag        YARD tag
  function         function header "def some_name(...):"
  class            class header "class SomeName(...):"
  title            name of a function or a class inside a header
  parent           name of a parent class
  symbol           symbol

Haml ("haml"):

  tag              any tag starting with "%"
  title            tag's name
  attribute        tag's attribute
  keyword          tag's attribute that is a keyword
  string           attribute's value that is a string
  value            attribute's value, shorthand id or class for tag
  comment          comment
  doctype          !!! declaration
  bullet           line defined by variable

Perl ("perl"):

  keyword          keyword
  comment          comment
  number           number
  string           string
  regexp           regular expression
  sub              subroutine header (from "sub" till "{")
  variable         variable starting with "$", "%", "@"
  operator         operator
  pod              plain old doc

PHP ("php"):

  keyword          keyword
  number           number
  string           string (of any type)
  comment          comment
  phpdoc           phpdoc params in comments
  variable         variable starting with "$"
  preprocessor     preprocessor marks: "<?php" and "?>"

Scala ("scala"):

  keyword          keyword
  number           number
  string           string
  comment          comment
  annotation       annotation
  javadoc          javadoc comment
  javadoctag       @-tag in javadoc
  class            class header
  title            class name inside a header
  params           everything in parentheses inside a class header
  inheritance      keywords "extends" and "with" inside class header

Go ("go"):

  comment          comment
  string           string constant
  number           number
  keyword          language keywords
  constant         true false nil iota
  typename         built-in plain types (int, string etc.)
  built_in         built-in functions

HTML, XML ("xml"):

  tag              any tag from "<" till ">"
  attribute        tag's attribute with or without value
  value            attribute's value
  comment          comment
  pi               processing instruction (<? ... ?>)
  doctype          <!DOCTYPE ... > declaration
  cdata            CDATA section

Lasso ("lasso"):

  preprocessor     delimiters and interpreter flags
  shebang          Lasso 9 shell script header
  comment          single- or multi-line comment
  javadoc          doc comment
  keyword          keyword
  literal          keyword representing a value
  built_in         built-in types and variables
  number           number
  string           string
  variable         variable reference starting with "#" or "$"
  tag              tag literal
  attribute        named or rest parameter in method signature
  class            type, trait, or method header
  title            name following "define" inside a header

CSS ("css"):

  tag              tag in selectors
  id               #some_name in selectors
  class            .some_name in selectors
  at_rule          @-rule till first "{" or ";"
  attr_selector    attribute selector (square brackets in a[href^=http://])
  pseudo           pseudo classes and elemens (:after, ::after etc.)
  comment          comment
  rules            everything from "{" till "}"
  attribute        property name inside a rule
  value            property value inside a rule, from ":" till ";" or
                   till the end of rule block
  number           number within a value
  string           string within a value
  hexcolor         hex color (#FFFFFF) within a value
  function         CSS function within a value
  important        "!important" symbol

SCSS ("scss"):

  tag              tag in selectors
  id               #some_name in selectors
  class            .some_name in selectors
  at_rule          @-rule till first "{" or ";"
  attr_selector    attribute selector (square brackets in a[href^=http://])
  pseudo           pseudo classes and elemens (:after, ::after etc.)
  comment          comment
  rules            everything from "{" till "}"
  attribute        property name inside a rule
  value            property value inside a rule, from ":" till ";" or
                   till the end of rule block
  number           number within a value
  string           string within a value
  hexcolor         hex color (#FFFFFF) within a value
  function         CSS function within a value
  important        "!important" symbol
  variable         variable starting with "$"
  preprocessor     keywords after @

Markdown ("markdown"):

  header            header
  bullet            list bullet
  emphasis          emphasis
  strong            strong emphasis
  blockquote        blockquote
  code              code
  horizontal_rule   horizontal rule
  link_label        link label
  link_url          link url

AsciiDoc ("asciidoc"):

  header            heading
  bullet            list or labeled bullet
  emphasis          emphasis
  strong            strong emphasis
  blockquote        blockquote
  code              inline or block code
  horizontal_rule   horizontal rule
  link_label        link or image label
  link_url          link or image url
  comment           comment
  attribute         document attribute, block attributes
  label             admonition label

Django ("django"):

  keyword          HTML tag in HTML, default tags and default filters in templates
  tag              any tag from "<" till ">"
  comment          comment
  doctype          <!DOCTYPE ... > declaration
  attribute        tag's attribute with or withou value
  value            attribute's value
  template_tag     template tag {% .. %}
  variable         template variable {{ .. }}
  template_comment template comment, both {# .. #} and {% comment %}
  filter           filter from "|" till the next filter or the end of tag
  argument         filter argument

Handlebars ("handlebars"):

  expression       expression to be evaluated
  variable         variable
  begin-block      the beginning of a block
  end-block        the ending of a block
  string           string

JSON ("json"):

  number           number
  literal          "true", "false" and "null"
  string           string value
  attribute        name of an object property
  value            value of an object property

JavaScript ("javascript"):

  keyword          keyword
  comment          comment
  number           number
  literal          special literal: "true", "false" and "null"
  string           string
  regexp           regular expression
  function         header of a function
  title            name of a function inside a header
  params           parentheses and everything inside them in a function's header

CoffeeScript ("coffeescript"):

  keyword          keyword
  comment          comment
  number           number
  literal          special literal: "true", "false" and "null"
  built_in         built-in objects and functions ("window", "console", "require", etc...)
  string           string
  subst            #{ ... } interpolation in double-quoted strings
  regexp           regular expression
  function         header of a function
  class            header of a class
  title            name of a function variable inside a header
  params           parentheses and everything inside them in a function's header
  property         @-property within class and functions

ActionScript ("actionscript"):

  comment          comment
  string           string
  number           number
  keyword          keywords
  literal          literal
  reserved         reserved keyword
  title            name of declaration (package, class or function)
  preprocessor     preprocessor directive (import, include)
  type             type of returned value (for functions)
  package          package (named or not)
  class            class/interface
  function         function
  param            params of function
  rest_arg         rest argument of function

VBScript ("vbscript"):

  keyword          keyword
  number           number
  string           string
  comment          comment
  built_in         built-in function

VB.Net ("vbnet"):

  keyword          keyword
  built_in         built-in types
  literal          "true", "false" and "nothing"
  string           string
  comment          comment
  xmlDocTag        xmldoc tag ("'''", "<!--", "-->", "<..>")
  preprocessor     preprocessor directive

HTTP ("http"):

  request          first line of a request
  status           first line of a response
  attribute        header name
  string           header value or query string in a request line
  number           status code

Lua ("lua"):

  keyword          keyword
  number           number
  string           string
  comment          comment
  built_in         built-in operator
  function         header of a function
  title            name of a function inside a header
  params           everything inside parentheses in a function's header
  long_brackets    multiline string in [=[ .. ]=]

Delphi ("delphi"):

  keyword          keyword
  comment          comment (of any type)
  number           number
  string           string
  function         header of a function, procedure, constructor and destructor
  title            name of a function, procedure, constructor or destructor
                   inside a header
  params           everything inside parentheses in a function's header
  class            class' body from "= class" till "end;"

Java ("java"):

  keyword          keyword
  number           number
  string           string
  comment          commment
  annotaion        annotation
  javadoc          javadoc comment
  class            class header from "class" till "{"
  title            class name inside a header
  params           everything in parentheses inside a class header
  inheritance      keywords "extends" and "implements" inside class header

C++ ("cpp"):

  keyword          keyword
  number           number
  string           string and character
  comment          comment
  preprocessor     preprocessor directive
  stl_container    instantiation of STL containers ("vector<...>")

Objective C ("objectivec"):

  keyword          keyword
  built_in         Cocoa/Cocoa Touch constants and classes
  number           number
  string           string
  comment          comment
  preprocessor     preprocessor directive
  class            interface/implementation, protocol and forward class declaration
  variable         properties and struct accesors

Vala ("vala"):

  keyword          keyword
  number           number
  string           string
  comment          comment
  class            class definitions
  title            in class definition
  constant         ALL_UPPER_CASE

C# ("cs"):

  keyword          keyword
  number           number
  string           string
  comment          commment
  xmlDocTag        xmldoc tag ("///", "<!--", "-->", "<..>")

F# ("fsharp"):

  keywords         keyword
  number           number
  string           string
  commment         comment
  class            any custom F# type
  title            the name of a custom F# type
  annotation       any attribute

OCaml ("ocaml"):
  keywords         keyword
  number           number
  string           string
  commment         comment
  class            any custom OCaml type
  title            the name of a custom OCaml type
  annotation       any attribute

D ("d"):

  comment          comment
  string           string constant
  number           number
  keyword          language keywords (including @attributes)
  constant         true false null
  built_in         built-in plain types (int, string etc.)

RenderMan RSL ("rsl"):

  keyword          keyword
  number           number
  string           string (including @"..")
  comment          comment
  preprocessor     preprocessor directive
  shader           sahder keywords
  shading          shading keywords
  built_in         built-in function

RenderMan RIB ("rib"):

  keyword          keyword
  number           number
  string           string
  comment          comment
  commands         command

Maya Embedded Language ("mel"):

  keyword          keyword
  number           number
  string           string
  comment          comment
  variable         variable

SQL ("sql"):

  keyword          keyword (mostly SQL'92 and SQL'99)
  number           number
  string           string (of any type: "..", '..', `..`)
  comment          comment
  aggregate        aggregate function

Smalltalk ("smalltalk"):

  keyword          keyword
  number           number
  string           string
  comment          commment
  symbol           symbol
  array            array
  class            name of a class
  char             char
  localvars        block of local variables

Lisp ("lisp"):

  keyword          keyword
  number           number
  string           string
  comment          commment
  variable         variable
  literal          b, t and nil
  list             non-quoted list
  title            first symbol in a non-quoted list
  body             remainder of the non-quoted list
  quoted           quoted list, both "(quote .. )" and "'(..)"

Clojure ("clojure"):

  comment          comments and hints
  string           string
  number           number
  collection       collections
  attribute        :keyword
  title            function name (built-in or user defined)
  built_in         built-in function name

Ini ("ini"):

  title            title of a section
  value            value of a setting of any type
  string           string
  number           number
  keyword          boolean value keyword

Apache ("apache"):

  keyword          keyword
  number           number
  comment          commment
  literal          On and Off
  sqbracket        variables in rewrites "%{..}"
  cbracket         options in rewrites "[..]"
  tag              begin and end of a configuration section

Nginx ("nginx"):

  title            directive title
  string           string
  number           number
  comment          comment
  built_in         built-in constant
  variable         $-variable
  regexp           regexp

Diff ("diff"):

  header           file header
  chunk            chunk header within a file
  addition         added lines
  deletion         deleted lines
  change           changed lines

DOS ("dos"):

  keyword          keyword
  flow             batch control keyword
  stream           DOS special files ("con", "prn", ...)
  winutils         some commands (see dos.js specifically)
  envvar           environment variables

Bash ("bash"):

  keyword          keyword
  string           string
  number           number
  comment          comment
  literal          special literal: "true" и "false"
  variable         variable
  shebang          script interpreter header

Makefile ("makefile"):

  keyword          keyword ".PHONY" within the phony line
  string           string
  comment          comment
  variable         $(..) variable
  title            target title
  constant         constant within the initial definition

CMake ("cmake"):

  keyword          keyword
  number           number
  string           string
  comment          commment
  envvar           $-variable
  operator         operator (LESS, STREQUAL, MATCHES, etc)

Axapta ("axapta"):

  keyword          keyword
  number           number
  string           string
  comment          commment
  class            class header from "class" till "{"
  title            class name inside a header
  params           everything in parentheses inside a class header
  inheritance      keywords "extends" and "implements" inside class header
  preprocessor     preprocessor directive

Oracle Rules Language ("ruleslanguage"):

  comment          comment
  string           string constant
  number           number
  keyword          language keywords
  built_in         built-in functions
  array            array stem

1C ("1c"):

  keyword          keyword
  number           number
  date             date
  string           string
  comment          commment
  function         header of function or procudure
  title            function name inside a header
  params           everything in parentheses inside a function header
  preprocessor     preprocessor directive

AVR assembler ("avrasm"):

  keyword          keyword
  built_in         pre-defined register
  number           number
  string           string
  comment          commment
  label            label
  preprocessor     preprocessor directive
  localvars        substitution in .macro

VHDL ("vhdl"):

  keyword          keyword
  number           number
  string           string
  comment          commment
  literal          signal logical value
  typename         typename
  attribute        signal attribute

Parser3 ("parser3"):

  keyword          keyword
  number           number
  comment          commment
  variable         variable starting with "$"
  preprocessor     preprocessor directive
  title            user-defined name starting with "@"

LiveCode Server ("livecodeserver"):

  variable         variable starting with "g", "t", "p", "s", "$_"
  string           string
  comment          comment
  number           number
  title            name of a command or a function
  keyword          keyword
  constant         constant
  operator         operator
  built_in         built_in functions and commands
  function         header of a function
  command          header of a command
  preprocessor     preprocessor marks: "<?", "<?rev", "<?lc", "<?livecode" and "?>"

TeX ("tex"):

  comment          comment
  number           number
  command          command
  parameter        parameter
  formula          formula
  special          special symbol

Haskell ("haskell"):

  comment          comment
  pragma           GHC pragma
  preprocessor     CPP preprocessor directive
  keyword          keyword
  number           number
  string           string
  title            function or variable name
  type             value, type or type class constructor name (i.e. capitalized)
  container        (..., ...) or {...; ...} list in declaration or record
  module           module declaration
  import           import declaration
  class            type class or instance declaration
  typedef          type declaration (type, newtype, data)
  default          default declaration
  infix            infix declaration
  foreign          FFI declaration
  shebang          shebang line

Erlang ("erlang"):

  comment          comment
  string           string
  number           number
  keyword          keyword
  record_name      record access (#record_name)
  title            name of declaration function
  variable         variable (starts with capital letter or with _)
  pp.keywords      module's attribute (-attribute)
  function_name    atom or atom:atom in case of function call

Rust ("rust"):

  comment          comment
  string           string
  number           number
  keyword          keyword
  title            name of declaration
  preprocessor     preprocessor directive

Matlab ("matlab"):

  comment          comment
  string           string
  number           number
  keyword          keyword
  title            function name
  function         function
  param            params of function
  matrix           matrix in [ .. ]
  cell             cell in { .. }

Scilab ("scilab"):

  comment          comment
  string           string
  number           number
  keyword          keyword
  title            function name
  function         function
  param            params of function
  matrix           matrix in [ .. ]

R ("r"):

  comment          comment
  string           string constant
  number           number
  keyword          language keywords (function, if) plus "structural"
                   functions (attach, require, setClass)
  literal          special literal: TRUE, FALSE, NULL, NA, etc.

OpenGL Shading Language ("glsl"):

  comment          comment
  number           number
  preprocessor     preprocessor directive
  keyword          keyword
  built_in         GLSL built-in functions and variables
  literal          true false

AppleScript ("applescript"):

  keyword          keyword
  command          core AppleScript command
  constant         AppleScript built in constant
  type             AppleScript variable type (integer, etc.)
  property         Applescript built in property (length, etc.)
  number           number
  string           string
  comment          comment
  title            name of a handler

Brainfuck ("brainfuck"):

  title            Brainfuck while loop command
  literal          Brainfuck inc and dec commands
  comment          comment
  string           Brainfuck input and output commands

Mizar ("mizar"):

  keyword          keyword
  comment          comment

shiny/www/shared/datatables/upgrade1.10.txt METASEP
aaData	data
aaSorting	order
aaSortingFixed	orderFixed
aDataSort	columns.orderData
aLengthMenu	lengthMenu
aoSearchCols	searchCols
asSorting	columns.orderSequence
asStripeClasses	stripeClasses
bAutoWidth	autoWidth
bDeferRender	deferRender
bDestroy	destroy
bFilter	searching
bInfo	info
bJQueryUI	jQueryUI
bLengthChange	lengthChange
bPaginate	paging
bProcessing	processing
bRetrieve	retrieve
bScrollAutoCss	Removed	
bScrollCollapse	scrollCollapse
bScrollInfinite	Removed	
bSearchable	columns.searchable
bServerSide	serverSide
bSort	ordering
bSortable	columns.orderable
bSortCellsTop	orderCellsTop
bSortClasses	orderClasses
bStateSave	stateSave
bUseRendered	Removed
bVisible	columns.visible
fnCookieCallback	Removed	
fnCreatedCell	columns.createdCell
fnCreatedRow	createdRow
fnDrawCallback	drawCallback
fnFooterCallback	footerCallback
fnFormatNumber	formatNumber
fnHeaderCallback	headerCallback
fnInfoCallback	infoCallback
fnInitComplete	initComplete
fnPreDrawCallback	preDrawCallback
fnRender	Removed
fnRowCallback	rowCallback
fnServerData	ajax
fnServerParams	ajax
fnStateLoad	stateLoadCallback
fnStateLoaded	stateLoaded
fnStateLoadParams	stateLoadParams
fnStateSave	stateSaveCallback
fnStateSaveParams	stateSaveParams
iCookieDuration	stateDuration
iDataSort	columns.orderData
iDeferLoading	deferLoading
iDisplayLength	pageLength
iDisplayStart	displayStart
iScrollLoadGap	Removed	
iTabIndex	tabIndex
mData	columns.data
mRender	columns.render
oLanguage.oAria.sSortAscending	language.aria.sortAscending
oLanguage.oAria.sSortDescending	language.aria.sortDescending
oLanguage.oPaginate.sFirst	language.paginate.first
oLanguage.oPaginate.sLast	language.paginate.last
oLanguage.oPaginate.sNext	language.paginate.next
oLanguage.oPaginate.sPrevious	language.paginate.previous
oLanguage.sEmptyTable	language.emptyTable
oLanguage.sInfo	language.info
oLanguage.sInfoEmpty	language.infoEmpty
oLanguage.sInfoFiltered	language.infoFiltered
oLanguage.sInfoPostFix	language.infoPostFix
oLanguage.sInfoThousands	language.thousands
oLanguage.sLengthMenu	language.lengthMenu
oLanguage.sLoadingRecords	language.loadingRecords
oLanguage.sProcessing	language.processing
oLanguage.sSearch	language.search
oLanguage.sUrl	language.url
oLanguage.sZeroRecords	language.zeroRecords
oSearch	search
sAjaxDataProp	ajax.dataSrc
sAjaxSource	ajax
sCellType	columns.cellType
sClass	columns.className
sContentPadding	contentPadding
sCookiePrefix	Removed	
sDefaultContent	columns.defaultContent
sDom	dom
sName	columns.name
sPaginationType	pagingType
sScrollX	scrollX
sScrollXInner	scrollXInner
sScrollY	scrollY
sServerMethod	ajax
sSortDataType	columns.orderDataType
sTitle	columns.title
sType	columns.type
sWidth	columns.width

shiny/www/shared/bs3compat/transition.js METASEP
/* ========================================================================
 * Bootstrap: transition.js v3.4.1
 * https://getbootstrap.com/docs/3.4/javascript/#transitions
 * ========================================================================
 * Copyright 2011-2019 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/v3-dev/LICENSE)
 * ======================================================================== */


+function ($) {
  'use strict';

  // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/)
  // ============================================================

  function transitionEnd() {
    var el = document.createElement('bootstrap')

    var transEndEventNames = {
      WebkitTransition : 'webkitTransitionEnd',
      MozTransition    : 'transitionend',
      OTransition      : 'oTransitionEnd otransitionend',
      transition       : 'transitionend'
    }

    for (var name in transEndEventNames) {
      if (el.style[name] !== undefined) {
        return { end: transEndEventNames[name] }
      }
    }

    return false // explicit for ie8 (  ._.)
  }

  // https://blog.alexmaccaw.com/css-transitions
  $.fn.emulateTransitionEnd = function (duration) {
    var called = false
    var $el = this
    $(this).one('bsTransitionEnd', function () { called = true })
    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
    setTimeout(callback, duration)
    return this
  }

  $(function () {
    $.support.transition = transitionEnd()

    if (!$.support.transition) return

    $.event.special.bsTransitionEnd = {
      bindType: $.support.transition.end,
      delegateType: $.support.transition.end,
      handle: function (e) {
        if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
      }
    }
  })

}(jQuery);

shiny/www/shared/bs3compat/tabs.js METASEP
/* ========================================================================
 * Bootstrap: tab.js v3.4.1
 * https://getbootstrap.com/docs/3.4/javascript/#tabs
 * ========================================================================
 * Copyright 2011-2019 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * ======================================================================== */

// Register tab plugin after DOM content loaded in order to
// override BS5's plugin
// https://github.com/twbs/bootstrap/blob/08139c22/js/dist/tab.js#L87
$(function() {
  'use strict';

  // TAB CLASS DEFINITION
  // ====================

  var Tab = function (element) {
    // jscs:disable requireDollarBeforejQueryAssignment
    this.element = $(element)
    // jscs:enable requireDollarBeforejQueryAssignment
  }

  Tab.VERSION = '3.4.1'

  Tab.TRANSITION_DURATION = 150

  Tab.prototype.show = function () {
    var $this    = this.element
    var $ul      = $this.closest('ul:not(.dropdown-menu)')
    var selector = $this.data('target')

    if (!selector) {
      selector = $this.attr('href')
      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
    }

    if ($this.parent('li').hasClass('active')) return

    var $previous = $ul.find('.active:last a')
    var hideEvent = $.Event('hide.bs.tab', {
      relatedTarget: $this[0]
    })
    var showEvent = $.Event('show.bs.tab', {
      relatedTarget: $previous[0]
    })

    $previous.trigger(hideEvent)
    $this.trigger(showEvent)

    if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return

    var $target = $(document).find(selector)

    this.activate($this.closest('li'), $ul)
    this.activate($target, $target.parent(), function () {
      $previous.trigger({
        type: 'hidden.bs.tab',
        relatedTarget: $this[0]
      })
      $this.trigger({
        type: 'shown.bs.tab',
        relatedTarget: $previous[0]
      })
    })
  }

  Tab.prototype.activate = function (element, container, callback) {
    var $active    = container.find('> .active')
    var transition = callback
      && $.support.transition
      && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)

    function next() {
      $active
        .removeClass('active')
        .find('> .dropdown-menu > .active')
        .removeClass('active')
        .end()
        .find('[data-toggle="tab"]')
        .attr('aria-expanded', false)

      element
        .addClass('active')
        .find('[data-toggle="tab"]')
        .attr('aria-expanded', true)

      if (transition) {
        element[0].offsetWidth // reflow for transition
        element.addClass('in')
      } else {
        element.removeClass('fade')
      }

      if (element.parent('.dropdown-menu').length) {
        element
          .closest('li.dropdown')
          .addClass('active')
          .end()
          .find('[data-toggle="tab"]')
          .attr('aria-expanded', true)
      }

      callback && callback()
    }

    $active.length && transition ?
      $active
        .one('bsTransitionEnd', next)
        .emulateTransitionEnd(Tab.TRANSITION_DURATION) :
      next()

    $active.removeClass('in')
  }


  // TAB PLUGIN DEFINITION
  // =====================

  function Plugin(option) {
    return this.each(function () {
      var $this = $(this)
      var data  = $this.data('bs.tab')

      if (!data) $this.data('bs.tab', (data = new Tab(this)))
      if (typeof option == 'string') data[option]()
    })
  }

  var old = $.fn.tab

  $.fn.tab             = Plugin
  $.fn.tab.Constructor = Tab


  // TAB NO CONFLICT
  // ===============

  $.fn.tab.noConflict = function () {
    $.fn.tab = old
    return this
  }


  // TAB DATA-API
  // ============

  var clickHandler = function (e) {
    e.preventDefault()
    Plugin.call($(this), 'show')
  }

  $(document)
    .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)
    .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)

});

shiny/www/shared/bs3compat/bs3compat.js METASEP
// Inform the world that we have the ability to use BS3 nav/navbar markup in BS4
window.BS3_COMPAT = true;

// This logic needs to execute after both the BS4+ (new) as well as BS3 (legacy)
// jQuery plugins have been registered. For BS5, plugin registration happens
// after DOM content is loaded, which is why we do the same here.
// https://github.com/twbs/bootstrap/blob/08139c22/js/dist/tab.js#L87
$(function() {

  // The legacy plugin needs to be registered after the new one
  if (!$.fn.tab.Constructor.VERSION.match(/^3\./)) {
    (console.warn || console.error || console.log)("bs3compat.js couldn't find bs3 tab impl; bs3 tabs will not be properly supported");
    return;
  }
  var legacyTabPlugin = $.fn.tab.noConflict();

  if (!$.fn.tab || !$.fn.tab.Constructor || !$.fn.tab.noConflict) {
    (console.warn || console.error || console.log)("bs3compat.js couldn't find a jQuery tab impl; bs3 tabs will not be properly supported");
  }
  var newTabPlugin = $.fn.tab.noConflict();

  // Re-define the tab click event
  // https://github.com/twbs/bootstrap/blob/08139c2/js/src/tab.js#L33
  var EVENT_KEY = "click.bs.tab.data-api";
  $(document).off(EVENT_KEY);

  var SELECTOR = '[data-toggle="tab"], [data-toggle="pill"], [data-bs-toggle="tab"], [data-bs-toggle="pill"]';
  $(document).on(EVENT_KEY, SELECTOR, function(event) {
    event.preventDefault();
    $(this).tab("show");
  });

  function TabPlugin(config) {
    // Legacy (bs3) tabs: li.active > a
    // New (bs4+) tabs: li.nav-item > a.active.nav-link
    var legacy = $(this).closest(".nav").find("li:not(.dropdown).active > a").length > 0;
    var plugin = legacy ? legacyTabPlugin : newTabPlugin;
    plugin.call($(this), config);
  }

  var noconflict = $.fn.tab;
  $.fn.tab = TabPlugin;
  $.fn.tab.Constructor = newTabPlugin.Constructor;
  $.fn.tab.noConflict = function() {
    $.fn.tab = noconflict;
    return TabPlugin;
  };
});

shiny/www/shared/bootstrap/bootstrap.min.css METASEP
:root{--bs-blue: #0d6efd;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #d63384;--bs-red: #dc3545;--bs-orange: #fd7e14;--bs-yellow: #ffc107;--bs-green: #198754;--bs-teal: #20c997;--bs-cyan: #0dcaf0;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-default: #dee2e6;--bs-primary: #0d6efd;--bs-secondary: #6c757d;--bs-success: #198754;--bs-info: #0dcaf0;--bs-warning: #ffc107;--bs-danger: #dc3545;--bs-light: #f8f9fa;--bs-dark: #212529;--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255,255,255,0.15), rgba(255,255,255,0))}*,*::before,*::after{box-sizing:border-box}@media (prefers-reduced-motion: no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-font-sans-serif);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1,.h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width: 1200px){h1,.h1{font-size:2.5rem}}h2,.h2{font-size:calc(1.325rem + .9vw)}@media (min-width: 1200px){h2,.h2{font-size:2rem}}h3,.h3{font-size:calc(1.3rem + .6vw)}@media (min-width: 1200px){h3,.h3{font-size:1.75rem}}h4,.h4{font-size:calc(1.275rem + .3vw)}@media (min-width: 1200px){h4,.h4{font-size:1.5rem}}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-bs-original-title]{text-decoration:underline dotted;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;-ms-text-decoration:underline dotted;-o-text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem;padding:.625rem 1.25rem;border-left:.25rem solid #e9ecef}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}b,strong{font-weight:bolder}small,.small{font-size:.875em}mark,.mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr /* rtl:ignore */;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em;color:#000;background-color:#f6f6f6;padding:.5rem;border:1px solid #dee2e6;border-radius:.25rem}pre code{background-color:transparent;font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#000;background-color:#f6f6f6;border-radius:.25rem;padding:.125rem .25rem;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role="button"]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button:not(:disabled),[type="button"]:not(:disabled),[type="reset"]:not(:disabled),[type="submit"]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type="search"]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none !important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:#6c757d}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{width:100%;padding-right:var(--bs-gutter-x, .75rem);padding-left:var(--bs-gutter-x, .75rem);margin-right:auto;margin-left:auto}@media (min-width: 576px){.container-sm,.container{max-width:540px}}@media (min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media (min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media (min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}@media (min-width: 1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1320px}}.row{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-right:calc(var(--bs-gutter-x) * -.5);margin-left:calc(var(--bs-gutter-x) * -.5)}.row>*{flex-shrink:0;-webkit-flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%;-webkit-flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.row-cols-4>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}@media (min-width: 576px){.col-sm{flex:1 0 0%;-webkit-flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.row-cols-sm-4>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}}@media (min-width: 768px){.col-md{flex:1 0 0%;-webkit-flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.row-cols-md-4>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}}@media (min-width: 992px){.col-lg{flex:1 0 0%;-webkit-flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.row-cols-lg-4>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}}@media (min-width: 1200px){.col-xl{flex:1 0 0%;-webkit-flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.row-cols-xl-4>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}}@media (min-width: 1400px){.col-xxl{flex:1 0 0%;-webkit-flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.row-cols-xxl-4>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}}.col-auto{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;-webkit-flex:0 0 auto;width:8.33333%}.col-2{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}.col-3{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.col-5{flex:0 0 auto;-webkit-flex:0 0 auto;width:41.66667%}.col-6{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;-webkit-flex:0 0 auto;width:58.33333%}.col-8{flex:0 0 auto;-webkit-flex:0 0 auto;width:66.66667%}.col-9{flex:0 0 auto;-webkit-flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;-webkit-flex:0 0 auto;width:83.33333%}.col-11{flex:0 0 auto;-webkit-flex:0 0 auto;width:91.66667%}.col-12{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}.g-0,.gx-0{--bs-gutter-x: 0}.g-0,.gy-0{--bs-gutter-y: 0}.g-1,.gx-1{--bs-gutter-x: .25rem}.g-1,.gy-1{--bs-gutter-y: .25rem}.g-2,.gx-2{--bs-gutter-x: .5rem}.g-2,.gy-2{--bs-gutter-y: .5rem}.g-3,.gx-3{--bs-gutter-x: 1rem}.g-3,.gy-3{--bs-gutter-y: 1rem}.g-4,.gx-4{--bs-gutter-x: 1.5rem}.g-4,.gy-4{--bs-gutter-y: 1.5rem}.g-5,.gx-5{--bs-gutter-x: 3rem}.g-5,.gy-5{--bs-gutter-y: 3rem}@media (min-width: 576px){.col-sm-auto{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;-webkit-flex:0 0 auto;width:8.33333%}.col-sm-2{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}.col-sm-3{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.col-sm-5{flex:0 0 auto;-webkit-flex:0 0 auto;width:41.66667%}.col-sm-6{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;-webkit-flex:0 0 auto;width:58.33333%}.col-sm-8{flex:0 0 auto;-webkit-flex:0 0 auto;width:66.66667%}.col-sm-9{flex:0 0 auto;-webkit-flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;-webkit-flex:0 0 auto;width:83.33333%}.col-sm-11{flex:0 0 auto;-webkit-flex:0 0 auto;width:91.66667%}.col-sm-12{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}.g-sm-0,.gx-sm-0{--bs-gutter-x: 0}.g-sm-0,.gy-sm-0{--bs-gutter-y: 0}.g-sm-1,.gx-sm-1{--bs-gutter-x: .25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y: .25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x: .5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y: .5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x: 1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y: 1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x: 1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y: 1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x: 3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y: 3rem}}@media (min-width: 768px){.col-md-auto{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;-webkit-flex:0 0 auto;width:8.33333%}.col-md-2{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}.col-md-3{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.col-md-5{flex:0 0 auto;-webkit-flex:0 0 auto;width:41.66667%}.col-md-6{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;-webkit-flex:0 0 auto;width:58.33333%}.col-md-8{flex:0 0 auto;-webkit-flex:0 0 auto;width:66.66667%}.col-md-9{flex:0 0 auto;-webkit-flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;-webkit-flex:0 0 auto;width:83.33333%}.col-md-11{flex:0 0 auto;-webkit-flex:0 0 auto;width:91.66667%}.col-md-12{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}.g-md-0,.gx-md-0{--bs-gutter-x: 0}.g-md-0,.gy-md-0{--bs-gutter-y: 0}.g-md-1,.gx-md-1{--bs-gutter-x: .25rem}.g-md-1,.gy-md-1{--bs-gutter-y: .25rem}.g-md-2,.gx-md-2{--bs-gutter-x: .5rem}.g-md-2,.gy-md-2{--bs-gutter-y: .5rem}.g-md-3,.gx-md-3{--bs-gutter-x: 1rem}.g-md-3,.gy-md-3{--bs-gutter-y: 1rem}.g-md-4,.gx-md-4{--bs-gutter-x: 1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y: 1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x: 3rem}.g-md-5,.gy-md-5{--bs-gutter-y: 3rem}}@media (min-width: 992px){.col-lg-auto{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;-webkit-flex:0 0 auto;width:8.33333%}.col-lg-2{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}.col-lg-3{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.col-lg-5{flex:0 0 auto;-webkit-flex:0 0 auto;width:41.66667%}.col-lg-6{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;-webkit-flex:0 0 auto;width:58.33333%}.col-lg-8{flex:0 0 auto;-webkit-flex:0 0 auto;width:66.66667%}.col-lg-9{flex:0 0 auto;-webkit-flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;-webkit-flex:0 0 auto;width:83.33333%}.col-lg-11{flex:0 0 auto;-webkit-flex:0 0 auto;width:91.66667%}.col-lg-12{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}.g-lg-0,.gx-lg-0{--bs-gutter-x: 0}.g-lg-0,.gy-lg-0{--bs-gutter-y: 0}.g-lg-1,.gx-lg-1{--bs-gutter-x: .25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y: .25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x: .5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y: .5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x: 1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y: 1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x: 1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y: 1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x: 3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y: 3rem}}@media (min-width: 1200px){.col-xl-auto{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;-webkit-flex:0 0 auto;width:8.33333%}.col-xl-2{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}.col-xl-3{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.col-xl-5{flex:0 0 auto;-webkit-flex:0 0 auto;width:41.66667%}.col-xl-6{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;-webkit-flex:0 0 auto;width:58.33333%}.col-xl-8{flex:0 0 auto;-webkit-flex:0 0 auto;width:66.66667%}.col-xl-9{flex:0 0 auto;-webkit-flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;-webkit-flex:0 0 auto;width:83.33333%}.col-xl-11{flex:0 0 auto;-webkit-flex:0 0 auto;width:91.66667%}.col-xl-12{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}.g-xl-0,.gx-xl-0{--bs-gutter-x: 0}.g-xl-0,.gy-xl-0{--bs-gutter-y: 0}.g-xl-1,.gx-xl-1{--bs-gutter-x: .25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y: .25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x: .5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y: .5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x: 1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y: 1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x: 1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y: 1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x: 3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y: 3rem}}@media (min-width: 1400px){.col-xxl-auto{flex:0 0 auto;-webkit-flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;-webkit-flex:0 0 auto;width:8.33333%}.col-xxl-2{flex:0 0 auto;-webkit-flex:0 0 auto;width:16.66667%}.col-xxl-3{flex:0 0 auto;-webkit-flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;-webkit-flex:0 0 auto;width:33.33333%}.col-xxl-5{flex:0 0 auto;-webkit-flex:0 0 auto;width:41.66667%}.col-xxl-6{flex:0 0 auto;-webkit-flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;-webkit-flex:0 0 auto;width:58.33333%}.col-xxl-8{flex:0 0 auto;-webkit-flex:0 0 auto;width:66.66667%}.col-xxl-9{flex:0 0 auto;-webkit-flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;-webkit-flex:0 0 auto;width:83.33333%}.col-xxl-11{flex:0 0 auto;-webkit-flex:0 0 auto;width:91.66667%}.col-xxl-12{flex:0 0 auto;-webkit-flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333%}.offset-xxl-2{margin-left:16.66667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333%}.offset-xxl-5{margin-left:41.66667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333%}.offset-xxl-8{margin-left:66.66667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333%}.offset-xxl-11{margin-left:91.66667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x: 0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y: 0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x: .25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y: .25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x: .5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y: .5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x: 1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y: 1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x: 1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y: 1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x: 3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y: 3rem}}.table{--bs-table-bg: rgba(0,0,0,0);--bs-table-accent-bg: rgba(0,0,0,0);--bs-table-striped-color: #212529;--bs-table-striped-bg: rgba(0,0,0,0.05);--bs-table-active-color: #212529;--bs-table-active-bg: rgba(0,0,0,0.1);--bs-table-hover-color: #212529;--bs-table-hover-bg: rgba(0,0,0,0.075);width:100%;margin-bottom:1rem;color:#212529;vertical-align:top;border-color:#dee2e6}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-striped>tbody>tr:nth-of-type(odd){--bs-table-accent-bg: var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg: var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover{--bs-table-accent-bg: var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg: #cfe2ff;--bs-table-striped-bg: #c5d7f2;--bs-table-striped-color: #000;--bs-table-active-bg: #bacbe6;--bs-table-active-color: #000;--bs-table-hover-bg: #bfd1ec;--bs-table-hover-color: #000;color:#000;border-color:#bacbe6}.table-secondary{--bs-table-bg: #e2e3e5;--bs-table-striped-bg: #d7d8da;--bs-table-striped-color: #000;--bs-table-active-bg: #cbccce;--bs-table-active-color: #000;--bs-table-hover-bg: #d1d2d4;--bs-table-hover-color: #000;color:#000;border-color:#cbccce}.table-success{--bs-table-bg: #d1e7dd;--bs-table-striped-bg: #c7dbd2;--bs-table-striped-color: #000;--bs-table-active-bg: #bcd0c7;--bs-table-active-color: #000;--bs-table-hover-bg: #c1d6cc;--bs-table-hover-color: #000;color:#000;border-color:#bcd0c7}.table-info{--bs-table-bg: #cff4fc;--bs-table-striped-bg: #c5e8ef;--bs-table-striped-color: #000;--bs-table-active-bg: #badce3;--bs-table-active-color: #000;--bs-table-hover-bg: #bfe2e9;--bs-table-hover-color: #000;color:#000;border-color:#badce3}.table-warning{--bs-table-bg: #fff3cd;--bs-table-striped-bg: #f2e7c3;--bs-table-striped-color: #000;--bs-table-active-bg: #e6dbb9;--bs-table-active-color: #000;--bs-table-hover-bg: #ece1be;--bs-table-hover-color: #000;color:#000;border-color:#e6dbb9}.table-danger{--bs-table-bg: #f8d7da;--bs-table-striped-bg: #eccccf;--bs-table-striped-color: #000;--bs-table-active-bg: #dfc2c4;--bs-table-active-color: #000;--bs-table-hover-bg: #e5c7ca;--bs-table-hover-color: #000;color:#000;border-color:#dfc2c4}.table-light{--bs-table-bg: #f8f9fa;--bs-table-striped-bg: #ecedee;--bs-table-striped-color: #000;--bs-table-active-bg: #dfe0e1;--bs-table-active-color: #000;--bs-table-hover-bg: #e5e6e7;--bs-table-hover-color: #000;color:#000;border-color:#dfe0e1}.table-dark{--bs-table-bg: #212529;--bs-table-striped-bg: #2c3034;--bs-table-striped-color: #fff;--bs-table-active-bg: #373b3e;--bs-table-active-color: #fff;--bs-table-hover-bg: #323539;--bs-table-hover-color: #fff;color:#fff;border-color:#373b3e}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label,.shiny-input-container .control-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text,.help-text,.help-block{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;border-radius:.25rem;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type="file"]{overflow:hidden}.form-control[type="file"]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,0.25)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control::-webkit-file-upload-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + (.5rem + 2px));padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + (1rem + 2px));padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + (.75rem + 2px))}textarea.form-control-sm{min-height:calc(1.5em + (.5rem + 2px))}textarea.form-control-lg{min-height:calc(1.5em + (1rem + 2px))}.form-control-color{max-width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.25rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.25rem}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.25rem;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}@media (prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,0.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.form-check,.shiny-input-container .checkbox,.shiny-input-container .radio{display:block;min-height:1.5rem;padding-left:0;margin-bottom:.125rem}.form-check .form-check-input,.form-check .shiny-input-container .checkbox input,.form-check .shiny-input-container .radio input,.shiny-input-container .checkbox .form-check-input,.shiny-input-container .checkbox .shiny-input-container .checkbox input,.shiny-input-container .checkbox .shiny-input-container .radio input,.shiny-input-container .radio .form-check-input,.shiny-input-container .radio .shiny-input-container .checkbox input,.shiny-input-container .radio .shiny-input-container .radio input{float:left;margin-left:0}.form-check-input,.shiny-input-container .checkbox input,.shiny-input-container .checkbox-inline input,.shiny-input-container .radio input,.shiny-input-container .radio-inline input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,0.25);appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;color-adjust:exact;-webkit-print-color-adjust:exact}.form-check-input[type="checkbox"],.shiny-input-container .checkbox input[type="checkbox"],.shiny-input-container .checkbox-inline input[type="checkbox"],.shiny-input-container .radio input[type="checkbox"],.shiny-input-container .radio-inline input[type="checkbox"]{border-radius:.25em}.form-check-input[type="radio"],.shiny-input-container .checkbox input[type="radio"],.shiny-input-container .checkbox-inline input[type="radio"],.shiny-input-container .radio input[type="radio"],.shiny-input-container .radio-inline input[type="radio"]{border-radius:50%}.form-check-input:active,.shiny-input-container .checkbox input:active,.shiny-input-container .checkbox-inline input:active,.shiny-input-container .radio input:active,.shiny-input-container .radio-inline input:active{filter:brightness(90%)}.form-check-input:focus,.shiny-input-container .checkbox input:focus,.shiny-input-container .checkbox-inline input:focus,.shiny-input-container .radio input:focus,.shiny-input-container .radio-inline input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,0.25)}.form-check-input:checked,.shiny-input-container .checkbox input:checked,.shiny-input-container .checkbox-inline input:checked,.shiny-input-container .radio input:checked,.shiny-input-container .radio-inline input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input[type="checkbox"]:checked,.shiny-input-container .checkbox input[type="checkbox"]:checked,.shiny-input-container .checkbox-inline input[type="checkbox"]:checked,.shiny-input-container .radio input[type="checkbox"]:checked,.shiny-input-container .radio-inline input[type="checkbox"]:checked{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input[type="radio"]:checked,.shiny-input-container .checkbox input[type="radio"]:checked,.shiny-input-container .checkbox-inline input[type="radio"]:checked,.shiny-input-container .radio input[type="radio"]:checked,.shiny-input-container .radio-inline input[type="radio"]:checked{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type="checkbox"]:indeterminate,.shiny-input-container .checkbox input[type="checkbox"]:indeterminate,.shiny-input-container .checkbox-inline input[type="checkbox"]:indeterminate,.shiny-input-container .radio input[type="checkbox"]:indeterminate,.shiny-input-container .radio-inline input[type="checkbox"]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled,.shiny-input-container .checkbox input:disabled,.shiny-input-container .checkbox-inline input:disabled,.shiny-input-container .radio input:disabled,.shiny-input-container .radio-inline input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input:disabled~.form-check-label,.shiny-input-container .checkbox input[disabled]~.form-check-label,.shiny-input-container .checkbox input:disabled~.form-check-label,.shiny-input-container .checkbox-inline input[disabled]~.form-check-label,.shiny-input-container .checkbox-inline input:disabled~.form-check-label,.shiny-input-container .radio input[disabled]~.form-check-label,.shiny-input-container .radio input:disabled~.form-check-label,.shiny-input-container .radio-inline input[disabled]~.form-check-label,.shiny-input-container .radio-inline input:disabled~.form-check-label{opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280,0,0,0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-check-inline,.shiny-input-container .checkbox-inline,.shiny-input-container .radio-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,0.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,0.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}@media (prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}@media (prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity 0.1s ease-in-out,transform 0.1s ease-in-out}@media (prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control{padding:1rem .75rem}.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.input-group{position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:stretch;-webkit-align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n + 3){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n + 3):not(.dropdown-toggle):not(.dropdown-menu),.input-group.has-validation>.dropdown-toggle:nth-last-child(n + 4){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(25,135,84,0.9);border-radius:.25rem}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,0.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:#198754}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select[size="1"]:valid:not([multiple]),.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid[size="1"]:not([multiple]){padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,0.25)}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:#198754}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:#198754}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,0.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group .form-control:valid,.input-group .form-control.is-valid,.was-validated .input-group .form-select:valid,.input-group .form-select.is-valid{z-index:1}.was-validated .input-group .form-control:valid:focus,.input-group .form-control.is-valid:focus,.was-validated .input-group .form-select:valid:focus,.input-group .form-select.is-valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(220,53,69,0.9);border-radius:.25rem}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,0.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:#dc3545}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select[size="1"]:invalid:not([multiple]),.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid[size="1"]:not([multiple]){padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,0.25)}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:#dc3545}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:#dc3545}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,0.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:#dc3545}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group .form-control:invalid,.input-group .form-control.is-invalid,.was-validated .input-group .form-select:invalid,.input-group .form-select.is-invalid{z-index:2}.was-validated .input-group .form-control:invalid:focus,.input-group .form-control.is-invalid:focus,.was-validated .input-group .form-select:invalid:focus,.input-group .form-select.is-invalid:focus{z-index:3}.btn{display:inline-block;font-weight:400;line-height:1.5;color:#212529;text-align:center;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.25rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:#212529}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,0.25)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65}.btn-default{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-default:hover{color:#000;background-color:#e3e6ea;border-color:#e1e5e9}.btn-check:focus+.btn-default,.btn-default:focus{color:#000;background-color:#e3e6ea;border-color:#e1e5e9;box-shadow:0 0 0 .25rem rgba(189,192,196,0.5)}.btn-check:checked+.btn-default,.btn-check:active+.btn-default,.btn-default:active,.btn-default.active,.show>.btn-default.dropdown-toggle,.in>.btn-default.dropdown-toggle{color:#000;background-color:#e5e8eb;border-color:#e1e5e9}.btn-check:checked+.btn-default:focus,.btn-check:active+.btn-default:focus,.btn-default:active:focus,.btn-default.active:focus,.show>.btn-default.dropdown-toggle:focus,.in>.btn-default.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(189,192,196,0.5)}.btn-default:disabled,.btn-default.disabled{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-primary{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-primary:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#fff;background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 0 0 .25rem rgba(49,132,253,0.5)}.btn-check:checked+.btn-primary,.btn-check:active+.btn-primary,.btn-primary:active,.btn-primary.active,.show>.btn-primary.dropdown-toggle,.in>.btn-primary.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:checked+.btn-primary:focus,.btn-check:active+.btn-primary:focus,.btn-primary:active:focus,.btn-primary.active:focus,.show>.btn-primary.dropdown-toggle:focus,.in>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(49,132,253,0.5)}.btn-primary:disabled,.btn-primary.disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem rgba(130,138,145,0.5)}.btn-check:checked+.btn-secondary,.btn-check:active+.btn-secondary,.btn-secondary:active,.btn-secondary.active,.show>.btn-secondary.dropdown-toggle,.in>.btn-secondary.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:checked+.btn-secondary:focus,.btn-check:active+.btn-secondary:focus,.btn-secondary:active:focus,.btn-secondary.active:focus,.show>.btn-secondary.dropdown-toggle:focus,.in>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(130,138,145,0.5)}.btn-secondary:disabled,.btn-secondary.disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-success{color:#fff;background-color:#198754;border-color:#198754}.btn-success:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+.btn-success,.btn-success:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem rgba(60,153,110,0.5)}.btn-check:checked+.btn-success,.btn-check:active+.btn-success,.btn-success:active,.btn-success.active,.show>.btn-success.dropdown-toggle,.in>.btn-success.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:checked+.btn-success:focus,.btn-check:active+.btn-success:focus,.btn-success:active:focus,.btn-success.active:focus,.show>.btn-success.dropdown-toggle:focus,.in>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(60,153,110,0.5)}.btn-success:disabled,.btn-success.disabled{color:#fff;background-color:#198754;border-color:#198754}.btn-info{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-info:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+.btn-info,.btn-info:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem rgba(11,172,204,0.5)}.btn-check:checked+.btn-info,.btn-check:active+.btn-info,.btn-info:active,.btn-info.active,.show>.btn-info.dropdown-toggle,.in>.btn-info.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:checked+.btn-info:focus,.btn-check:active+.btn-info:focus,.btn-info:active:focus,.btn-info.active:focus,.show>.btn-info.dropdown-toggle:focus,.in>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(11,172,204,0.5)}.btn-info:disabled,.btn-info.disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-warning{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem rgba(217,164,6,0.5)}.btn-check:checked+.btn-warning,.btn-check:active+.btn-warning,.btn-warning:active,.btn-warning.active,.show>.btn-warning.dropdown-toggle,.in>.btn-warning.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:checked+.btn-warning:focus,.btn-check:active+.btn-warning:focus,.btn-warning:active:focus,.btn-warning.active:focus,.show>.btn-warning.dropdown-toggle:focus,.in>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(217,164,6,0.5)}.btn-warning:disabled,.btn-warning.disabled{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem rgba(225,83,97,0.5)}.btn-check:checked+.btn-danger,.btn-check:active+.btn-danger,.btn-danger:active,.btn-danger.active,.show>.btn-danger.dropdown-toggle,.in>.btn-danger.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:checked+.btn-danger:focus,.btn-check:active+.btn-danger:focus,.btn-danger:active:focus,.btn-danger.active:focus,.show>.btn-danger.dropdown-toggle:focus,.in>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(225,83,97,0.5)}.btn-danger:disabled,.btn-danger.disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-light{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:focus+.btn-light,.btn-light:focus{color:#000;background-color:#f9fafb;border-color:#f9fafb;box-shadow:0 0 0 .25rem rgba(211,212,213,0.5)}.btn-check:checked+.btn-light,.btn-check:active+.btn-light,.btn-light:active,.btn-light.active,.show>.btn-light.dropdown-toggle,.in>.btn-light.dropdown-toggle{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:checked+.btn-light:focus,.btn-check:active+.btn-light:focus,.btn-light:active:focus,.btn-light.active:focus,.show>.btn-light.dropdown-toggle:focus,.in>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(211,212,213,0.5)}.btn-light:disabled,.btn-light.disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-dark{color:#fff;background-color:#212529;border-color:#212529}.btn-dark:hover{color:#fff;background-color:#1c1f23;border-color:#1a1e21}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#1c1f23;border-color:#1a1e21;box-shadow:0 0 0 .25rem rgba(66,70,73,0.5)}.btn-check:checked+.btn-dark,.btn-check:active+.btn-dark,.btn-dark:active,.btn-dark.active,.show>.btn-dark.dropdown-toggle,.in>.btn-dark.dropdown-toggle{color:#fff;background-color:#1a1e21;border-color:#191c1f}.btn-check:checked+.btn-dark:focus,.btn-check:active+.btn-dark:focus,.btn-dark:active:focus,.btn-dark.active:focus,.show>.btn-dark.dropdown-toggle:focus,.in>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(66,70,73,0.5)}.btn-dark:disabled,.btn-dark.disabled{color:#fff;background-color:#212529;border-color:#212529}.btn-outline-default{color:#dee2e6;border-color:#dee2e6;background-color:transparent}.btn-outline-default:hover{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-check:focus+.btn-outline-default,.btn-outline-default:focus{box-shadow:0 0 0 .25rem rgba(222,226,230,0.5)}.btn-check:checked+.btn-outline-default,.btn-check:active+.btn-outline-default,.btn-outline-default:active,.btn-outline-default.active,.btn-outline-default.dropdown-toggle.show,.dropdown-toggle.in{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-check:checked+.btn-outline-default:focus,.btn-check:active+.btn-outline-default:focus,.btn-outline-default:active:focus,.btn-outline-default.active:focus,.btn-outline-default.dropdown-toggle.show:focus,.dropdown-toggle.in:focus{box-shadow:0 0 0 .25rem rgba(222,226,230,0.5)}.btn-outline-default:disabled,.btn-outline-default.disabled{color:#dee2e6;background-color:transparent}.btn-outline-primary{color:#0d6efd;border-color:#0d6efd;background-color:transparent}.btn-outline-primary:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,0.5)}.btn-check:checked+.btn-outline-primary,.btn-check:active+.btn-outline-primary,.btn-outline-primary:active,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show,.dropdown-toggle.in{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:checked+.btn-outline-primary:focus,.btn-check:active+.btn-outline-primary:focus,.btn-outline-primary:active:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus,.dropdown-toggle.in:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,0.5)}.btn-outline-primary:disabled,.btn-outline-primary.disabled{color:#0d6efd;background-color:transparent}.btn-outline-secondary{color:#6c757d;border-color:#6c757d;background-color:transparent}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,0.5)}.btn-check:checked+.btn-outline-secondary,.btn-check:active+.btn-outline-secondary,.btn-outline-secondary:active,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show,.dropdown-toggle.in{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:checked+.btn-outline-secondary:focus,.btn-check:active+.btn-outline-secondary:focus,.btn-outline-secondary:active:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus,.dropdown-toggle.in:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,0.5)}.btn-outline-secondary:disabled,.btn-outline-secondary.disabled{color:#6c757d;background-color:transparent}.btn-outline-success{color:#198754;border-color:#198754;background-color:transparent}.btn-outline-success:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,0.5)}.btn-check:checked+.btn-outline-success,.btn-check:active+.btn-outline-success,.btn-outline-success:active,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show,.dropdown-toggle.in{color:#fff;background-color:#198754;border-color:#198754}.btn-check:checked+.btn-outline-success:focus,.btn-check:active+.btn-outline-success:focus,.btn-outline-success:active:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus,.dropdown-toggle.in:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,0.5)}.btn-outline-success:disabled,.btn-outline-success.disabled{color:#198754;background-color:transparent}.btn-outline-info{color:#0dcaf0;border-color:#0dcaf0;background-color:transparent}.btn-outline-info:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,0.5)}.btn-check:checked+.btn-outline-info,.btn-check:active+.btn-outline-info,.btn-outline-info:active,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show,.dropdown-toggle.in{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:checked+.btn-outline-info:focus,.btn-check:active+.btn-outline-info:focus,.btn-outline-info:active:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus,.dropdown-toggle.in:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,0.5)}.btn-outline-info:disabled,.btn-outline-info.disabled{color:#0dcaf0;background-color:transparent}.btn-outline-warning{color:#ffc107;border-color:#ffc107;background-color:transparent}.btn-outline-warning:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,0.5)}.btn-check:checked+.btn-outline-warning,.btn-check:active+.btn-outline-warning,.btn-outline-warning:active,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show,.dropdown-toggle.in{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:checked+.btn-outline-warning:focus,.btn-check:active+.btn-outline-warning:focus,.btn-outline-warning:active:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus,.dropdown-toggle.in:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,0.5)}.btn-outline-warning:disabled,.btn-outline-warning.disabled{color:#ffc107;background-color:transparent}.btn-outline-danger{color:#dc3545;border-color:#dc3545;background-color:transparent}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,0.5)}.btn-check:checked+.btn-outline-danger,.btn-check:active+.btn-outline-danger,.btn-outline-danger:active,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show,.dropdown-toggle.in{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:checked+.btn-outline-danger:focus,.btn-check:active+.btn-outline-danger:focus,.btn-outline-danger:active:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus,.dropdown-toggle.in:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,0.5)}.btn-outline-danger:disabled,.btn-outline-danger.disabled{color:#dc3545;background-color:transparent}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa;background-color:transparent}.btn-outline-light:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,0.5)}.btn-check:checked+.btn-outline-light,.btn-check:active+.btn-outline-light,.btn-outline-light:active,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show,.dropdown-toggle.in{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:checked+.btn-outline-light:focus,.btn-check:active+.btn-outline-light:focus,.btn-outline-light:active:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus,.dropdown-toggle.in:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,0.5)}.btn-outline-light:disabled,.btn-outline-light.disabled{color:#f8f9fa;background-color:transparent}.btn-outline-dark{color:#212529;border-color:#212529;background-color:transparent}.btn-outline-dark:hover{color:#fff;background-color:#212529;border-color:#212529}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,0.5)}.btn-check:checked+.btn-outline-dark,.btn-check:active+.btn-outline-dark,.btn-outline-dark:active,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show,.dropdown-toggle.in{color:#fff;background-color:#212529;border-color:#212529}.btn-check:checked+.btn-outline-dark:focus,.btn-check:active+.btn-outline-dark:focus,.btn-outline-dark:active:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus,.dropdown-toggle.in:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,0.5)}.btn-outline-dark:disabled,.btn-outline-dark.disabled{color:#212529;background-color:transparent}.btn-link{font-weight:400;color:#0d6efd;text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}.btn-link:hover{color:#0a58ca}.btn-link:disabled,.btn-link.disabled{color:#6c757d}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.btn-sm,.btn-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.fade{transition:opacity 0.15s linear}@media (prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show):not(.in){opacity:0}.collapse:not(.show):not(.in){display:none}.collapsing{height:0;overflow:hidden;transition:height 0.35s ease}@media (prefers-reduced-motion: reduce){.collapsing{transition:none}}.dropup,.dropend,.dropdown,.dropstart{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.15);border-radius:.25rem}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider,.dropdown-menu>li.divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,0.15)}.dropdown-item,.dropdown-menu>li>a{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#212529;text-align:inherit;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-menu>li>a:hover,.dropdown-item:focus,.dropdown-menu>li>a:focus{color:#1e2125;background-color:#e9ecef}.dropdown-item.active,.dropdown-menu>li>a.active,.dropdown-item:active,.dropdown-menu>li>a:active{color:#fff;text-decoration:none;background-color:#0d6efd}.dropdown-item.disabled,.dropdown-menu>li>a.disabled,.dropdown-item:disabled,.dropdown-menu>li>a:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show,.dropdown-menu.in{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#212529}.dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:rgba(0,0,0,0.15)}.dropdown-menu-dark .dropdown-item,.dropdown-menu-dark .dropdown-menu>li>a{color:#dee2e6}.dropdown-menu-dark .dropdown-item:hover,.dropdown-menu-dark .dropdown-menu>li>a:hover,.dropdown-menu-dark .dropdown-item:focus,.dropdown-menu-dark .dropdown-menu>li>a:focus{color:#fff;background-color:rgba(255,255,255,0.15)}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-menu>li>a.active,.dropdown-menu-dark .dropdown-item:active,.dropdown-menu-dark .dropdown-menu>li>a:active{color:#fff;background-color:#0d6efd}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-menu>li>a.disabled,.dropdown-menu-dark .dropdown-item:disabled,.dropdown-menu-dark .dropdown-menu>li>a:disabled{color:#adb5bd}.dropdown-menu-dark .dropdown-divider,.dropdown-menu-dark .dropdown-menu>li.divider{border-color:rgba(0,0,0,0.15)}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;justify-content:flex-start;-webkit-justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child){margin-left:-1px}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n + 3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;-webkit-flex-direction:column;align-items:flex-start;-webkit-align-items:flex-start;justify-content:center;-webkit-justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link,.nav-tabs>li>a,.nav-pills>li>a,ul.nav.navbar-nav>li>a{display:block;padding:.5rem 1rem;color:#0d6efd;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.nav-link,.nav-tabs>li>a,.nav-pills>li>a,ul.nav.navbar-nav>li>a{transition:none}}.nav-link:hover,.nav-tabs>li>a:hover,.nav-pills>li>a:hover,ul.nav.navbar-nav>li>a:hover,.nav-link:focus,.nav-tabs>li>a:focus,.nav-pills>li>a:focus,ul.nav.navbar-nav>li>a:focus{color:#0a58ca}.nav-link.disabled,.nav-tabs>li>a.disabled,.nav-pills>li>a.disabled,ul.nav.navbar-nav>li>a.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link,.nav-tabs>li>a,.nav-tabs .nav-pills>li>a,.nav-tabs ul.nav.navbar-nav>li>a{margin-bottom:-1px;background:none;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:hover,.nav-tabs>li>a:hover,.nav-tabs .nav-pills>li>a:hover,.nav-tabs ul.nav.navbar-nav>li>a:hover,.nav-tabs .nav-link:focus,.nav-tabs>li>a:focus,.nav-tabs .nav-pills>li>a:focus,.nav-tabs ul.nav.navbar-nav>li>a:focus{border-color:#e9ecef #e9ecef #dee2e6;isolation:isolate}.nav-tabs .nav-link.disabled,.nav-tabs>li>a.disabled,.nav-tabs .nav-pills>li>a.disabled,.nav-tabs ul.nav.navbar-nav>li>a.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs>li>a.active,.nav-tabs .nav-pills>li>a.active,.nav-tabs ul.nav.navbar-nav>li>a.active,.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-item.in .nav-link,.nav-tabs .nav-item.show .nav-tabs>li>a,.nav-tabs .nav-item.in .nav-tabs>li>a,.nav-tabs .nav-item.show .nav-pills>li>a,.nav-tabs .nav-item.in .nav-pills>li>a,.nav-tabs>li.show .nav-link,.nav-tabs>li.in .nav-link,.nav-tabs>li.show .nav-tabs>li>a,.nav-tabs>li.in .nav-tabs>li>a,.nav-tabs>li.show .nav-pills>li>a,.nav-tabs>li.in .nav-pills>li>a,.nav-tabs .nav-pills>li.show .nav-link,.nav-tabs .nav-pills>li.in .nav-link,.nav-tabs .nav-pills>li.show .nav-tabs>li>a,.nav-tabs .nav-pills>li.in .nav-tabs>li>a,.nav-tabs .nav-pills>li.show .nav-pills>li>a,.nav-tabs .nav-pills>li.in .nav-pills>li>a,.nav-tabs .nav-item.show ul.nav.navbar-nav>li>a,.nav-tabs .nav-item.in ul.nav.navbar-nav>li>a,.nav-tabs>li.show ul.nav.navbar-nav>li>a,.nav-tabs>li.in ul.nav.navbar-nav>li>a,.nav-tabs .nav-pills>li.show ul.nav.navbar-nav>li>a,.nav-tabs .nav-pills>li.in ul.nav.navbar-nav>li>a,.nav-tabs ul.nav.navbar-nav>li.show:not(.dropdown) .nav-link,.nav-tabs ul.nav.navbar-nav>li.in:not(.dropdown) .nav-link,.nav-tabs ul.nav.navbar-nav>li.show:not(.dropdown) .nav-tabs>li>a,.nav-tabs ul.nav.navbar-nav>li.in:not(.dropdown) .nav-tabs>li>a,.nav-tabs ul.nav.navbar-nav>li.show:not(.dropdown) .nav-pills>li>a,.nav-tabs ul.nav.navbar-nav>li.in:not(.dropdown) .nav-pills>li>a,.nav-tabs ul.nav.navbar-nav>li.show:not(.dropdown) ul.nav.navbar-nav>li>a,.nav-tabs ul.nav.navbar-nav>li.in:not(.dropdown) ul.nav.navbar-nav>li>a{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link,.nav-pills .nav-tabs>li>a,.nav-pills>li>a,.nav-pills ul.nav.navbar-nav>li>a{background:none;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .nav-tabs>li>a.active,.nav-pills>li>a.active,.nav-pills ul.nav.navbar-nav>li>a.active,.nav-pills .show>.nav-link,.nav-pills .in>.nav-link,.nav-pills .nav-tabs>li.show>a,.nav-pills .nav-tabs>li.in>a,.nav-pills>li.show>a,.nav-pills>li.in>a,.nav-pills ul.nav.navbar-nav>li.show>a,.nav-pills ul.nav.navbar-nav>li.in>a{color:#fff;background-color:#0d6efd}.nav-fill>.nav-link,.nav-tabs>li.nav-fill>a,.nav-pills>li.nav-fill>a,ul.nav.navbar-nav>li.nav-fill>a,.nav-fill .nav-item,.nav-fill .nav-tabs>li,.nav-fill .nav-pills>li,.nav-fill ul.nav.navbar-nav>li:not(.dropdown){flex:1 1 auto;-webkit-flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-tabs>li.nav-justified>a,.nav-pills>li.nav-justified>a,ul.nav.navbar-nav>li.nav-justified>a,.nav-justified .nav-item,.nav-justified .nav-tabs>li,.nav-justified .nav-pills>li,.nav-justified ul.nav.navbar-nav>li:not(.dropdown){flex-basis:0;-webkit-flex-basis:0;flex-grow:1;-webkit-flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-fill .nav-tabs>li .nav-link,.nav-fill .nav-tabs>li>a,.nav-fill .nav-pills>li .nav-link,.nav-fill .nav-pills>li>a,.nav-fill .nav-item ul.nav.navbar-nav>li>a,.nav-fill .nav-tabs>li ul.nav.navbar-nav>li>a,.nav-fill .nav-pills>li ul.nav.navbar-nav>li>a,.nav-fill ul.nav.navbar-nav>li:not(.dropdown) .nav-link,.nav-fill ul.nav.navbar-nav>li:not(.dropdown) .nav-tabs>li>a,.nav-fill ul.nav.navbar-nav>li:not(.dropdown) .nav-pills>li>a,.nav-fill ul.nav.navbar-nav>li:not(.dropdown) ul.nav.navbar-nav>li>a,.nav-justified .nav-item .nav-link,.nav-justified .nav-tabs>li .nav-link,.nav-justified .nav-tabs>li>a,.nav-justified .nav-pills>li .nav-link,.nav-justified .nav-pills>li>a,.nav-justified .nav-item ul.nav.navbar-nav>li>a,.nav-justified .nav-tabs>li ul.nav.navbar-nav>li>a,.nav-justified .nav-pills>li ul.nav.navbar-nav>li>a,.nav-justified ul.nav.navbar-nav>li:not(.dropdown) .nav-link,.nav-justified ul.nav.navbar-nav>li:not(.dropdown) .nav-tabs>li>a,.nav-justified ul.nav.navbar-nav>li:not(.dropdown) .nav-pills>li>a,.nav-justified ul.nav.navbar-nav>li:not(.dropdown) ul.nav.navbar-nav>li>a{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;display:-webkit-flex;flex-wrap:inherit;-webkit-flex-wrap:inherit;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link,.navbar-nav .nav-tabs>li>a,.navbar-nav .nav-pills>li>a,ul.nav.navbar-nav>li>a{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;-webkit-flex-basis:100%;flex-grow:1;-webkit-flex-grow:1;align-items:center;-webkit-align-items:center}.navbar-toggler,.navbar-toggle{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem;transition:box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.navbar-toggler,.navbar-toggle{transition:none}}.navbar-toggler:hover,.navbar-toggle:hover{text-decoration:none}.navbar-toggler:focus,.navbar-toggle:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}.navbar-toggler-icon,.navbar-toggle>.icon-bar:last-child{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media (min-width: 576px){.navbar-expand-sm,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl){flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-sm .navbar-nav,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link,.navbar-expand-sm .navbar-nav .nav-tabs>li>a,.navbar-expand-sm .navbar-nav .nav-pills>li>a,.navbar-expand-sm ul.nav.navbar-nav>li>a,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-nav .nav-link,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-nav .nav-tabs>li>a,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-nav .nav-pills>li>a,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) ul.nav.navbar-nav>li>a{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-nav-scroll,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-sm .navbar-toggler,.navbar-expand-sm .navbar-toggle,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-toggler,.navbar:not(.navbar-expand):not(.navbar-expand-sm):not(.navbar-expand-md):not(.navbar-expand-lg):not(.navbar-expand-xl) .navbar-toggle{display:none}}@media (min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link,.navbar-expand-md .navbar-nav .nav-tabs>li>a,.navbar-expand-md .navbar-nav .nav-pills>li>a,.navbar-expand-md ul.nav.navbar-nav>li>a{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-md .navbar-toggler,.navbar-expand-md .navbar-toggle{display:none}}@media (min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link,.navbar-expand-lg .navbar-nav .nav-tabs>li>a,.navbar-expand-lg .navbar-nav .nav-pills>li>a,.navbar-expand-lg ul.nav.navbar-nav>li>a{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-lg .navbar-toggler,.navbar-expand-lg .navbar-toggle{display:none}}@media (min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link,.navbar-expand-xl .navbar-nav .nav-tabs>li>a,.navbar-expand-xl .navbar-nav .nav-pills>li>a,.navbar-expand-xl ul.nav.navbar-nav>li>a{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xl .navbar-toggler,.navbar-expand-xl .navbar-toggle{display:none}}@media (min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link,.navbar-expand-xxl .navbar-nav .nav-tabs>li>a,.navbar-expand-xxl .navbar-nav .nav-pills>li>a,.navbar-expand-xxl ul.nav.navbar-nav>li>a{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xxl .navbar-toggler,.navbar-expand-xxl .navbar-toggle{display:none}}.navbar-expand{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link,.navbar-expand .navbar-nav .nav-tabs>li>a,.navbar-expand .navbar-nav .nav-pills>li>a,.navbar-expand ul.nav.navbar-nav>li>a{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand .navbar-toggler,.navbar-expand .navbar-toggle{display:none}.navbar-light .navbar-brand,.navbar.navbar-default .navbar-brand{color:rgba(0,0,0,0.9)}.navbar-light .navbar-brand:hover,.navbar.navbar-default .navbar-brand:hover,.navbar-light .navbar-brand:focus,.navbar.navbar-default .navbar-brand:focus{color:rgba(0,0,0,0.9)}.navbar-light .navbar-nav .nav-link,.navbar-light .navbar-nav .nav-tabs>li>a,.navbar-light .navbar-nav .nav-pills>li>a,.navbar.navbar-default .navbar-nav .nav-link,.navbar.navbar-default .navbar-nav .nav-tabs>li>a,.navbar.navbar-default .navbar-nav .nav-pills>li>a,.navbar-light ul.nav.navbar-nav>li>a,.navbar.navbar-default ul.nav.navbar-nav>li>a{color:rgba(0,0,0,0.55)}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-tabs>li>a:hover,.navbar-light .navbar-nav .nav-pills>li>a:hover,.navbar.navbar-default .navbar-nav .nav-link:hover,.navbar.navbar-default .navbar-nav .nav-tabs>li>a:hover,.navbar.navbar-default .navbar-nav .nav-pills>li>a:hover,.navbar-light ul.nav.navbar-nav>li>a:hover,.navbar.navbar-default ul.nav.navbar-nav>li>a:hover,.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-tabs>li>a:focus,.navbar-light .navbar-nav .nav-pills>li>a:focus,.navbar.navbar-default .navbar-nav .nav-link:focus,.navbar.navbar-default .navbar-nav .nav-tabs>li>a:focus,.navbar.navbar-default .navbar-nav .nav-pills>li>a:focus,.navbar-light ul.nav.navbar-nav>li>a:focus,.navbar.navbar-default ul.nav.navbar-nav>li>a:focus{color:rgba(0,0,0,0.7)}.navbar-light .navbar-nav .nav-link.disabled,.navbar-light .navbar-nav .nav-tabs>li>a.disabled,.navbar-light .navbar-nav .nav-pills>li>a.disabled,.navbar.navbar-default .navbar-nav .nav-link.disabled,.navbar.navbar-default .navbar-nav .nav-tabs>li>a.disabled,.navbar.navbar-default .navbar-nav .nav-pills>li>a.disabled,.navbar-light ul.nav.navbar-nav>li>a.disabled,.navbar.navbar-default ul.nav.navbar-nav>li>a.disabled{color:rgba(0,0,0,0.3)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .in>.nav-link,.navbar-light .navbar-nav .nav-tabs>li.show>a,.navbar-light .navbar-nav .nav-tabs>li.in>a,.navbar-light .navbar-nav .nav-pills>li.show>a,.navbar-light .navbar-nav .nav-pills>li.in>a,.navbar.navbar-default .navbar-nav .show>.nav-link,.navbar.navbar-default .navbar-nav .in>.nav-link,.navbar.navbar-default .navbar-nav .nav-tabs>li.show>a,.navbar.navbar-default .navbar-nav .nav-tabs>li.in>a,.navbar.navbar-default .navbar-nav .nav-pills>li.show>a,.navbar.navbar-default .navbar-nav .nav-pills>li.in>a,.navbar-light ul.nav.navbar-nav>li.show>a,.navbar-light ul.nav.navbar-nav>li.in>a,.navbar.navbar-default ul.nav.navbar-nav>li.show>a,.navbar.navbar-default ul.nav.navbar-nav>li.in>a,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-tabs>li>a.active,.navbar-light .navbar-nav .nav-pills>li>a.active,.navbar.navbar-default .navbar-nav .nav-link.active,.navbar.navbar-default .navbar-nav .nav-tabs>li>a.active,.navbar.navbar-default .navbar-nav .nav-pills>li>a.active,.navbar-light ul.nav.navbar-nav>li>a.active,.navbar.navbar-default ul.nav.navbar-nav>li>a.active{color:rgba(0,0,0,0.9)}.navbar-light .navbar-toggler,.navbar-light .navbar-toggle,.navbar.navbar-default .navbar-toggler,.navbar.navbar-default .navbar-toggle{color:rgba(0,0,0,0.55);border-color:rgba(0,0,0,0.1)}.navbar-light .navbar-toggler-icon,.navbar-light .navbar-toggle>.icon-bar:last-child,.navbar.navbar-default .navbar-toggler-icon,.navbar.navbar-default .navbar-toggle>.icon-bar:last-child{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280,0,0,0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text,.navbar.navbar-default .navbar-text{color:rgba(0,0,0,0.55)}.navbar-light .navbar-text a,.navbar.navbar-default .navbar-text a,.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:rgba(0,0,0,0.9)}.navbar-dark .navbar-brand,.navbar.navbar-inverse .navbar-brand{color:#fff}.navbar-dark .navbar-brand:hover,.navbar.navbar-inverse .navbar-brand:hover,.navbar-dark .navbar-brand:focus,.navbar.navbar-inverse .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link,.navbar-dark .navbar-nav .nav-tabs>li>a,.navbar-dark .navbar-nav .nav-pills>li>a,.navbar.navbar-inverse .navbar-nav .nav-link,.navbar.navbar-inverse .navbar-nav .nav-tabs>li>a,.navbar.navbar-inverse .navbar-nav .nav-pills>li>a,.navbar-dark ul.nav.navbar-nav>li>a,.navbar.navbar-inverse ul.nav.navbar-nav>li>a{color:rgba(255,255,255,0.55)}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-tabs>li>a:hover,.navbar-dark .navbar-nav .nav-pills>li>a:hover,.navbar.navbar-inverse .navbar-nav .nav-link:hover,.navbar.navbar-inverse .navbar-nav .nav-tabs>li>a:hover,.navbar.navbar-inverse .navbar-nav .nav-pills>li>a:hover,.navbar-dark ul.nav.navbar-nav>li>a:hover,.navbar.navbar-inverse ul.nav.navbar-nav>li>a:hover,.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-tabs>li>a:focus,.navbar-dark .navbar-nav .nav-pills>li>a:focus,.navbar.navbar-inverse .navbar-nav .nav-link:focus,.navbar.navbar-inverse .navbar-nav .nav-tabs>li>a:focus,.navbar.navbar-inverse .navbar-nav .nav-pills>li>a:focus,.navbar-dark ul.nav.navbar-nav>li>a:focus,.navbar.navbar-inverse ul.nav.navbar-nav>li>a:focus{color:rgba(255,255,255,0.75)}.navbar-dark .navbar-nav .nav-link.disabled,.navbar-dark .navbar-nav .nav-tabs>li>a.disabled,.navbar-dark .navbar-nav .nav-pills>li>a.disabled,.navbar.navbar-inverse .navbar-nav .nav-link.disabled,.navbar.navbar-inverse .navbar-nav .nav-tabs>li>a.disabled,.navbar.navbar-inverse .navbar-nav .nav-pills>li>a.disabled,.navbar-dark ul.nav.navbar-nav>li>a.disabled,.navbar.navbar-inverse ul.nav.navbar-nav>li>a.disabled{color:rgba(255,255,255,0.25)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .in>.nav-link,.navbar-dark .navbar-nav .nav-tabs>li.show>a,.navbar-dark .navbar-nav .nav-tabs>li.in>a,.navbar-dark .navbar-nav .nav-pills>li.show>a,.navbar-dark .navbar-nav .nav-pills>li.in>a,.navbar.navbar-inverse .navbar-nav .show>.nav-link,.navbar.navbar-inverse .navbar-nav .in>.nav-link,.navbar.navbar-inverse .navbar-nav .nav-tabs>li.show>a,.navbar.navbar-inverse .navbar-nav .nav-tabs>li.in>a,.navbar.navbar-inverse .navbar-nav .nav-pills>li.show>a,.navbar.navbar-inverse .navbar-nav .nav-pills>li.in>a,.navbar-dark ul.nav.navbar-nav>li.show>a,.navbar-dark ul.nav.navbar-nav>li.in>a,.navbar.navbar-inverse ul.nav.navbar-nav>li.show>a,.navbar.navbar-inverse ul.nav.navbar-nav>li.in>a,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-tabs>li.active>a,.navbar-dark .navbar-nav .nav-pills>li.active>a,.navbar.navbar-inverse .navbar-nav .active>.nav-link,.navbar.navbar-inverse .navbar-nav .nav-tabs>li.active>a,.navbar.navbar-inverse .navbar-nav .nav-pills>li.active>a,.navbar-dark ul.nav.navbar-nav>li.active>a,.navbar.navbar-inverse ul.nav.navbar-nav>li.active>a,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-tabs>li>a.active,.navbar-dark .navbar-nav .nav-pills>li>a.active,.navbar.navbar-inverse .navbar-nav .nav-link.active,.navbar.navbar-inverse .navbar-nav .nav-tabs>li>a.active,.navbar.navbar-inverse .navbar-nav .nav-pills>li>a.active,.navbar-dark ul.nav.navbar-nav>li>a.active,.navbar.navbar-inverse ul.nav.navbar-nav>li>a.active{color:#fff}.navbar-dark .navbar-toggler,.navbar-dark .navbar-toggle,.navbar.navbar-inverse .navbar-toggler,.navbar.navbar-inverse .navbar-toggle{color:rgba(255,255,255,0.55);border-color:rgba(255,255,255,0.1)}.navbar-dark .navbar-toggler-icon,.navbar-dark .navbar-toggle>.icon-bar:last-child,.navbar.navbar-inverse .navbar-toggler-icon,.navbar.navbar-inverse .navbar-toggle>.icon-bar:last-child{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255,255,255,0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text,.navbar.navbar-inverse .navbar-text{color:rgba(255,255,255,0.55)}.navbar-dark .navbar-text a,.navbar.navbar-inverse .navbar-text a,.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fff}.card,.well{position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,0.125);border-radius:.25rem}.card>hr,.well>hr{margin-right:0;margin-left:0}.card>.list-group,.well>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child,.well>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child,.well>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.well>.card-header+.list-group,.card>.list-group+.card-footer,.well>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;-webkit-flex:1 1 auto;padding:1rem 1rem}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-.25rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;background-color:rgba(0,0,0,0.03);border-bottom:1px solid rgba(0,0,0,0.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.5rem 1rem;background-color:rgba(0,0,0,0.03);border-top:1px solid rgba(0,0,0,0.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}.card-header-pills{margin-right:-.5rem;margin-left:-.5rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-group>.card,.card-group>.well{margin-bottom:.75rem}@media (min-width: 576px){.card-group{display:flex;display:-webkit-flex;flex-flow:row wrap;-webkit-flex-flow:row wrap}.card-group>.card,.card-group>.well{flex:1 0 0%;-webkit-flex:1 0 0%;margin-bottom:0}.card-group>.card+.card,.card-group>.well+.card,.card-group>.card+.well,.card-group>.well+.well{margin-left:0;border-left:0}.card-group>.card:not(:last-child),.card-group>.well:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.well:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header,.card-group>.well:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.well:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer,.card-group>.well:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child),.card-group>.well:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.well:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header,.card-group>.well:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.well:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer,.card-group>.well:not(:first-child) .card-footer{border-bottom-left-radius:0}}.accordion-button{position:relative;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#212529;text-align:left;background-color:#fff;border:0;border-radius:0;overflow-anchor:none;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,border-radius 0.15s ease}@media (prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:#0c63e4;background-color:#e7f1ff;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.125)}.accordion-button:not(.collapsed)::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}.accordion-button::after{flex-shrink:0;-webkit-flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform 0.2s ease-in-out}@media (prefers-reduced-motion: reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,0.25)}.accordion-header{margin-bottom:0}.accordion-item{background-color:#fff;border:1px solid rgba(0,0,0,0.125)}.accordion-item:first-of-type{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.breadcrumb{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding:0 0;margin-bottom:1rem;list-style:none}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider, "/") /* rtl: var(--bs-breadcrumb-divider, "/") */}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;display:-webkit-flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;color:#0d6efd;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:#fff;border:1px solid #dee2e6;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:#0a58ca;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;color:#0a58ca;background-color:#e9ecef;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,0.25)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item.active .page-link{z-index:3;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#fff;border-color:#dee2e6}.page-link{padding:.375rem .75rem}.page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{position:relative;padding:1rem 1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-default{color:#595a5c;background-color:#f8f9fa;border-color:#f5f6f8}.alert-default .alert-link{color:#47484a}.alert-primary{color:#084298;background-color:#cfe2ff;border-color:#b6d4fe}.alert-primary .alert-link{color:#06357a}.alert-secondary{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{color:#055160;background-color:#cff4fc;border-color:#b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{color:#636464;background-color:#fefefe;border-color:#fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{color:#141619;background-color:#d3d3d4;border-color:#bcbebf}.alert-dark .alert-link{color:#101214}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{display:flex;display:-webkit-flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;justify-content:center;-webkit-justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#0d6efd;transition:width 0.6s ease}@media (prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:1rem 1rem}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#212529;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,0.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width: 576px){.list-group-horizontal-sm{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 768px){.list-group-horizontal-md{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 992px){.list-group-horizontal-lg{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 1200px){.list-group-horizontal-xl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-default{color:#595a5c;background-color:#f8f9fa}.list-group-item-default.list-group-item-action:hover,.list-group-item-default.list-group-item-action:focus{color:#595a5c;background-color:#dfe0e1}.list-group-item-default.list-group-item-action.active{color:#fff;background-color:#595a5c;border-color:#595a5c}.list-group-item-primary{color:#084298;background-color:#cfe2ff}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#084298;background-color:#bacbe6}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#055160;background-color:#cff4fc}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#055160;background-color:#badce3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#842029;background-color:#f8d7da}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#842029;background-color:#dfc2c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-light{color:#636464;background-color:#fefefe}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#636464;background-color:#e5e5e5}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-dark{color:#141619;background-color:#d3d3d4}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#141619;background-color:#bebebf}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,0.25);opacity:1}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;max-width:100%;font-size:.875rem;pointer-events:auto;background-color:rgba(255,255,255,0.85);background-clip:padding-box;border:1px solid rgba(0,0,0,0.1);box-shadow:0 0.5rem 1rem rgba(0,0,0,0.15);border-radius:.25rem}.toast:not(.showing):not(.show):not(.in){opacity:0}.toast.hide{display:none}.toast-container{width:max-content;width:-webkit-max-content;width:-moz-max-content;width:-ms-max-content;width:-o-max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:.75rem}.toast-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:rgba(255,255,255,0.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,0.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-header .btn-close{margin-right:-.375rem;margin-left:.75rem}.toast-body{padding:.75rem;word-wrap:break-word}.modal{position:fixed;top:0;left:0;z-index:1060;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform 0.3s ease-out;transform:translate(0, -50px)}@media (prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog,.modal.in .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show,.modal-backdrop.in{opacity:.5}.modal-header{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .btn-close{padding:.5rem .5rem;margin:-.5rem -.5rem -.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;padding:1rem}.modal-footer{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-shrink:0;-webkit-flex-shrink:0;align-items:center;-webkit-align-items:center;justify-content:flex-end;-webkit-justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}@media (min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width: 992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width: 1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media (max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media (max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media (max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media (max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media (max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show,.tooltip.in{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[data-popper-placement^="top"]{padding:.4rem 0}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^="top"] .tooltip-arrow{bottom:0}.bs-tooltip-top .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^="top"] .tooltip-arrow::before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-end,.bs-tooltip-auto[data-popper-placement^="right"]{padding:0 .4rem}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^="right"] .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-end .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^="right"] .tooltip-arrow::before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[data-popper-placement^="bottom"]{padding:.4rem 0}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^="bottom"] .tooltip-arrow{top:0}.bs-tooltip-bottom .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^="bottom"] .tooltip-arrow::before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-start,.bs-tooltip-auto[data-popper-placement^="left"]{padding:0 .4rem}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^="left"] .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-start .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^="left"] .tooltip-arrow::before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0 /* rtl:ignore */;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow::before,.popover .popover-arrow::after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^="top"]>.popover-arrow{bottom:calc(-.5rem - 1px)}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^="top"]>.popover-arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,0.25)}.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^="top"]>.popover-arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^="right"]>.popover-arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^="right"]>.popover-arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,0.25)}.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^="right"]>.popover-arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^="bottom"]>.popover-arrow{top:calc(-.5rem - 1px)}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^="bottom"]>.popover-arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,0.25)}.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^="bottom"]>.popover-arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-bottom .popover-header::before,.bs-popover-auto[data-popper-placement^="bottom"] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f0f0f0}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^="left"]>.popover-arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^="left"]>.popover-arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,0.25)}.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^="left"]>.popover-arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid rgba(0,0,0,0.2);border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:1rem 1rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y;-webkit-touch-action:pan-y;-moz-touch-action:pan-y;-ms-touch-action:pan-y;-o-touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:center;-webkit-justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity 0.15s ease}@media (prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;display:-webkit-flex;justify-content:center;-webkit-justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;-webkit-flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity 0.6s ease}@media (prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}@keyframes spinner-border{to{transform:rotate(360deg) /* rtl:ignore */}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{animation-duration:1.5s;-webkit-animation-duration:1.5s;-moz-animation-duration:1.5s;-ms-animation-duration:1.5s;-o-animation-duration:1.5s}}.offcanvas{position:fixed;bottom:0;z-index:1050;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;visibility:hidden;background-color:#fff;background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media (prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:1rem 1rem}.offcanvas-header .btn-close{padding:.5rem .5rem;margin-top:-.5rem;margin-right:-.5rem;margin-bottom:-.5rem}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;-webkit-flex-grow:1;padding:1rem 1rem;overflow-y:auto}.offcanvas-start{top:0;left:0;width:400px;border-right:1px solid rgba(0,0,0,0.2);transform:translateX(-100%)}.offcanvas-end{top:0;right:0;width:400px;border-left:1px solid rgba(0,0,0,0.2);transform:translateX(100%)}.offcanvas-top{top:0;right:0;left:0;height:30vh;max-height:100%;border-bottom:1px solid rgba(0,0,0,0.2);transform:translateY(-100%)}.offcanvas-bottom{right:0;left:0;height:30vh;max-height:100%;border-top:1px solid rgba(0,0,0,0.2);transform:translateY(100%)}.offcanvas.show,.offcanvas.in{transform:none}.clearfix::after{display:block;clear:both;content:""}.link-default{color:#dee2e6}.link-default:hover,.link-default:focus{color:#e5e8eb}.link-primary{color:#0d6efd}.link-primary:hover,.link-primary:focus{color:#0a58ca}.link-secondary{color:#6c757d}.link-secondary:hover,.link-secondary:focus{color:#565e64}.link-success{color:#198754}.link-success:hover,.link-success:focus{color:#146c43}.link-info{color:#0dcaf0}.link-info:hover,.link-info:focus{color:#3dd5f3}.link-warning{color:#ffc107}.link-warning:hover,.link-warning:focus{color:#ffcd39}.link-danger{color:#dc3545}.link-danger:hover,.link-danger:focus{color:#b02a37}.link-light{color:#f8f9fa}.link-light:hover,.link-light:focus{color:#f9fafb}.link-dark{color:#212529}.link-dark:hover,.link-dark:focus{color:#1a1e21}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: calc(3 / 4 * 100%)}.ratio-16x9{--bs-aspect-ratio: calc(9 / 16 * 100%)}.ratio-21x9{--bs-aspect-ratio: calc(9 / 21 * 100%)}.fixed-top,.navbar-fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom,.navbar-fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top,.navbar-sticky-top{position:sticky;top:0;z-index:1020}@media (min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}}@media (min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}}@media (min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}}@media (min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}}@media (min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.float-start,.float-left{float:left !important}.float-end,.float-right{float:right !important}.float-none{float:none !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.overflow-visible{overflow:visible !important}.overflow-scroll{overflow:scroll !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-grid{display:grid !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}.d-none{display:none !important}.shadow{box-shadow:0 0.5rem 1rem rgba(0,0,0,0.15) !important}.shadow-sm{box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.075) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,0.175) !important}.shadow-none{box-shadow:none !important}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.top-0{top:0 !important}.top-50{top:50% !important}.top-100{top:100% !important}.bottom-0{bottom:0 !important}.bottom-50{bottom:50% !important}.bottom-100{bottom:100% !important}.start-0{left:0 !important}.start-50{left:50% !important}.start-100{left:100% !important}.end-0{right:0 !important}.end-50{right:50% !important}.end-100{right:100% !important}.translate-middle{transform:translate(-50%, -50%) !important}.translate-middle-x{transform:translateX(-50%) !important}.translate-middle-y{transform:translateY(-50%) !important}.border{border:1px solid #dee2e6 !important}.border-0{border:0 !important}.border-top{border-top:1px solid #dee2e6 !important}.border-top-0{border-top:0 !important}.border-end{border-right:1px solid #dee2e6 !important}.border-end-0{border-right:0 !important}.border-bottom{border-bottom:1px solid #dee2e6 !important}.border-bottom-0{border-bottom:0 !important}.border-start{border-left:1px solid #dee2e6 !important}.border-start-0{border-left:0 !important}.border-default{border-color:#dee2e6 !important}.border-primary{border-color:#0d6efd !important}.border-secondary{border-color:#6c757d !important}.border-success{border-color:#198754 !important}.border-info{border-color:#0dcaf0 !important}.border-warning{border-color:#ffc107 !important}.border-danger{border-color:#dc3545 !important}.border-light{border-color:#f8f9fa !important}.border-dark{border-color:#212529 !important}.border-white{border-color:#fff !important}.border-1{border-width:1px !important}.border-2{border-width:2px !important}.border-3{border-width:3px !important}.border-4{border-width:4px !important}.border-5{border-width:5px !important}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.mw-100{max-width:100% !important}.vw-100{width:100vw !important}.min-vw-100{min-width:100vw !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mh-100{max-height:100% !important}.vh-100{height:100vh !important}.min-vh-100{min-height:100vh !important}.flex-fill{flex:1 1 auto !important}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-0{gap:0 !important}.gap-1{gap:.25rem !important}.gap-2{gap:.5rem !important}.gap-3{gap:1rem !important}.gap-4{gap:1.5rem !important}.gap-5{gap:3rem !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.justify-content-evenly{justify-content:space-evenly !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}.order-first{order:-1 !important}.order-0{order:0 !important}.order-1{order:1 !important}.order-2{order:2 !important}.order-3{order:3 !important}.order-4{order:4 !important}.order-5{order:5 !important}.order-last{order:6 !important}.m-0{margin:0 !important}.m-1{margin:.25rem !important}.m-2{margin:.5rem !important}.m-3{margin:1rem !important}.m-4{margin:1.5rem !important}.m-5{margin:3rem !important}.m-auto{margin:auto !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.mx-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-3{margin-right:1rem !important;margin-left:1rem !important}.mx-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-5{margin-right:3rem !important;margin-left:3rem !important}.mx-auto{margin-right:auto !important;margin-left:auto !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-0{margin-top:0 !important}.mt-1{margin-top:.25rem !important}.mt-2{margin-top:.5rem !important}.mt-3{margin-top:1rem !important}.mt-4{margin-top:1.5rem !important}.mt-5{margin-top:3rem !important}.mt-auto{margin-top:auto !important}.me-0{margin-right:0 !important}.me-1{margin-right:.25rem !important}.me-2{margin-right:.5rem !important}.me-3{margin-right:1rem !important}.me-4{margin-right:1.5rem !important}.me-5{margin-right:3rem !important}.me-auto{margin-right:auto !important}.mb-0{margin-bottom:0 !important}.mb-1{margin-bottom:.25rem !important}.mb-2{margin-bottom:.5rem !important}.mb-3{margin-bottom:1rem !important}.mb-4{margin-bottom:1.5rem !important}.mb-5{margin-bottom:3rem !important}.mb-auto{margin-bottom:auto !important}.ms-0{margin-left:0 !important}.ms-1{margin-left:.25rem !important}.ms-2{margin-left:.5rem !important}.ms-3{margin-left:1rem !important}.ms-4{margin-left:1.5rem !important}.ms-5{margin-left:3rem !important}.ms-auto{margin-left:auto !important}.p-0{padding:0 !important}.p-1{padding:.25rem !important}.p-2{padding:.5rem !important}.p-3{padding:1rem !important}.p-4{padding:1.5rem !important}.p-5{padding:3rem !important}.px-0{padding-right:0 !important;padding-left:0 !important}.px-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-3{padding-right:1rem !important;padding-left:1rem !important}.px-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-5{padding-right:3rem !important;padding-left:3rem !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-0{padding-top:0 !important}.pt-1{padding-top:.25rem !important}.pt-2{padding-top:.5rem !important}.pt-3{padding-top:1rem !important}.pt-4{padding-top:1.5rem !important}.pt-5{padding-top:3rem !important}.pe-0{padding-right:0 !important}.pe-1{padding-right:.25rem !important}.pe-2{padding-right:.5rem !important}.pe-3{padding-right:1rem !important}.pe-4{padding-right:1.5rem !important}.pe-5{padding-right:3rem !important}.pb-0{padding-bottom:0 !important}.pb-1{padding-bottom:.25rem !important}.pb-2{padding-bottom:.5rem !important}.pb-3{padding-bottom:1rem !important}.pb-4{padding-bottom:1.5rem !important}.pb-5{padding-bottom:3rem !important}.ps-0{padding-left:0 !important}.ps-1{padding-left:.25rem !important}.ps-2{padding-left:.5rem !important}.ps-3{padding-left:1rem !important}.ps-4{padding-left:1.5rem !important}.ps-5{padding-left:3rem !important}.font-monospace{font-family:var(--bs-font-monospace) !important}.fs-1{font-size:calc(1.375rem + 1.5vw) !important}.fs-2{font-size:calc(1.325rem + .9vw) !important}.fs-3{font-size:calc(1.3rem + .6vw) !important}.fs-4{font-size:calc(1.275rem + .3vw) !important}.fs-5{font-size:1.25rem !important}.fs-6{font-size:1rem !important}.fst-italic{font-style:italic !important}.fst-normal{font-style:normal !important}.fw-light{font-weight:300 !important}.fw-lighter{font-weight:lighter !important}.fw-normal{font-weight:400 !important}.fw-bold{font-weight:700 !important}.fw-bolder{font-weight:bolder !important}.lh-1{line-height:1 !important}.lh-sm{line-height:1.25 !important}.lh-base{line-height:1.5 !important}.lh-lg{line-height:2 !important}.text-start{text-align:left !important}.text-end{text-align:right !important}.text-center{text-align:center !important}.text-decoration-none{text-decoration:none !important}.text-decoration-underline{text-decoration:underline !important}.text-decoration-line-through{text-decoration:line-through !important}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-break{word-wrap:break-word !important;word-break:break-word !important}.text-default{color:#dee2e6 !important}.text-primary{color:#0d6efd !important}.text-secondary{color:#6c757d !important}.text-success{color:#198754 !important}.text-info{color:#0dcaf0 !important}.text-warning{color:#ffc107 !important}.text-danger{color:#dc3545 !important}.text-light{color:#f8f9fa !important}.text-dark{color:#212529 !important}.text-white{color:#fff !important}.text-body{color:#212529 !important}.text-muted,.help-text,.help-block{color:#6c757d !important}.text-black-50{color:rgba(0,0,0,0.5) !important}.text-white-50{color:rgba(255,255,255,0.5) !important}.text-reset{color:inherit !important}.bg-default{background-color:#dee2e6 !important}.bg-primary{background-color:#0d6efd !important}.bg-secondary{background-color:#6c757d !important}.bg-success{background-color:#198754 !important}.bg-info{background-color:#0dcaf0 !important}.bg-warning{background-color:#ffc107 !important}.bg-danger{background-color:#dc3545 !important}.bg-light,.navbar.navbar-default{background-color:#f8f9fa !important}.bg-dark,.navbar.navbar-inverse{background-color:#212529 !important}.bg-body{background-color:#fff !important}.bg-white{background-color:#fff !important}.bg-transparent{background-color:rgba(0,0,0,0) !important}.bg-gradient{background-image:var(--bs-gradient) !important}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.pe-none{pointer-events:none !important}.pe-auto{pointer-events:auto !important}.rounded{border-radius:.25rem !important}.rounded-0{border-radius:0 !important}.rounded-1{border-radius:.2rem !important}.rounded-2{border-radius:.25rem !important}.rounded-3{border-radius:.3rem !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:50rem !important}.rounded-top{border-top-left-radius:.25rem !important;border-top-right-radius:.25rem !important}.rounded-end{border-top-right-radius:.25rem !important;border-bottom-right-radius:.25rem !important}.rounded-bottom{border-bottom-right-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-start{border-bottom-left-radius:.25rem !important;border-top-left-radius:.25rem !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media (min-width: 576px){.float-sm-start{float:left !important}.float-sm-end{float:right !important}.float-sm-none{float:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-grid{display:grid !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}.d-sm-none{display:none !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-sm-0{gap:0 !important}.gap-sm-1{gap:.25rem !important}.gap-sm-2{gap:.5rem !important}.gap-sm-3{gap:1rem !important}.gap-sm-4{gap:1.5rem !important}.gap-sm-5{gap:3rem !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.justify-content-sm-evenly{justify-content:space-evenly !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}.order-sm-first{order:-1 !important}.order-sm-0{order:0 !important}.order-sm-1{order:1 !important}.order-sm-2{order:2 !important}.order-sm-3{order:3 !important}.order-sm-4{order:4 !important}.order-sm-5{order:5 !important}.order-sm-last{order:6 !important}.m-sm-0{margin:0 !important}.m-sm-1{margin:.25rem !important}.m-sm-2{margin:.5rem !important}.m-sm-3{margin:1rem !important}.m-sm-4{margin:1.5rem !important}.m-sm-5{margin:3rem !important}.m-sm-auto{margin:auto !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.mx-sm-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-sm-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-sm-3{margin-right:1rem !important;margin-left:1rem !important}.mx-sm-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-sm-5{margin-right:3rem !important;margin-left:3rem !important}.mx-sm-auto{margin-right:auto !important;margin-left:auto !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}.my-sm-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-sm-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-sm-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-sm-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-sm-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-sm-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-sm-0{margin-top:0 !important}.mt-sm-1{margin-top:.25rem !important}.mt-sm-2{margin-top:.5rem !important}.mt-sm-3{margin-top:1rem !important}.mt-sm-4{margin-top:1.5rem !important}.mt-sm-5{margin-top:3rem !important}.mt-sm-auto{margin-top:auto !important}.me-sm-0{margin-right:0 !important}.me-sm-1{margin-right:.25rem !important}.me-sm-2{margin-right:.5rem !important}.me-sm-3{margin-right:1rem !important}.me-sm-4{margin-right:1.5rem !important}.me-sm-5{margin-right:3rem !important}.me-sm-auto{margin-right:auto !important}.mb-sm-0{margin-bottom:0 !important}.mb-sm-1{margin-bottom:.25rem !important}.mb-sm-2{margin-bottom:.5rem !important}.mb-sm-3{margin-bottom:1rem !important}.mb-sm-4{margin-bottom:1.5rem !important}.mb-sm-5{margin-bottom:3rem !important}.mb-sm-auto{margin-bottom:auto !important}.ms-sm-0{margin-left:0 !important}.ms-sm-1{margin-left:.25rem !important}.ms-sm-2{margin-left:.5rem !important}.ms-sm-3{margin-left:1rem !important}.ms-sm-4{margin-left:1.5rem !important}.ms-sm-5{margin-left:3rem !important}.ms-sm-auto{margin-left:auto !important}.p-sm-0{padding:0 !important}.p-sm-1{padding:.25rem !important}.p-sm-2{padding:.5rem !important}.p-sm-3{padding:1rem !important}.p-sm-4{padding:1.5rem !important}.p-sm-5{padding:3rem !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.px-sm-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-sm-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-sm-3{padding-right:1rem !important;padding-left:1rem !important}.px-sm-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-sm-5{padding-right:3rem !important;padding-left:3rem !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}.py-sm-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-sm-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-sm-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-sm-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-sm-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-sm-0{padding-top:0 !important}.pt-sm-1{padding-top:.25rem !important}.pt-sm-2{padding-top:.5rem !important}.pt-sm-3{padding-top:1rem !important}.pt-sm-4{padding-top:1.5rem !important}.pt-sm-5{padding-top:3rem !important}.pe-sm-0{padding-right:0 !important}.pe-sm-1{padding-right:.25rem !important}.pe-sm-2{padding-right:.5rem !important}.pe-sm-3{padding-right:1rem !important}.pe-sm-4{padding-right:1.5rem !important}.pe-sm-5{padding-right:3rem !important}.pb-sm-0{padding-bottom:0 !important}.pb-sm-1{padding-bottom:.25rem !important}.pb-sm-2{padding-bottom:.5rem !important}.pb-sm-3{padding-bottom:1rem !important}.pb-sm-4{padding-bottom:1.5rem !important}.pb-sm-5{padding-bottom:3rem !important}.ps-sm-0{padding-left:0 !important}.ps-sm-1{padding-left:.25rem !important}.ps-sm-2{padding-left:.5rem !important}.ps-sm-3{padding-left:1rem !important}.ps-sm-4{padding-left:1.5rem !important}.ps-sm-5{padding-left:3rem !important}.text-sm-start{text-align:left !important}.text-sm-end{text-align:right !important}.text-sm-center{text-align:center !important}}@media (min-width: 768px){.float-md-start{float:left !important}.float-md-end{float:right !important}.float-md-none{float:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-grid{display:grid !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}.d-md-none{display:none !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-md-0{gap:0 !important}.gap-md-1{gap:.25rem !important}.gap-md-2{gap:.5rem !important}.gap-md-3{gap:1rem !important}.gap-md-4{gap:1.5rem !important}.gap-md-5{gap:3rem !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.justify-content-md-evenly{justify-content:space-evenly !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}.order-md-first{order:-1 !important}.order-md-0{order:0 !important}.order-md-1{order:1 !important}.order-md-2{order:2 !important}.order-md-3{order:3 !important}.order-md-4{order:4 !important}.order-md-5{order:5 !important}.order-md-last{order:6 !important}.m-md-0{margin:0 !important}.m-md-1{margin:.25rem !important}.m-md-2{margin:.5rem !important}.m-md-3{margin:1rem !important}.m-md-4{margin:1.5rem !important}.m-md-5{margin:3rem !important}.m-md-auto{margin:auto !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.mx-md-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-md-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-md-3{margin-right:1rem !important;margin-left:1rem !important}.mx-md-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-md-5{margin-right:3rem !important;margin-left:3rem !important}.mx-md-auto{margin-right:auto !important;margin-left:auto !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}.my-md-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-md-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-md-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-md-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-md-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-md-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-md-0{margin-top:0 !important}.mt-md-1{margin-top:.25rem !important}.mt-md-2{margin-top:.5rem !important}.mt-md-3{margin-top:1rem !important}.mt-md-4{margin-top:1.5rem !important}.mt-md-5{margin-top:3rem !important}.mt-md-auto{margin-top:auto !important}.me-md-0{margin-right:0 !important}.me-md-1{margin-right:.25rem !important}.me-md-2{margin-right:.5rem !important}.me-md-3{margin-right:1rem !important}.me-md-4{margin-right:1.5rem !important}.me-md-5{margin-right:3rem !important}.me-md-auto{margin-right:auto !important}.mb-md-0{margin-bottom:0 !important}.mb-md-1{margin-bottom:.25rem !important}.mb-md-2{margin-bottom:.5rem !important}.mb-md-3{margin-bottom:1rem !important}.mb-md-4{margin-bottom:1.5rem !important}.mb-md-5{margin-bottom:3rem !important}.mb-md-auto{margin-bottom:auto !important}.ms-md-0{margin-left:0 !important}.ms-md-1{margin-left:.25rem !important}.ms-md-2{margin-left:.5rem !important}.ms-md-3{margin-left:1rem !important}.ms-md-4{margin-left:1.5rem !important}.ms-md-5{margin-left:3rem !important}.ms-md-auto{margin-left:auto !important}.p-md-0{padding:0 !important}.p-md-1{padding:.25rem !important}.p-md-2{padding:.5rem !important}.p-md-3{padding:1rem !important}.p-md-4{padding:1.5rem !important}.p-md-5{padding:3rem !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.px-md-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-md-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-md-3{padding-right:1rem !important;padding-left:1rem !important}.px-md-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-md-5{padding-right:3rem !important;padding-left:3rem !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}.py-md-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-md-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-md-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-md-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-md-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-md-0{padding-top:0 !important}.pt-md-1{padding-top:.25rem !important}.pt-md-2{padding-top:.5rem !important}.pt-md-3{padding-top:1rem !important}.pt-md-4{padding-top:1.5rem !important}.pt-md-5{padding-top:3rem !important}.pe-md-0{padding-right:0 !important}.pe-md-1{padding-right:.25rem !important}.pe-md-2{padding-right:.5rem !important}.pe-md-3{padding-right:1rem !important}.pe-md-4{padding-right:1.5rem !important}.pe-md-5{padding-right:3rem !important}.pb-md-0{padding-bottom:0 !important}.pb-md-1{padding-bottom:.25rem !important}.pb-md-2{padding-bottom:.5rem !important}.pb-md-3{padding-bottom:1rem !important}.pb-md-4{padding-bottom:1.5rem !important}.pb-md-5{padding-bottom:3rem !important}.ps-md-0{padding-left:0 !important}.ps-md-1{padding-left:.25rem !important}.ps-md-2{padding-left:.5rem !important}.ps-md-3{padding-left:1rem !important}.ps-md-4{padding-left:1.5rem !important}.ps-md-5{padding-left:3rem !important}.text-md-start{text-align:left !important}.text-md-end{text-align:right !important}.text-md-center{text-align:center !important}}@media (min-width: 992px){.float-lg-start{float:left !important}.float-lg-end{float:right !important}.float-lg-none{float:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-grid{display:grid !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}.d-lg-none{display:none !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-lg-0{gap:0 !important}.gap-lg-1{gap:.25rem !important}.gap-lg-2{gap:.5rem !important}.gap-lg-3{gap:1rem !important}.gap-lg-4{gap:1.5rem !important}.gap-lg-5{gap:3rem !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.justify-content-lg-evenly{justify-content:space-evenly !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}.order-lg-first{order:-1 !important}.order-lg-0{order:0 !important}.order-lg-1{order:1 !important}.order-lg-2{order:2 !important}.order-lg-3{order:3 !important}.order-lg-4{order:4 !important}.order-lg-5{order:5 !important}.order-lg-last{order:6 !important}.m-lg-0{margin:0 !important}.m-lg-1{margin:.25rem !important}.m-lg-2{margin:.5rem !important}.m-lg-3{margin:1rem !important}.m-lg-4{margin:1.5rem !important}.m-lg-5{margin:3rem !important}.m-lg-auto{margin:auto !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.mx-lg-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-lg-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-lg-3{margin-right:1rem !important;margin-left:1rem !important}.mx-lg-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-lg-5{margin-right:3rem !important;margin-left:3rem !important}.mx-lg-auto{margin-right:auto !important;margin-left:auto !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}.my-lg-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-lg-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-lg-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-lg-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-lg-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-lg-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-lg-0{margin-top:0 !important}.mt-lg-1{margin-top:.25rem !important}.mt-lg-2{margin-top:.5rem !important}.mt-lg-3{margin-top:1rem !important}.mt-lg-4{margin-top:1.5rem !important}.mt-lg-5{margin-top:3rem !important}.mt-lg-auto{margin-top:auto !important}.me-lg-0{margin-right:0 !important}.me-lg-1{margin-right:.25rem !important}.me-lg-2{margin-right:.5rem !important}.me-lg-3{margin-right:1rem !important}.me-lg-4{margin-right:1.5rem !important}.me-lg-5{margin-right:3rem !important}.me-lg-auto{margin-right:auto !important}.mb-lg-0{margin-bottom:0 !important}.mb-lg-1{margin-bottom:.25rem !important}.mb-lg-2{margin-bottom:.5rem !important}.mb-lg-3{margin-bottom:1rem !important}.mb-lg-4{margin-bottom:1.5rem !important}.mb-lg-5{margin-bottom:3rem !important}.mb-lg-auto{margin-bottom:auto !important}.ms-lg-0{margin-left:0 !important}.ms-lg-1{margin-left:.25rem !important}.ms-lg-2{margin-left:.5rem !important}.ms-lg-3{margin-left:1rem !important}.ms-lg-4{margin-left:1.5rem !important}.ms-lg-5{margin-left:3rem !important}.ms-lg-auto{margin-left:auto !important}.p-lg-0{padding:0 !important}.p-lg-1{padding:.25rem !important}.p-lg-2{padding:.5rem !important}.p-lg-3{padding:1rem !important}.p-lg-4{padding:1.5rem !important}.p-lg-5{padding:3rem !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.px-lg-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-lg-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-lg-3{padding-right:1rem !important;padding-left:1rem !important}.px-lg-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-lg-5{padding-right:3rem !important;padding-left:3rem !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}.py-lg-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-lg-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-lg-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-lg-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-lg-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-lg-0{padding-top:0 !important}.pt-lg-1{padding-top:.25rem !important}.pt-lg-2{padding-top:.5rem !important}.pt-lg-3{padding-top:1rem !important}.pt-lg-4{padding-top:1.5rem !important}.pt-lg-5{padding-top:3rem !important}.pe-lg-0{padding-right:0 !important}.pe-lg-1{padding-right:.25rem !important}.pe-lg-2{padding-right:.5rem !important}.pe-lg-3{padding-right:1rem !important}.pe-lg-4{padding-right:1.5rem !important}.pe-lg-5{padding-right:3rem !important}.pb-lg-0{padding-bottom:0 !important}.pb-lg-1{padding-bottom:.25rem !important}.pb-lg-2{padding-bottom:.5rem !important}.pb-lg-3{padding-bottom:1rem !important}.pb-lg-4{padding-bottom:1.5rem !important}.pb-lg-5{padding-bottom:3rem !important}.ps-lg-0{padding-left:0 !important}.ps-lg-1{padding-left:.25rem !important}.ps-lg-2{padding-left:.5rem !important}.ps-lg-3{padding-left:1rem !important}.ps-lg-4{padding-left:1.5rem !important}.ps-lg-5{padding-left:3rem !important}.text-lg-start{text-align:left !important}.text-lg-end{text-align:right !important}.text-lg-center{text-align:center !important}}@media (min-width: 1200px){.float-xl-start{float:left !important}.float-xl-end{float:right !important}.float-xl-none{float:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-grid{display:grid !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}.d-xl-none{display:none !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-xl-0{gap:0 !important}.gap-xl-1{gap:.25rem !important}.gap-xl-2{gap:.5rem !important}.gap-xl-3{gap:1rem !important}.gap-xl-4{gap:1.5rem !important}.gap-xl-5{gap:3rem !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.justify-content-xl-evenly{justify-content:space-evenly !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}.order-xl-first{order:-1 !important}.order-xl-0{order:0 !important}.order-xl-1{order:1 !important}.order-xl-2{order:2 !important}.order-xl-3{order:3 !important}.order-xl-4{order:4 !important}.order-xl-5{order:5 !important}.order-xl-last{order:6 !important}.m-xl-0{margin:0 !important}.m-xl-1{margin:.25rem !important}.m-xl-2{margin:.5rem !important}.m-xl-3{margin:1rem !important}.m-xl-4{margin:1.5rem !important}.m-xl-5{margin:3rem !important}.m-xl-auto{margin:auto !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.mx-xl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xl-auto{margin-right:auto !important;margin-left:auto !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xl-0{margin-top:0 !important}.mt-xl-1{margin-top:.25rem !important}.mt-xl-2{margin-top:.5rem !important}.mt-xl-3{margin-top:1rem !important}.mt-xl-4{margin-top:1.5rem !important}.mt-xl-5{margin-top:3rem !important}.mt-xl-auto{margin-top:auto !important}.me-xl-0{margin-right:0 !important}.me-xl-1{margin-right:.25rem !important}.me-xl-2{margin-right:.5rem !important}.me-xl-3{margin-right:1rem !important}.me-xl-4{margin-right:1.5rem !important}.me-xl-5{margin-right:3rem !important}.me-xl-auto{margin-right:auto !important}.mb-xl-0{margin-bottom:0 !important}.mb-xl-1{margin-bottom:.25rem !important}.mb-xl-2{margin-bottom:.5rem !important}.mb-xl-3{margin-bottom:1rem !important}.mb-xl-4{margin-bottom:1.5rem !important}.mb-xl-5{margin-bottom:3rem !important}.mb-xl-auto{margin-bottom:auto !important}.ms-xl-0{margin-left:0 !important}.ms-xl-1{margin-left:.25rem !important}.ms-xl-2{margin-left:.5rem !important}.ms-xl-3{margin-left:1rem !important}.ms-xl-4{margin-left:1.5rem !important}.ms-xl-5{margin-left:3rem !important}.ms-xl-auto{margin-left:auto !important}.p-xl-0{padding:0 !important}.p-xl-1{padding:.25rem !important}.p-xl-2{padding:.5rem !important}.p-xl-3{padding:1rem !important}.p-xl-4{padding:1.5rem !important}.p-xl-5{padding:3rem !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.px-xl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xl-0{padding-top:0 !important}.pt-xl-1{padding-top:.25rem !important}.pt-xl-2{padding-top:.5rem !important}.pt-xl-3{padding-top:1rem !important}.pt-xl-4{padding-top:1.5rem !important}.pt-xl-5{padding-top:3rem !important}.pe-xl-0{padding-right:0 !important}.pe-xl-1{padding-right:.25rem !important}.pe-xl-2{padding-right:.5rem !important}.pe-xl-3{padding-right:1rem !important}.pe-xl-4{padding-right:1.5rem !important}.pe-xl-5{padding-right:3rem !important}.pb-xl-0{padding-bottom:0 !important}.pb-xl-1{padding-bottom:.25rem !important}.pb-xl-2{padding-bottom:.5rem !important}.pb-xl-3{padding-bottom:1rem !important}.pb-xl-4{padding-bottom:1.5rem !important}.pb-xl-5{padding-bottom:3rem !important}.ps-xl-0{padding-left:0 !important}.ps-xl-1{padding-left:.25rem !important}.ps-xl-2{padding-left:.5rem !important}.ps-xl-3{padding-left:1rem !important}.ps-xl-4{padding-left:1.5rem !important}.ps-xl-5{padding-left:3rem !important}.text-xl-start{text-align:left !important}.text-xl-end{text-align:right !important}.text-xl-center{text-align:center !important}}@media (min-width: 1400px){.float-xxl-start{float:left !important}.float-xxl-end{float:right !important}.float-xxl-none{float:none !important}.d-xxl-inline{display:inline !important}.d-xxl-inline-block{display:inline-block !important}.d-xxl-block{display:block !important}.d-xxl-grid{display:grid !important}.d-xxl-table{display:table !important}.d-xxl-table-row{display:table-row !important}.d-xxl-table-cell{display:table-cell !important}.d-xxl-flex{display:flex !important}.d-xxl-inline-flex{display:inline-flex !important}.d-xxl-none{display:none !important}.flex-xxl-fill{flex:1 1 auto !important}.flex-xxl-row{flex-direction:row !important}.flex-xxl-column{flex-direction:column !important}.flex-xxl-row-reverse{flex-direction:row-reverse !important}.flex-xxl-column-reverse{flex-direction:column-reverse !important}.flex-xxl-grow-0{flex-grow:0 !important}.flex-xxl-grow-1{flex-grow:1 !important}.flex-xxl-shrink-0{flex-shrink:0 !important}.flex-xxl-shrink-1{flex-shrink:1 !important}.flex-xxl-wrap{flex-wrap:wrap !important}.flex-xxl-nowrap{flex-wrap:nowrap !important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-xxl-0{gap:0 !important}.gap-xxl-1{gap:.25rem !important}.gap-xxl-2{gap:.5rem !important}.gap-xxl-3{gap:1rem !important}.gap-xxl-4{gap:1.5rem !important}.gap-xxl-5{gap:3rem !important}.justify-content-xxl-start{justify-content:flex-start !important}.justify-content-xxl-end{justify-content:flex-end !important}.justify-content-xxl-center{justify-content:center !important}.justify-content-xxl-between{justify-content:space-between !important}.justify-content-xxl-around{justify-content:space-around !important}.justify-content-xxl-evenly{justify-content:space-evenly !important}.align-items-xxl-start{align-items:flex-start !important}.align-items-xxl-end{align-items:flex-end !important}.align-items-xxl-center{align-items:center !important}.align-items-xxl-baseline{align-items:baseline !important}.align-items-xxl-stretch{align-items:stretch !important}.align-content-xxl-start{align-content:flex-start !important}.align-content-xxl-end{align-content:flex-end !important}.align-content-xxl-center{align-content:center !important}.align-content-xxl-between{align-content:space-between !important}.align-content-xxl-around{align-content:space-around !important}.align-content-xxl-stretch{align-content:stretch !important}.align-self-xxl-auto{align-self:auto !important}.align-self-xxl-start{align-self:flex-start !important}.align-self-xxl-end{align-self:flex-end !important}.align-self-xxl-center{align-self:center !important}.align-self-xxl-baseline{align-self:baseline !important}.align-self-xxl-stretch{align-self:stretch !important}.order-xxl-first{order:-1 !important}.order-xxl-0{order:0 !important}.order-xxl-1{order:1 !important}.order-xxl-2{order:2 !important}.order-xxl-3{order:3 !important}.order-xxl-4{order:4 !important}.order-xxl-5{order:5 !important}.order-xxl-last{order:6 !important}.m-xxl-0{margin:0 !important}.m-xxl-1{margin:.25rem !important}.m-xxl-2{margin:.5rem !important}.m-xxl-3{margin:1rem !important}.m-xxl-4{margin:1.5rem !important}.m-xxl-5{margin:3rem !important}.m-xxl-auto{margin:auto !important}.mx-xxl-0{margin-right:0 !important;margin-left:0 !important}.mx-xxl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xxl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xxl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xxl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xxl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xxl-auto{margin-right:auto !important;margin-left:auto !important}.my-xxl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xxl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xxl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xxl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xxl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xxl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xxl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xxl-0{margin-top:0 !important}.mt-xxl-1{margin-top:.25rem !important}.mt-xxl-2{margin-top:.5rem !important}.mt-xxl-3{margin-top:1rem !important}.mt-xxl-4{margin-top:1.5rem !important}.mt-xxl-5{margin-top:3rem !important}.mt-xxl-auto{margin-top:auto !important}.me-xxl-0{margin-right:0 !important}.me-xxl-1{margin-right:.25rem !important}.me-xxl-2{margin-right:.5rem !important}.me-xxl-3{margin-right:1rem !important}.me-xxl-4{margin-right:1.5rem !important}.me-xxl-5{margin-right:3rem !important}.me-xxl-auto{margin-right:auto !important}.mb-xxl-0{margin-bottom:0 !important}.mb-xxl-1{margin-bottom:.25rem !important}.mb-xxl-2{margin-bottom:.5rem !important}.mb-xxl-3{margin-bottom:1rem !important}.mb-xxl-4{margin-bottom:1.5rem !important}.mb-xxl-5{margin-bottom:3rem !important}.mb-xxl-auto{margin-bottom:auto !important}.ms-xxl-0{margin-left:0 !important}.ms-xxl-1{margin-left:.25rem !important}.ms-xxl-2{margin-left:.5rem !important}.ms-xxl-3{margin-left:1rem !important}.ms-xxl-4{margin-left:1.5rem !important}.ms-xxl-5{margin-left:3rem !important}.ms-xxl-auto{margin-left:auto !important}.p-xxl-0{padding:0 !important}.p-xxl-1{padding:.25rem !important}.p-xxl-2{padding:.5rem !important}.p-xxl-3{padding:1rem !important}.p-xxl-4{padding:1.5rem !important}.p-xxl-5{padding:3rem !important}.px-xxl-0{padding-right:0 !important;padding-left:0 !important}.px-xxl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xxl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xxl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xxl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xxl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xxl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xxl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xxl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xxl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xxl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xxl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xxl-0{padding-top:0 !important}.pt-xxl-1{padding-top:.25rem !important}.pt-xxl-2{padding-top:.5rem !important}.pt-xxl-3{padding-top:1rem !important}.pt-xxl-4{padding-top:1.5rem !important}.pt-xxl-5{padding-top:3rem !important}.pe-xxl-0{padding-right:0 !important}.pe-xxl-1{padding-right:.25rem !important}.pe-xxl-2{padding-right:.5rem !important}.pe-xxl-3{padding-right:1rem !important}.pe-xxl-4{padding-right:1.5rem !important}.pe-xxl-5{padding-right:3rem !important}.pb-xxl-0{padding-bottom:0 !important}.pb-xxl-1{padding-bottom:.25rem !important}.pb-xxl-2{padding-bottom:.5rem !important}.pb-xxl-3{padding-bottom:1rem !important}.pb-xxl-4{padding-bottom:1.5rem !important}.pb-xxl-5{padding-bottom:3rem !important}.ps-xxl-0{padding-left:0 !important}.ps-xxl-1{padding-left:.25rem !important}.ps-xxl-2{padding-left:.5rem !important}.ps-xxl-3{padding-left:1rem !important}.ps-xxl-4{padding-left:1.5rem !important}.ps-xxl-5{padding-left:3rem !important}.text-xxl-start{text-align:left !important}.text-xxl-end{text-align:right !important}.text-xxl-center{text-align:center !important}}.bg-default{color:#000}.bg-primary{color:#fff}.bg-secondary{color:#fff}.bg-success{color:#fff}.bg-info{color:#000}.bg-warning{color:#000}.bg-danger{color:#fff}.bg-light,.navbar.navbar-default{color:#000}.bg-dark,.navbar.navbar-inverse{color:#fff}.bg-body{color:#000}.bg-white{color:#000}.bg-transparent{color:#fff}@media (min-width: 1200px){.fs-1{font-size:2.5rem !important}.fs-2{font-size:2rem !important}.fs-3{font-size:1.75rem !important}.fs-4{font-size:1.5rem !important}}@media print{.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-grid{display:grid !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}.d-print-none{display:none !important}}.table th[align=left]{text-align:left}.table th[align=right]{text-align:right}.table th[align=center]{text-align:center}.well{display:block;background-color:rgba(0,0,0,0.03);color:#212529;padding:1rem;border-radius:.25rem}.well-lg{padding:1.5rem;border-radius:.3rem}.well-sm{padding:0.5rem;border-radius:.2rem}.draggable .well{background-color:#f7f7f7}.dropdown-menu>li.active>a{color:#fff;text-decoration:none;background-color:#0d6efd}.navbar:not(.fixed-bottom):not(.navbar-fixed-bottom):not(.navbar-fixed-bottom){margin-bottom:20px}ul.nav.navbar-nav{flex:1;-webkit-flex:1}ul.nav.navbar-nav.navbar-right{flex:unset;-webkit-flex:unset;display:flex;display:-webkit-flex;justify-content:flex-end;-webkit-justify-content:flex-end}.navbar-toggle>.icon-bar{display:none}@media (max-width: 575.98px){.navbar-header{width:100%}.navbar-header .navbar-toggle{float:right}}.nav-tabs>li.active>a{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-pills>li.active>a{color:#fff;background-color:#0d6efd}.nav-stacked{flex-direction:column;-webkit-flex-direction:column}.progress-bar-default{background-color:#dee2e6;color:#000}.progress-bar-primary{background-color:#0d6efd;color:#fff}.progress-bar-secondary{background-color:#6c757d;color:#fff}.progress-bar-success{background-color:#198754;color:#fff}.progress-bar-info{background-color:#0dcaf0;color:#000}.progress-bar-warning{background-color:#ffc107;color:#000}.progress-bar-danger{background-color:#dc3545;color:#fff}.progress-bar-light{background-color:#f8f9fa;color:#000}.progress-bar-dark{background-color:#212529;color:#fff}@font-face{font-family:'Glyphicons Halflings';src:url("fonts/bootstrap/glyphicons-halflings-regular.eot");src:url("fonts/bootstrap/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"),url("fonts/bootstrap/glyphicons-halflings-regular.woff2") format("woff2"),url("fonts/bootstrap/glyphicons-halflings-regular.woff") format("woff"),url("fonts/bootstrap/glyphicons-halflings-regular.ttf") format("truetype"),url("fonts/bootstrap/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}.form-group{margin-bottom:1rem}.input-daterange .input-group-addon.input-group-prepend.input-group-append{padding:inherit;line-height:inherit;text-shadow:inherit;border-width:0}.input-daterange .input-group-addon.input-group-prepend.input-group-append .input-group-text{border-radius:0}pre.shiny-code{padding:0.5rem}h1,.h1,h2,.h2,h3,.h3{margin-top:1.5rem}h4,.h4,h5,.h5,h6,.h6{margin-top:1rem}@media (min-width: 576px){.nav{display:flex !important;display:-webkit-flex !important}.nav:not(.nav-stacked):not(.flex-column){float:none !important}.nav:not(.nav-stacked):not(.flex-column)>.bslib-nav-spacer{margin-left:auto !important}.nav:not(.nav-stacked):not(.flex-column)>.form-inline{margin-top:auto;margin-bottom:auto}.nav.nav-stacked{flex-direction:column;-webkit-flex-direction:column;height:100%}.nav.nav-stacked>.bslib-nav-spacer{margin-top:auto !important}}

shiny/www/shared/bootstrap/bootstrap.bundle.min.js.map METASEP
{"version":3,"sources":["../../js/src/dom/selector-engine.js","../../js/src/util/index.js","../../js/src/dom/event-handler.js","../../js/src/dom/data.js","../../js/src/base-component.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/dom/manipulator.js","../../js/src/carousel.js","../../js/src/collapse.js","../../node_modules/@popperjs/core/lib/enums.js","../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../node_modules/@popperjs/core/lib/dom-utils/contains.js","../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../node_modules/@popperjs/core/lib/utils/math.js","../../node_modules/@popperjs/core/lib/utils/within.js","../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../node_modules/@popperjs/core/lib/modifiers/arrow.js","../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../node_modules/@popperjs/core/lib/utils/getVariation.js","../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../node_modules/@popperjs/core/lib/createPopper.js","../../node_modules/@popperjs/core/lib/utils/debounce.js","../../node_modules/@popperjs/core/lib/utils/mergeByName.js","../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../node_modules/@popperjs/core/lib/popper-lite.js","../../node_modules/@popperjs/core/lib/popper.js","../../js/src/dropdown.js","../../js/src/util/scrollbar.js","../../js/src/util/backdrop.js","../../js/src/modal.js","../../js/src/offcanvas.js","../../js/src/util/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/index.umd.js"],"names":["SelectorEngine","find","selector","element","document","documentElement","concat","Element","prototype","querySelectorAll","call","findOne","querySelector","children","filter","child","matches","parents","ancestor","parentNode","nodeType","Node","ELEMENT_NODE","push","prev","previous","previousElementSibling","next","nextElementSibling","getUID","prefix","Math","floor","random","getElementById","getSelector","getAttribute","hrefAttr","includes","startsWith","split","trim","getSelectorFromElement","getElementFromSelector","triggerTransitionEnd","dispatchEvent","Event","isElement","obj","jquery","getElement","length","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","toString","match","toLowerCase","RegExp","test","TypeError","toUpperCase","isVisible","getClientRects","getComputedStyle","getPropertyValue","isDisabled","classList","contains","disabled","hasAttribute","findShadowRoot","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","getjQuery","jQuery","window","body","DOMContentLoadedCallbacks","isRTL","dir","defineJQueryPlugin","plugin","callback","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","readyState","addEventListener","execute","executeAfterTransition","transitionElement","waitForTransition","emulatedDuration","transitionDuration","transitionDelay","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","getTransitionDurationFromElement","called","handler","target","removeEventListener","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","index","indexOf","listLength","max","min","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","customEventsRegex","nativeEvents","Set","getUidEvent","uid","getEvent","findHandler","events","delegationSelector","uidEventList","i","len","event","originalHandler","normalizeParams","originalTypeEvent","delegationFn","delegation","typeEvent","getTypeEvent","has","addHandler","oneOff","wrapFn","relatedTarget","delegateTarget","this","handlers","previousFn","replace","domElements","EventHandler","off","type","apply","bootstrapDelegationHandler","bootstrapHandler","removeHandler","Boolean","on","one","inNamespace","isNamespace","elementEvent","namespace","storeElementEvent","handlerKey","removeNamespacedHandlers","slice","keyHandlers","trigger","args","isNative","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","evt","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","createEvent","initEvent","CustomEvent","cancelable","key","defineProperty","get","preventDefault","elementMap","Map","Data","set","instance","instanceMap","size","console","error","Array","from","remove","delete","BaseComponent","constructor","_element","DATA_KEY","dispose","EVENT_KEY","getOwnPropertyNames","propertyName","_queueCallback","isAnimated","[object Object]","getInstance","VERSION","Error","Alert","close","rootElement","_getRootElement","customEvent","_triggerCloseEvent","_removeElement","closest","_destroyElement","each","data","getOrCreateInstance","alertInstance","handleDismiss","Button","toggle","setAttribute","normalizeData","val","normalizeDataKey","chr","button","Manipulator","setDataAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","dataset","pureKey","charAt","getDataAttribute","offset","rect","getBoundingClientRect","top","scrollTop","left","scrollLeft","position","offsetTop","offsetLeft","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","KEY_TO_DIRECTION","ArrowLeft","ArrowRight","Carousel","super","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","_addEventListeners","_slide","nextWhenVisible","hidden","cycle","clearInterval","_updateInterval","setInterval","visibilityState","bind","to","activeIndex","_getItemIndex","order","_handleSwipe","absDeltax","abs","direction","_keydown","_addTouchEventListeners","start","pointerType","touches","clientX","move","end","clearTimeout","itemImg","e","add","tagName","_getItemByOrder","isNext","_triggerSlideEvent","eventDirectionName","targetIndex","fromIndex","_setActiveIndicatorElement","activeIndicator","indicators","parseInt","elementInterval","defaultInterval","directionOrOrder","_directionToOrder","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","_orderToDirection","triggerSlidEvent","completeCallBack","action","ride","carouselInterface","slideIndex","dataApiClickHandler","carousels","parent","Collapse","_isTransitioning","_triggerArray","id","toggleList","elem","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","container","tempActiveData","elemActive","collapseInterface","dimension","_getDimension","style","setTransitioning","scrollSize","triggerArrayLength","isTransitioning","selected","triggerArray","isOpen","triggerData","bottom","right","basePlacements","variationPlacements","reduce","acc","placement","placements","modifierPhases","getNodeName","nodeName","getWindow","node","ownerDocument","defaultView","isHTMLElement","HTMLElement","isShadowRoot","applyStyles$1","enabled","phase","_ref","state","elements","styles","assign","effect","_ref2","initialStyles","popper","options","strategy","margin","arrow","reference","hasOwnProperty","attribute","requires","getBasePlacement","width","height","x","y","getLayoutRect","clientRect","offsetWidth","rootNode","isSameNode","host","isTableElement","getDocumentElement","getParentNode","assignedSlot","getTrueOffsetParent","offsetParent","getOffsetParent","isFirefox","userAgent","currentNode","css","transform","perspective","contain","willChange","getContainingBlock","getMainAxisFromPlacement","round","within","mathMax","mathMin","mergePaddingObject","paddingObject","expandToHashMap","hashMap","arrow$1","_state$modifiersData$","arrowElement","popperOffsets","modifiersData","basePlacement","axis","padding","rects","toPaddingObject","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","clientHeight","clientWidth","centerToReference","center","axisProp","centerOffset","_options$element","requiresIfExists","unsetSides","mapToStyles","_Object$assign2","popperRect","offsets","gpuAcceleration","adaptive","roundOffsets","_ref3","dpr","devicePixelRatio","roundOffsetsByDPR","_ref3$x","_ref3$y","hasX","hasY","sideX","sideY","win","heightProp","widthProp","_Object$assign","commonStyles","computeStyles$1","_ref4","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","data-popper-placement","passive","eventListeners","_options$scroll","scroll","_options$resize","resize","scrollParents","scrollParent","update","hash","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","pageXOffset","pageYOffset","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","listScrollParents","_element$ownerDocumen","getScrollParent","isBody","visualViewport","updatedList","rectToClientRect","getClientRectFromMixedType","clippingParent","html","getViewportRect","clientTop","clientLeft","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","getDocumentRect","getVariation","computeOffsets","variation","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$boundary","boundary","_options$rootBoundary","rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","referenceElement","clippingClientRect","mainClippingParents","clippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","getClippingRect","contextElement","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","computeAutoPlacement","flipVariations","_options$allowedAutoP","allowedAutoPlacements","allPlacements","allowedPlacements","overflows","sort","a","b","flip$1","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","check","_loop","_i","fittingPlacement","reset","getSideOffsets","preventedOffsets","isAnySideFullyClipped","some","side","hide$1","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","data-popper-reference-hidden","data-popper-escaped","offset$1","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","popperOffsets$1","preventOverflow$1","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_mainSide","_altSide","_offset","_min","_max","_preventedOffset","getCompositeRect","elementOrVirtualElement","isFixed","isOffsetParentAnElement","DEFAULT_OPTIONS","modifiers","areValidElements","_len","arguments","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","pending","orderedModifiers","effectCleanupFns","isDestroyed","setOptions","cleanupModifierEffects","merged","map","visited","result","modifier","dep","depModifier","orderModifiers","current","existing","m","_ref3$options","cleanupFn","forceUpdate","_state$elements","_state$orderedModifie","_state$orderedModifie2","Promise","resolve","then","undefined","destroy","onFirstUpdate","createPopper","computeStyles","applyStyles","flip","REGEXP_KEYDOWN","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","display","popperConfig","autoClose","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","getParentFromElement","Popper","_getPopperConfig","isDisplayStatic","focus","_completeHide","_getPlacement","parentDropdown","isEnd","_getOffset","popperData","defaultBsPopperConfig","_selectMenuItem","items","dropdownInterface","toggles","context","composedPath","isMenuTarget","clickEvent","isActive","stopPropagation","getToggleButton","clearMenus","click","dataApiKeydownHandler","ScrollBarHelper","getWidth","documentWidth","innerWidth","_disableOverFlow","_setElementAttributes","calculatedValue","_saveInitialAttribute","styleProp","scrollbarWidth","_applyManipulationCallback","_resetElementAttributes","actualValue","removeProperty","callBack","isOverflowing","clickCallback","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","backdrop","createElement","className","appendChild","Modal","_dialog","_backdrop","_initializeBackDrop","_isShown","_ignoreBackdropClick","_scrollBar","_isAnimated","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","_hideModal","htmlElement","handleUpdate","modalBody","_enforceFocus","_triggerBackdropTransition","_resetAdjustments","currentTarget","isModalOverflowing","isBodyOverflowing","paddingLeft","paddingRight","showEvent","Offcanvas","visibility","_enforceFocusOnElement","blur","allReadyOpen","el","uriAttrs","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attr","allowedAttributeList","attrName","nodeValue","regExp","attrRegex","sanitizeHtml","unsafeHtml","allowList","sanitizeFn","createdDocument","DOMParser","parseFromString","allowlistKeys","elName","attributeList","allowedAttributes","innerHTML","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","customClass","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","*","area","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","_initializeOnDelegatedTarget","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","tipId","setContent","attachment","_getAttachment","_addAttachmentClass","prevHoverState","_cleanTipClass","getTitle","setElementContent","content","textContent","updateAttachment","dataKey","_getDelegateConfig","_handlePopperPlacementChange","eventIn","eventOut","_fixTitle","originalTitleType","dataAttributes","dataAttr","tabClass","token","tClass","Popover","_getContent","method","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","item","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","link","join","listGroup","navItem","spy","Tab","listElement","itemSelector","hideEvent","complete","active","_transitionComplete","dropdownChild","dropdownElement","dropdown","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","_onInteraction","isInteracting"],"mappings":"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","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NODE_TEXT = 3\n\nconst SelectorEngine = {\n  find(selector, element = document.documentElement) {\n    return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n  },\n\n  findOne(selector, element = document.documentElement) {\n    return Element.prototype.querySelector.call(element, selector)\n  },\n\n  children(element, selector) {\n    return [].concat(...element.children)\n      .filter(child => child.matches(selector))\n  },\n\n  parents(element, selector) {\n    const parents = []\n\n    let ancestor = element.parentNode\n\n    while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n      if (ancestor.matches(selector)) {\n        parents.push(ancestor)\n      }\n\n      ancestor = ancestor.parentNode\n    }\n\n    return parents\n  },\n\n  prev(element, selector) {\n    let previous = element.previousElementSibling\n\n    while (previous) {\n      if (previous.matches(selector)) {\n        return [previous]\n      }\n\n      previous = previous.previousElementSibling\n    }\n\n    return []\n  },\n\n  next(element, selector) {\n    let next = element.nextElementSibling\n\n    while (next) {\n      if (next.matches(selector)) {\n        return [next]\n      }\n\n      next = next.nextElementSibling\n    }\n\n    return []\n  }\n}\n\nexport default SelectorEngine\n","import SelectorEngine from '../dom/selector-engine'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => {\n  if (obj === null || obj === undefined) {\n    return `${obj}`\n  }\n\n  return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID)\n  } while (document.getElementById(prefix))\n\n  return prefix\n}\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target')\n\n  if (!selector || selector === '#') {\n    let hrefAttr = element.getAttribute('href')\n\n    // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n    if (!hrefAttr || (!hrefAttr.includes('#') && !hrefAttr.startsWith('.'))) {\n      return null\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n      hrefAttr = `#${hrefAttr.split('#')[1]}`\n    }\n\n    selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n  }\n\n  return selector\n}\n\nconst getSelectorFromElement = element => {\n  const selector = getSelector(element)\n\n  if (selector) {\n    return document.querySelector(selector) ? selector : null\n  }\n\n  return null\n}\n\nconst getElementFromSelector = element => {\n  const selector = getSelector(element)\n\n  return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0\n  }\n\n  // Get transition-duration of the element\n  let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n  const floatTransitionDuration = Number.parseFloat(transitionDuration)\n  const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0\n  }\n\n  // If multiple durations are defined, take the first\n  transitionDuration = transitionDuration.split(',')[0]\n  transitionDelay = transitionDelay.split(',')[0]\n\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = obj => {\n  if (!obj || typeof obj !== 'object') {\n    return false\n  }\n\n  if (typeof obj.jquery !== 'undefined') {\n    obj = obj[0]\n  }\n\n  return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n  if (isElement(obj)) { // it's a jQuery object or a node element\n    return obj.jquery ? obj[0] : obj\n  }\n\n  if (typeof obj === 'string' && obj.length > 0) {\n    return SelectorEngine.findOne(obj)\n  }\n\n  return null\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n  Object.keys(configTypes).forEach(property => {\n    const expectedTypes = configTypes[property]\n    const value = config[property]\n    const valueType = value && isElement(value) ? 'element' : toType(value)\n\n    if (!new RegExp(expectedTypes).test(valueType)) {\n      throw new TypeError(\n        `${componentName.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n      )\n    }\n  })\n}\n\nconst isVisible = element => {\n  if (!isElement(element) || element.getClientRects().length === 0) {\n    return false\n  }\n\n  return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n}\n\nconst isDisabled = element => {\n  if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n    return true\n  }\n\n  if (element.classList.contains('disabled')) {\n    return true\n  }\n\n  if (typeof element.disabled !== 'undefined') {\n    return element.disabled\n  }\n\n  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null\n  }\n\n  // Can find the shadow root otherwise it'll return the document\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode()\n    return root instanceof ShadowRoot ? root : null\n  }\n\n  if (element instanceof ShadowRoot) {\n    return element\n  }\n\n  // when we don't find a shadow root\n  if (!element.parentNode) {\n    return null\n  }\n\n  return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\nconst reflow = element => element.offsetHeight\n\nconst getjQuery = () => {\n  const { jQuery } = window\n\n  if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n    return jQuery\n  }\n\n  return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    // add listener on the first call when the document is in loading state\n    if (!DOMContentLoadedCallbacks.length) {\n      document.addEventListener('DOMContentLoaded', () => {\n        DOMContentLoadedCallbacks.forEach(callback => callback())\n      })\n    }\n\n    DOMContentLoadedCallbacks.push(callback)\n  } else {\n    callback()\n  }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n  onDOMContentLoaded(() => {\n    const $ = getjQuery()\n    /* istanbul ignore if */\n    if ($) {\n      const name = plugin.NAME\n      const JQUERY_NO_CONFLICT = $.fn[name]\n      $.fn[name] = plugin.jQueryInterface\n      $.fn[name].Constructor = plugin\n      $.fn[name].noConflict = () => {\n        $.fn[name] = JQUERY_NO_CONFLICT\n        return plugin.jQueryInterface\n      }\n    }\n  })\n}\n\nconst execute = callback => {\n  if (typeof callback === 'function') {\n    callback()\n  }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n  if (!waitForTransition) {\n    execute(callback)\n    return\n  }\n\n  const durationPadding = 5\n  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n  let called = false\n\n  const handler = ({ target }) => {\n    if (target !== transitionElement) {\n      return\n    }\n\n    called = true\n    transitionElement.removeEventListener(TRANSITION_END, handler)\n    execute(callback)\n  }\n\n  transitionElement.addEventListener(TRANSITION_END, handler)\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(transitionElement)\n    }\n  }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list    The list of elements\n * @param activeElement   The active element\n * @param shouldGetNext   Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n  let index = list.indexOf(activeElement)\n\n  // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n  if (index === -1) {\n    return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n  }\n\n  const listLength = list.length\n\n  index += shouldGetNext ? 1 : -1\n\n  if (isCycleAllowed) {\n    index = (index + listLength) % listLength\n  }\n\n  return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n  getElement,\n  getUID,\n  getSelectorFromElement,\n  getElementFromSelector,\n  getTransitionDurationFromElement,\n  triggerTransitionEnd,\n  isElement,\n  typeCheckConfig,\n  isVisible,\n  isDisabled,\n  findShadowRoot,\n  noop,\n  getNextActiveElement,\n  reflow,\n  getjQuery,\n  onDOMContentLoaded,\n  isRTL,\n  defineJQueryPlugin,\n  execute,\n  executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n  mouseenter: 'mouseover',\n  mouseleave: 'mouseout'\n}\nconst customEventsRegex = /^(mouseenter|mouseleave)/i\nconst nativeEvents = new Set([\n  'click',\n  'dblclick',\n  'mouseup',\n  'mousedown',\n  'contextmenu',\n  'mousewheel',\n  'DOMMouseScroll',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n  'selectstart',\n  'selectend',\n  'keydown',\n  'keypress',\n  'keyup',\n  'orientationchange',\n  'touchstart',\n  'touchmove',\n  'touchend',\n  'touchcancel',\n  'pointerdown',\n  'pointermove',\n  'pointerup',\n  'pointerleave',\n  'pointercancel',\n  'gesturestart',\n  'gesturechange',\n  'gestureend',\n  'focus',\n  'blur',\n  'change',\n  'reset',\n  'select',\n  'submit',\n  'focusin',\n  'focusout',\n  'load',\n  'unload',\n  'beforeunload',\n  'resize',\n  'move',\n  'DOMContentLoaded',\n  'readystatechange',\n  'error',\n  'abort',\n  'scroll'\n])\n\n/**\n * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\n */\n\nfunction getUidEvent(element, uid) {\n  return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getEvent(element) {\n  const uid = getUidEvent(element)\n\n  element.uidEvent = uid\n  eventRegistry[uid] = eventRegistry[uid] || {}\n\n  return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n  return function handler(event) {\n    event.delegateTarget = element\n\n    if (handler.oneOff) {\n      EventHandler.off(element, event.type, fn)\n    }\n\n    return fn.apply(element, [event])\n  }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n  return function handler(event) {\n    const domElements = element.querySelectorAll(selector)\n\n    for (let { target } = event; target && target !== this; target = target.parentNode) {\n      for (let i = domElements.length; i--;) {\n        if (domElements[i] === target) {\n          event.delegateTarget = target\n\n          if (handler.oneOff) {\n            // eslint-disable-next-line unicorn/consistent-destructuring\n            EventHandler.off(element, event.type, selector, fn)\n          }\n\n          return fn.apply(target, [event])\n        }\n      }\n    }\n\n    // To please ESLint\n    return null\n  }\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n  const uidEventList = Object.keys(events)\n\n  for (let i = 0, len = uidEventList.length; i < len; i++) {\n    const event = events[uidEventList[i]]\n\n    if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n      return event\n    }\n  }\n\n  return null\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n  const delegation = typeof handler === 'string'\n  const originalHandler = delegation ? delegationFn : handler\n\n  let typeEvent = getTypeEvent(originalTypeEvent)\n  const isNative = nativeEvents.has(typeEvent)\n\n  if (!isNative) {\n    typeEvent = originalTypeEvent\n  }\n\n  return [delegation, originalHandler, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return\n  }\n\n  if (!handler) {\n    handler = delegationFn\n    delegationFn = null\n  }\n\n  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n  // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n  if (customEventsRegex.test(originalTypeEvent)) {\n    const wrapFn = fn => {\n      return function (event) {\n        if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n          return fn.call(this, event)\n        }\n      }\n    }\n\n    if (delegationFn) {\n      delegationFn = wrapFn(delegationFn)\n    } else {\n      handler = wrapFn(handler)\n    }\n  }\n\n  const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n  const events = getEvent(element)\n  const handlers = events[typeEvent] || (events[typeEvent] = {})\n  const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null)\n\n  if (previousFn) {\n    previousFn.oneOff = previousFn.oneOff && oneOff\n\n    return\n  }\n\n  const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))\n  const fn = delegation ?\n    bootstrapDelegationHandler(element, handler, delegationFn) :\n    bootstrapHandler(element, handler)\n\n  fn.delegationSelector = delegation ? handler : null\n  fn.originalHandler = originalHandler\n  fn.oneOff = oneOff\n  fn.uidEvent = uid\n  handlers[uid] = fn\n\n  element.addEventListener(typeEvent, fn, delegation)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n  const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n  if (!fn) {\n    return\n  }\n\n  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n  delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n  const storeElementEvent = events[typeEvent] || {}\n\n  Object.keys(storeElementEvent).forEach(handlerKey => {\n    if (handlerKey.includes(namespace)) {\n      const event = storeElementEvent[handlerKey]\n\n      removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n    }\n  })\n}\n\nfunction getTypeEvent(event) {\n  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n  event = event.replace(stripNameRegex, '')\n  return customEvents[event] || event\n}\n\nconst EventHandler = {\n  on(element, event, handler, delegationFn) {\n    addHandler(element, event, handler, delegationFn, false)\n  },\n\n  one(element, event, handler, delegationFn) {\n    addHandler(element, event, handler, delegationFn, true)\n  },\n\n  off(element, originalTypeEvent, handler, delegationFn) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return\n    }\n\n    const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n    const inNamespace = typeEvent !== originalTypeEvent\n    const events = getEvent(element)\n    const isNamespace = originalTypeEvent.startsWith('.')\n\n    if (typeof originalHandler !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!events || !events[typeEvent]) {\n        return\n      }\n\n      removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null)\n      return\n    }\n\n    if (isNamespace) {\n      Object.keys(events).forEach(elementEvent => {\n        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n      })\n    }\n\n    const storeElementEvent = events[typeEvent] || {}\n    Object.keys(storeElementEvent).forEach(keyHandlers => {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        const event = storeElementEvent[keyHandlers]\n\n        removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n      }\n    })\n  },\n\n  trigger(element, event, args) {\n    if (typeof event !== 'string' || !element) {\n      return null\n    }\n\n    const $ = getjQuery()\n    const typeEvent = getTypeEvent(event)\n    const inNamespace = event !== typeEvent\n    const isNative = nativeEvents.has(typeEvent)\n\n    let jQueryEvent\n    let bubbles = true\n    let nativeDispatch = true\n    let defaultPrevented = false\n    let evt = null\n\n    if (inNamespace && $) {\n      jQueryEvent = $.Event(event, args)\n\n      $(element).trigger(jQueryEvent)\n      bubbles = !jQueryEvent.isPropagationStopped()\n      nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n      defaultPrevented = jQueryEvent.isDefaultPrevented()\n    }\n\n    if (isNative) {\n      evt = document.createEvent('HTMLEvents')\n      evt.initEvent(typeEvent, bubbles, true)\n    } else {\n      evt = new CustomEvent(event, {\n        bubbles,\n        cancelable: true\n      })\n    }\n\n    // merge custom information in our event\n    if (typeof args !== 'undefined') {\n      Object.keys(args).forEach(key => {\n        Object.defineProperty(evt, key, {\n          get() {\n            return args[key]\n          }\n        })\n      })\n    }\n\n    if (defaultPrevented) {\n      evt.preventDefault()\n    }\n\n    if (nativeDispatch) {\n      element.dispatchEvent(evt)\n    }\n\n    if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n      jQueryEvent.preventDefault()\n    }\n\n    return evt\n  }\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst elementMap = new Map()\n\nexport default {\n  set(element, key, instance) {\n    if (!elementMap.has(element)) {\n      elementMap.set(element, new Map())\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    // make it clear we only want one instance per element\n    // can be removed later when multiple key/instances are fine to be used\n    if (!instanceMap.has(key) && instanceMap.size !== 0) {\n      // eslint-disable-next-line no-console\n      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n      return\n    }\n\n    instanceMap.set(key, instance)\n  },\n\n  get(element, key) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).get(key) || null\n    }\n\n    return null\n  },\n\n  remove(element, key) {\n    if (!elementMap.has(element)) {\n      return\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    instanceMap.delete(key)\n\n    // free up element references if there are no instances left for an element\n    if (instanceMap.size === 0) {\n      elementMap.delete(element)\n    }\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\nimport {\n  executeAfterTransition,\n  getElement\n} from './util/index'\nimport EventHandler from './dom/event-handler'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst VERSION = '5.0.2'\n\nclass BaseComponent {\n  constructor(element) {\n    element = getElement(element)\n\n    if (!element) {\n      return\n    }\n\n    this._element = element\n    Data.set(this._element, this.constructor.DATA_KEY, this)\n  }\n\n  dispose() {\n    Data.remove(this._element, this.constructor.DATA_KEY)\n    EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n    Object.getOwnPropertyNames(this).forEach(propertyName => {\n      this[propertyName] = null\n    })\n  }\n\n  _queueCallback(callback, element, isAnimated = true) {\n    executeAfterTransition(callback, element, isAnimated)\n  }\n\n  /** Static */\n\n  static getInstance(element) {\n    return Data.get(element, this.DATA_KEY)\n  }\n\n  static getOrCreateInstance(element, config = {}) {\n    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n  }\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get NAME() {\n    throw new Error('You have to implement the static method \"NAME\", for each component!')\n  }\n\n  static get DATA_KEY() {\n    return `bs.${this.NAME}`\n  }\n\n  static get EVENT_KEY() {\n    return `.${this.DATA_KEY}`\n  }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst SELECTOR_DISMISS = '[data-bs-dismiss=\"alert\"]'\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_ALERT = 'alert'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert extends BaseComponent {\n  // Getters\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  close(element) {\n    const rootElement = element ? this._getRootElement(element) : this._element\n    const customEvent = this._triggerCloseEvent(rootElement)\n\n    if (customEvent === null || customEvent.defaultPrevented) {\n      return\n    }\n\n    this._removeElement(rootElement)\n  }\n\n  // Private\n\n  _getRootElement(element) {\n    return getElementFromSelector(element) || element.closest(`.${CLASS_NAME_ALERT}`)\n  }\n\n  _triggerCloseEvent(element) {\n    return EventHandler.trigger(element, EVENT_CLOSE)\n  }\n\n  _removeElement(element) {\n    element.classList.remove(CLASS_NAME_SHOW)\n\n    const isAnimated = element.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(() => this._destroyElement(element), element, isAnimated)\n  }\n\n  _destroyElement(element) {\n    element.remove()\n\n    EventHandler.trigger(element, EVENT_CLOSED)\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Alert.getOrCreateInstance(this)\n\n      if (config === 'close') {\n        data[config](this)\n      }\n    })\n  }\n\n  static handleDismiss(alertInstance) {\n    return function (event) {\n      if (event) {\n        event.preventDefault()\n      }\n\n      alertInstance.close(this)\n    }\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert()))\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Alert to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button extends BaseComponent {\n  // Getters\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  toggle() {\n    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Button.getOrCreateInstance(this)\n\n      if (config === 'toggle') {\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n  event.preventDefault()\n\n  const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n  const data = Button.getOrCreateInstance(button)\n\n  data.toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Button to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Button)\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(val) {\n  if (val === 'true') {\n    return true\n  }\n\n  if (val === 'false') {\n    return false\n  }\n\n  if (val === Number(val).toString()) {\n    return Number(val)\n  }\n\n  if (val === '' || val === 'null') {\n    return null\n  }\n\n  return val\n}\n\nfunction normalizeDataKey(key) {\n  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n  setDataAttribute(element, key, value) {\n    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n  },\n\n  removeDataAttribute(element, key) {\n    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n  },\n\n  getDataAttributes(element) {\n    if (!element) {\n      return {}\n    }\n\n    const attributes = {}\n\n    Object.keys(element.dataset)\n      .filter(key => key.startsWith('bs'))\n      .forEach(key => {\n        let pureKey = key.replace(/^bs/, '')\n        pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n        attributes[pureKey] = normalizeData(element.dataset[key])\n      })\n\n    return attributes\n  },\n\n  getDataAttribute(element, key) {\n    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n  },\n\n  offset(element) {\n    const rect = element.getBoundingClientRect()\n\n    return {\n      top: rect.top + document.body.scrollTop,\n      left: rect.left + document.body.scrollLeft\n    }\n  },\n\n  position(element) {\n    return {\n      top: element.offsetTop,\n      left: element.offsetLeft\n    }\n  }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isRTL,\n  isVisible,\n  getNextActiveElement,\n  reflow,\n  triggerTransitionEnd,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n  interval: 5000,\n  keyboard: true,\n  slide: false,\n  pause: 'hover',\n  wrap: true,\n  touch: true\n}\n\nconst DefaultType = {\n  interval: '(number|boolean)',\n  keyboard: 'boolean',\n  slide: '(boolean|string)',\n  pause: '(string|boolean)',\n  wrap: 'boolean',\n  touch: 'boolean'\n}\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_INDICATOR = '[data-bs-target]'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._items = null\n    this._interval = null\n    this._activeElement = null\n    this._isPaused = false\n    this._isSliding = false\n    this.touchTimeout = null\n    this.touchStartX = 0\n    this.touchDeltaX = 0\n\n    this._config = this._getConfig(config)\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n    this._pointerEvent = Boolean(window.PointerEvent)\n\n    this._addEventListeners()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  next() {\n    this._slide(ORDER_NEXT)\n  }\n\n  nextWhenVisible() {\n    // Don't call next when the page isn't visible\n    // or the carousel or its parent isn't visible\n    if (!document.hidden && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this._slide(ORDER_PREV)\n  }\n\n  pause(event) {\n    if (!event) {\n      this._isPaused = true\n    }\n\n    if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {\n      triggerTransitionEnd(this._element)\n      this.cycle(true)\n    }\n\n    clearInterval(this._interval)\n    this._interval = null\n  }\n\n  cycle(event) {\n    if (!event) {\n      this._isPaused = false\n    }\n\n    if (this._interval) {\n      clearInterval(this._interval)\n      this._interval = null\n    }\n\n    if (this._config && this._config.interval && !this._isPaused) {\n      this._updateInterval()\n\n      this._interval = setInterval(\n        (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n        this._config.interval\n      )\n    }\n  }\n\n  to(index) {\n    this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const activeIndex = this._getItemIndex(this._activeElement)\n\n    if (index > this._items.length - 1 || index < 0) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n      return\n    }\n\n    if (activeIndex === index) {\n      this.pause()\n      this.cycle()\n      return\n    }\n\n    const order = index > activeIndex ?\n      ORDER_NEXT :\n      ORDER_PREV\n\n    this._slide(order, this._items[index])\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' ? config : {})\n    }\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _handleSwipe() {\n    const absDeltax = Math.abs(this.touchDeltaX)\n\n    if (absDeltax <= SWIPE_THRESHOLD) {\n      return\n    }\n\n    const direction = absDeltax / this.touchDeltaX\n\n    this.touchDeltaX = 0\n\n    if (!direction) {\n      return\n    }\n\n    this._slide(direction > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT)\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event))\n      EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event))\n    }\n\n    if (this._config.touch && this._touchSupported) {\n      this._addTouchEventListeners()\n    }\n  }\n\n  _addTouchEventListeners() {\n    const start = event => {\n      if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n        this.touchStartX = event.clientX\n      } else if (!this._pointerEvent) {\n        this.touchStartX = event.touches[0].clientX\n      }\n    }\n\n    const move = event => {\n      // ensure swiping with one touch and not pinching\n      this.touchDeltaX = event.touches && event.touches.length > 1 ?\n        0 :\n        event.touches[0].clientX - this.touchStartX\n    }\n\n    const end = event => {\n      if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n        this.touchDeltaX = event.clientX - this.touchStartX\n      }\n\n      this._handleSwipe()\n      if (this._config.pause === 'hover') {\n        // If it's a touch-enabled device, mouseenter/leave are fired as\n        // part of the mouse compatibility events on first tap - the carousel\n        // would stop cycling until user tapped out of it;\n        // here, we listen for touchend, explicitly pause the carousel\n        // (as if it's the second time we tap on it, mouseenter compat event\n        // is NOT fired) and after a timeout (to allow for mouse compatibility\n        // events to fire) we explicitly restart cycling\n\n        this.pause()\n        if (this.touchTimeout) {\n          clearTimeout(this.touchTimeout)\n        }\n\n        this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n      }\n    }\n\n    SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {\n      EventHandler.on(itemImg, EVENT_DRAG_START, e => e.preventDefault())\n    })\n\n    if (this._pointerEvent) {\n      EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event))\n      EventHandler.on(this._element, EVENT_POINTERUP, event => end(event))\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n    } else {\n      EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event))\n      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event))\n      EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event))\n    }\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    const direction = KEY_TO_DIRECTION[event.key]\n    if (direction) {\n      event.preventDefault()\n      this._slide(direction)\n    }\n  }\n\n  _getItemIndex(element) {\n    this._items = element && element.parentNode ?\n      SelectorEngine.find(SELECTOR_ITEM, element.parentNode) :\n      []\n\n    return this._items.indexOf(element)\n  }\n\n  _getItemByOrder(order, activeElement) {\n    const isNext = order === ORDER_NEXT\n    return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap)\n  }\n\n  _triggerSlideEvent(relatedTarget, eventDirectionName) {\n    const targetIndex = this._getItemIndex(relatedTarget)\n    const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element))\n\n    return EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget,\n      direction: eventDirectionName,\n      from: fromIndex,\n      to: targetIndex\n    })\n  }\n\n  _setActiveIndicatorElement(element) {\n    if (this._indicatorsElement) {\n      const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n      activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n      activeIndicator.removeAttribute('aria-current')\n\n      const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement)\n\n      for (let i = 0; i < indicators.length; i++) {\n        if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {\n          indicators[i].classList.add(CLASS_NAME_ACTIVE)\n          indicators[i].setAttribute('aria-current', 'true')\n          break\n        }\n      }\n    }\n  }\n\n  _updateInterval() {\n    const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n\n    if (!element) {\n      return\n    }\n\n    const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n    if (elementInterval) {\n      this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n      this._config.interval = elementInterval\n    } else {\n      this._config.interval = this._config.defaultInterval || this._config.interval\n    }\n  }\n\n  _slide(directionOrOrder, element) {\n    const order = this._directionToOrder(directionOrOrder)\n    const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const activeElementIndex = this._getItemIndex(activeElement)\n    const nextElement = element || this._getItemByOrder(order, activeElement)\n\n    const nextElementIndex = this._getItemIndex(nextElement)\n    const isCycling = Boolean(this._interval)\n\n    const isNext = order === ORDER_NEXT\n    const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n    const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n    const eventDirectionName = this._orderToDirection(order)\n\n    if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {\n      this._isSliding = false\n      return\n    }\n\n    if (this._isSliding) {\n      return\n    }\n\n    const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (!activeElement || !nextElement) {\n      // Some weirdness is happening, so we bail\n      return\n    }\n\n    this._isSliding = true\n\n    if (isCycling) {\n      this.pause()\n    }\n\n    this._setActiveIndicatorElement(nextElement)\n    this._activeElement = nextElement\n\n    const triggerSlidEvent = () => {\n      EventHandler.trigger(this._element, EVENT_SLID, {\n        relatedTarget: nextElement,\n        direction: eventDirectionName,\n        from: activeElementIndex,\n        to: nextElementIndex\n      })\n    }\n\n    if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\n      nextElement.classList.add(orderClassName)\n\n      reflow(nextElement)\n\n      activeElement.classList.add(directionalClassName)\n      nextElement.classList.add(directionalClassName)\n\n      const completeCallBack = () => {\n        nextElement.classList.remove(directionalClassName, orderClassName)\n        nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n        activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n        this._isSliding = false\n\n        setTimeout(triggerSlidEvent, 0)\n      }\n\n      this._queueCallback(completeCallBack, activeElement, true)\n    } else {\n      activeElement.classList.remove(CLASS_NAME_ACTIVE)\n      nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n      this._isSliding = false\n      triggerSlidEvent()\n    }\n\n    if (isCycling) {\n      this.cycle()\n    }\n  }\n\n  _directionToOrder(direction) {\n    if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) {\n      return direction\n    }\n\n    if (isRTL()) {\n      return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n    }\n\n    return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n  }\n\n  _orderToDirection(order) {\n    if (![ORDER_NEXT, ORDER_PREV].includes(order)) {\n      return order\n    }\n\n    if (isRTL()) {\n      return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n    }\n\n    return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n  }\n\n  // Static\n\n  static carouselInterface(element, config) {\n    const data = Carousel.getOrCreateInstance(element, config)\n\n    let { _config } = data\n    if (typeof config === 'object') {\n      _config = {\n        ..._config,\n        ...config\n      }\n    }\n\n    const action = typeof config === 'string' ? config : _config.slide\n\n    if (typeof config === 'number') {\n      data.to(config)\n    } else if (typeof action === 'string') {\n      if (typeof data[action] === 'undefined') {\n        throw new TypeError(`No method named \"${action}\"`)\n      }\n\n      data[action]()\n    } else if (_config.interval && _config.ride) {\n      data.pause()\n      data.cycle()\n    }\n  }\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      Carousel.carouselInterface(this, config)\n    })\n  }\n\n  static dataApiClickHandler(event) {\n    const target = getElementFromSelector(this)\n\n    if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n      return\n    }\n\n    const config = {\n      ...Manipulator.getDataAttributes(target),\n      ...Manipulator.getDataAttributes(this)\n    }\n    const slideIndex = this.getAttribute('data-bs-slide-to')\n\n    if (slideIndex) {\n      config.interval = false\n    }\n\n    Carousel.carouselInterface(target, config)\n\n    if (slideIndex) {\n      Carousel.getInstance(target).to(slideIndex)\n    }\n\n    event.preventDefault()\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler)\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n  for (let i = 0, len = carousels.length; i < len; i++) {\n    Carousel.carouselInterface(carousels[i], Carousel.getInstance(carousels[i]))\n  }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Carousel to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElement,\n  getSelectorFromElement,\n  getElementFromSelector,\n  reflow,\n  typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n  toggle: true,\n  parent: ''\n}\n\nconst DefaultType = {\n  toggle: 'boolean',\n  parent: '(string|element)'\n}\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._isTransitioning = false\n    this._config = this._getConfig(config)\n    this._triggerArray = SelectorEngine.find(\n      `${SELECTOR_DATA_TOGGLE}[href=\"#${this._element.id}\"],` +\n      `${SELECTOR_DATA_TOGGLE}[data-bs-target=\"#${this._element.id}\"]`\n    )\n\n    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (let i = 0, len = toggleList.length; i < len; i++) {\n      const elem = toggleList[i]\n      const selector = getSelectorFromElement(elem)\n      const filterElement = SelectorEngine.find(selector)\n        .filter(foundElem => foundElem === this._element)\n\n      if (selector !== null && filterElement.length) {\n        this._selector = selector\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._parent = this._config.parent ? this._getParent() : null\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  toggle() {\n    if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    let actives\n    let activesData\n\n    if (this._parent) {\n      actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent)\n        .filter(elem => {\n          if (typeof this._config.parent === 'string') {\n            return elem.getAttribute('data-bs-parent') === this._config.parent\n          }\n\n          return elem.classList.contains(CLASS_NAME_COLLAPSE)\n        })\n\n      if (actives.length === 0) {\n        actives = null\n      }\n    }\n\n    const container = SelectorEngine.findOne(this._selector)\n    if (actives) {\n      const tempActiveData = actives.find(elem => container !== elem)\n      activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null\n\n      if (activesData && activesData._isTransitioning) {\n        return\n      }\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    if (actives) {\n      actives.forEach(elemActive => {\n        if (container !== elemActive) {\n          Collapse.collapseInterface(elemActive, 'hide')\n        }\n\n        if (!activesData) {\n          Data.set(elemActive, DATA_KEY, null)\n        }\n      })\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.classList.remove(CLASS_NAME_COLLAPSE)\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    if (this._triggerArray.length) {\n      this._triggerArray.forEach(element => {\n        element.classList.remove(CLASS_NAME_COLLAPSED)\n        element.setAttribute('aria-expanded', true)\n      })\n    }\n\n    this.setTransitioning(true)\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n      this._element.style[dimension] = ''\n\n      this.setTransitioning(false)\n\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n\n    this._queueCallback(complete, this._element, true)\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n    const triggerArrayLength = this._triggerArray.length\n    if (triggerArrayLength > 0) {\n      for (let i = 0; i < triggerArrayLength; i++) {\n        const trigger = this._triggerArray[i]\n        const elem = getElementFromSelector(trigger)\n\n        if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) {\n          trigger.classList.add(CLASS_NAME_COLLAPSED)\n          trigger.setAttribute('aria-expanded', false)\n        }\n      }\n    }\n\n    this.setTransitioning(true)\n\n    const complete = () => {\n      this.setTransitioning(false)\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n\n    this._queueCallback(complete, this._element, true)\n  }\n\n  setTransitioning(isTransitioning) {\n    this._isTransitioning = isTransitioning\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...config\n    }\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _getDimension() {\n    return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT\n  }\n\n  _getParent() {\n    let { parent } = this._config\n\n    parent = getElement(parent)\n\n    const selector = `${SELECTOR_DATA_TOGGLE}[data-bs-parent=\"${parent}\"]`\n\n    SelectorEngine.find(selector, parent)\n      .forEach(element => {\n        const selected = getElementFromSelector(element)\n\n        this._addAriaAndCollapsedClass(\n          selected,\n          [element]\n        )\n      })\n\n    return parent\n  }\n\n  _addAriaAndCollapsedClass(element, triggerArray) {\n    if (!element || !triggerArray.length) {\n      return\n    }\n\n    const isOpen = element.classList.contains(CLASS_NAME_SHOW)\n\n    triggerArray.forEach(elem => {\n      if (isOpen) {\n        elem.classList.remove(CLASS_NAME_COLLAPSED)\n      } else {\n        elem.classList.add(CLASS_NAME_COLLAPSED)\n      }\n\n      elem.setAttribute('aria-expanded', isOpen)\n    })\n  }\n\n  // Static\n\n  static collapseInterface(element, config) {\n    let data = Collapse.getInstance(element)\n    const _config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(element),\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n      _config.toggle = false\n    }\n\n    if (!data) {\n      data = new Collapse(element, _config)\n    }\n\n    if (typeof config === 'string') {\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    }\n  }\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      Collapse.collapseInterface(this, config)\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n    event.preventDefault()\n  }\n\n  const triggerData = Manipulator.getDataAttributes(this)\n  const selector = getSelectorFromElement(this)\n  const selectorElements = SelectorEngine.find(selector)\n\n  selectorElements.forEach(element => {\n    const data = Collapse.getInstance(element)\n    let config\n    if (data) {\n      // update parent attribute\n      if (data._parent === null && typeof triggerData.parent === 'string') {\n        data._config.parent = triggerData.parent\n        data._parent = data._getParent()\n      }\n\n      config = 'toggle'\n    } else {\n      config = triggerData\n    }\n\n    Collapse.collapseInterface(element, config)\n  })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Collapse to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n  return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n  return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n  return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n  if (node == null) {\n    return window;\n  }\n\n  if (node.toString() !== '[object Window]') {\n    var ownerDocument = node.ownerDocument;\n    return ownerDocument ? ownerDocument.defaultView || window : window;\n  }\n\n  return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n  var OwnElement = getWindow(node).Element;\n  return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n  var OwnElement = getWindow(node).HTMLElement;\n  return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n  // IE 11 has no ShadowRoot\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n\n  var OwnElement = getWindow(node).ShadowRoot;\n  return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n  var state = _ref.state;\n  Object.keys(state.elements).forEach(function (name) {\n    var style = state.styles[name] || {};\n    var attributes = state.attributes[name] || {};\n    var element = state.elements[name]; // arrow is optional + virtual elements\n\n    if (!isHTMLElement(element) || !getNodeName(element)) {\n      return;\n    } // Flow doesn't support to extend this property, but it's the most\n    // effective way to apply styles to an HTMLElement\n    // $FlowFixMe[cannot-write]\n\n\n    Object.assign(element.style, style);\n    Object.keys(attributes).forEach(function (name) {\n      var value = attributes[name];\n\n      if (value === false) {\n        element.removeAttribute(name);\n      } else {\n        element.setAttribute(name, value === true ? '' : value);\n      }\n    });\n  });\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state;\n  var initialStyles = {\n    popper: {\n      position: state.options.strategy,\n      left: '0',\n      top: '0',\n      margin: '0'\n    },\n    arrow: {\n      position: 'absolute'\n    },\n    reference: {}\n  };\n  Object.assign(state.elements.popper.style, initialStyles.popper);\n  state.styles = initialStyles;\n\n  if (state.elements.arrow) {\n    Object.assign(state.elements.arrow.style, initialStyles.arrow);\n  }\n\n  return function () {\n    Object.keys(state.elements).forEach(function (name) {\n      var element = state.elements[name];\n      var attributes = state.attributes[name] || {};\n      var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n      var style = styleProperties.reduce(function (style, property) {\n        style[property] = '';\n        return style;\n      }, {}); // arrow is optional + virtual elements\n\n      if (!isHTMLElement(element) || !getNodeName(element)) {\n        return;\n      }\n\n      Object.assign(element.style, style);\n      Object.keys(attributes).forEach(function (attribute) {\n        element.removeAttribute(attribute);\n      });\n    });\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'applyStyles',\n  enabled: true,\n  phase: 'write',\n  fn: applyStyles,\n  effect: effect,\n  requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n  return placement.split('-')[0];\n}","export default function getBoundingClientRect(element) {\n  var rect = element.getBoundingClientRect();\n  return {\n    width: rect.width,\n    height: rect.height,\n    top: rect.top,\n    right: rect.right,\n    bottom: rect.bottom,\n    left: rect.left,\n    x: rect.left,\n    y: rect.top\n  };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n  var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n  // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n  var width = element.offsetWidth;\n  var height = element.offsetHeight;\n\n  if (Math.abs(clientRect.width - width) <= 1) {\n    width = clientRect.width;\n  }\n\n  if (Math.abs(clientRect.height - height) <= 1) {\n    height = clientRect.height;\n  }\n\n  return {\n    x: element.offsetLeft,\n    y: element.offsetTop,\n    width: width,\n    height: height\n  };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n  var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n  if (parent.contains(child)) {\n    return true;\n  } // then fallback to custom implementation with Shadow DOM support\n  else if (rootNode && isShadowRoot(rootNode)) {\n      var next = child;\n\n      do {\n        if (next && parent.isSameNode(next)) {\n          return true;\n        } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n        next = next.parentNode || next.host;\n      } while (next);\n    } // Give up, the result is false\n\n\n  return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n  return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n  // $FlowFixMe[incompatible-return]: assume body is always available\n  return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n  element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n  if (getNodeName(element) === 'html') {\n    return element;\n  }\n\n  return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n    // $FlowFixMe[incompatible-return]\n    // $FlowFixMe[prop-missing]\n    element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n    element.parentNode || ( // DOM Element detected\n    isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n    // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n    getDocumentElement(element) // fallback\n\n  );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\n\nfunction getTrueOffsetParent(element) {\n  if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n  getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n\n  return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n  var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1;\n  var isIE = navigator.userAgent.indexOf('Trident') !== -1;\n\n  if (isIE && isHTMLElement(element)) {\n    // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n    var elementCss = getComputedStyle(element);\n\n    if (elementCss.position === 'fixed') {\n      return null;\n    }\n  }\n\n  var currentNode = getParentNode(element);\n\n  while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n    var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n    // create a containing block.\n    // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n    if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n      return currentNode;\n    } else {\n      currentNode = currentNode.parentNode;\n    }\n  }\n\n  return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n  var window = getWindow(element);\n  var offsetParent = getTrueOffsetParent(element);\n\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent);\n  }\n\n  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n    return window;\n  }\n\n  return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n  return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport default function within(min, value, max) {\n  return mathMax(min, mathMin(value, max));\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n  return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  };\n}","export default function expandToHashMap(value, keys) {\n  return keys.reduce(function (hashMap, key) {\n    hashMap[key] = value;\n    return hashMap;\n  }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport within from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n  padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : padding;\n  return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n  var _state$modifiersData$;\n\n  var state = _ref.state,\n      name = _ref.name,\n      options = _ref.options;\n  var arrowElement = state.elements.arrow;\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var basePlacement = getBasePlacement(state.placement);\n  var axis = getMainAxisFromPlacement(basePlacement);\n  var isVertical = [left, right].indexOf(basePlacement) >= 0;\n  var len = isVertical ? 'height' : 'width';\n\n  if (!arrowElement || !popperOffsets) {\n    return;\n  }\n\n  var paddingObject = toPaddingObject(options.padding, state);\n  var arrowRect = getLayoutRect(arrowElement);\n  var minProp = axis === 'y' ? top : left;\n  var maxProp = axis === 'y' ? bottom : right;\n  var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n  var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n  var arrowOffsetParent = getOffsetParent(arrowElement);\n  var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n  var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n  // outside of the popper bounds\n\n  var min = paddingObject[minProp];\n  var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n  var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n  var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n  var axisProp = axis;\n  state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options;\n  var _options$element = options.element,\n      arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n  if (arrowElement == null) {\n    return;\n  } // CSS selector\n\n\n  if (typeof arrowElement === 'string') {\n    arrowElement = state.elements.popper.querySelector(arrowElement);\n\n    if (!arrowElement) {\n      return;\n    }\n  }\n\n  if (process.env.NODE_ENV !== \"production\") {\n    if (!isHTMLElement(arrowElement)) {\n      console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n    }\n  }\n\n  if (!contains(state.elements.popper, arrowElement)) {\n    if (process.env.NODE_ENV !== \"production\") {\n      console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n    }\n\n    return;\n  }\n\n  state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'arrow',\n  enabled: true,\n  phase: 'main',\n  fn: arrow,\n  effect: effect,\n  requires: ['popperOffsets'],\n  requiresIfExists: ['preventOverflow']\n};","import { top, left, right, bottom } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n  top: 'auto',\n  right: 'auto',\n  bottom: 'auto',\n  left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n  var x = _ref.x,\n      y = _ref.y;\n  var win = window;\n  var dpr = win.devicePixelRatio || 1;\n  return {\n    x: round(round(x * dpr) / dpr) || 0,\n    y: round(round(y * dpr) / dpr) || 0\n  };\n}\n\nexport function mapToStyles(_ref2) {\n  var _Object$assign2;\n\n  var popper = _ref2.popper,\n      popperRect = _ref2.popperRect,\n      placement = _ref2.placement,\n      offsets = _ref2.offsets,\n      position = _ref2.position,\n      gpuAcceleration = _ref2.gpuAcceleration,\n      adaptive = _ref2.adaptive,\n      roundOffsets = _ref2.roundOffsets;\n\n  var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === 'function' ? roundOffsets(offsets) : offsets,\n      _ref3$x = _ref3.x,\n      x = _ref3$x === void 0 ? 0 : _ref3$x,\n      _ref3$y = _ref3.y,\n      y = _ref3$y === void 0 ? 0 : _ref3$y;\n\n  var hasX = offsets.hasOwnProperty('x');\n  var hasY = offsets.hasOwnProperty('y');\n  var sideX = left;\n  var sideY = top;\n  var win = window;\n\n  if (adaptive) {\n    var offsetParent = getOffsetParent(popper);\n    var heightProp = 'clientHeight';\n    var widthProp = 'clientWidth';\n\n    if (offsetParent === getWindow(popper)) {\n      offsetParent = getDocumentElement(popper);\n\n      if (getComputedStyle(offsetParent).position !== 'static') {\n        heightProp = 'scrollHeight';\n        widthProp = 'scrollWidth';\n      }\n    } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n    offsetParent = offsetParent;\n\n    if (placement === top) {\n      sideY = bottom; // $FlowFixMe[prop-missing]\n\n      y -= offsetParent[heightProp] - popperRect.height;\n      y *= gpuAcceleration ? 1 : -1;\n    }\n\n    if (placement === left) {\n      sideX = right; // $FlowFixMe[prop-missing]\n\n      x -= offsetParent[widthProp] - popperRect.width;\n      x *= gpuAcceleration ? 1 : -1;\n    }\n  }\n\n  var commonStyles = Object.assign({\n    position: position\n  }, adaptive && unsetSides);\n\n  if (gpuAcceleration) {\n    var _Object$assign;\n\n    return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n  }\n\n  return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref4) {\n  var state = _ref4.state,\n      options = _ref4.options;\n  var _options$gpuAccelerat = options.gpuAcceleration,\n      gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n      _options$adaptive = options.adaptive,\n      adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n      _options$roundOffsets = options.roundOffsets,\n      roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n  if (process.env.NODE_ENV !== \"production\") {\n    var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n    if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n      return transitionProperty.indexOf(property) >= 0;\n    })) {\n      console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n    }\n  }\n\n  var commonStyles = {\n    placement: getBasePlacement(state.placement),\n    popper: state.elements.popper,\n    popperRect: state.rects.popper,\n    gpuAcceleration: gpuAcceleration\n  };\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.popperOffsets,\n      position: state.options.strategy,\n      adaptive: adaptive,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  if (state.modifiersData.arrow != null) {\n    state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.arrow,\n      position: 'absolute',\n      adaptive: false,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-placement': state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'computeStyles',\n  enabled: true,\n  phase: 'beforeWrite',\n  fn: computeStyles,\n  data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n  passive: true\n};\n\nfunction effect(_ref) {\n  var state = _ref.state,\n      instance = _ref.instance,\n      options = _ref.options;\n  var _options$scroll = options.scroll,\n      scroll = _options$scroll === void 0 ? true : _options$scroll,\n      _options$resize = options.resize,\n      resize = _options$resize === void 0 ? true : _options$resize;\n  var window = getWindow(state.elements.popper);\n  var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n  if (scroll) {\n    scrollParents.forEach(function (scrollParent) {\n      scrollParent.addEventListener('scroll', instance.update, passive);\n    });\n  }\n\n  if (resize) {\n    window.addEventListener('resize', instance.update, passive);\n  }\n\n  return function () {\n    if (scroll) {\n      scrollParents.forEach(function (scrollParent) {\n        scrollParent.removeEventListener('scroll', instance.update, passive);\n      });\n    }\n\n    if (resize) {\n      window.removeEventListener('resize', instance.update, passive);\n    }\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'eventListeners',\n  enabled: true,\n  phase: 'write',\n  fn: function fn() {},\n  effect: effect,\n  data: {}\n};","var hash = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}","var hash = {\n  start: 'end',\n  end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n  return placement.replace(/start|end/g, function (matched) {\n    return hash[matched];\n  });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n  var win = getWindow(node);\n  var scrollLeft = win.pageXOffset;\n  var scrollTop = win.pageYOffset;\n  return {\n    scrollLeft: scrollLeft,\n    scrollTop: scrollTop\n  };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  // Popper 1 is broken in this case and never had a bug report so let's assume\n  // it's not an issue. I don't think anyone ever specifies width on <html>\n  // anyway.\n  // Browsers where the left scrollbar doesn't cause an issue report `0` for\n  // this (e.g. Edge 2019, IE11, Safari)\n  return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n  // Firefox wants us to check `-x` and `-y` variations as well\n  var _getComputedStyle = getComputedStyle(element),\n      overflow = _getComputedStyle.overflow,\n      overflowX = _getComputedStyle.overflowX,\n      overflowY = _getComputedStyle.overflowY;\n\n  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n  var _element$ownerDocumen;\n\n  if (list === void 0) {\n    list = [];\n  }\n\n  var scrollParent = getScrollParent(element);\n  var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n  var win = getWindow(scrollParent);\n  var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n  var updatedList = list.concat(target);\n  return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n  updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n  if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n    // $FlowFixMe[incompatible-return]: assume body is always available\n    return node.ownerDocument.body;\n  }\n\n  if (isHTMLElement(node) && isScrollParent(node)) {\n    return node;\n  }\n\n  return getScrollParent(getParentNode(node));\n}","export default function rectToClientRect(rect) {\n  return Object.assign({}, rect, {\n    left: rect.x,\n    top: rect.y,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element) {\n  var rect = getBoundingClientRect(element);\n  rect.top = rect.top + element.clientTop;\n  rect.left = rect.left + element.clientLeft;\n  rect.bottom = rect.top + element.clientHeight;\n  rect.right = rect.left + element.clientWidth;\n  rect.width = element.clientWidth;\n  rect.height = element.clientHeight;\n  rect.x = rect.left;\n  rect.y = rect.top;\n  return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent) {\n  return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n  var clippingParents = listScrollParents(getParentNode(element));\n  var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n  var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n  if (!isElement(clipperElement)) {\n    return [];\n  } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n  return clippingParents.filter(function (clippingParent) {\n    return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n  });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary) {\n  var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n  var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n  var firstClippingParent = clippingParents[0];\n  var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n    var rect = getClientRectFromMixedType(element, clippingParent);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromMixedType(element, firstClippingParent));\n  clippingRect.width = clippingRect.right - clippingRect.left;\n  clippingRect.height = clippingRect.bottom - clippingRect.top;\n  clippingRect.x = clippingRect.left;\n  clippingRect.y = clippingRect.top;\n  return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nexport default function getViewportRect(element) {\n  var win = getWindow(element);\n  var html = getDocumentElement(element);\n  var visualViewport = win.visualViewport;\n  var width = html.clientWidth;\n  var height = html.clientHeight;\n  var x = 0;\n  var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper\n  // can be obscured underneath it.\n  // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even\n  // if it isn't open, so if this isn't available, the popper will be detected\n  // to overflow the bottom of the screen too early.\n\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)\n    // In Chrome, it returns a value very close to 0 (+/-) but contains rounding\n    // errors due to floating point numbers, so we need to check precision.\n    // Safari returns a number <= 0, usually < -1 when pinch-zoomed\n    // Feature detection fails in mobile emulation mode in Chrome.\n    // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <\n    // 0.001\n    // Fallback here: \"Not Safari\" userAgent\n\n    if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x + getWindowScrollBarX(element),\n    y: y\n  };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n  var _element$ownerDocumen;\n\n  var html = getDocumentElement(element);\n  var winScroll = getWindowScroll(element);\n  var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n  var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n  var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n  var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n  var y = -winScroll.scrollTop;\n\n  if (getComputedStyle(body || html).direction === 'rtl') {\n    x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x,\n    y: y\n  };\n}","export default function getVariation(placement) {\n  return placement.split('-')[1];\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n  var reference = _ref.reference,\n      element = _ref.element,\n      placement = _ref.placement;\n  var basePlacement = placement ? getBasePlacement(placement) : null;\n  var variation = placement ? getVariation(placement) : null;\n  var commonX = reference.x + reference.width / 2 - element.width / 2;\n  var commonY = reference.y + reference.height / 2 - element.height / 2;\n  var offsets;\n\n  switch (basePlacement) {\n    case top:\n      offsets = {\n        x: commonX,\n        y: reference.y - element.height\n      };\n      break;\n\n    case bottom:\n      offsets = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n\n    case right:\n      offsets = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n\n    case left:\n      offsets = {\n        x: reference.x - element.width,\n        y: commonY\n      };\n      break;\n\n    default:\n      offsets = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n\n  var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n  if (mainAxis != null) {\n    var len = mainAxis === 'y' ? 'height' : 'width';\n\n    switch (variation) {\n      case start:\n        offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n        break;\n\n      case end:\n        offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n        break;\n\n      default:\n    }\n  }\n\n  return offsets;\n}","import getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      _options$placement = _options.placement,\n      placement = _options$placement === void 0 ? state.placement : _options$placement,\n      _options$boundary = _options.boundary,\n      boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n      _options$rootBoundary = _options.rootBoundary,\n      rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n      _options$elementConte = _options.elementContext,\n      elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n      _options$altBoundary = _options.altBoundary,\n      altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n      _options$padding = _options.padding,\n      padding = _options$padding === void 0 ? 0 : _options$padding;\n  var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n  var altContext = elementContext === popper ? reference : popper;\n  var referenceElement = state.elements.reference;\n  var popperRect = state.rects.popper;\n  var element = state.elements[altBoundary ? altContext : elementContext];\n  var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);\n  var referenceClientRect = getBoundingClientRect(referenceElement);\n  var popperOffsets = computeOffsets({\n    reference: referenceClientRect,\n    element: popperRect,\n    strategy: 'absolute',\n    placement: placement\n  });\n  var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n  var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n  // 0 or negative = within the clipping rect\n\n  var overflowOffsets = {\n    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n    bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n    right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n  };\n  var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n  if (elementContext === popper && offsetData) {\n    var offset = offsetData[placement];\n    Object.keys(overflowOffsets).forEach(function (key) {\n      var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n      var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n      overflowOffsets[key] += offset[axis] * multiply;\n    });\n  }\n\n  return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      placement = _options.placement,\n      boundary = _options.boundary,\n      rootBoundary = _options.rootBoundary,\n      padding = _options.padding,\n      flipVariations = _options.flipVariations,\n      _options$allowedAutoP = _options.allowedAutoPlacements,\n      allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n  var variation = getVariation(placement);\n  var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n    return getVariation(placement) === variation;\n  }) : basePlacements;\n  var allowedPlacements = placements.filter(function (placement) {\n    return allowedAutoPlacements.indexOf(placement) >= 0;\n  });\n\n  if (allowedPlacements.length === 0) {\n    allowedPlacements = placements;\n\n    if (process.env.NODE_ENV !== \"production\") {\n      console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n    }\n  } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n  var overflows = allowedPlacements.reduce(function (acc, placement) {\n    acc[placement] = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding\n    })[getBasePlacement(placement)];\n    return acc;\n  }, {});\n  return Object.keys(overflows).sort(function (a, b) {\n    return overflows[a] - overflows[b];\n  });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n  if (getBasePlacement(placement) === auto) {\n    return [];\n  }\n\n  var oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n\n  if (state.modifiersData[name]._skip) {\n    return;\n  }\n\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n      specifiedFallbackPlacements = options.fallbackPlacements,\n      padding = options.padding,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      _options$flipVariatio = options.flipVariations,\n      flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n      allowedAutoPlacements = options.allowedAutoPlacements;\n  var preferredPlacement = state.options.placement;\n  var basePlacement = getBasePlacement(preferredPlacement);\n  var isBasePlacement = basePlacement === preferredPlacement;\n  var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n  var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n    return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding,\n      flipVariations: flipVariations,\n      allowedAutoPlacements: allowedAutoPlacements\n    }) : placement);\n  }, []);\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var checksMap = new Map();\n  var makeFallbackChecks = true;\n  var firstFittingPlacement = placements[0];\n\n  for (var i = 0; i < placements.length; i++) {\n    var placement = placements[i];\n\n    var _basePlacement = getBasePlacement(placement);\n\n    var isStartVariation = getVariation(placement) === start;\n    var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n    var len = isVertical ? 'width' : 'height';\n    var overflow = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      altBoundary: altBoundary,\n      padding: padding\n    });\n    var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n    if (referenceRect[len] > popperRect[len]) {\n      mainVariationSide = getOppositePlacement(mainVariationSide);\n    }\n\n    var altVariationSide = getOppositePlacement(mainVariationSide);\n    var checks = [];\n\n    if (checkMainAxis) {\n      checks.push(overflow[_basePlacement] <= 0);\n    }\n\n    if (checkAltAxis) {\n      checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n    }\n\n    if (checks.every(function (check) {\n      return check;\n    })) {\n      firstFittingPlacement = placement;\n      makeFallbackChecks = false;\n      break;\n    }\n\n    checksMap.set(placement, checks);\n  }\n\n  if (makeFallbackChecks) {\n    // `2` may be desired in some cases – research later\n    var numberOfChecks = flipVariations ? 3 : 1;\n\n    var _loop = function _loop(_i) {\n      var fittingPlacement = placements.find(function (placement) {\n        var checks = checksMap.get(placement);\n\n        if (checks) {\n          return checks.slice(0, _i).every(function (check) {\n            return check;\n          });\n        }\n      });\n\n      if (fittingPlacement) {\n        firstFittingPlacement = fittingPlacement;\n        return \"break\";\n      }\n    };\n\n    for (var _i = numberOfChecks; _i > 0; _i--) {\n      var _ret = _loop(_i);\n\n      if (_ret === \"break\") break;\n    }\n  }\n\n  if (state.placement !== firstFittingPlacement) {\n    state.modifiersData[name]._skip = true;\n    state.placement = firstFittingPlacement;\n    state.reset = true;\n  }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'flip',\n  enabled: true,\n  phase: 'main',\n  fn: flip,\n  requiresIfExists: ['offset'],\n  data: {\n    _skip: false\n  }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n  if (preventedOffsets === void 0) {\n    preventedOffsets = {\n      x: 0,\n      y: 0\n    };\n  }\n\n  return {\n    top: overflow.top - rect.height - preventedOffsets.y,\n    right: overflow.right - rect.width + preventedOffsets.x,\n    bottom: overflow.bottom - rect.height + preventedOffsets.y,\n    left: overflow.left - rect.width - preventedOffsets.x\n  };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n  return [top, right, bottom, left].some(function (side) {\n    return overflow[side] >= 0;\n  });\n}\n\nfunction hide(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var preventedOffsets = state.modifiersData.preventOverflow;\n  var referenceOverflow = detectOverflow(state, {\n    elementContext: 'reference'\n  });\n  var popperAltOverflow = detectOverflow(state, {\n    altBoundary: true\n  });\n  var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n  var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n  var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n  var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n  state.modifiersData[name] = {\n    referenceClippingOffsets: referenceClippingOffsets,\n    popperEscapeOffsets: popperEscapeOffsets,\n    isReferenceHidden: isReferenceHidden,\n    hasPopperEscaped: hasPopperEscaped\n  };\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-reference-hidden': isReferenceHidden,\n    'data-popper-escaped': hasPopperEscaped\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'hide',\n  enabled: true,\n  phase: 'main',\n  requiresIfExists: ['preventOverflow'],\n  fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\";\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n  var basePlacement = getBasePlacement(placement);\n  var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n  var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n    placement: placement\n  })) : offset,\n      skidding = _ref[0],\n      distance = _ref[1];\n\n  skidding = skidding || 0;\n  distance = (distance || 0) * invertDistance;\n  return [left, right].indexOf(basePlacement) >= 0 ? {\n    x: distance,\n    y: skidding\n  } : {\n    x: skidding,\n    y: distance\n  };\n}\n\nfunction offset(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options,\n      name = _ref2.name;\n  var _options$offset = options.offset,\n      offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n  var data = placements.reduce(function (acc, placement) {\n    acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n    return acc;\n  }, {});\n  var _data$state$placement = data[state.placement],\n      x = _data$state$placement.x,\n      y = _data$state$placement.y;\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.modifiersData.popperOffsets.x += x;\n    state.modifiersData.popperOffsets.y += y;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'offset',\n  enabled: true,\n  phase: 'main',\n  requires: ['popperOffsets'],\n  fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  // Offsets are the actual position the popper needs to have to be\n  // properly positioned near its reference element\n  // This is the most basic placement, and will be adjusted by\n  // the modifiers in the next step\n  state.modifiersData[name] = computeOffsets({\n    reference: state.rects.reference,\n    element: state.rects.popper,\n    strategy: 'absolute',\n    placement: state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'popperOffsets',\n  enabled: true,\n  phase: 'read',\n  fn: popperOffsets,\n  data: {}\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport within from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { max as mathMax, min as mathMin } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      padding = options.padding,\n      _options$tether = options.tether,\n      tether = _options$tether === void 0 ? true : _options$tether,\n      _options$tetherOffset = options.tetherOffset,\n      tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n  var overflow = detectOverflow(state, {\n    boundary: boundary,\n    rootBoundary: rootBoundary,\n    padding: padding,\n    altBoundary: altBoundary\n  });\n  var basePlacement = getBasePlacement(state.placement);\n  var variation = getVariation(state.placement);\n  var isBasePlacement = !variation;\n  var mainAxis = getMainAxisFromPlacement(basePlacement);\n  var altAxis = getAltAxis(mainAxis);\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : tetherOffset;\n  var data = {\n    x: 0,\n    y: 0\n  };\n\n  if (!popperOffsets) {\n    return;\n  }\n\n  if (checkMainAxis || checkAltAxis) {\n    var mainSide = mainAxis === 'y' ? top : left;\n    var altSide = mainAxis === 'y' ? bottom : right;\n    var len = mainAxis === 'y' ? 'height' : 'width';\n    var offset = popperOffsets[mainAxis];\n    var min = popperOffsets[mainAxis] + overflow[mainSide];\n    var max = popperOffsets[mainAxis] - overflow[altSide];\n    var additive = tether ? -popperRect[len] / 2 : 0;\n    var minLen = variation === start ? referenceRect[len] : popperRect[len];\n    var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n    // outside the reference bounds\n\n    var arrowElement = state.elements.arrow;\n    var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n      width: 0,\n      height: 0\n    };\n    var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n    var arrowPaddingMin = arrowPaddingObject[mainSide];\n    var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n    // to include its full size in the calculation. If the reference is small\n    // and near the edge of a boundary, the popper can overflow even if the\n    // reference is not overflowing as well (e.g. virtual elements with no\n    // width or height)\n\n    var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n    var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;\n    var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;\n    var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n    var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n    var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0;\n    var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset;\n    var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue;\n\n    if (checkMainAxis) {\n      var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n      popperOffsets[mainAxis] = preventedOffset;\n      data[mainAxis] = preventedOffset - offset;\n    }\n\n    if (checkAltAxis) {\n      var _mainSide = mainAxis === 'x' ? top : left;\n\n      var _altSide = mainAxis === 'x' ? bottom : right;\n\n      var _offset = popperOffsets[altAxis];\n\n      var _min = _offset + overflow[_mainSide];\n\n      var _max = _offset - overflow[_altSide];\n\n      var _preventedOffset = within(tether ? mathMin(_min, tetherMin) : _min, _offset, tether ? mathMax(_max, tetherMax) : _max);\n\n      popperOffsets[altAxis] = _preventedOffset;\n      data[altAxis] = _preventedOffset - _offset;\n    }\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'preventOverflow',\n  enabled: true,\n  phase: 'main',\n  fn: preventOverflow,\n  requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\"; // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n\n  var documentElement = getDocumentElement(offsetParent);\n  var rect = getBoundingClientRect(elementOrVirtualElement);\n  var isOffsetParentAnElement = isHTMLElement(offsetParent);\n  var scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  var offsets = {\n    x: 0,\n    y: 0\n  };\n\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n    isScrollParent(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n\n    if (isHTMLElement(offsetParent)) {\n      offsets = getBoundingClientRect(offsetParent);\n      offsets.x += offsetParent.clientLeft;\n      offsets.y += offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height\n  };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n  if (node === getWindow(node) || !isHTMLElement(node)) {\n    return getWindowScroll(node);\n  } else {\n    return getHTMLElementScroll(node);\n  }\n}","export default function getHTMLElementScroll(element) {\n  return {\n    scrollLeft: element.scrollLeft,\n    scrollTop: element.scrollTop\n  };\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n  placement: 'bottom',\n  modifiers: [],\n  strategy: 'absolute'\n};\n\nfunction areValidElements() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return !args.some(function (element) {\n    return !(element && typeof element.getBoundingClientRect === 'function');\n  });\n}\n\nexport function popperGenerator(generatorOptions) {\n  if (generatorOptions === void 0) {\n    generatorOptions = {};\n  }\n\n  var _generatorOptions = generatorOptions,\n      _generatorOptions$def = _generatorOptions.defaultModifiers,\n      defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n      _generatorOptions$def2 = _generatorOptions.defaultOptions,\n      defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n  return function createPopper(reference, popper, options) {\n    if (options === void 0) {\n      options = defaultOptions;\n    }\n\n    var state = {\n      placement: 'bottom',\n      orderedModifiers: [],\n      options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n      modifiersData: {},\n      elements: {\n        reference: reference,\n        popper: popper\n      },\n      attributes: {},\n      styles: {}\n    };\n    var effectCleanupFns = [];\n    var isDestroyed = false;\n    var instance = {\n      state: state,\n      setOptions: function setOptions(options) {\n        cleanupModifierEffects();\n        state.options = Object.assign({}, defaultOptions, state.options, options);\n        state.scrollParents = {\n          reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n          popper: listScrollParents(popper)\n        }; // Orders the modifiers based on their dependencies and `phase`\n        // properties\n\n        var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n        state.orderedModifiers = orderedModifiers.filter(function (m) {\n          return m.enabled;\n        }); // Validate the provided modifiers so that the consumer will get warned\n        // if one of the modifiers is invalid for any reason\n\n        if (process.env.NODE_ENV !== \"production\") {\n          var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n            var name = _ref.name;\n            return name;\n          });\n          validateModifiers(modifiers);\n\n          if (getBasePlacement(state.options.placement) === auto) {\n            var flipModifier = state.orderedModifiers.find(function (_ref2) {\n              var name = _ref2.name;\n              return name === 'flip';\n            });\n\n            if (!flipModifier) {\n              console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n            }\n          }\n\n          var _getComputedStyle = getComputedStyle(popper),\n              marginTop = _getComputedStyle.marginTop,\n              marginRight = _getComputedStyle.marginRight,\n              marginBottom = _getComputedStyle.marginBottom,\n              marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n          // cause bugs with positioning, so we'll warn the consumer\n\n\n          if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n            return parseFloat(margin);\n          })) {\n            console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n          }\n        }\n\n        runModifierEffects();\n        return instance.update();\n      },\n      // Sync update – it will always be executed, even if not necessary. This\n      // is useful for low frequency updates where sync behavior simplifies the\n      // logic.\n      // For high frequency updates (e.g. `resize` and `scroll` events), always\n      // prefer the async Popper#update method\n      forceUpdate: function forceUpdate() {\n        if (isDestroyed) {\n          return;\n        }\n\n        var _state$elements = state.elements,\n            reference = _state$elements.reference,\n            popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n        // anymore\n\n        if (!areValidElements(reference, popper)) {\n          if (process.env.NODE_ENV !== \"production\") {\n            console.error(INVALID_ELEMENT_ERROR);\n          }\n\n          return;\n        } // Store the reference and popper rects to be read by modifiers\n\n\n        state.rects = {\n          reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n          popper: getLayoutRect(popper)\n        }; // Modifiers have the ability to reset the current update cycle. The\n        // most common use case for this is the `flip` modifier changing the\n        // placement, which then needs to re-run all the modifiers, because the\n        // logic was previously ran for the previous placement and is therefore\n        // stale/incorrect\n\n        state.reset = false;\n        state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n        // is filled with the initial data specified by the modifier. This means\n        // it doesn't persist and is fresh on each update.\n        // To ensure persistent data, use `${name}#persistent`\n\n        state.orderedModifiers.forEach(function (modifier) {\n          return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n        });\n        var __debug_loops__ = 0;\n\n        for (var index = 0; index < state.orderedModifiers.length; index++) {\n          if (process.env.NODE_ENV !== \"production\") {\n            __debug_loops__ += 1;\n\n            if (__debug_loops__ > 100) {\n              console.error(INFINITE_LOOP_ERROR);\n              break;\n            }\n          }\n\n          if (state.reset === true) {\n            state.reset = false;\n            index = -1;\n            continue;\n          }\n\n          var _state$orderedModifie = state.orderedModifiers[index],\n              fn = _state$orderedModifie.fn,\n              _state$orderedModifie2 = _state$orderedModifie.options,\n              _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n              name = _state$orderedModifie.name;\n\n          if (typeof fn === 'function') {\n            state = fn({\n              state: state,\n              options: _options,\n              name: name,\n              instance: instance\n            }) || state;\n          }\n        }\n      },\n      // Async and optimistically optimized update – it will not be executed if\n      // not necessary (debounced to run at most once-per-tick)\n      update: debounce(function () {\n        return new Promise(function (resolve) {\n          instance.forceUpdate();\n          resolve(state);\n        });\n      }),\n      destroy: function destroy() {\n        cleanupModifierEffects();\n        isDestroyed = true;\n      }\n    };\n\n    if (!areValidElements(reference, popper)) {\n      if (process.env.NODE_ENV !== \"production\") {\n        console.error(INVALID_ELEMENT_ERROR);\n      }\n\n      return instance;\n    }\n\n    instance.setOptions(options).then(function (state) {\n      if (!isDestroyed && options.onFirstUpdate) {\n        options.onFirstUpdate(state);\n      }\n    }); // Modifiers have the ability to execute arbitrary code before the first\n    // update cycle runs. They will be executed in the same order as the update\n    // cycle. This is useful when a modifier adds some persistent data that\n    // other modifiers need to use, but the modifier is run after the dependent\n    // one.\n\n    function runModifierEffects() {\n      state.orderedModifiers.forEach(function (_ref3) {\n        var name = _ref3.name,\n            _ref3$options = _ref3.options,\n            options = _ref3$options === void 0 ? {} : _ref3$options,\n            effect = _ref3.effect;\n\n        if (typeof effect === 'function') {\n          var cleanupFn = effect({\n            state: state,\n            name: name,\n            instance: instance,\n            options: options\n          });\n\n          var noopFn = function noopFn() {};\n\n          effectCleanupFns.push(cleanupFn || noopFn);\n        }\n      });\n    }\n\n    function cleanupModifierEffects() {\n      effectCleanupFns.forEach(function (fn) {\n        return fn();\n      });\n      effectCleanupFns = [];\n    }\n\n    return instance;\n  };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n  var pending;\n  return function () {\n    if (!pending) {\n      pending = new Promise(function (resolve) {\n        Promise.resolve().then(function () {\n          pending = undefined;\n          resolve(fn());\n        });\n      });\n    }\n\n    return pending;\n  };\n}","export default function mergeByName(modifiers) {\n  var merged = modifiers.reduce(function (merged, current) {\n    var existing = merged[current.name];\n    merged[current.name] = existing ? Object.assign({}, existing, current, {\n      options: Object.assign({}, existing.options, current.options),\n      data: Object.assign({}, existing.data, current.data)\n    }) : current;\n    return merged;\n  }, {}); // IE11 does not support Object.values\n\n  return Object.keys(merged).map(function (key) {\n    return merged[key];\n  });\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n  var map = new Map();\n  var visited = new Set();\n  var result = [];\n  modifiers.forEach(function (modifier) {\n    map.set(modifier.name, modifier);\n  }); // On visiting object, check for its dependencies and visit them recursively\n\n  function sort(modifier) {\n    visited.add(modifier.name);\n    var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n    requires.forEach(function (dep) {\n      if (!visited.has(dep)) {\n        var depModifier = map.get(dep);\n\n        if (depModifier) {\n          sort(depModifier);\n        }\n      }\n    });\n    result.push(modifier);\n  }\n\n  modifiers.forEach(function (modifier) {\n    if (!visited.has(modifier.name)) {\n      // check for visited object\n      sort(modifier);\n    }\n  });\n  return result;\n}\n\nexport default function orderModifiers(modifiers) {\n  // order based on dependencies\n  var orderedModifiers = order(modifiers); // order based on phase\n\n  return modifierPhases.reduce(function (acc, phase) {\n    return acc.concat(orderedModifiers.filter(function (modifier) {\n      return modifier.phase === phase;\n    }));\n  }, []);\n}","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n  defineJQueryPlugin,\n  getElement,\n  getElementFromSelector,\n  isDisabled,\n  isElement,\n  isVisible,\n  isRTL,\n  noop,\n  getNextActiveElement,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst SPACE_KEY = 'Space'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY}`)\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_NAVBAR = 'navbar'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\n\nconst Default = {\n  offset: [0, 2],\n  boundary: 'clippingParents',\n  reference: 'toggle',\n  display: 'dynamic',\n  popperConfig: null,\n  autoClose: true\n}\n\nconst DefaultType = {\n  offset: '(array|string|function)',\n  boundary: '(string|element)',\n  reference: '(string|element|object)',\n  display: 'string',\n  popperConfig: '(null|object|function)',\n  autoClose: '(boolean|string)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._popper = null\n    this._config = this._getConfig(config)\n    this._menu = this._getMenuElement()\n    this._inNavbar = this._detectNavbar()\n\n    this._addEventListeners()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  toggle() {\n    if (isDisabled(this._element)) {\n      return\n    }\n\n    const isActive = this._element.classList.contains(CLASS_NAME_SHOW)\n\n    if (isActive) {\n      this.hide()\n      return\n    }\n\n    this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._menu.classList.contains(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    const parent = Dropdown.getParentFromElement(this._element)\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    // Totally disable Popper for Dropdowns in Navbar\n    if (this._inNavbar) {\n      Manipulator.setDataAttribute(this._menu, 'popper', 'none')\n    } else {\n      if (typeof Popper === 'undefined') {\n        throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n      }\n\n      let referenceElement = this._element\n\n      if (this._config.reference === 'parent') {\n        referenceElement = parent\n      } else if (isElement(this._config.reference)) {\n        referenceElement = getElement(this._config.reference)\n      } else if (typeof this._config.reference === 'object') {\n        referenceElement = this._config.reference\n      }\n\n      const popperConfig = this._getPopperConfig()\n      const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false)\n\n      this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n\n      if (isDisplayStatic) {\n        Manipulator.setDataAttribute(this._menu, 'popper', 'static')\n      }\n    }\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement &&\n      !parent.closest(SELECTOR_NAVBAR_NAV)) {\n      [].concat(...document.body.children)\n        .forEach(elem => EventHandler.on(elem, 'mouseover', noop))\n    }\n\n    this._element.focus()\n    this._element.setAttribute('aria-expanded', true)\n\n    this._menu.classList.toggle(CLASS_NAME_SHOW)\n    this._element.classList.toggle(CLASS_NAME_SHOW)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._menu.classList.contains(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    super.dispose()\n  }\n\n  update() {\n    this._inNavbar = this._detectNavbar()\n    if (this._popper) {\n      this._popper.update()\n    }\n  }\n\n  // Private\n\n  _addEventListeners() {\n    EventHandler.on(this._element, EVENT_CLICK, event => {\n      event.preventDefault()\n      this.toggle()\n    })\n  }\n\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      [].concat(...document.body.children)\n        .forEach(elem => EventHandler.off(elem, 'mouseover', noop))\n    }\n\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'popper')\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = {\n      ...this.constructor.Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...config\n    }\n\n    typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      // Popper virtual elements require a getBoundingClientRect method\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _getMenuElement() {\n    return SelectorEngine.next(this._element, SELECTOR_MENU)[0]\n  }\n\n  _getPlacement() {\n    const parentDropdown = this._element.parentNode\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n      return PLACEMENT_RIGHT\n    }\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n      return PLACEMENT_LEFT\n    }\n\n    // We need to trim the value because custom properties can also include spaces\n    const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n      return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n    }\n\n    return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n  }\n\n  _detectNavbar() {\n    return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(val => Number.parseInt(val, 10))\n    }\n\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element)\n    }\n\n    return offset\n  }\n\n  _getPopperConfig() {\n    const defaultBsPopperConfig = {\n      placement: this._getPlacement(),\n      modifiers: [{\n        name: 'preventOverflow',\n        options: {\n          boundary: this._config.boundary\n        }\n      },\n      {\n        name: 'offset',\n        options: {\n          offset: this._getOffset()\n        }\n      }]\n    }\n\n    // Disable Popper if we have a static display\n    if (this._config.display === 'static') {\n      defaultBsPopperConfig.modifiers = [{\n        name: 'applyStyles',\n        enabled: false\n      }]\n    }\n\n    return {\n      ...defaultBsPopperConfig,\n      ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n    }\n  }\n\n  _selectMenuItem({ key, target }) {\n    const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible)\n\n    if (!items.length) {\n      return\n    }\n\n    // if target isn't included in items (e.g. when expanding the dropdown)\n    // allow cycling to get the last item in case key equals ARROW_UP_KEY\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n  }\n\n  // Static\n\n  static dropdownInterface(element, config) {\n    const data = Dropdown.getOrCreateInstance(element, config)\n\n    if (typeof config === 'string') {\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    }\n  }\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      Dropdown.dropdownInterface(this, config)\n    })\n  }\n\n  static clearMenus(event) {\n    if (event && (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY))) {\n      return\n    }\n\n    const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (let i = 0, len = toggles.length; i < len; i++) {\n      const context = Dropdown.getInstance(toggles[i])\n      if (!context || context._config.autoClose === false) {\n        continue\n      }\n\n      if (!context._element.classList.contains(CLASS_NAME_SHOW)) {\n        continue\n      }\n\n      const relatedTarget = {\n        relatedTarget: context._element\n      }\n\n      if (event) {\n        const composedPath = event.composedPath()\n        const isMenuTarget = composedPath.includes(context._menu)\n        if (\n          composedPath.includes(context._element) ||\n          (context._config.autoClose === 'inside' && !isMenuTarget) ||\n          (context._config.autoClose === 'outside' && isMenuTarget)\n        ) {\n          continue\n        }\n\n        // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n        if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n          continue\n        }\n\n        if (event.type === 'click') {\n          relatedTarget.clickEvent = event\n        }\n      }\n\n      context._completeHide(relatedTarget)\n    }\n  }\n\n  static getParentFromElement(element) {\n    return getElementFromSelector(element) || element.parentNode\n  }\n\n  static dataApiKeydownHandler(event) {\n    // If not input/textarea:\n    //  - And not a key in REGEXP_KEYDOWN => not a dropdown command\n    // If input/textarea:\n    //  - If space key => not a dropdown command\n    //  - If key is other than escape\n    //    - If key is not up or down => not a dropdown command\n    //    - If trigger inside the menu => not a dropdown command\n    if (/input|textarea/i.test(event.target.tagName) ?\n      event.key === SPACE_KEY || (event.key !== ESCAPE_KEY &&\n      ((event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY) ||\n        event.target.closest(SELECTOR_MENU))) :\n      !REGEXP_KEYDOWN.test(event.key)) {\n      return\n    }\n\n    const isActive = this.classList.contains(CLASS_NAME_SHOW)\n\n    if (!isActive && event.key === ESCAPE_KEY) {\n      return\n    }\n\n    event.preventDefault()\n    event.stopPropagation()\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const getToggleButton = () => this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n\n    if (event.key === ESCAPE_KEY) {\n      getToggleButton().focus()\n      Dropdown.clearMenus()\n      return\n    }\n\n    if (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY) {\n      if (!isActive) {\n        getToggleButton().click()\n      }\n\n      Dropdown.getInstance(getToggleButton())._selectMenuItem(event)\n      return\n    }\n\n    if (!isActive || event.key === SPACE_KEY) {\n      Dropdown.clearMenus()\n    }\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Dropdown.dropdownInterface(this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Dropdown to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine'\nimport Manipulator from '../dom/manipulator'\nimport { isElement } from './index'\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\nclass ScrollBarHelper {\n  constructor() {\n    this._element = document.body\n  }\n\n  getWidth() {\n    // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n    const documentWidth = document.documentElement.clientWidth\n    return Math.abs(window.innerWidth - documentWidth)\n  }\n\n  hide() {\n    const width = this.getWidth()\n    this._disableOverFlow()\n    // give padding to element to balance the hidden scrollbar width\n    this._setElementAttributes(this._element, 'paddingRight', calculatedValue => calculatedValue + width)\n    // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n    this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width)\n    this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width)\n  }\n\n  _disableOverFlow() {\n    this._saveInitialAttribute(this._element, 'overflow')\n    this._element.style.overflow = 'hidden'\n  }\n\n  _setElementAttributes(selector, styleProp, callback) {\n    const scrollbarWidth = this.getWidth()\n    const manipulationCallBack = element => {\n      if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n        return\n      }\n\n      this._saveInitialAttribute(element, styleProp)\n      const calculatedValue = window.getComputedStyle(element)[styleProp]\n      element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  reset() {\n    this._resetElementAttributes(this._element, 'overflow')\n    this._resetElementAttributes(this._element, 'paddingRight')\n    this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight')\n    this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight')\n  }\n\n  _saveInitialAttribute(element, styleProp) {\n    const actualValue = element.style[styleProp]\n    if (actualValue) {\n      Manipulator.setDataAttribute(element, styleProp, actualValue)\n    }\n  }\n\n  _resetElementAttributes(selector, styleProp) {\n    const manipulationCallBack = element => {\n      const value = Manipulator.getDataAttribute(element, styleProp)\n      if (typeof value === 'undefined') {\n        element.style.removeProperty(styleProp)\n      } else {\n        Manipulator.removeDataAttribute(element, styleProp)\n        element.style[styleProp] = value\n      }\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _applyManipulationCallback(selector, callBack) {\n    if (isElement(selector)) {\n      callBack(selector)\n    } else {\n      SelectorEngine.find(selector, this._element).forEach(callBack)\n    }\n  }\n\n  isOverflowing() {\n    return this.getWidth() > 0\n  }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { execute, executeAfterTransition, getElement, reflow, typeCheckConfig } from './index'\n\nconst Default = {\n  isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n  isAnimated: false,\n  rootElement: 'body', // give the choice to place backdrop under different elements\n  clickCallback: null\n}\n\nconst DefaultType = {\n  isVisible: 'boolean',\n  isAnimated: 'boolean',\n  rootElement: '(element|string)',\n  clickCallback: '(function|null)'\n}\nconst NAME = 'backdrop'\nconst CLASS_NAME_BACKDROP = 'modal-backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nclass Backdrop {\n  constructor(config) {\n    this._config = this._getConfig(config)\n    this._isAppended = false\n    this._element = null\n  }\n\n  show(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._append()\n\n    if (this._config.isAnimated) {\n      reflow(this._getElement())\n    }\n\n    this._getElement().classList.add(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      execute(callback)\n    })\n  }\n\n  hide(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      this.dispose()\n      execute(callback)\n    })\n  }\n\n  // Private\n\n  _getElement() {\n    if (!this._element) {\n      const backdrop = document.createElement('div')\n      backdrop.className = CLASS_NAME_BACKDROP\n      if (this._config.isAnimated) {\n        backdrop.classList.add(CLASS_NAME_FADE)\n      }\n\n      this._element = backdrop\n    }\n\n    return this._element\n  }\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...(typeof config === 'object' ? config : {})\n    }\n\n    // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n    config.rootElement = getElement(config.rootElement)\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _append() {\n    if (this._isAppended) {\n      return\n    }\n\n    this._config.rootElement.appendChild(this._getElement())\n\n    EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, () => {\n      execute(this._config.clickCallback)\n    })\n\n    this._isAppended = true\n  }\n\n  dispose() {\n    if (!this._isAppended) {\n      return\n    }\n\n    EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n    this._element.remove()\n    this._isAppended = false\n  }\n\n  _emulateAnimation(callback) {\n    executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n  }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isRTL,\n  isVisible,\n  reflow,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport ScrollBarHelper from './util/scrollbar'\nimport BaseComponent from './base-component'\nimport Backdrop from './util/backdrop'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  focus: true\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  focus: 'boolean'\n}\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"modal\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._config = this._getConfig(config)\n    this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\n    this._backdrop = this._initializeBackDrop()\n    this._isShown = false\n    this._ignoreBackdropClick = false\n    this._isTransitioning = false\n    this._scrollBar = new ScrollBarHelper()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n      relatedTarget\n    })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n\n    if (this._isAnimated()) {\n      this._isTransitioning = true\n    }\n\n    this._scrollBar.hide()\n\n    document.body.classList.add(CLASS_NAME_OPEN)\n\n    this._adjustDialog()\n\n    this._setEscapeEvent()\n    this._setResizeEvent()\n\n    EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, event => this.hide(event))\n\n    EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {\n      EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {\n        if (event.target === this._element) {\n          this._ignoreBackdropClick = true\n        }\n      })\n    })\n\n    this._showBackdrop(() => this._showElement(relatedTarget))\n  }\n\n  hide(event) {\n    if (event && ['A', 'AREA'].includes(event.target.tagName)) {\n      event.preventDefault()\n    }\n\n    if (!this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = false\n    const isAnimated = this._isAnimated()\n\n    if (isAnimated) {\n      this._isTransitioning = true\n    }\n\n    this._setEscapeEvent()\n    this._setResizeEvent()\n\n    EventHandler.off(document, EVENT_FOCUSIN)\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    EventHandler.off(this._element, EVENT_CLICK_DISMISS)\n    EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS)\n\n    this._queueCallback(() => this._hideModal(), this._element, isAnimated)\n  }\n\n  dispose() {\n    [window, this._dialog]\n      .forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY))\n\n    this._backdrop.dispose()\n    super.dispose()\n\n    /**\n     * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n     * Do not move `document` in `htmlElements` array\n     * It will remove `EVENT_CLICK_DATA_API` event that should remain\n     */\n    EventHandler.off(document, EVENT_FOCUSIN)\n  }\n\n  handleUpdate() {\n    this._adjustDialog()\n  }\n\n  // Private\n\n  _initializeBackDrop() {\n    return new Backdrop({\n      isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value\n      isAnimated: this._isAnimated()\n    })\n  }\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' ? config : {})\n    }\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _showElement(relatedTarget) {\n    const isAnimated = this._isAnimated()\n    const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n\n    if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n      // Don't move modal's DOM position\n      document.body.appendChild(this._element)\n    }\n\n    this._element.style.display = 'block'\n    this._element.removeAttribute('aria-hidden')\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.scrollTop = 0\n\n    if (modalBody) {\n      modalBody.scrollTop = 0\n    }\n\n    if (isAnimated) {\n      reflow(this._element)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    if (this._config.focus) {\n      this._enforceFocus()\n    }\n\n    const transitionComplete = () => {\n      if (this._config.focus) {\n        this._element.focus()\n      }\n\n      this._isTransitioning = false\n      EventHandler.trigger(this._element, EVENT_SHOWN, {\n        relatedTarget\n      })\n    }\n\n    this._queueCallback(transitionComplete, this._dialog, isAnimated)\n  }\n\n  _enforceFocus() {\n    EventHandler.off(document, EVENT_FOCUSIN) // guard against infinite focus loop\n    EventHandler.on(document, EVENT_FOCUSIN, event => {\n      if (document !== event.target &&\n          this._element !== event.target &&\n          !this._element.contains(event.target)) {\n        this._element.focus()\n      }\n    })\n  }\n\n  _setEscapeEvent() {\n    if (this._isShown) {\n      EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n        if (this._config.keyboard && event.key === ESCAPE_KEY) {\n          event.preventDefault()\n          this.hide()\n        } else if (!this._config.keyboard && event.key === ESCAPE_KEY) {\n          this._triggerBackdropTransition()\n        }\n      })\n    } else {\n      EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS)\n    }\n  }\n\n  _setResizeEvent() {\n    if (this._isShown) {\n      EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog())\n    } else {\n      EventHandler.off(window, EVENT_RESIZE)\n    }\n  }\n\n  _hideModal() {\n    this._element.style.display = 'none'\n    this._element.setAttribute('aria-hidden', true)\n    this._element.removeAttribute('aria-modal')\n    this._element.removeAttribute('role')\n    this._isTransitioning = false\n    this._backdrop.hide(() => {\n      document.body.classList.remove(CLASS_NAME_OPEN)\n      this._resetAdjustments()\n      this._scrollBar.reset()\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    })\n  }\n\n  _showBackdrop(callback) {\n    EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {\n      if (this._ignoreBackdropClick) {\n        this._ignoreBackdropClick = false\n        return\n      }\n\n      if (event.target !== event.currentTarget) {\n        return\n      }\n\n      if (this._config.backdrop === true) {\n        this.hide()\n      } else if (this._config.backdrop === 'static') {\n        this._triggerBackdropTransition()\n      }\n    })\n\n    this._backdrop.show(callback)\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains(CLASS_NAME_FADE)\n  }\n\n  _triggerBackdropTransition() {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const { classList, scrollHeight, style } = this._element\n    const isModalOverflowing = scrollHeight > document.documentElement.clientHeight\n\n    // return if the following background transition hasn't yet completed\n    if ((!isModalOverflowing && style.overflowY === 'hidden') || classList.contains(CLASS_NAME_STATIC)) {\n      return\n    }\n\n    if (!isModalOverflowing) {\n      style.overflowY = 'hidden'\n    }\n\n    classList.add(CLASS_NAME_STATIC)\n    this._queueCallback(() => {\n      classList.remove(CLASS_NAME_STATIC)\n      if (!isModalOverflowing) {\n        this._queueCallback(() => {\n          style.overflowY = ''\n        }, this._dialog)\n      }\n    }, this._dialog)\n\n    this._element.focus()\n  }\n\n  // ----------------------------------------------------------------------\n  // the following methods are used to handle overflowing modals\n  // ----------------------------------------------------------------------\n\n  _adjustDialog() {\n    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n    const scrollbarWidth = this._scrollBar.getWidth()\n    const isBodyOverflowing = scrollbarWidth > 0\n\n    if ((!isBodyOverflowing && isModalOverflowing && !isRTL()) || (isBodyOverflowing && !isModalOverflowing && isRTL())) {\n      this._element.style.paddingLeft = `${scrollbarWidth}px`\n    }\n\n    if ((isBodyOverflowing && !isModalOverflowing && !isRTL()) || (!isBodyOverflowing && isModalOverflowing && isRTL())) {\n      this._element.style.paddingRight = `${scrollbarWidth}px`\n    }\n  }\n\n  _resetAdjustments() {\n    this._element.style.paddingLeft = ''\n    this._element.style.paddingRight = ''\n  }\n\n  // Static\n\n  static jQueryInterface(config, relatedTarget) {\n    return this.each(function () {\n      const data = Modal.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](relatedTarget)\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  EventHandler.one(target, EVENT_SHOW, showEvent => {\n    if (showEvent.defaultPrevented) {\n      // only register focus restorer if modal will actually get shown\n      return\n    }\n\n    EventHandler.one(target, EVENT_HIDDEN, () => {\n      if (isVisible(this)) {\n        this.focus()\n      }\n    })\n  })\n\n  const data = Modal.getOrCreateInstance(target)\n\n  data.toggle(this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Modal to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Modal)\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isDisabled,\n  isVisible,\n  typeCheckConfig\n} from './util/index'\nimport ScrollBarHelper from './util/scrollbar'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport SelectorEngine from './dom/selector-engine'\nimport Manipulator from './dom/manipulator'\nimport Backdrop from './util/backdrop'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  scroll: false\n}\n\nconst DefaultType = {\n  backdrop: 'boolean',\n  keyboard: 'boolean',\n  scroll: 'boolean'\n}\n\nconst CLASS_NAME_SHOW = 'show'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"offcanvas\"]'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Offcanvas extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._config = this._getConfig(config)\n    this._isShown = false\n    this._backdrop = this._initializeBackDrop()\n    this._addEventListeners()\n  }\n\n  // Getters\n\n  static get NAME() {\n    return NAME\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  // Public\n\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n    this._element.style.visibility = 'visible'\n\n    this._backdrop.show()\n\n    if (!this._config.scroll) {\n      new ScrollBarHelper().hide()\n      this._enforceFocusOnElement(this._element)\n    }\n\n    this._element.removeAttribute('aria-hidden')\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    const completeCallBack = () => {\n      EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n    }\n\n    this._queueCallback(completeCallBack, this._element, true)\n  }\n\n  hide() {\n    if (!this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    EventHandler.off(document, EVENT_FOCUSIN)\n    this._element.blur()\n    this._isShown = false\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    this._backdrop.hide()\n\n    const completeCallback = () => {\n      this._element.setAttribute('aria-hidden', true)\n      this._element.removeAttribute('aria-modal')\n      this._element.removeAttribute('role')\n      this._element.style.visibility = 'hidden'\n\n      if (!this._config.scroll) {\n        new ScrollBarHelper().reset()\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._queueCallback(completeCallback, this._element, true)\n  }\n\n  dispose() {\n    this._backdrop.dispose()\n    super.dispose()\n    EventHandler.off(document, EVENT_FOCUSIN)\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' ? config : {})\n    }\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _initializeBackDrop() {\n    return new Backdrop({\n      isVisible: this._config.backdrop,\n      isAnimated: true,\n      rootElement: this._element.parentNode,\n      clickCallback: () => this.hide()\n    })\n  }\n\n  _enforceFocusOnElement(element) {\n    EventHandler.off(document, EVENT_FOCUSIN) // guard against infinite focus loop\n    EventHandler.on(document, EVENT_FOCUSIN, event => {\n      if (document !== event.target &&\n        element !== event.target &&\n        !element.contains(event.target)) {\n        element.focus()\n      }\n    })\n    element.focus()\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, () => this.hide())\n\n    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n      if (this._config.keyboard && event.key === ESCAPE_KEY) {\n        this.hide()\n      }\n    })\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Offcanvas.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](this)\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  EventHandler.one(target, EVENT_HIDDEN, () => {\n    // focus on trigger when it is closed\n    if (isVisible(this)) {\n      this.focus()\n    }\n  })\n\n  // avoid conflict when clicking a toggler of an offcanvas, while another is open\n  const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n  if (allReadyOpen && allReadyOpen !== target) {\n    Offcanvas.getInstance(allReadyOpen).hide()\n  }\n\n  const data = Offcanvas.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () =>\n  SelectorEngine.find(OPEN_SELECTOR).forEach(el => Offcanvas.getOrCreateInstance(el).show())\n)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = new Set([\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nconst allowedAttribute = (attr, allowedAttributeList) => {\n  const attrName = attr.nodeName.toLowerCase()\n\n  if (allowedAttributeList.includes(attrName)) {\n    if (uriAttrs.has(attrName)) {\n      return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue))\n    }\n\n    return true\n  }\n\n  const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)\n\n  // Check if a regular expression validates the attribute.\n  for (let i = 0, len = regExp.length; i < len; i++) {\n    if (regExp[i].test(attrName)) {\n      return true\n    }\n  }\n\n  return false\n}\n\nexport const DefaultAllowlist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  div: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {\n  if (!unsafeHtml.length) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFn && typeof sanitizeFn === 'function') {\n    return sanitizeFn(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const allowlistKeys = Object.keys(allowList)\n  const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n  for (let i = 0, len = elements.length; i < len; i++) {\n    const el = elements[i]\n    const elName = el.nodeName.toLowerCase()\n\n    if (!allowlistKeys.includes(elName)) {\n      el.remove()\n\n      continue\n    }\n\n    const attributeList = [].concat(...el.attributes)\n    const allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || [])\n\n    attributeList.forEach(attr => {\n      if (!allowedAttribute(attr, allowedAttributes)) {\n        el.removeAttribute(attr.nodeName)\n      }\n    })\n  }\n\n  return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n  defineJQueryPlugin,\n  findShadowRoot,\n  getElement,\n  getUID,\n  isElement,\n  isRTL,\n  noop,\n  typeCheckConfig\n} from './util/index'\nimport {\n  DefaultAllowlist,\n  sanitizeHtml\n} from './util/sanitizer'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst DefaultType = {\n  animation: 'boolean',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string',\n  delay: '(number|object)',\n  html: 'boolean',\n  selector: '(string|boolean)',\n  placement: '(string|function)',\n  offset: '(array|string|function)',\n  container: '(string|element|boolean)',\n  fallbackPlacements: 'array',\n  boundary: '(string|element)',\n  customClass: '(string|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  allowList: 'object',\n  popperConfig: '(null|object|function)'\n}\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: isRTL() ? 'left' : 'right',\n  BOTTOM: 'bottom',\n  LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n  animation: true,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n              '<div class=\"tooltip-arrow\"></div>' +\n              '<div class=\"tooltip-inner\"></div>' +\n            '</div>',\n  trigger: 'hover focus',\n  title: '',\n  delay: 0,\n  html: false,\n  selector: false,\n  placement: 'top',\n  offset: [0, 0],\n  container: false,\n  fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n  boundary: 'clippingParents',\n  customClass: '',\n  sanitize: true,\n  sanitizeFn: null,\n  allowList: DefaultAllowlist,\n  popperConfig: null\n}\n\nconst Event = {\n  HIDE: `hide${EVENT_KEY}`,\n  HIDDEN: `hidden${EVENT_KEY}`,\n  SHOW: `show${EVENT_KEY}`,\n  SHOWN: `shown${EVENT_KEY}`,\n  INSERTED: `inserted${EVENT_KEY}`,\n  CLICK: `click${EVENT_KEY}`,\n  FOCUSIN: `focusin${EVENT_KEY}`,\n  FOCUSOUT: `focusout${EVENT_KEY}`,\n  MOUSEENTER: `mouseenter${EVENT_KEY}`,\n  MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip extends BaseComponent {\n  constructor(element, config) {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n    }\n\n    super(element)\n\n    // private\n    this._isEnabled = true\n    this._timeout = 0\n    this._hoverState = ''\n    this._activeTrigger = {}\n    this._popper = null\n\n    // Protected\n    this._config = this._getConfig(config)\n    this.tip = null\n\n    this._setListeners()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  static get Event() {\n    return Event\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  // Public\n\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle(event) {\n    if (!this._isEnabled) {\n      return\n    }\n\n    if (event) {\n      const context = this._initializeOnDelegatedTarget(event)\n\n      context._activeTrigger.click = !context._activeTrigger.click\n\n      if (context._isWithActiveTrigger()) {\n        context._enter(null, context)\n      } else {\n        context._leave(null, context)\n      }\n    } else {\n      if (this.getTipElement().classList.contains(CLASS_NAME_SHOW)) {\n        this._leave(null, this)\n        return\n      }\n\n      this._enter(null, this)\n    }\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    EventHandler.off(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)\n\n    if (this.tip) {\n      this.tip.remove()\n    }\n\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    super.dispose()\n  }\n\n  show() {\n    if (this._element.style.display === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    if (!(this.isWithContent() && this._isEnabled)) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW)\n    const shadowRoot = findShadowRoot(this._element)\n    const isInTheDom = shadowRoot === null ?\n      this._element.ownerDocument.documentElement.contains(this._element) :\n      shadowRoot.contains(this._element)\n\n    if (showEvent.defaultPrevented || !isInTheDom) {\n      return\n    }\n\n    const tip = this.getTipElement()\n    const tipId = getUID(this.constructor.NAME)\n\n    tip.setAttribute('id', tipId)\n    this._element.setAttribute('aria-describedby', tipId)\n\n    this.setContent()\n\n    if (this._config.animation) {\n      tip.classList.add(CLASS_NAME_FADE)\n    }\n\n    const placement = typeof this._config.placement === 'function' ?\n      this._config.placement.call(this, tip, this._element) :\n      this._config.placement\n\n    const attachment = this._getAttachment(placement)\n    this._addAttachmentClass(attachment)\n\n    const { container } = this._config\n    Data.set(tip, this.constructor.DATA_KEY, this)\n\n    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n      container.appendChild(tip)\n      EventHandler.trigger(this._element, this.constructor.Event.INSERTED)\n    }\n\n    if (this._popper) {\n      this._popper.update()\n    } else {\n      this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n    }\n\n    tip.classList.add(CLASS_NAME_SHOW)\n\n    const customClass = typeof this._config.customClass === 'function' ? this._config.customClass() : this._config.customClass\n    if (customClass) {\n      tip.classList.add(...customClass.split(' '))\n    }\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement) {\n      [].concat(...document.body.children).forEach(element => {\n        EventHandler.on(element, 'mouseover', noop)\n      })\n    }\n\n    const complete = () => {\n      const prevHoverState = this._hoverState\n\n      this._hoverState = null\n      EventHandler.trigger(this._element, this.constructor.Event.SHOWN)\n\n      if (prevHoverState === HOVER_STATE_OUT) {\n        this._leave(null, this)\n      }\n    }\n\n    const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(complete, this.tip, isAnimated)\n  }\n\n  hide() {\n    if (!this._popper) {\n      return\n    }\n\n    const tip = this.getTipElement()\n    const complete = () => {\n      if (this._isWithActiveTrigger()) {\n        return\n      }\n\n      if (this._hoverState !== HOVER_STATE_SHOW) {\n        tip.remove()\n      }\n\n      this._cleanTipClass()\n      this._element.removeAttribute('aria-describedby')\n      EventHandler.trigger(this._element, this.constructor.Event.HIDDEN)\n\n      if (this._popper) {\n        this._popper.destroy()\n        this._popper = null\n      }\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    tip.classList.remove(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      [].concat(...document.body.children)\n        .forEach(element => EventHandler.off(element, 'mouseover', noop))\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n\n    const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(complete, this.tip, isAnimated)\n    this._hoverState = ''\n  }\n\n  update() {\n    if (this._popper !== null) {\n      this._popper.update()\n    }\n  }\n\n  // Protected\n\n  isWithContent() {\n    return Boolean(this.getTitle())\n  }\n\n  getTipElement() {\n    if (this.tip) {\n      return this.tip\n    }\n\n    const element = document.createElement('div')\n    element.innerHTML = this._config.template\n\n    this.tip = element.children[0]\n    return this.tip\n  }\n\n  setContent() {\n    const tip = this.getTipElement()\n    this.setElementContent(SelectorEngine.findOne(SELECTOR_TOOLTIP_INNER, tip), this.getTitle())\n    tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n  }\n\n  setElementContent(element, content) {\n    if (element === null) {\n      return\n    }\n\n    if (isElement(content)) {\n      content = getElement(content)\n\n      // content is a DOM node or a jQuery\n      if (this._config.html) {\n        if (content.parentNode !== element) {\n          element.innerHTML = ''\n          element.appendChild(content)\n        }\n      } else {\n        element.textContent = content.textContent\n      }\n\n      return\n    }\n\n    if (this._config.html) {\n      if (this._config.sanitize) {\n        content = sanitizeHtml(content, this._config.allowList, this._config.sanitizeFn)\n      }\n\n      element.innerHTML = content\n    } else {\n      element.textContent = content\n    }\n  }\n\n  getTitle() {\n    let title = this._element.getAttribute('data-bs-original-title')\n\n    if (!title) {\n      title = typeof this._config.title === 'function' ?\n        this._config.title.call(this._element) :\n        this._config.title\n    }\n\n    return title\n  }\n\n  updateAttachment(attachment) {\n    if (attachment === 'right') {\n      return 'end'\n    }\n\n    if (attachment === 'left') {\n      return 'start'\n    }\n\n    return attachment\n  }\n\n  // Private\n\n  _initializeOnDelegatedTarget(event, context) {\n    const dataKey = this.constructor.DATA_KEY\n    context = context || Data.get(event.delegateTarget, dataKey)\n\n    if (!context) {\n      context = new this.constructor(event.delegateTarget, this._getDelegateConfig())\n      Data.set(event.delegateTarget, dataKey, context)\n    }\n\n    return context\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(val => Number.parseInt(val, 10))\n    }\n\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element)\n    }\n\n    return offset\n  }\n\n  _getPopperConfig(attachment) {\n    const defaultBsPopperConfig = {\n      placement: attachment,\n      modifiers: [\n        {\n          name: 'flip',\n          options: {\n            fallbackPlacements: this._config.fallbackPlacements\n          }\n        },\n        {\n          name: 'offset',\n          options: {\n            offset: this._getOffset()\n          }\n        },\n        {\n          name: 'preventOverflow',\n          options: {\n            boundary: this._config.boundary\n          }\n        },\n        {\n          name: 'arrow',\n          options: {\n            element: `.${this.constructor.NAME}-arrow`\n          }\n        },\n        {\n          name: 'onChange',\n          enabled: true,\n          phase: 'afterWrite',\n          fn: data => this._handlePopperPlacementChange(data)\n        }\n      ],\n      onFirstUpdate: data => {\n        if (data.options.placement !== data.placement) {\n          this._handlePopperPlacementChange(data)\n        }\n      }\n    }\n\n    return {\n      ...defaultBsPopperConfig,\n      ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n    }\n  }\n\n  _addAttachmentClass(attachment) {\n    this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`)\n  }\n\n  _getAttachment(placement) {\n    return AttachmentMap[placement.toUpperCase()]\n  }\n\n  _setListeners() {\n    const triggers = this._config.trigger.split(' ')\n\n    triggers.forEach(trigger => {\n      if (trigger === 'click') {\n        EventHandler.on(this._element, this.constructor.Event.CLICK, this._config.selector, event => this.toggle(event))\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.Event.MOUSEENTER :\n          this.constructor.Event.FOCUSIN\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.Event.MOUSELEAVE :\n          this.constructor.Event.FOCUSOUT\n\n        EventHandler.on(this._element, eventIn, this._config.selector, event => this._enter(event))\n        EventHandler.on(this._element, eventOut, this._config.selector, event => this._leave(event))\n      }\n    })\n\n    this._hideModalHandler = () => {\n      if (this._element) {\n        this.hide()\n      }\n    }\n\n    EventHandler.on(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)\n\n    if (this._config.selector) {\n      this._config = {\n        ...this._config,\n        trigger: 'manual',\n        selector: ''\n      }\n    } else {\n      this._fixTitle()\n    }\n  }\n\n  _fixTitle() {\n    const title = this._element.getAttribute('title')\n    const originalTitleType = typeof this._element.getAttribute('data-bs-original-title')\n\n    if (title || originalTitleType !== 'string') {\n      this._element.setAttribute('data-bs-original-title', title || '')\n      if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {\n        this._element.setAttribute('aria-label', title)\n      }\n\n      this._element.setAttribute('title', '')\n    }\n  }\n\n  _enter(event, context) {\n    context = this._initializeOnDelegatedTarget(event, context)\n\n    if (event) {\n      context._activeTrigger[\n        event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n      ] = true\n    }\n\n    if (context.getTipElement().classList.contains(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n      context._hoverState = HOVER_STATE_SHOW\n      return\n    }\n\n    clearTimeout(context._timeout)\n\n    context._hoverState = HOVER_STATE_SHOW\n\n    if (!context._config.delay || !context._config.delay.show) {\n      context.show()\n      return\n    }\n\n    context._timeout = setTimeout(() => {\n      if (context._hoverState === HOVER_STATE_SHOW) {\n        context.show()\n      }\n    }, context._config.delay.show)\n  }\n\n  _leave(event, context) {\n    context = this._initializeOnDelegatedTarget(event, context)\n\n    if (event) {\n      context._activeTrigger[\n        event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n      ] = context._element.contains(event.relatedTarget)\n    }\n\n    if (context._isWithActiveTrigger()) {\n      return\n    }\n\n    clearTimeout(context._timeout)\n\n    context._hoverState = HOVER_STATE_OUT\n\n    if (!context._config.delay || !context._config.delay.hide) {\n      context.hide()\n      return\n    }\n\n    context._timeout = setTimeout(() => {\n      if (context._hoverState === HOVER_STATE_OUT) {\n        context.hide()\n      }\n    }, context._config.delay.hide)\n  }\n\n  _isWithActiveTrigger() {\n    for (const trigger in this._activeTrigger) {\n      if (this._activeTrigger[trigger]) {\n        return true\n      }\n    }\n\n    return false\n  }\n\n  _getConfig(config) {\n    const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n    Object.keys(dataAttributes).forEach(dataAttr => {\n      if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {\n        delete dataAttributes[dataAttr]\n      }\n    })\n\n    config = {\n      ...this.constructor.Default,\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    config.container = config.container === false ? document.body : getElement(config.container)\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    if (typeof config.title === 'number') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number') {\n      config.content = config.content.toString()\n    }\n\n    typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n    if (config.sanitize) {\n      config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn)\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    if (this._config) {\n      for (const key in this._config) {\n        if (this.constructor.Default[key] !== this._config[key]) {\n          config[key] = this._config[key]\n        }\n      }\n    }\n\n    return config\n  }\n\n  _cleanTipClass() {\n    const tip = this.getTipElement()\n    const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)\n    if (tabClass !== null && tabClass.length > 0) {\n      tabClass.map(token => token.trim())\n        .forEach(tClass => tip.classList.remove(tClass))\n    }\n  }\n\n  _handlePopperPlacementChange(popperData) {\n    const { state } = popperData\n\n    if (!state) {\n      return\n    }\n\n    this.tip = state.elements.popper\n    this._cleanTipClass()\n    this._addAttachmentClass(this._getAttachment(state.placement))\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Tooltip.getOrCreateInstance(this, config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tooltip to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport SelectorEngine from './dom/selector-engine'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst Default = {\n  ...Tooltip.Default,\n  placement: 'right',\n  offset: [0, 8],\n  trigger: 'click',\n  content: '',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n              '<div class=\"popover-arrow\"></div>' +\n              '<h3 class=\"popover-header\"></h3>' +\n              '<div class=\"popover-body\"></div>' +\n            '</div>'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(string|element|function)'\n}\n\nconst Event = {\n  HIDE: `hide${EVENT_KEY}`,\n  HIDDEN: `hidden${EVENT_KEY}`,\n  SHOW: `show${EVENT_KEY}`,\n  SHOWN: `shown${EVENT_KEY}`,\n  INSERTED: `inserted${EVENT_KEY}`,\n  CLICK: `click${EVENT_KEY}`,\n  FOCUSIN: `focusin${EVENT_KEY}`,\n  FOCUSOUT: `focusout${EVENT_KEY}`,\n  MOUSEENTER: `mouseenter${EVENT_KEY}`,\n  MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  static get Event() {\n    return Event\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  // Overrides\n\n  isWithContent() {\n    return this.getTitle() || this._getContent()\n  }\n\n  getTipElement() {\n    if (this.tip) {\n      return this.tip\n    }\n\n    this.tip = super.getTipElement()\n\n    if (!this.getTitle()) {\n      SelectorEngine.findOne(SELECTOR_TITLE, this.tip).remove()\n    }\n\n    if (!this._getContent()) {\n      SelectorEngine.findOne(SELECTOR_CONTENT, this.tip).remove()\n    }\n\n    return this.tip\n  }\n\n  setContent() {\n    const tip = this.getTipElement()\n\n    // we use append for html objects to maintain js events\n    this.setElementContent(SelectorEngine.findOne(SELECTOR_TITLE, tip), this.getTitle())\n    let content = this._getContent()\n    if (typeof content === 'function') {\n      content = content.call(this._element)\n    }\n\n    this.setElementContent(SelectorEngine.findOne(SELECTOR_CONTENT, tip), content)\n\n    tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n  }\n\n  // Private\n\n  _addAttachmentClass(attachment) {\n    this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`)\n  }\n\n  _getContent() {\n    return this._element.getAttribute('data-bs-content') || this._config.content\n  }\n\n  _cleanTipClass() {\n    const tip = this.getTipElement()\n    const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)\n    if (tabClass !== null && tabClass.length > 0) {\n      tabClass.map(token => token.trim())\n        .forEach(tClass => tip.classList.remove(tClass))\n    }\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Popover.getOrCreateInstance(this, config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Popover to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getSelectorFromElement,\n  getUID,\n  isElement,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n  offset: 10,\n  method: 'auto',\n  target: ''\n}\n\nconst DefaultType = {\n  offset: 'number',\n  method: 'string',\n  target: '(string|element)'\n}\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n    this._scrollElement = this._element.tagName === 'BODY' ? window : this._element\n    this._config = this._getConfig(config)\n    this._selector = `${this._config.target} ${SELECTOR_NAV_LINKS}, ${this._config.target} ${SELECTOR_LIST_ITEMS}, ${this._config.target} .${CLASS_NAME_DROPDOWN_ITEM}`\n    this._offsets = []\n    this._targets = []\n    this._activeTarget = null\n    this._scrollHeight = 0\n\n    EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process())\n\n    this.refresh()\n    this._process()\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  refresh() {\n    const autoMethod = this._scrollElement === this._scrollElement.window ?\n      METHOD_OFFSET :\n      METHOD_POSITION\n\n    const offsetMethod = this._config.method === 'auto' ?\n      autoMethod :\n      this._config.method\n\n    const offsetBase = offsetMethod === METHOD_POSITION ?\n      this._getScrollTop() :\n      0\n\n    this._offsets = []\n    this._targets = []\n    this._scrollHeight = this._getScrollHeight()\n\n    const targets = SelectorEngine.find(this._selector)\n\n    targets.map(element => {\n      const targetSelector = getSelectorFromElement(element)\n      const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null\n\n      if (target) {\n        const targetBCR = target.getBoundingClientRect()\n        if (targetBCR.width || targetBCR.height) {\n          return [\n            Manipulator[offsetMethod](target).top + offsetBase,\n            targetSelector\n          ]\n        }\n      }\n\n      return null\n    })\n      .filter(item => item)\n      .sort((a, b) => a[0] - b[0])\n      .forEach(item => {\n        this._offsets.push(item[0])\n        this._targets.push(item[1])\n      })\n  }\n\n  dispose() {\n    EventHandler.off(this._scrollElement, EVENT_KEY)\n    super.dispose()\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    if (typeof config.target !== 'string' && isElement(config.target)) {\n      let { id } = config.target\n      if (!id) {\n        id = getUID(NAME)\n        config.target.id = id\n      }\n\n      config.target = `#${id}`\n    }\n\n    typeCheckConfig(NAME, config, DefaultType)\n\n    return config\n  }\n\n  _getScrollTop() {\n    return this._scrollElement === window ?\n      this._scrollElement.pageYOffset :\n      this._scrollElement.scrollTop\n  }\n\n  _getScrollHeight() {\n    return this._scrollElement.scrollHeight || Math.max(\n      document.body.scrollHeight,\n      document.documentElement.scrollHeight\n    )\n  }\n\n  _getOffsetHeight() {\n    return this._scrollElement === window ?\n      window.innerHeight :\n      this._scrollElement.getBoundingClientRect().height\n  }\n\n  _process() {\n    const scrollTop = this._getScrollTop() + this._config.offset\n    const scrollHeight = this._getScrollHeight()\n    const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n    if (this._scrollHeight !== scrollHeight) {\n      this.refresh()\n    }\n\n    if (scrollTop >= maxScroll) {\n      const target = this._targets[this._targets.length - 1]\n\n      if (this._activeTarget !== target) {\n        this._activate(target)\n      }\n\n      return\n    }\n\n    if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n      this._activeTarget = null\n      this._clear()\n      return\n    }\n\n    for (let i = this._offsets.length; i--;) {\n      const isActiveTarget = this._activeTarget !== this._targets[i] &&\n          scrollTop >= this._offsets[i] &&\n          (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1])\n\n      if (isActiveTarget) {\n        this._activate(this._targets[i])\n      }\n    }\n  }\n\n  _activate(target) {\n    this._activeTarget = target\n\n    this._clear()\n\n    const queries = this._selector.split(',')\n      .map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n    const link = SelectorEngine.findOne(queries.join(','))\n\n    if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n      SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN))\n        .classList.add(CLASS_NAME_ACTIVE)\n\n      link.classList.add(CLASS_NAME_ACTIVE)\n    } else {\n      // Set triggered link as active\n      link.classList.add(CLASS_NAME_ACTIVE)\n\n      SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP)\n        .forEach(listGroup => {\n          // Set triggered links parents as active\n          // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n          SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`)\n            .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n\n          // Handle special case when .nav-link is inside .nav-item\n          SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS)\n            .forEach(navItem => {\n              SelectorEngine.children(navItem, SELECTOR_NAV_LINKS)\n                .forEach(item => item.classList.add(CLASS_NAME_ACTIVE))\n            })\n        })\n    }\n\n    EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {\n      relatedTarget: target\n    })\n  }\n\n  _clear() {\n    SelectorEngine.find(this._selector)\n      .filter(node => node.classList.contains(CLASS_NAME_ACTIVE))\n      .forEach(node => node.classList.remove(CLASS_NAME_ACTIVE))\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = ScrollSpy.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  SelectorEngine.find(SELECTOR_DATA_SPY)\n    .forEach(spy => new ScrollSpy(spy))\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .ScrollSpy to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(ScrollSpy)\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isDisabled,\n  reflow\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_UL = ':scope > li > .active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tab extends BaseComponent {\n  // Getters\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  show() {\n    if ((this._element.parentNode &&\n      this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n      this._element.classList.contains(CLASS_NAME_ACTIVE))) {\n      return\n    }\n\n    let previous\n    const target = getElementFromSelector(this._element)\n    const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP)\n\n    if (listElement) {\n      const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE\n      previous = SelectorEngine.find(itemSelector, listElement)\n      previous = previous[previous.length - 1]\n    }\n\n    const hideEvent = previous ?\n      EventHandler.trigger(previous, EVENT_HIDE, {\n        relatedTarget: this._element\n      }) :\n      null\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n      relatedTarget: previous\n    })\n\n    if (showEvent.defaultPrevented || (hideEvent !== null && hideEvent.defaultPrevented)) {\n      return\n    }\n\n    this._activate(this._element, listElement)\n\n    const complete = () => {\n      EventHandler.trigger(previous, EVENT_HIDDEN, {\n        relatedTarget: this._element\n      })\n      EventHandler.trigger(this._element, EVENT_SHOWN, {\n        relatedTarget: previous\n      })\n    }\n\n    if (target) {\n      this._activate(target, target.parentNode, complete)\n    } else {\n      complete()\n    }\n  }\n\n  // Private\n\n  _activate(element, container, callback) {\n    const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ?\n      SelectorEngine.find(SELECTOR_ACTIVE_UL, container) :\n      SelectorEngine.children(container, SELECTOR_ACTIVE)\n\n    const active = activeElements[0]\n    const isTransitioning = callback && (active && active.classList.contains(CLASS_NAME_FADE))\n\n    const complete = () => this._transitionComplete(element, active, callback)\n\n    if (active && isTransitioning) {\n      active.classList.remove(CLASS_NAME_SHOW)\n      this._queueCallback(complete, element, true)\n    } else {\n      complete()\n    }\n  }\n\n  _transitionComplete(element, active, callback) {\n    if (active) {\n      active.classList.remove(CLASS_NAME_ACTIVE)\n\n      const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode)\n\n      if (dropdownChild) {\n        dropdownChild.classList.remove(CLASS_NAME_ACTIVE)\n      }\n\n      if (active.getAttribute('role') === 'tab') {\n        active.setAttribute('aria-selected', false)\n      }\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE)\n    if (element.getAttribute('role') === 'tab') {\n      element.setAttribute('aria-selected', true)\n    }\n\n    reflow(element)\n\n    if (element.classList.contains(CLASS_NAME_FADE)) {\n      element.classList.add(CLASS_NAME_SHOW)\n    }\n\n    let parent = element.parentNode\n    if (parent && parent.nodeName === 'LI') {\n      parent = parent.parentNode\n    }\n\n    if (parent && parent.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {\n      const dropdownElement = element.closest(SELECTOR_DROPDOWN)\n\n      if (dropdownElement) {\n        SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement)\n          .forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE))\n      }\n\n      element.setAttribute('aria-expanded', true)\n    }\n\n    if (callback) {\n      callback()\n    }\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Tab.getOrCreateInstance(this)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  const data = Tab.getOrCreateInstance(this)\n  data.show()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tab to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Tab)\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  reflow,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 5000\n}\n\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"toast\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Toast extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._config = this._getConfig(config)\n    this._timeout = null\n    this._hasMouseInteraction = false\n    this._hasKeyboardInteraction = false\n    this._setListeners()\n  }\n\n  // Getters\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n\n  show() {\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      this._element.classList.add(CLASS_NAME_SHOW)\n\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n\n      this._maybeScheduleHide()\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE)\n    reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOWING)\n\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  hide() {\n    if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    super.dispose()\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n    return config\n  }\n\n  _maybeScheduleHide() {\n    if (!this._config.autohide) {\n      return\n    }\n\n    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n      return\n    }\n\n    this._timeout = setTimeout(() => {\n      this.hide()\n    }, this._config.delay)\n  }\n\n  _onInteraction(event, isInteracting) {\n    switch (event.type) {\n      case 'mouseover':\n      case 'mouseout':\n        this._hasMouseInteraction = isInteracting\n        break\n      case 'focusin':\n      case 'focusout':\n        this._hasKeyboardInteraction = isInteracting\n        break\n      default:\n        break\n    }\n\n    if (isInteracting) {\n      this._clearTimeout()\n      return\n    }\n\n    const nextElement = event.relatedTarget\n    if (this._element === nextElement || this._element.contains(nextElement)) {\n      return\n    }\n\n    this._maybeScheduleHide()\n  }\n\n  _setListeners() {\n    EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, () => this.hide())\n    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Toast.getOrCreateInstance(this, config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config](this)\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Toast to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Toast)\n\nexport default Toast\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): index.umd.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Alert from './src/alert'\nimport Button from './src/button'\nimport Carousel from './src/carousel'\nimport Collapse from './src/collapse'\nimport Dropdown from './src/dropdown'\nimport Modal from './src/modal'\nimport Offcanvas from './src/offcanvas'\nimport Popover from './src/popover'\nimport ScrollSpy from './src/scrollspy'\nimport Tab from './src/tab'\nimport Toast from './src/toast'\nimport Tooltip from './src/tooltip'\n\nexport default {\n  Alert,\n  Button,\n  Carousel,\n  Collapse,\n  Dropdown,\n  Modal,\n  Offcanvas,\n  Popover,\n  ScrollSpy,\n  Tab,\n  Toast,\n  Tooltip\n}\n"]}
shiny/www/shared/bootstrap/bootstrap.bundle.min.js METASEP
/*!
  * Bootstrap v5.0.2 (https://getbootstrap.com/)
  * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
  */
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter(t=>t.matches(e)),parents(t,e){const i=[];let n=t.parentNode;for(;n&&n.nodeType===Node.ELEMENT_NODE&&3!==n.nodeType;)n.matches(e)&&i.push(n),n=n.parentNode;return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]}},e=t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t},i=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i="#"+i.split("#")[1]),e=i&&"#"!==i?i.trim():null}return e},n=t=>{const e=i(t);return e&&document.querySelector(e)?e:null},s=t=>{const e=i(t);return e?document.querySelector(e):null},o=t=>{t.dispatchEvent(new Event("transitionend"))},r=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),a=e=>r(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?t.findOne(e):null,l=(t,e,i)=>{Object.keys(i).forEach(n=>{const s=i[n],o=e[n],a=o&&r(o)?"element":null==(l=o)?""+l:{}.toString.call(l).match(/\s([a-z]+)/i)[1].toLowerCase();var l;if(!new RegExp(s).test(a))throw new TypeError(`${t.toUpperCase()}: Option "${n}" provided type "${a}" but expected type "${s}".`)})},c=t=>!(!r(t)||0===t.getClientRects().length)&&"visible"===getComputedStyle(t).getPropertyValue("visibility"),h=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),d=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?d(t.parentNode):null},u=()=>{},f=t=>t.offsetHeight,p=()=>{const{jQuery:t}=window;return t&&!document.body.hasAttribute("data-bs-no-jquery")?t:null},m=[],g=()=>"rtl"===document.documentElement.dir,_=t=>{var e;e=()=>{const e=p();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(m.length||document.addEventListener("DOMContentLoaded",()=>{m.forEach(t=>t())}),m.push(e)):e()},b=t=>{"function"==typeof t&&t()},v=(t,e,i=!0)=>{if(!i)return void b(t);const n=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let s=!1;const r=({target:i})=>{i===e&&(s=!0,e.removeEventListener("transitionend",r),b(t))};e.addEventListener("transitionend",r),setTimeout(()=>{s||o(e)},n)},y=(t,e,i,n)=>{let s=t.indexOf(e);if(-1===s)return t[!i&&n?t.length-1:0];const o=t.length;return s+=i?1:-1,n&&(s=(s+o)%o),t[Math.max(0,Math.min(s,o-1))]},w=/[^.]*(?=\..*)\.|.*/,E=/\..*/,A=/::\d+$/,T={};let O=1;const C={mouseenter:"mouseover",mouseleave:"mouseout"},k=/^(mouseenter|mouseleave)/i,L=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function x(t,e){return e&&`${e}::${O++}`||t.uidEvent||O++}function D(t){const e=x(t);return t.uidEvent=e,T[e]=T[e]||{},T[e]}function S(t,e,i=null){const n=Object.keys(t);for(let s=0,o=n.length;s<o;s++){const o=t[n[s]];if(o.originalHandler===e&&o.delegationSelector===i)return o}return null}function I(t,e,i){const n="string"==typeof e,s=n?i:e;let o=M(t);return L.has(o)||(o=t),[n,s,o]}function N(t,e,i,n,s){if("string"!=typeof e||!t)return;if(i||(i=n,n=null),k.test(e)){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};n?n=t(n):i=t(i)}const[o,r,a]=I(e,i,n),l=D(t),c=l[a]||(l[a]={}),h=S(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=x(r,e.replace(w,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(let a=o.length;a--;)if(o[a]===r)return s.delegateTarget=r,n.oneOff&&P.off(t,s.type,e,i),i.apply(r,[s]);return null}}(t,i,n):function(t,e){return function i(n){return n.delegateTarget=t,i.oneOff&&P.off(t,n.type,e),e.apply(t,[n])}}(t,i);u.delegationSelector=o?i:null,u.originalHandler=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function j(t,e,i,n,s){const o=S(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function M(t){return t=t.replace(E,""),C[t]||t}const P={on(t,e,i,n){N(t,e,i,n,!1)},one(t,e,i,n){N(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=I(e,i,n),a=r!==e,l=D(t),c=e.startsWith(".");if(void 0!==o){if(!l||!l[r])return;return void j(t,l,r,o,s?i:null)}c&&Object.keys(l).forEach(i=>{!function(t,e,i,n){const s=e[i]||{};Object.keys(s).forEach(o=>{if(o.includes(n)){const n=s[o];j(t,e,i,n.originalHandler,n.delegationSelector)}})}(t,l,i,e.slice(1))});const h=l[r]||{};Object.keys(h).forEach(i=>{const n=i.replace(A,"");if(!a||e.includes(n)){const e=h[i];j(t,l,r,e.originalHandler,e.delegationSelector)}})},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=p(),s=M(e),o=e!==s,r=L.has(s);let a,l=!0,c=!0,h=!1,d=null;return o&&n&&(a=n.Event(e,i),n(t).trigger(a),l=!a.isPropagationStopped(),c=!a.isImmediatePropagationStopped(),h=a.isDefaultPrevented()),r?(d=document.createEvent("HTMLEvents"),d.initEvent(s,l,!0)):d=new CustomEvent(e,{bubbles:l,cancelable:!0}),void 0!==i&&Object.keys(i).forEach(t=>{Object.defineProperty(d,t,{get:()=>i[t]})}),h&&d.preventDefault(),c&&t.dispatchEvent(d),d.defaultPrevented&&void 0!==a&&a.preventDefault(),d}},H=new Map;var R={set(t,e,i){H.has(t)||H.set(t,new Map);const n=H.get(t);n.has(e)||0===n.size?n.set(e,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(t,e)=>H.has(t)&&H.get(t).get(e)||null,remove(t,e){if(!H.has(t))return;const i=H.get(t);i.delete(e),0===i.size&&H.delete(t)}};class B{constructor(t){(t=a(t))&&(this._element=t,R.set(this._element,this.constructor.DATA_KEY,this))}dispose(){R.remove(this._element,this.constructor.DATA_KEY),P.off(this._element,this.constructor.EVENT_KEY),Object.getOwnPropertyNames(this).forEach(t=>{this[t]=null})}_queueCallback(t,e,i=!0){v(t,e,i)}static getInstance(t){return R.get(t,this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.0.2"}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}static get DATA_KEY(){return"bs."+this.NAME}static get EVENT_KEY(){return"."+this.DATA_KEY}}class W extends B{static get NAME(){return"alert"}close(t){const e=t?this._getRootElement(t):this._element,i=this._triggerCloseEvent(e);null===i||i.defaultPrevented||this._removeElement(e)}_getRootElement(t){return s(t)||t.closest(".alert")}_triggerCloseEvent(t){return P.trigger(t,"close.bs.alert")}_removeElement(t){t.classList.remove("show");const e=t.classList.contains("fade");this._queueCallback(()=>this._destroyElement(t),t,e)}_destroyElement(t){t.remove(),P.trigger(t,"closed.bs.alert")}static jQueryInterface(t){return this.each((function(){const e=W.getOrCreateInstance(this);"close"===t&&e[t](this)}))}static handleDismiss(t){return function(e){e&&e.preventDefault(),t.close(this)}}}P.on(document,"click.bs.alert.data-api",'[data-bs-dismiss="alert"]',W.handleDismiss(new W)),_(W);class q extends B{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=q.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}function z(t){return"true"===t||"false"!==t&&(t===Number(t).toString()?Number(t):""===t||"null"===t?null:t)}function $(t){return t.replace(/[A-Z]/g,t=>"-"+t.toLowerCase())}P.on(document,"click.bs.button.data-api",'[data-bs-toggle="button"]',t=>{t.preventDefault();const e=t.target.closest('[data-bs-toggle="button"]');q.getOrCreateInstance(e).toggle()}),_(q);const U={setDataAttribute(t,e,i){t.setAttribute("data-bs-"+$(e),i)},removeDataAttribute(t,e){t.removeAttribute("data-bs-"+$(e))},getDataAttributes(t){if(!t)return{};const e={};return Object.keys(t.dataset).filter(t=>t.startsWith("bs")).forEach(i=>{let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),e[n]=z(t.dataset[i])}),e},getDataAttribute:(t,e)=>z(t.getAttribute("data-bs-"+$(e))),offset(t){const e=t.getBoundingClientRect();return{top:e.top+document.body.scrollTop,left:e.left+document.body.scrollLeft}},position:t=>({top:t.offsetTop,left:t.offsetLeft})},F={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},V={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},K="next",X="prev",Y="left",Q="right",G={ArrowLeft:Q,ArrowRight:Y};class Z extends B{constructor(e,i){super(e),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(i),this._indicatorsElement=t.findOne(".carousel-indicators",this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent),this._addEventListeners()}static get Default(){return F}static get NAME(){return"carousel"}next(){this._slide(K)}nextWhenVisible(){!document.hidden&&c(this._element)&&this.next()}prev(){this._slide(X)}pause(e){e||(this._isPaused=!0),t.findOne(".carousel-item-next, .carousel-item-prev",this._element)&&(o(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}cycle(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}to(e){this._activeElement=t.findOne(".active.carousel-item",this._element);const i=this._getItemIndex(this._activeElement);if(e>this._items.length-1||e<0)return;if(this._isSliding)return void P.one(this._element,"slid.bs.carousel",()=>this.to(e));if(i===e)return this.pause(),void this.cycle();const n=e>i?K:X;this._slide(n,this._items[e])}_getConfig(t){return t={...F,...U.getDataAttributes(this._element),..."object"==typeof t?t:{}},l("carousel",t,V),t}_handleSwipe(){const t=Math.abs(this.touchDeltaX);if(t<=40)return;const e=t/this.touchDeltaX;this.touchDeltaX=0,e&&this._slide(e>0?Q:Y)}_addEventListeners(){this._config.keyboard&&P.on(this._element,"keydown.bs.carousel",t=>this._keydown(t)),"hover"===this._config.pause&&(P.on(this._element,"mouseenter.bs.carousel",t=>this.pause(t)),P.on(this._element,"mouseleave.bs.carousel",t=>this.cycle(t))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()}_addTouchEventListeners(){const e=t=>{!this._pointerEvent||"pen"!==t.pointerType&&"touch"!==t.pointerType?this._pointerEvent||(this.touchStartX=t.touches[0].clientX):this.touchStartX=t.clientX},i=t=>{this.touchDeltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this.touchStartX},n=t=>{!this._pointerEvent||"pen"!==t.pointerType&&"touch"!==t.pointerType||(this.touchDeltaX=t.clientX-this.touchStartX),this._handleSwipe(),"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(t=>this.cycle(t),500+this._config.interval))};t.find(".carousel-item img",this._element).forEach(t=>{P.on(t,"dragstart.bs.carousel",t=>t.preventDefault())}),this._pointerEvent?(P.on(this._element,"pointerdown.bs.carousel",t=>e(t)),P.on(this._element,"pointerup.bs.carousel",t=>n(t)),this._element.classList.add("pointer-event")):(P.on(this._element,"touchstart.bs.carousel",t=>e(t)),P.on(this._element,"touchmove.bs.carousel",t=>i(t)),P.on(this._element,"touchend.bs.carousel",t=>n(t)))}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=G[t.key];e&&(t.preventDefault(),this._slide(e))}_getItemIndex(e){return this._items=e&&e.parentNode?t.find(".carousel-item",e.parentNode):[],this._items.indexOf(e)}_getItemByOrder(t,e){const i=t===K;return y(this._items,e,i,this._config.wrap)}_triggerSlideEvent(e,i){const n=this._getItemIndex(e),s=this._getItemIndex(t.findOne(".active.carousel-item",this._element));return P.trigger(this._element,"slide.bs.carousel",{relatedTarget:e,direction:i,from:s,to:n})}_setActiveIndicatorElement(e){if(this._indicatorsElement){const i=t.findOne(".active",this._indicatorsElement);i.classList.remove("active"),i.removeAttribute("aria-current");const n=t.find("[data-bs-target]",this._indicatorsElement);for(let t=0;t<n.length;t++)if(Number.parseInt(n[t].getAttribute("data-bs-slide-to"),10)===this._getItemIndex(e)){n[t].classList.add("active"),n[t].setAttribute("aria-current","true");break}}}_updateInterval(){const e=this._activeElement||t.findOne(".active.carousel-item",this._element);if(!e)return;const i=Number.parseInt(e.getAttribute("data-bs-interval"),10);i?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=i):this._config.interval=this._config.defaultInterval||this._config.interval}_slide(e,i){const n=this._directionToOrder(e),s=t.findOne(".active.carousel-item",this._element),o=this._getItemIndex(s),r=i||this._getItemByOrder(n,s),a=this._getItemIndex(r),l=Boolean(this._interval),c=n===K,h=c?"carousel-item-start":"carousel-item-end",d=c?"carousel-item-next":"carousel-item-prev",u=this._orderToDirection(n);if(r&&r.classList.contains("active"))return void(this._isSliding=!1);if(this._isSliding)return;if(this._triggerSlideEvent(r,u).defaultPrevented)return;if(!s||!r)return;this._isSliding=!0,l&&this.pause(),this._setActiveIndicatorElement(r),this._activeElement=r;const p=()=>{P.trigger(this._element,"slid.bs.carousel",{relatedTarget:r,direction:u,from:o,to:a})};if(this._element.classList.contains("slide")){r.classList.add(d),f(r),s.classList.add(h),r.classList.add(h);const t=()=>{r.classList.remove(h,d),r.classList.add("active"),s.classList.remove("active",d,h),this._isSliding=!1,setTimeout(p,0)};this._queueCallback(t,s,!0)}else s.classList.remove("active"),r.classList.add("active"),this._isSliding=!1,p();l&&this.cycle()}_directionToOrder(t){return[Q,Y].includes(t)?g()?t===Y?X:K:t===Y?K:X:t}_orderToDirection(t){return[K,X].includes(t)?g()?t===X?Y:Q:t===X?Q:Y:t}static carouselInterface(t,e){const i=Z.getOrCreateInstance(t,e);let{_config:n}=i;"object"==typeof e&&(n={...n,...e});const s="string"==typeof e?e:n.slide;if("number"==typeof e)i.to(e);else if("string"==typeof s){if(void 0===i[s])throw new TypeError(`No method named "${s}"`);i[s]()}else n.interval&&n.ride&&(i.pause(),i.cycle())}static jQueryInterface(t){return this.each((function(){Z.carouselInterface(this,t)}))}static dataApiClickHandler(t){const e=s(this);if(!e||!e.classList.contains("carousel"))return;const i={...U.getDataAttributes(e),...U.getDataAttributes(this)},n=this.getAttribute("data-bs-slide-to");n&&(i.interval=!1),Z.carouselInterface(e,i),n&&Z.getInstance(e).to(n),t.preventDefault()}}P.on(document,"click.bs.carousel.data-api","[data-bs-slide], [data-bs-slide-to]",Z.dataApiClickHandler),P.on(window,"load.bs.carousel.data-api",()=>{const e=t.find('[data-bs-ride="carousel"]');for(let t=0,i=e.length;t<i;t++)Z.carouselInterface(e[t],Z.getInstance(e[t]))}),_(Z);const J={toggle:!0,parent:""},tt={toggle:"boolean",parent:"(string|element)"};class et extends B{constructor(e,i){super(e),this._isTransitioning=!1,this._config=this._getConfig(i),this._triggerArray=t.find(`[data-bs-toggle="collapse"][href="#${this._element.id}"],[data-bs-toggle="collapse"][data-bs-target="#${this._element.id}"]`);const s=t.find('[data-bs-toggle="collapse"]');for(let e=0,i=s.length;e<i;e++){const i=s[e],o=n(i),r=t.find(o).filter(t=>t===this._element);null!==o&&r.length&&(this._selector=o,this._triggerArray.push(i))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}static get Default(){return J}static get NAME(){return"collapse"}toggle(){this._element.classList.contains("show")?this.hide():this.show()}show(){if(this._isTransitioning||this._element.classList.contains("show"))return;let e,i;this._parent&&(e=t.find(".show, .collapsing",this._parent).filter(t=>"string"==typeof this._config.parent?t.getAttribute("data-bs-parent")===this._config.parent:t.classList.contains("collapse")),0===e.length&&(e=null));const n=t.findOne(this._selector);if(e){const t=e.find(t=>n!==t);if(i=t?et.getInstance(t):null,i&&i._isTransitioning)return}if(P.trigger(this._element,"show.bs.collapse").defaultPrevented)return;e&&e.forEach(t=>{n!==t&&et.collapseInterface(t,"hide"),i||R.set(t,"bs.collapse",null)});const s=this._getDimension();this._element.classList.remove("collapse"),this._element.classList.add("collapsing"),this._element.style[s]=0,this._triggerArray.length&&this._triggerArray.forEach(t=>{t.classList.remove("collapsed"),t.setAttribute("aria-expanded",!0)}),this.setTransitioning(!0);const o="scroll"+(s[0].toUpperCase()+s.slice(1));this._queueCallback(()=>{this._element.classList.remove("collapsing"),this._element.classList.add("collapse","show"),this._element.style[s]="",this.setTransitioning(!1),P.trigger(this._element,"shown.bs.collapse")},this._element,!0),this._element.style[s]=this._element[o]+"px"}hide(){if(this._isTransitioning||!this._element.classList.contains("show"))return;if(P.trigger(this._element,"hide.bs.collapse").defaultPrevented)return;const t=this._getDimension();this._element.style[t]=this._element.getBoundingClientRect()[t]+"px",f(this._element),this._element.classList.add("collapsing"),this._element.classList.remove("collapse","show");const e=this._triggerArray.length;if(e>0)for(let t=0;t<e;t++){const e=this._triggerArray[t],i=s(e);i&&!i.classList.contains("show")&&(e.classList.add("collapsed"),e.setAttribute("aria-expanded",!1))}this.setTransitioning(!0),this._element.style[t]="",this._queueCallback(()=>{this.setTransitioning(!1),this._element.classList.remove("collapsing"),this._element.classList.add("collapse"),P.trigger(this._element,"hidden.bs.collapse")},this._element,!0)}setTransitioning(t){this._isTransitioning=t}_getConfig(t){return(t={...J,...t}).toggle=Boolean(t.toggle),l("collapse",t,tt),t}_getDimension(){return this._element.classList.contains("width")?"width":"height"}_getParent(){let{parent:e}=this._config;e=a(e);const i=`[data-bs-toggle="collapse"][data-bs-parent="${e}"]`;return t.find(i,e).forEach(t=>{const e=s(t);this._addAriaAndCollapsedClass(e,[t])}),e}_addAriaAndCollapsedClass(t,e){if(!t||!e.length)return;const i=t.classList.contains("show");e.forEach(t=>{i?t.classList.remove("collapsed"):t.classList.add("collapsed"),t.setAttribute("aria-expanded",i)})}static collapseInterface(t,e){let i=et.getInstance(t);const n={...J,...U.getDataAttributes(t),..."object"==typeof e&&e?e:{}};if(!i&&n.toggle&&"string"==typeof e&&/show|hide/.test(e)&&(n.toggle=!1),i||(i=new et(t,n)),"string"==typeof e){if(void 0===i[e])throw new TypeError(`No method named "${e}"`);i[e]()}}static jQueryInterface(t){return this.each((function(){et.collapseInterface(this,t)}))}}P.on(document,"click.bs.collapse.data-api",'[data-bs-toggle="collapse"]',(function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();const i=U.getDataAttributes(this),s=n(this);t.find(s).forEach(t=>{const e=et.getInstance(t);let n;e?(null===e._parent&&"string"==typeof i.parent&&(e._config.parent=i.parent,e._parent=e._getParent()),n="toggle"):n=i,et.collapseInterface(t,n)})})),_(et);var it="top",nt="bottom",st="right",ot="left",rt=[it,nt,st,ot],at=rt.reduce((function(t,e){return t.concat([e+"-start",e+"-end"])}),[]),lt=[].concat(rt,["auto"]).reduce((function(t,e){return t.concat([e,e+"-start",e+"-end"])}),[]),ct=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function ht(t){return t?(t.nodeName||"").toLowerCase():null}function dt(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function ut(t){return t instanceof dt(t).Element||t instanceof Element}function ft(t){return t instanceof dt(t).HTMLElement||t instanceof HTMLElement}function pt(t){return"undefined"!=typeof ShadowRoot&&(t instanceof dt(t).ShadowRoot||t instanceof ShadowRoot)}var mt={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];ft(s)&&ht(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});ft(n)&&ht(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function gt(t){return t.split("-")[0]}function _t(t){var e=t.getBoundingClientRect();return{width:e.width,height:e.height,top:e.top,right:e.right,bottom:e.bottom,left:e.left,x:e.left,y:e.top}}function bt(t){var e=_t(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function vt(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&pt(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function yt(t){return dt(t).getComputedStyle(t)}function wt(t){return["table","td","th"].indexOf(ht(t))>=0}function Et(t){return((ut(t)?t.ownerDocument:t.document)||window.document).documentElement}function At(t){return"html"===ht(t)?t:t.assignedSlot||t.parentNode||(pt(t)?t.host:null)||Et(t)}function Tt(t){return ft(t)&&"fixed"!==yt(t).position?t.offsetParent:null}function Ot(t){for(var e=dt(t),i=Tt(t);i&&wt(i)&&"static"===yt(i).position;)i=Tt(i);return i&&("html"===ht(i)||"body"===ht(i)&&"static"===yt(i).position)?e:i||function(t){var e=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&ft(t)&&"fixed"===yt(t).position)return null;for(var i=At(t);ft(i)&&["html","body"].indexOf(ht(i))<0;){var n=yt(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function Ct(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}var kt=Math.max,Lt=Math.min,xt=Math.round;function Dt(t,e,i){return kt(t,Lt(e,i))}function St(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function It(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}var Nt={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=gt(i.placement),l=Ct(a),c=[ot,st].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return St("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:It(t,rt))}(s.padding,i),d=bt(o),u="y"===l?it:ot,f="y"===l?nt:st,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],m=r[l]-i.rects.reference[l],g=Ot(o),_=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=p/2-m/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,E=Dt(v,w,y),A=l;i.modifiersData[n]=((e={})[A]=E,e.centerOffset=E-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&vt(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]},jt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Mt(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.offsets,r=t.position,a=t.gpuAcceleration,l=t.adaptive,c=t.roundOffsets,h=!0===c?function(t){var e=t.x,i=t.y,n=window.devicePixelRatio||1;return{x:xt(xt(e*n)/n)||0,y:xt(xt(i*n)/n)||0}}(o):"function"==typeof c?c(o):o,d=h.x,u=void 0===d?0:d,f=h.y,p=void 0===f?0:f,m=o.hasOwnProperty("x"),g=o.hasOwnProperty("y"),_=ot,b=it,v=window;if(l){var y=Ot(i),w="clientHeight",E="clientWidth";y===dt(i)&&"static"!==yt(y=Et(i)).position&&(w="scrollHeight",E="scrollWidth"),y=y,s===it&&(b=nt,p-=y[w]-n.height,p*=a?1:-1),s===ot&&(_=st,u-=y[E]-n.width,u*=a?1:-1)}var A,T=Object.assign({position:r},l&&jt);return a?Object.assign({},T,((A={})[b]=g?"0":"",A[_]=m?"0":"",A.transform=(v.devicePixelRatio||1)<2?"translate("+u+"px, "+p+"px)":"translate3d("+u+"px, "+p+"px, 0)",A)):Object.assign({},T,((e={})[b]=g?p+"px":"",e[_]=m?u+"px":"",e.transform="",e))}var Pt={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:gt(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,Mt(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,Mt(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}},Ht={passive:!0},Rt={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=dt(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,Ht)})),a&&l.addEventListener("resize",i.update,Ht),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,Ht)})),a&&l.removeEventListener("resize",i.update,Ht)}},data:{}},Bt={left:"right",right:"left",bottom:"top",top:"bottom"};function Wt(t){return t.replace(/left|right|bottom|top/g,(function(t){return Bt[t]}))}var qt={start:"end",end:"start"};function zt(t){return t.replace(/start|end/g,(function(t){return qt[t]}))}function $t(t){var e=dt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Ut(t){return _t(Et(t)).left+$t(t).scrollLeft}function Ft(t){var e=yt(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Vt(t,e){var i;void 0===e&&(e=[]);var n=function t(e){return["html","body","#document"].indexOf(ht(e))>=0?e.ownerDocument.body:ft(e)&&Ft(e)?e:t(At(e))}(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=dt(n),r=s?[o].concat(o.visualViewport||[],Ft(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Vt(At(r)))}function Kt(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function Xt(t,e){return"viewport"===e?Kt(function(t){var e=dt(t),i=Et(t),n=e.visualViewport,s=i.clientWidth,o=i.clientHeight,r=0,a=0;return n&&(s=n.width,o=n.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(r=n.offsetLeft,a=n.offsetTop)),{width:s,height:o,x:r+Ut(t),y:a}}(t)):ft(e)?function(t){var e=_t(t);return e.top=e.top+t.clientTop,e.left=e.left+t.clientLeft,e.bottom=e.top+t.clientHeight,e.right=e.left+t.clientWidth,e.width=t.clientWidth,e.height=t.clientHeight,e.x=e.left,e.y=e.top,e}(e):Kt(function(t){var e,i=Et(t),n=$t(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=kt(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=kt(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+Ut(t),l=-n.scrollTop;return"rtl"===yt(s||i).direction&&(a+=kt(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(Et(t)))}function Yt(t){return t.split("-")[1]}function Qt(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?gt(s):null,r=s?Yt(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case it:e={x:a,y:i.y-n.height};break;case nt:e={x:a,y:i.y+i.height};break;case st:e={x:i.x+i.width,y:l};break;case ot:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?Ct(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case"start":e[c]=e[c]-(i[h]/2-n[h]/2);break;case"end":e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function Gt(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.boundary,r=void 0===o?"clippingParents":o,a=i.rootBoundary,l=void 0===a?"viewport":a,c=i.elementContext,h=void 0===c?"popper":c,d=i.altBoundary,u=void 0!==d&&d,f=i.padding,p=void 0===f?0:f,m=St("number"!=typeof p?p:It(p,rt)),g="popper"===h?"reference":"popper",_=t.elements.reference,b=t.rects.popper,v=t.elements[u?g:h],y=function(t,e,i){var n="clippingParents"===e?function(t){var e=Vt(At(t)),i=["absolute","fixed"].indexOf(yt(t).position)>=0&&ft(t)?Ot(t):t;return ut(i)?e.filter((function(t){return ut(t)&&vt(t,i)&&"body"!==ht(t)})):[]}(t):[].concat(e),s=[].concat(n,[i]),o=s[0],r=s.reduce((function(e,i){var n=Xt(t,i);return e.top=kt(n.top,e.top),e.right=Lt(n.right,e.right),e.bottom=Lt(n.bottom,e.bottom),e.left=kt(n.left,e.left),e}),Xt(t,o));return r.width=r.right-r.left,r.height=r.bottom-r.top,r.x=r.left,r.y=r.top,r}(ut(v)?v:v.contextElement||Et(t.elements.popper),r,l),w=_t(_),E=Qt({reference:w,element:b,strategy:"absolute",placement:s}),A=Kt(Object.assign({},b,E)),T="popper"===h?A:w,O={top:y.top-T.top+m.top,bottom:T.bottom-y.bottom+m.bottom,left:y.left-T.left+m.left,right:T.right-y.right+m.right},C=t.modifiersData.offset;if("popper"===h&&C){var k=C[s];Object.keys(O).forEach((function(t){var e=[st,nt].indexOf(t)>=0?1:-1,i=[it,nt].indexOf(t)>=0?"y":"x";O[t]+=k[i]*e}))}return O}function Zt(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?lt:l,h=Yt(n),d=h?a?at:at.filter((function(t){return Yt(t)===h})):rt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=Gt(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[gt(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}var Jt={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,m=i.allowedAutoPlacements,g=e.options.placement,_=gt(g),b=l||(_!==g&&p?function(t){if("auto"===gt(t))return[];var e=Wt(t);return[zt(t),e,zt(e)]}(g):[Wt(g)]),v=[g].concat(b).reduce((function(t,i){return t.concat("auto"===gt(i)?Zt(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:m}):i)}),[]),y=e.rects.reference,w=e.rects.popper,E=new Map,A=!0,T=v[0],O=0;O<v.length;O++){var C=v[O],k=gt(C),L="start"===Yt(C),x=[it,nt].indexOf(k)>=0,D=x?"width":"height",S=Gt(e,{placement:C,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),I=x?L?st:ot:L?nt:it;y[D]>w[D]&&(I=Wt(I));var N=Wt(I),j=[];if(o&&j.push(S[k]<=0),a&&j.push(S[I]<=0,S[N]<=0),j.every((function(t){return t}))){T=C,A=!1;break}E.set(C,j)}if(A)for(var M=function(t){var e=v.find((function(e){var i=E.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},P=p?3:1;P>0&&"break"!==M(P);P--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function te(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function ee(t){return[it,st,nt,ot].some((function(e){return t[e]>=0}))}var ie={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=Gt(e,{elementContext:"reference"}),a=Gt(e,{altBoundary:!0}),l=te(r,n),c=te(a,s,o),h=ee(l),d=ee(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},ne={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=lt.reduce((function(t,i){return t[i]=function(t,e,i){var n=gt(t),s=[ot,it].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[ot,st].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},se={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=Qt({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},oe={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,m=void 0===p?0:p,g=Gt(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=gt(e.placement),b=Yt(e.placement),v=!b,y=Ct(_),w="x"===y?"y":"x",E=e.modifiersData.popperOffsets,A=e.rects.reference,T=e.rects.popper,O="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,C={x:0,y:0};if(E){if(o||a){var k="y"===y?it:ot,L="y"===y?nt:st,x="y"===y?"height":"width",D=E[y],S=E[y]+g[k],I=E[y]-g[L],N=f?-T[x]/2:0,j="start"===b?A[x]:T[x],M="start"===b?-T[x]:-A[x],P=e.elements.arrow,H=f&&P?bt(P):{width:0,height:0},R=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},B=R[k],W=R[L],q=Dt(0,A[x],H[x]),z=v?A[x]/2-N-q-B-O:j-q-B-O,$=v?-A[x]/2+N+q+W+O:M+q+W+O,U=e.elements.arrow&&Ot(e.elements.arrow),F=U?"y"===y?U.clientTop||0:U.clientLeft||0:0,V=e.modifiersData.offset?e.modifiersData.offset[e.placement][y]:0,K=E[y]+z-V-F,X=E[y]+$-V;if(o){var Y=Dt(f?Lt(S,K):S,D,f?kt(I,X):I);E[y]=Y,C[y]=Y-D}if(a){var Q="x"===y?it:ot,G="x"===y?nt:st,Z=E[w],J=Z+g[Q],tt=Z-g[G],et=Dt(f?Lt(J,K):J,Z,f?kt(tt,X):tt);E[w]=et,C[w]=et-Z}}e.modifiersData[n]=C}},requiresIfExists:["offset"]};function re(t,e,i){void 0===i&&(i=!1);var n,s,o=Et(e),r=_t(t),a=ft(e),l={scrollLeft:0,scrollTop:0},c={x:0,y:0};return(a||!a&&!i)&&(("body"!==ht(e)||Ft(o))&&(l=(n=e)!==dt(n)&&ft(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:$t(n)),ft(e)?((c=_t(e)).x+=e.clientLeft,c.y+=e.clientTop):o&&(c.x=Ut(o))),{x:r.left+l.scrollLeft-c.x,y:r.top+l.scrollTop-c.y,width:r.width,height:r.height}}var ae={placement:"bottom",modifiers:[],strategy:"absolute"};function le(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]=arguments[i];return!e.some((function(t){return!(t&&"function"==typeof t.getBoundingClientRect)}))}function ce(t){void 0===t&&(t={});var e=t,i=e.defaultModifiers,n=void 0===i?[]:i,s=e.defaultOptions,o=void 0===s?ae:s;return function(t,e,i){void 0===i&&(i=o);var s,r,a={placement:"bottom",orderedModifiers:[],options:Object.assign({},ae,o),modifiersData:{},elements:{reference:t,popper:e},attributes:{},styles:{}},l=[],c=!1,h={state:a,setOptions:function(i){d(),a.options=Object.assign({},o,a.options,i),a.scrollParents={reference:ut(t)?Vt(t):t.contextElement?Vt(t.contextElement):[],popper:Vt(e)};var s,r,c=function(t){var e=function(t){var e=new Map,i=new Set,n=[];return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||function t(s){i.add(s.name),[].concat(s.requires||[],s.requiresIfExists||[]).forEach((function(n){if(!i.has(n)){var s=e.get(n);s&&t(s)}})),n.push(s)}(t)})),n}(t);return ct.reduce((function(t,i){return t.concat(e.filter((function(t){return t.phase===i})))}),[])}((s=[].concat(n,a.options.modifiers),r=s.reduce((function(t,e){var i=t[e.name];return t[e.name]=i?Object.assign({},i,e,{options:Object.assign({},i.options,e.options),data:Object.assign({},i.data,e.data)}):e,t}),{}),Object.keys(r).map((function(t){return r[t]}))));return a.orderedModifiers=c.filter((function(t){return t.enabled})),a.orderedModifiers.forEach((function(t){var e=t.name,i=t.options,n=void 0===i?{}:i,s=t.effect;if("function"==typeof s){var o=s({state:a,name:e,instance:h,options:n});l.push(o||function(){})}})),h.update()},forceUpdate:function(){if(!c){var t=a.elements,e=t.reference,i=t.popper;if(le(e,i)){a.rects={reference:re(e,Ot(i),"fixed"===a.options.strategy),popper:bt(i)},a.reset=!1,a.placement=a.options.placement,a.orderedModifiers.forEach((function(t){return a.modifiersData[t.name]=Object.assign({},t.data)}));for(var n=0;n<a.orderedModifiers.length;n++)if(!0!==a.reset){var s=a.orderedModifiers[n],o=s.fn,r=s.options,l=void 0===r?{}:r,d=s.name;"function"==typeof o&&(a=o({state:a,options:l,name:d,instance:h})||a)}else a.reset=!1,n=-1}}},update:(s=function(){return new Promise((function(t){h.forceUpdate(),t(a)}))},function(){return r||(r=new Promise((function(t){Promise.resolve().then((function(){r=void 0,t(s())}))}))),r}),destroy:function(){d(),c=!0}};if(!le(t,e))return h;function d(){l.forEach((function(t){return t()})),l=[]}return h.setOptions(i).then((function(t){!c&&i.onFirstUpdate&&i.onFirstUpdate(t)})),h}}var he=ce(),de=ce({defaultModifiers:[Rt,se,Pt,mt]}),ue=ce({defaultModifiers:[Rt,se,Pt,mt,ne,Jt,oe,Nt,ie]}),fe=Object.freeze({__proto__:null,popperGenerator:ce,detectOverflow:Gt,createPopperBase:he,createPopper:ue,createPopperLite:de,top:it,bottom:nt,right:st,left:ot,auto:"auto",basePlacements:rt,start:"start",end:"end",clippingParents:"clippingParents",viewport:"viewport",popper:"popper",reference:"reference",variationPlacements:at,placements:lt,beforeRead:"beforeRead",read:"read",afterRead:"afterRead",beforeMain:"beforeMain",main:"main",afterMain:"afterMain",beforeWrite:"beforeWrite",write:"write",afterWrite:"afterWrite",modifierPhases:ct,applyStyles:mt,arrow:Nt,computeStyles:Pt,eventListeners:Rt,flip:Jt,hide:ie,offset:ne,popperOffsets:se,preventOverflow:oe});const pe=new RegExp("ArrowUp|ArrowDown|Escape"),me=g()?"top-end":"top-start",ge=g()?"top-start":"top-end",_e=g()?"bottom-end":"bottom-start",be=g()?"bottom-start":"bottom-end",ve=g()?"left-start":"right-start",ye=g()?"right-start":"left-start",we={offset:[0,2],boundary:"clippingParents",reference:"toggle",display:"dynamic",popperConfig:null,autoClose:!0},Ee={offset:"(array|string|function)",boundary:"(string|element)",reference:"(string|element|object)",display:"string",popperConfig:"(null|object|function)",autoClose:"(boolean|string)"};class Ae extends B{constructor(t,e){super(t),this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}static get Default(){return we}static get DefaultType(){return Ee}static get NAME(){return"dropdown"}toggle(){h(this._element)||(this._element.classList.contains("show")?this.hide():this.show())}show(){if(h(this._element)||this._menu.classList.contains("show"))return;const t=Ae.getParentFromElement(this._element),e={relatedTarget:this._element};if(!P.trigger(this._element,"show.bs.dropdown",e).defaultPrevented){if(this._inNavbar)U.setDataAttribute(this._menu,"popper","none");else{if(void 0===fe)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let e=this._element;"parent"===this._config.reference?e=t:r(this._config.reference)?e=a(this._config.reference):"object"==typeof this._config.reference&&(e=this._config.reference);const i=this._getPopperConfig(),n=i.modifiers.find(t=>"applyStyles"===t.name&&!1===t.enabled);this._popper=ue(e,this._menu,i),n&&U.setDataAttribute(this._menu,"popper","static")}"ontouchstart"in document.documentElement&&!t.closest(".navbar-nav")&&[].concat(...document.body.children).forEach(t=>P.on(t,"mouseover",u)),this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.toggle("show"),this._element.classList.toggle("show"),P.trigger(this._element,"shown.bs.dropdown",e)}}hide(){if(h(this._element)||!this._menu.classList.contains("show"))return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_addEventListeners(){P.on(this._element,"click.bs.dropdown",t=>{t.preventDefault(),this.toggle()})}_completeHide(t){P.trigger(this._element,"hide.bs.dropdown",t).defaultPrevented||("ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>P.off(t,"mouseover",u)),this._popper&&this._popper.destroy(),this._menu.classList.remove("show"),this._element.classList.remove("show"),this._element.setAttribute("aria-expanded","false"),U.removeDataAttribute(this._menu,"popper"),P.trigger(this._element,"hidden.bs.dropdown",t))}_getConfig(t){if(t={...this.constructor.Default,...U.getDataAttributes(this._element),...t},l("dropdown",t,this.constructor.DefaultType),"object"==typeof t.reference&&!r(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError("dropdown".toUpperCase()+': Option "reference" provided type "object" without a required "getBoundingClientRect" method.');return t}_getMenuElement(){return t.next(this._element,".dropdown-menu")[0]}_getPlacement(){const t=this._element.parentNode;if(t.classList.contains("dropend"))return ve;if(t.classList.contains("dropstart"))return ye;const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?ge:me:e?be:_e}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return"static"===this._config.display&&(t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_selectMenuItem({key:e,target:i}){const n=t.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter(c);n.length&&y(n,i,"ArrowDown"===e,!n.includes(i)).focus()}static dropdownInterface(t,e){const i=Ae.getOrCreateInstance(t,e);if("string"==typeof e){if(void 0===i[e])throw new TypeError(`No method named "${e}"`);i[e]()}}static jQueryInterface(t){return this.each((function(){Ae.dropdownInterface(this,t)}))}static clearMenus(e){if(e&&(2===e.button||"keyup"===e.type&&"Tab"!==e.key))return;const i=t.find('[data-bs-toggle="dropdown"]');for(let t=0,n=i.length;t<n;t++){const n=Ae.getInstance(i[t]);if(!n||!1===n._config.autoClose)continue;if(!n._element.classList.contains("show"))continue;const s={relatedTarget:n._element};if(e){const t=e.composedPath(),i=t.includes(n._menu);if(t.includes(n._element)||"inside"===n._config.autoClose&&!i||"outside"===n._config.autoClose&&i)continue;if(n._menu.contains(e.target)&&("keyup"===e.type&&"Tab"===e.key||/input|select|option|textarea|form/i.test(e.target.tagName)))continue;"click"===e.type&&(s.clickEvent=e)}n._completeHide(s)}}static getParentFromElement(t){return s(t)||t.parentNode}static dataApiKeydownHandler(e){if(/input|textarea/i.test(e.target.tagName)?"Space"===e.key||"Escape"!==e.key&&("ArrowDown"!==e.key&&"ArrowUp"!==e.key||e.target.closest(".dropdown-menu")):!pe.test(e.key))return;const i=this.classList.contains("show");if(!i&&"Escape"===e.key)return;if(e.preventDefault(),e.stopPropagation(),h(this))return;const n=()=>this.matches('[data-bs-toggle="dropdown"]')?this:t.prev(this,'[data-bs-toggle="dropdown"]')[0];return"Escape"===e.key?(n().focus(),void Ae.clearMenus()):"ArrowUp"===e.key||"ArrowDown"===e.key?(i||n().click(),void Ae.getInstance(n())._selectMenuItem(e)):void(i&&"Space"!==e.key||Ae.clearMenus())}}P.on(document,"keydown.bs.dropdown.data-api",'[data-bs-toggle="dropdown"]',Ae.dataApiKeydownHandler),P.on(document,"keydown.bs.dropdown.data-api",".dropdown-menu",Ae.dataApiKeydownHandler),P.on(document,"click.bs.dropdown.data-api",Ae.clearMenus),P.on(document,"keyup.bs.dropdown.data-api",Ae.clearMenus),P.on(document,"click.bs.dropdown.data-api",'[data-bs-toggle="dropdown"]',(function(t){t.preventDefault(),Ae.dropdownInterface(this)})),_(Ae);class Te{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,"paddingRight",e=>e+t),this._setElementAttributes(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top","paddingRight",e=>e+t),this._setElementAttributes(".sticky-top","marginRight",e=>e-t)}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t)[e];t.style[e]=i(Number.parseFloat(s))+"px"})}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,"paddingRight"),this._resetElementAttributes(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top","paddingRight"),this._resetElementAttributes(".sticky-top","marginRight")}_saveInitialAttribute(t,e){const i=t.style[e];i&&U.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,t=>{const i=U.getDataAttribute(t,e);void 0===i?t.style.removeProperty(e):(U.removeDataAttribute(t,e),t.style[e]=i)})}_applyManipulationCallback(e,i){r(e)?i(e):t.find(e,this._element).forEach(i)}isOverflowing(){return this.getWidth()>0}}const Oe={isVisible:!0,isAnimated:!1,rootElement:"body",clickCallback:null},Ce={isVisible:"boolean",isAnimated:"boolean",rootElement:"(element|string)",clickCallback:"(function|null)"};class ke{constructor(t){this._config=this._getConfig(t),this._isAppended=!1,this._element=null}show(t){this._config.isVisible?(this._append(),this._config.isAnimated&&f(this._getElement()),this._getElement().classList.add("show"),this._emulateAnimation(()=>{b(t)})):b(t)}hide(t){this._config.isVisible?(this._getElement().classList.remove("show"),this._emulateAnimation(()=>{this.dispose(),b(t)})):b(t)}_getElement(){if(!this._element){const t=document.createElement("div");t.className="modal-backdrop",this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_getConfig(t){return(t={...Oe,..."object"==typeof t?t:{}}).rootElement=a(t.rootElement),l("backdrop",t,Ce),t}_append(){this._isAppended||(this._config.rootElement.appendChild(this._getElement()),P.on(this._getElement(),"mousedown.bs.backdrop",()=>{b(this._config.clickCallback)}),this._isAppended=!0)}dispose(){this._isAppended&&(P.off(this._element,"mousedown.bs.backdrop"),this._element.remove(),this._isAppended=!1)}_emulateAnimation(t){v(t,this._getElement(),this._config.isAnimated)}}const Le={backdrop:!0,keyboard:!0,focus:!0},xe={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean"};class De extends B{constructor(e,i){super(e),this._config=this._getConfig(i),this._dialog=t.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._isShown=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollBar=new Te}static get Default(){return Le}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||P.trigger(this._element,"show.bs.modal",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isAnimated()&&(this._isTransitioning=!0),this._scrollBar.hide(),document.body.classList.add("modal-open"),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),P.on(this._element,"click.dismiss.bs.modal",'[data-bs-dismiss="modal"]',t=>this.hide(t)),P.on(this._dialog,"mousedown.dismiss.bs.modal",()=>{P.one(this._element,"mouseup.dismiss.bs.modal",t=>{t.target===this._element&&(this._ignoreBackdropClick=!0)})}),this._showBackdrop(()=>this._showElement(t)))}hide(t){if(t&&["A","AREA"].includes(t.target.tagName)&&t.preventDefault(),!this._isShown||this._isTransitioning)return;if(P.trigger(this._element,"hide.bs.modal").defaultPrevented)return;this._isShown=!1;const e=this._isAnimated();e&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),P.off(document,"focusin.bs.modal"),this._element.classList.remove("show"),P.off(this._element,"click.dismiss.bs.modal"),P.off(this._dialog,"mousedown.dismiss.bs.modal"),this._queueCallback(()=>this._hideModal(),this._element,e)}dispose(){[window,this._dialog].forEach(t=>P.off(t,".bs.modal")),this._backdrop.dispose(),super.dispose(),P.off(document,"focusin.bs.modal")}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new ke({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_getConfig(t){return t={...Le,...U.getDataAttributes(this._element),..."object"==typeof t?t:{}},l("modal",t,xe),t}_showElement(e){const i=this._isAnimated(),n=t.findOne(".modal-body",this._dialog);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0,n&&(n.scrollTop=0),i&&f(this._element),this._element.classList.add("show"),this._config.focus&&this._enforceFocus(),this._queueCallback(()=>{this._config.focus&&this._element.focus(),this._isTransitioning=!1,P.trigger(this._element,"shown.bs.modal",{relatedTarget:e})},this._dialog,i)}_enforceFocus(){P.off(document,"focusin.bs.modal"),P.on(document,"focusin.bs.modal",t=>{document===t.target||this._element===t.target||this._element.contains(t.target)||this._element.focus()})}_setEscapeEvent(){this._isShown?P.on(this._element,"keydown.dismiss.bs.modal",t=>{this._config.keyboard&&"Escape"===t.key?(t.preventDefault(),this.hide()):this._config.keyboard||"Escape"!==t.key||this._triggerBackdropTransition()}):P.off(this._element,"keydown.dismiss.bs.modal")}_setResizeEvent(){this._isShown?P.on(window,"resize.bs.modal",()=>this._adjustDialog()):P.off(window,"resize.bs.modal")}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove("modal-open"),this._resetAdjustments(),this._scrollBar.reset(),P.trigger(this._element,"hidden.bs.modal")})}_showBackdrop(t){P.on(this._element,"click.dismiss.bs.modal",t=>{this._ignoreBackdropClick?this._ignoreBackdropClick=!1:t.target===t.currentTarget&&(!0===this._config.backdrop?this.hide():"static"===this._config.backdrop&&this._triggerBackdropTransition())}),this._backdrop.show(t)}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(P.trigger(this._element,"hidePrevented.bs.modal").defaultPrevented)return;const{classList:t,scrollHeight:e,style:i}=this._element,n=e>document.documentElement.clientHeight;!n&&"hidden"===i.overflowY||t.contains("modal-static")||(n||(i.overflowY="hidden"),t.add("modal-static"),this._queueCallback(()=>{t.remove("modal-static"),n||this._queueCallback(()=>{i.overflowY=""},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;(!i&&t&&!g()||i&&!t&&g())&&(this._element.style.paddingLeft=e+"px"),(i&&!t&&!g()||!i&&t&&g())&&(this._element.style.paddingRight=e+"px")}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=De.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}P.on(document,"click.bs.modal.data-api",'[data-bs-toggle="modal"]',(function(t){const e=s(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),P.one(e,"show.bs.modal",t=>{t.defaultPrevented||P.one(e,"hidden.bs.modal",()=>{c(this)&&this.focus()})}),De.getOrCreateInstance(e).toggle(this)})),_(De);const Se={backdrop:!0,keyboard:!0,scroll:!1},Ie={backdrop:"boolean",keyboard:"boolean",scroll:"boolean"};class Ne extends B{constructor(t,e){super(t),this._config=this._getConfig(e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._addEventListeners()}static get NAME(){return"offcanvas"}static get Default(){return Se}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||P.trigger(this._element,"show.bs.offcanvas",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._element.style.visibility="visible",this._backdrop.show(),this._config.scroll||((new Te).hide(),this._enforceFocusOnElement(this._element)),this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add("show"),this._queueCallback(()=>{P.trigger(this._element,"shown.bs.offcanvas",{relatedTarget:t})},this._element,!0))}hide(){this._isShown&&(P.trigger(this._element,"hide.bs.offcanvas").defaultPrevented||(P.off(document,"focusin.bs.offcanvas"),this._element.blur(),this._isShown=!1,this._element.classList.remove("show"),this._backdrop.hide(),this._queueCallback(()=>{this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._element.style.visibility="hidden",this._config.scroll||(new Te).reset(),P.trigger(this._element,"hidden.bs.offcanvas")},this._element,!0)))}dispose(){this._backdrop.dispose(),super.dispose(),P.off(document,"focusin.bs.offcanvas")}_getConfig(t){return t={...Se,...U.getDataAttributes(this._element),..."object"==typeof t?t:{}},l("offcanvas",t,Ie),t}_initializeBackDrop(){return new ke({isVisible:this._config.backdrop,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:()=>this.hide()})}_enforceFocusOnElement(t){P.off(document,"focusin.bs.offcanvas"),P.on(document,"focusin.bs.offcanvas",e=>{document===e.target||t===e.target||t.contains(e.target)||t.focus()}),t.focus()}_addEventListeners(){P.on(this._element,"click.dismiss.bs.offcanvas",'[data-bs-dismiss="offcanvas"]',()=>this.hide()),P.on(this._element,"keydown.dismiss.bs.offcanvas",t=>{this._config.keyboard&&"Escape"===t.key&&this.hide()})}static jQueryInterface(t){return this.each((function(){const e=Ne.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}P.on(document,"click.bs.offcanvas.data-api",'[data-bs-toggle="offcanvas"]',(function(e){const i=s(this);if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),h(this))return;P.one(i,"hidden.bs.offcanvas",()=>{c(this)&&this.focus()});const n=t.findOne(".offcanvas.show");n&&n!==i&&Ne.getInstance(n).hide(),Ne.getOrCreateInstance(i).toggle(this)})),P.on(window,"load.bs.offcanvas.data-api",()=>t.find(".offcanvas.show").forEach(t=>Ne.getOrCreateInstance(t).show())),_(Ne);const je=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Me=/^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i,Pe=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,He=(t,e)=>{const i=t.nodeName.toLowerCase();if(e.includes(i))return!je.has(i)||Boolean(Me.test(t.nodeValue)||Pe.test(t.nodeValue));const n=e.filter(t=>t instanceof RegExp);for(let t=0,e=n.length;t<e;t++)if(n[t].test(i))return!0;return!1};function Re(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=Object.keys(e),o=[].concat(...n.body.querySelectorAll("*"));for(let t=0,i=o.length;t<i;t++){const i=o[t],n=i.nodeName.toLowerCase();if(!s.includes(n)){i.remove();continue}const r=[].concat(...i.attributes),a=[].concat(e["*"]||[],e[n]||[]);r.forEach(t=>{He(t,a)||i.removeAttribute(t.nodeName)})}return n.body.innerHTML}const Be=new RegExp("(^|\\s)bs-tooltip\\S+","g"),We=new Set(["sanitize","allowList","sanitizeFn"]),qe={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(array|string|function)",container:"(string|element|boolean)",fallbackPlacements:"array",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",allowList:"object",popperConfig:"(null|object|function)"},ze={AUTO:"auto",TOP:"top",RIGHT:g()?"left":"right",BOTTOM:"bottom",LEFT:g()?"right":"left"},$e={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},Ue={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"};class Fe extends B{constructor(t,e){if(void 0===fe)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this._config=this._getConfig(e),this.tip=null,this._setListeners()}static get Default(){return $e}static get NAME(){return"tooltip"}static get Event(){return Ue}static get DefaultType(){return qe}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(t){if(this._isEnabled)if(t){const e=this._initializeOnDelegatedTarget(t);e._activeTrigger.click=!e._activeTrigger.click,e._isWithActiveTrigger()?e._enter(null,e):e._leave(null,e)}else{if(this.getTipElement().classList.contains("show"))return void this._leave(null,this);this._enter(null,this)}}dispose(){clearTimeout(this._timeout),P.off(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.tip&&this.tip.remove(),this._popper&&this._popper.destroy(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this.isWithContent()||!this._isEnabled)return;const t=P.trigger(this._element,this.constructor.Event.SHOW),i=d(this._element),n=null===i?this._element.ownerDocument.documentElement.contains(this._element):i.contains(this._element);if(t.defaultPrevented||!n)return;const s=this.getTipElement(),o=e(this.constructor.NAME);s.setAttribute("id",o),this._element.setAttribute("aria-describedby",o),this.setContent(),this._config.animation&&s.classList.add("fade");const r="function"==typeof this._config.placement?this._config.placement.call(this,s,this._element):this._config.placement,a=this._getAttachment(r);this._addAttachmentClass(a);const{container:l}=this._config;R.set(s,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(l.appendChild(s),P.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=ue(this._element,s,this._getPopperConfig(a)),s.classList.add("show");const c="function"==typeof this._config.customClass?this._config.customClass():this._config.customClass;c&&s.classList.add(...c.split(" ")),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>{P.on(t,"mouseover",u)});const h=this.tip.classList.contains("fade");this._queueCallback(()=>{const t=this._hoverState;this._hoverState=null,P.trigger(this._element,this.constructor.Event.SHOWN),"out"===t&&this._leave(null,this)},this.tip,h)}hide(){if(!this._popper)return;const t=this.getTipElement();if(P.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented)return;t.classList.remove("show"),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>P.off(t,"mouseover",u)),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1;const e=this.tip.classList.contains("fade");this._queueCallback(()=>{this._isWithActiveTrigger()||("show"!==this._hoverState&&t.remove(),this._cleanTipClass(),this._element.removeAttribute("aria-describedby"),P.trigger(this._element,this.constructor.Event.HIDDEN),this._popper&&(this._popper.destroy(),this._popper=null))},this.tip,e),this._hoverState=""}update(){null!==this._popper&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;const t=document.createElement("div");return t.innerHTML=this._config.template,this.tip=t.children[0],this.tip}setContent(){const e=this.getTipElement();this.setElementContent(t.findOne(".tooltip-inner",e),this.getTitle()),e.classList.remove("fade","show")}setElementContent(t,e){if(null!==t)return r(e)?(e=a(e),void(this._config.html?e.parentNode!==t&&(t.innerHTML="",t.appendChild(e)):t.textContent=e.textContent)):void(this._config.html?(this._config.sanitize&&(e=Re(e,this._config.allowList,this._config.sanitizeFn)),t.innerHTML=e):t.textContent=e)}getTitle(){let t=this._element.getAttribute("data-bs-original-title");return t||(t="function"==typeof this._config.title?this._config.title.call(this._element):this._config.title),t}updateAttachment(t){return"right"===t?"end":"left"===t?"start":t}_initializeOnDelegatedTarget(t,e){const i=this.constructor.DATA_KEY;return(e=e||R.get(t.delegateTarget,i))||(e=new this.constructor(t.delegateTarget,this._getDelegateConfig()),R.set(t.delegateTarget,i,e)),e}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:t=>this._handlePopperPlacementChange(t)}],onFirstUpdate:t=>{t.options.placement!==t.placement&&this._handlePopperPlacementChange(t)}};return{...e,..."function"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}_addAttachmentClass(t){this.getTipElement().classList.add("bs-tooltip-"+this.updateAttachment(t))}_getAttachment(t){return ze[t.toUpperCase()]}_setListeners(){this._config.trigger.split(" ").forEach(t=>{if("click"===t)P.on(this._element,this.constructor.Event.CLICK,this._config.selector,t=>this.toggle(t));else if("manual"!==t){const e="hover"===t?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,i="hover"===t?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;P.on(this._element,e,this._config.selector,t=>this._enter(t)),P.on(this._element,i,this._config.selector,t=>this._leave(t))}}),this._hideModalHandler=()=>{this._element&&this.hide()},P.on(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this._config.selector?this._config={...this._config,trigger:"manual",selector:""}:this._fixTitle()}_fixTitle(){const t=this._element.getAttribute("title"),e=typeof this._element.getAttribute("data-bs-original-title");(t||"string"!==e)&&(this._element.setAttribute("data-bs-original-title",t||""),!t||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",t),this._element.setAttribute("title",""))}_enter(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),e.getTipElement().classList.contains("show")||"show"===e._hoverState?e._hoverState="show":(clearTimeout(e._timeout),e._hoverState="show",e._config.delay&&e._config.delay.show?e._timeout=setTimeout(()=>{"show"===e._hoverState&&e.show()},e._config.delay.show):e.show())}_leave(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusout"===t.type?"focus":"hover"]=e._element.contains(t.relatedTarget)),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState="out",e._config.delay&&e._config.delay.hide?e._timeout=setTimeout(()=>{"out"===e._hoverState&&e.hide()},e._config.delay.hide):e.hide())}_isWithActiveTrigger(){for(const t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1}_getConfig(t){const e=U.getDataAttributes(this._element);return Object.keys(e).forEach(t=>{We.has(t)&&delete e[t]}),(t={...this.constructor.Default,...e,..."object"==typeof t&&t?t:{}}).container=!1===t.container?document.body:a(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),l("tooltip",t,this.constructor.DefaultType),t.sanitize&&(t.template=Re(t.template,t.allowList,t.sanitizeFn)),t}_getDelegateConfig(){const t={};if(this._config)for(const e in this._config)this.constructor.Default[e]!==this._config[e]&&(t[e]=this._config[e]);return t}_cleanTipClass(){const t=this.getTipElement(),e=t.getAttribute("class").match(Be);null!==e&&e.length>0&&e.map(t=>t.trim()).forEach(e=>t.classList.remove(e))}_handlePopperPlacementChange(t){const{state:e}=t;e&&(this.tip=e.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(e.placement)))}static jQueryInterface(t){return this.each((function(){const e=Fe.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}_(Fe);const Ve=new RegExp("(^|\\s)bs-popover\\S+","g"),Ke={...Fe.Default,placement:"right",offset:[0,8],trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'},Xe={...Fe.DefaultType,content:"(string|element|function)"},Ye={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"};class Qe extends Fe{static get Default(){return Ke}static get NAME(){return"popover"}static get Event(){return Ye}static get DefaultType(){return Xe}isWithContent(){return this.getTitle()||this._getContent()}getTipElement(){return this.tip||(this.tip=super.getTipElement(),this.getTitle()||t.findOne(".popover-header",this.tip).remove(),this._getContent()||t.findOne(".popover-body",this.tip).remove()),this.tip}setContent(){const e=this.getTipElement();this.setElementContent(t.findOne(".popover-header",e),this.getTitle());let i=this._getContent();"function"==typeof i&&(i=i.call(this._element)),this.setElementContent(t.findOne(".popover-body",e),i),e.classList.remove("fade","show")}_addAttachmentClass(t){this.getTipElement().classList.add("bs-popover-"+this.updateAttachment(t))}_getContent(){return this._element.getAttribute("data-bs-content")||this._config.content}_cleanTipClass(){const t=this.getTipElement(),e=t.getAttribute("class").match(Ve);null!==e&&e.length>0&&e.map(t=>t.trim()).forEach(e=>t.classList.remove(e))}static jQueryInterface(t){return this.each((function(){const e=Qe.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}_(Qe);const Ge={offset:10,method:"auto",target:""},Ze={offset:"number",method:"string",target:"(string|element)"};class Je extends B{constructor(t,e){super(t),this._scrollElement="BODY"===this._element.tagName?window:this._element,this._config=this._getConfig(e),this._selector=`${this._config.target} .nav-link, ${this._config.target} .list-group-item, ${this._config.target} .dropdown-item`,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,P.on(this._scrollElement,"scroll.bs.scrollspy",()=>this._process()),this.refresh(),this._process()}static get Default(){return Ge}static get NAME(){return"scrollspy"}refresh(){const e=this._scrollElement===this._scrollElement.window?"offset":"position",i="auto"===this._config.method?e:this._config.method,s="position"===i?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),t.find(this._selector).map(e=>{const o=n(e),r=o?t.findOne(o):null;if(r){const t=r.getBoundingClientRect();if(t.width||t.height)return[U[i](r).top+s,o]}return null}).filter(t=>t).sort((t,e)=>t[0]-e[0]).forEach(t=>{this._offsets.push(t[0]),this._targets.push(t[1])})}dispose(){P.off(this._scrollElement,".bs.scrollspy"),super.dispose()}_getConfig(t){if("string"!=typeof(t={...Ge,...U.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}}).target&&r(t.target)){let{id:i}=t.target;i||(i=e("scrollspy"),t.target.id=i),t.target="#"+i}return l("scrollspy",t,Ze),t}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){const t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),i=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=i){const t=this._targets[this._targets.length-1];this._activeTarget!==t&&this._activate(t)}else{if(this._activeTarget&&t<this._offsets[0]&&this._offsets[0]>0)return this._activeTarget=null,void this._clear();for(let e=this._offsets.length;e--;)this._activeTarget!==this._targets[e]&&t>=this._offsets[e]&&(void 0===this._offsets[e+1]||t<this._offsets[e+1])&&this._activate(this._targets[e])}}_activate(e){this._activeTarget=e,this._clear();const i=this._selector.split(",").map(t=>`${t}[data-bs-target="${e}"],${t}[href="${e}"]`),n=t.findOne(i.join(","));n.classList.contains("dropdown-item")?(t.findOne(".dropdown-toggle",n.closest(".dropdown")).classList.add("active"),n.classList.add("active")):(n.classList.add("active"),t.parents(n,".nav, .list-group").forEach(e=>{t.prev(e,".nav-link, .list-group-item").forEach(t=>t.classList.add("active")),t.prev(e,".nav-item").forEach(e=>{t.children(e,".nav-link").forEach(t=>t.classList.add("active"))})})),P.trigger(this._scrollElement,"activate.bs.scrollspy",{relatedTarget:e})}_clear(){t.find(this._selector).filter(t=>t.classList.contains("active")).forEach(t=>t.classList.remove("active"))}static jQueryInterface(t){return this.each((function(){const e=Je.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}P.on(window,"load.bs.scrollspy.data-api",()=>{t.find('[data-bs-spy="scroll"]').forEach(t=>new Je(t))}),_(Je);class ti extends B{static get NAME(){return"tab"}show(){if(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains("active"))return;let e;const i=s(this._element),n=this._element.closest(".nav, .list-group");if(n){const i="UL"===n.nodeName||"OL"===n.nodeName?":scope > li > .active":".active";e=t.find(i,n),e=e[e.length-1]}const o=e?P.trigger(e,"hide.bs.tab",{relatedTarget:this._element}):null;if(P.trigger(this._element,"show.bs.tab",{relatedTarget:e}).defaultPrevented||null!==o&&o.defaultPrevented)return;this._activate(this._element,n);const r=()=>{P.trigger(e,"hidden.bs.tab",{relatedTarget:this._element}),P.trigger(this._element,"shown.bs.tab",{relatedTarget:e})};i?this._activate(i,i.parentNode,r):r()}_activate(e,i,n){const s=(!i||"UL"!==i.nodeName&&"OL"!==i.nodeName?t.children(i,".active"):t.find(":scope > li > .active",i))[0],o=n&&s&&s.classList.contains("fade"),r=()=>this._transitionComplete(e,s,n);s&&o?(s.classList.remove("show"),this._queueCallback(r,e,!0)):r()}_transitionComplete(e,i,n){if(i){i.classList.remove("active");const e=t.findOne(":scope > .dropdown-menu .active",i.parentNode);e&&e.classList.remove("active"),"tab"===i.getAttribute("role")&&i.setAttribute("aria-selected",!1)}e.classList.add("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!0),f(e),e.classList.contains("fade")&&e.classList.add("show");let s=e.parentNode;if(s&&"LI"===s.nodeName&&(s=s.parentNode),s&&s.classList.contains("dropdown-menu")){const i=e.closest(".dropdown");i&&t.find(".dropdown-toggle",i).forEach(t=>t.classList.add("active")),e.setAttribute("aria-expanded",!0)}n&&n()}static jQueryInterface(t){return this.each((function(){const e=ti.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}P.on(document,"click.bs.tab.data-api",'[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),h(this)||ti.getOrCreateInstance(this).show()})),_(ti);const ei={animation:"boolean",autohide:"boolean",delay:"number"},ii={animation:!0,autohide:!0,delay:5e3};class ni extends B{constructor(t,e){super(t),this._config=this._getConfig(e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get DefaultType(){return ei}static get Default(){return ii}static get NAME(){return"toast"}show(){P.trigger(this._element,"show.bs.toast").defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove("hide"),f(this._element),this._element.classList.add("showing"),this._queueCallback(()=>{this._element.classList.remove("showing"),this._element.classList.add("show"),P.trigger(this._element,"shown.bs.toast"),this._maybeScheduleHide()},this._element,this._config.animation))}hide(){this._element.classList.contains("show")&&(P.trigger(this._element,"hide.bs.toast").defaultPrevented||(this._element.classList.remove("show"),this._queueCallback(()=>{this._element.classList.add("hide"),P.trigger(this._element,"hidden.bs.toast")},this._element,this._config.animation)))}dispose(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),super.dispose()}_getConfig(t){return t={...ii,...U.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}},l("toast",t,this.constructor.DefaultType),t}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){P.on(this._element,"click.dismiss.bs.toast",'[data-bs-dismiss="toast"]',()=>this.hide()),P.on(this._element,"mouseover.bs.toast",t=>this._onInteraction(t,!0)),P.on(this._element,"mouseout.bs.toast",t=>this._onInteraction(t,!1)),P.on(this._element,"focusin.bs.toast",t=>this._onInteraction(t,!0)),P.on(this._element,"focusout.bs.toast",t=>this._onInteraction(t,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=ni.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return _(ni),{Alert:W,Button:q,Carousel:Z,Collapse:et,Dropdown:Ae,Modal:De,Offcanvas:Ne,Popover:Qe,ScrollSpy:Je,Tab:ti,Toast:ni,Tooltip:Fe}}));
//# sourceMappingURL=bootstrap.bundle.min.js.map
shiny/www/shared/shiny.min.js.map METASEP
{
  "version": 3,
  "sources": ["globals:jquery", "../../../node_modules/core-js/internals/global.js", "../../../node_modules/core-js/internals/fails.js", "../../../node_modules/core-js/internals/descriptors.js", "../../../node_modules/core-js/internals/object-property-is-enumerable.js", "../../../node_modules/core-js/internals/create-property-descriptor.js", "../../../node_modules/core-js/internals/classof-raw.js", "../../../node_modules/core-js/internals/indexed-object.js", "../../../node_modules/core-js/internals/require-object-coercible.js", "../../../node_modules/core-js/internals/to-indexed-object.js", "../../../node_modules/core-js/internals/is-object.js", "../../../node_modules/core-js/internals/to-primitive.js", "../../../node_modules/core-js/internals/to-object.js", "../../../node_modules/core-js/internals/has.js", "../../../node_modules/core-js/internals/document-create-element.js", "../../../node_modules/core-js/internals/ie8-dom-define.js", "../../../node_modules/core-js/internals/object-get-own-property-descriptor.js", "../../../node_modules/core-js/internals/an-object.js", "../../../node_modules/core-js/internals/object-define-property.js", "../../../node_modules/core-js/internals/create-non-enumerable-property.js", "../../../node_modules/core-js/internals/set-global.js", "../../../node_modules/core-js/internals/shared-store.js", "../../../node_modules/core-js/internals/inspect-source.js", "../../../node_modules/core-js/internals/native-weak-map.js", "../../../node_modules/core-js/internals/is-pure.js", "../../../node_modules/core-js/internals/shared.js", "../../../node_modules/core-js/internals/uid.js", "../../../node_modules/core-js/internals/shared-key.js", "../../../node_modules/core-js/internals/hidden-keys.js", "../../../node_modules/core-js/internals/internal-state.js", "../../../node_modules/core-js/internals/redefine.js", "../../../node_modules/core-js/internals/path.js", "../../../node_modules/core-js/internals/get-built-in.js", "../../../node_modules/core-js/internals/to-integer.js", "../../../node_modules/core-js/internals/to-length.js", "../../../node_modules/core-js/internals/to-absolute-index.js", "../../../node_modules/core-js/internals/array-includes.js", "../../../node_modules/core-js/internals/object-keys-internal.js", "../../../node_modules/core-js/internals/enum-bug-keys.js", "../../../node_modules/core-js/internals/object-get-own-property-names.js", "../../../node_modules/core-js/internals/object-get-own-property-symbols.js", "../../../node_modules/core-js/internals/own-keys.js", "../../../node_modules/core-js/internals/copy-constructor-properties.js", "../../../node_modules/core-js/internals/is-forced.js", "../../../node_modules/core-js/internals/export.js", "../../../node_modules/core-js/internals/array-method-is-strict.js", "../../../node_modules/core-js/internals/whitespaces.js", "../../../node_modules/core-js/internals/string-trim.js", "../../../node_modules/core-js/internals/number-parse-int.js", "../../../node_modules/core-js/internals/regexp-flags.js", "../../../node_modules/core-js/internals/regexp-sticky-helpers.js", "../../../node_modules/core-js/internals/regexp-exec.js", "../../../node_modules/core-js/modules/es.regexp.exec.js", "../../../node_modules/core-js/internals/engine-user-agent.js", "../../../node_modules/core-js/internals/engine-v8-version.js", "../../../node_modules/core-js/internals/native-symbol.js", "../../../node_modules/core-js/internals/use-symbol-as-uid.js", "../../../node_modules/core-js/internals/well-known-symbol.js", "../../../node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js", "../../../node_modules/core-js/internals/string-multibyte.js", "../../../node_modules/core-js/internals/advance-string-index.js", "../../../node_modules/core-js/internals/get-substitution.js", "../../../node_modules/core-js/internals/regexp-exec-abstract.js", "../../../node_modules/core-js/internals/to-string-tag-support.js", "../../../node_modules/core-js/internals/classof.js", "../../../node_modules/core-js/internals/object-to-string.js", "../../../node_modules/core-js/internals/number-parse-float.js", "../../../node_modules/core-js/internals/this-number-value.js", "../../../node_modules/core-js/internals/is-array.js", "../../../node_modules/core-js/internals/create-property.js", "../../../node_modules/core-js/internals/array-species-create.js", "../../../node_modules/core-js/internals/array-method-has-species-support.js", "../../../node_modules/core-js/internals/object-keys.js", "../../../node_modules/core-js/internals/is-regexp.js", "../../../node_modules/core-js/internals/a-function.js", "../../../node_modules/core-js/internals/species-constructor.js", "../../../node_modules/core-js/internals/function-bind-context.js", "../../../node_modules/core-js/internals/array-iteration.js", "../../../node_modules/core-js/internals/object-define-properties.js", "../../../node_modules/core-js/internals/html.js", "../../../node_modules/core-js/internals/object-create.js", "../../../node_modules/core-js/internals/add-to-unscopables.js", "../../../node_modules/core-js/internals/a-possible-prototype.js", "../../../node_modules/core-js/internals/object-set-prototype-of.js", "../../../node_modules/core-js/internals/correct-prototype-getter.js", "../../../node_modules/core-js/internals/object-get-prototype-of.js", "../../../node_modules/core-js/internals/function-bind.js", "../../../node_modules/core-js/internals/object-get-own-property-names-external.js", "../../../node_modules/core-js/internals/well-known-symbol-wrapped.js", "../../../node_modules/core-js/internals/define-well-known-symbol.js", "../../../node_modules/core-js/internals/set-to-string-tag.js", "../../../node_modules/core-js/internals/iterators.js", "../../../node_modules/core-js/internals/iterators-core.js", "../../../node_modules/core-js/internals/create-iterator-constructor.js", "../../../node_modules/core-js/internals/define-iterator.js", "../../../node_modules/core-js/modules/es.array.iterator.js", "../../../node_modules/core-js/internals/dom-iterables.js", "../../../node_modules/core-js/internals/string-trim-forced.js", "../../../node_modules/core-js/internals/inherit-if-required.js", "../../../node_modules/core-js/internals/same-value.js", "../../../node_modules/core-js/internals/array-for-each.js", "../../../node_modules/core-js/internals/object-to-array.js", "../../../node_modules/core-js/internals/iterator-close.js", "../../../node_modules/core-js/internals/call-with-safe-iteration-closing.js", "../../../node_modules/core-js/internals/is-array-iterator-method.js", "../../../node_modules/core-js/internals/get-iterator-method.js", "../../../node_modules/core-js/internals/array-from.js", "../../../node_modules/core-js/internals/check-correctness-of-iteration.js", "../../../node_modules/core-js/internals/array-buffer-native.js", "../../../node_modules/core-js/internals/redefine-all.js", "../../../node_modules/core-js/internals/an-instance.js", "../../../node_modules/core-js/internals/to-index.js", "../../../node_modules/core-js/internals/ieee754.js", "../../../node_modules/core-js/internals/array-fill.js", "../../../node_modules/core-js/internals/array-buffer.js", "../../../node_modules/core-js/internals/set-species.js", "../../../node_modules/core-js/internals/array-reduce.js", "../../../node_modules/core-js/internals/engine-is-node.js", "../../../srcts/src/initialize/disableForm.ts", "../../../srcts/src/initialize/history.ts", "../../../node_modules/core-js/modules/es.array.index-of.js", "../../../node_modules/core-js/modules/es.parse-int.js", "../../../srcts/src/initialize/browser.ts", "../../../srcts/src/utils/browser.ts", "../../../srcts/src/utils/userAgent.ts", "../../../srcts/src/window/libraries.ts", "../../../srcts/src/shiny/index.ts", "../../../node_modules/core-js/modules/es.function.name.js", "../../../srcts/src/utils/index.ts", "../../../node_modules/core-js/modules/es.string.replace.js", "../../../node_modules/core-js/modules/es.object.to-string.js", "../../../node_modules/core-js/modules/es.regexp.to-string.js", "../../../node_modules/core-js/modules/es.parse-float.js", "../../../node_modules/core-js/modules/es.number.to-precision.js", "../../../node_modules/core-js/modules/es.array.concat.js", "../../../node_modules/core-js/modules/es.array.slice.js", "../../../node_modules/core-js/modules/es.array.splice.js", "../../../node_modules/core-js/modules/es.object.keys.js", "../../../node_modules/core-js/modules/es.string.split.js", "../../../srcts/src/window/pixelRatio.ts", "../../../srcts/src/utils/blob.ts", "../../../srcts/src/utils/object.ts", "../../../srcts/src/bindings/registry.ts", "../../../srcts/src/bindings/input/inputBinding.ts", "../../../node_modules/core-js/modules/es.array.find.js", "../../../node_modules/core-js/modules/es.object.set-prototype-of.js", "../../../node_modules/core-js/modules/es.object.get-prototype-of.js", "../../../node_modules/core-js/modules/es.reflect.construct.js", "../../../node_modules/core-js/modules/es.symbol.js", "../../../node_modules/core-js/modules/es.symbol.description.js", "../../../node_modules/core-js/modules/es.symbol.iterator.js", "../../../srcts/src/bindings/input/checkbox.ts", "../../../node_modules/core-js/modules/es.string.iterator.js", "../../../node_modules/core-js/modules/web.dom-collections.iterator.js", "../../../node_modules/core-js/modules/es.string.trim.js", "../../../srcts/src/bindings/input/checkboxgroup.ts", "../../../node_modules/core-js/modules/es.number.constructor.js", "../../../srcts/src/bindings/input/number.ts", "../../../node_modules/core-js/modules/es.reflect.get.js", "../../../node_modules/core-js/modules/es.object.get-own-property-descriptor.js", "../../../srcts/src/bindings/input/text.ts", "../../../srcts/src/bindings/input/password.ts", "../../../srcts/src/bindings/input/textarea.ts", "../../../srcts/src/bindings/input/radio.ts", "../../../srcts/src/bindings/input/date.ts", "../../../srcts/src/bindings/input/slider.ts", "../../../srcts/src/bindings/input/daterange.ts", "../../../srcts/src/bindings/input/selectInput.ts", "../../../srcts/src/utils/eval.ts", "../../../srcts/src/bindings/input/actionbutton.ts", "../../../srcts/src/bindings/input/tabinput.ts", "../../../srcts/src/bindings/input/fileinput.ts", "../../../node_modules/core-js/modules/es.array.map.js", "../../../srcts/src/file/fileProcessor.ts", "../../../srcts/src/events/inputChanged.ts", "../../../srcts/src/shiny/initedMethods.ts", "../../../srcts/src/bindings/input/index.ts", "../../../srcts/src/bindings/output/text.ts", "../../../node_modules/core-js/modules/es.array.join.js", "../../../srcts/src/bindings/output/outputBinding.ts", "../../../srcts/src/bindings/output/downloadlink.ts", "../../../srcts/src/bindings/output/datatable.ts", "../../../node_modules/core-js/modules/es.string.search.js", "../../../srcts/src/time/debounce.ts", "../../../srcts/src/time/invoke.ts", "../../../srcts/src/time/throttle.ts", "../../../srcts/src/bindings/output/html.ts", "../../../node_modules/core-js/modules/es.array.for-each.js", "../../../node_modules/core-js/modules/web.dom-collections.for-each.js", "../../../node_modules/core-js/modules/es.object.entries.js", "../../../srcts/src/shiny/render.ts", "../../../node_modules/core-js/modules/es.array.from.js", "../../../srcts/src/shiny/sendImageSize.ts", "../../../srcts/src/shiny/singletons.ts", "../../../node_modules/core-js/modules/es.array.filter.js", "../../../srcts/src/bindings/output/image.ts", "../../../srcts/src/imageutils/createBrush.ts", "../../../srcts/src/imageutils/initCoordmap.ts", "../../../srcts/src/imageutils/initPanelScales.ts", "../../../srcts/src/imageutils/findbox.ts", "../../../srcts/src/imageutils/shiftToRange.ts", "../../../srcts/src/imageutils/createClickInfo.ts", "../../../srcts/src/imageutils/createHandlers.ts", "../../../srcts/src/imageutils/disableDrag.ts", "../../../srcts/src/bindings/output/index.ts", "../../../srcts/src/imageutils/resetBrush.ts", "../../../srcts/src/shiny/notifications.ts", "../../../node_modules/core-js/modules/es.string.match.js", "../../../srcts/src/shiny/modal.ts", "../../../srcts/src/shiny/reconnectDialog.ts", "../../../srcts/src/shiny/init.ts", "../../../srcts/src/inputPolicies/inputBatchSender.ts", "../../../srcts/src/inputPolicies/inputPolicy.ts", "../../../srcts/src/inputPolicies/inputNoResendDecorator.ts", "../../../srcts/src/inputPolicies/splitInputNameType.ts", "../../../srcts/src/inputPolicies/inputEventDecorator.ts", "../../../srcts/src/inputPolicies/inputRateDecorator.ts", "../../../srcts/src/inputPolicies/inputDeferDecorator.ts", "../../../srcts/src/inputPolicies/inputValidateDecorator.ts", "../../../srcts/src/shiny/bind.ts", "../../../srcts/src/bindings/outputAdapter.ts", "../../../node_modules/core-js/modules/es.array-buffer.constructor.js", "../../../node_modules/core-js/modules/es.array-buffer.slice.js", "../../../node_modules/core-js/modules/es.data-view.js", "../../../node_modules/core-js/modules/es.array.reduce.js", "../../../srcts/src/shiny/shinyapp.ts", "../../../srcts/src/window/blobBuilder.ts", "../../../srcts/src/window/userAgent.ts", "../../../srcts/src/shiny/reactlog.ts", "../../../srcts/src/initialize/index.ts", "../../../srcts/src/index.ts"],
  "sourcesContent": ["module.exports = window.jQuery", "var check = function (it) {\n  return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line es/no-global-this -- safe\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  // eslint-disable-next-line no-restricted-globals -- safe\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || Function('return this')();\n", "module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n", "var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n", "'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n", "module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n", "var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n", "var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n", "// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n  return it;\n};\n", "// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n", "module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n", "var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n  if (!isObject(input)) return input;\n  var fn, val;\n  if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n  if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n  if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n", "var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return Object(requireObjectCoercible(argument));\n};\n", "var toObject = require('../internals/to-object');\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty.call(toObject(it), key);\n};\n", "var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n", "var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a != 7;\n});\n", "var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return $getOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n", "var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n  if (!isObject(it)) {\n    throw TypeError(String(it) + ' is not an object');\n  } return it;\n};\n", "var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return $defineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n", "var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n", "var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n  try {\n    createNonEnumerableProperty(global, key, value);\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n", "var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n", "var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n  store.inspectSource = function (it) {\n    return functionToString.call(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n", "var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n", "module.exports = false;\n", "var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.14.0',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '\u00A9 2021 Denis Pushkarev (zloirock.ru)'\n});\n", "var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n  return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n", "var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n", "module.exports = {};\n", "var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n  var store = shared.state || (shared.state = new WeakMap());\n  var wmget = store.get;\n  var wmhas = store.has;\n  var wmset = store.set;\n  set = function (it, metadata) {\n    if (wmhas.call(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    wmset.call(store, it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return wmget.call(store, it) || {};\n  };\n  has = function (it) {\n    return wmhas.call(store, it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    if (objectHas(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return objectHas(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return objectHas(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n", "var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n  var unsafe = options ? !!options.unsafe : false;\n  var simple = options ? !!options.enumerable : false;\n  var noTargetGet = options ? !!options.noTargetGet : false;\n  var state;\n  if (typeof value == 'function') {\n    if (typeof key == 'string' && !has(value, 'name')) {\n      createNonEnumerableProperty(value, 'name', key);\n    }\n    state = enforceInternalState(value);\n    if (!state.source) {\n      state.source = TEMPLATE.join(typeof key == 'string' ? key : '');\n    }\n  }\n  if (O === global) {\n    if (simple) O[key] = value;\n    else setGlobal(key, value);\n    return;\n  } else if (!unsafe) {\n    delete O[key];\n  } else if (!noTargetGet && O[key]) {\n    simple = true;\n  }\n  if (simple) O[key] = value;\n  else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n  return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n", "var global = require('../internals/global');\n\nmodule.exports = global;\n", "var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n  return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n    : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n", "var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.es/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n  return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n", "var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n", "var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toInteger(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n", "var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare -- NaN check\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.es/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.es/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n", "var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~indexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n", "// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n", "var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n", "// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n", "var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n", "var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n  var keys = ownKeys(source);\n  var defineProperty = definePropertyModule.f;\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n  }\n};\n", "var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value == POLYFILL ? true\n    : value == NATIVE ? false\n    : typeof detection == 'function' ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n", "var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n  options.target      - name of the target object\n  options.global      - target is the global object\n  options.stat        - export as static methods of target\n  options.proto       - export as prototype methods of target\n  options.real        - real prototype method for the `pure` version\n  options.forced      - export even if the native feature is available\n  options.bind        - bind methods to the target, required for the `pure` version\n  options.wrap        - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe      - use the simple assignment of property instead of delete + defineProperty\n  options.sham        - add a flag to not completely full polyfills\n  options.enumerable  - export as enumerable property\n  options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = global;\n  } else if (STATIC) {\n    target = global[TARGET] || setGlobal(TARGET, {});\n  } else {\n    target = (global[TARGET] || {}).prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.noTargetGet) {\n      descriptor = getOwnPropertyDescriptor(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty === typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    // extend global\n    redefine(target, key, sourceProperty, options);\n  }\n};\n", "'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n  var method = [][METHOD_NAME];\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing\n    method.call(null, argument || function () { throw 1; }, 1);\n  });\n};\n", "// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n  '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n", "var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n  return function ($this) {\n    var string = String(requireObjectCoercible($this));\n    if (TYPE & 1) string = string.replace(ltrim, '');\n    if (TYPE & 2) string = string.replace(rtrim, '');\n    return string;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.{ trimLeft, trimStart }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n  start: createMethod(1),\n  // `String.prototype.{ trimRight, trimEnd }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimend\n  end: createMethod(2),\n  // `String.prototype.trim` method\n  // https://tc39.es/ecma262/#sec-string.prototype.trim\n  trim: createMethod(3)\n};\n", "var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseInt = global.parseInt;\nvar hex = /^[+-]?0[Xx]/;\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22;\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n  var S = trim(String(string));\n  return $parseInt(S, (radix >>> 0) || (hex.test(S) ? 16 : 10));\n} : $parseInt;\n", "'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.dotAll) result += 's';\n  if (that.unicode) result += 'u';\n  if (that.sticky) result += 'y';\n  return result;\n};\n", "'use strict';\n\nvar fails = require('./fails');\n\n// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,\n// so we use an intermediate function.\nfunction RE(s, f) {\n  return RegExp(s, f);\n}\n\nexports.UNSUPPORTED_Y = fails(function () {\n  // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\n  var re = RE('a', 'y');\n  re.lastIndex = 2;\n  return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n  // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n  var re = RE('^r', 'gy');\n  re.lastIndex = 2;\n  return re.exec('str') != null;\n});\n", "'use strict';\n/* eslint-disable regexp/no-assertion-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar regexpFlags = require('./regexp-flags');\nvar stickyHelpers = require('./regexp-sticky-helpers');\nvar shared = require('./shared');\n\nvar nativeExec = RegExp.prototype.exec;\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/;\n  var re2 = /b*/g;\n  nativeExec.call(re1, 'a');\n  nativeExec.call(re2, 'a');\n  return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y;\n\nif (PATCH) {\n  patchedExec = function exec(str) {\n    var re = this;\n    var lastIndex, reCopy, match, i;\n    var sticky = UNSUPPORTED_Y && re.sticky;\n    var flags = regexpFlags.call(re);\n    var source = re.source;\n    var charsAdded = 0;\n    var strCopy = str;\n\n    if (sticky) {\n      flags = flags.replace('y', '');\n      if (flags.indexOf('g') === -1) {\n        flags += 'g';\n      }\n\n      strCopy = String(str).slice(re.lastIndex);\n      // Support anchored sticky behavior.\n      if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n        source = '(?: ' + source + ')';\n        strCopy = ' ' + strCopy;\n        charsAdded++;\n      }\n      // ^(? + rx + ) is needed, in combination with some str slicing, to\n      // simulate the 'y' flag.\n      reCopy = new RegExp('^(?:' + source + ')', flags);\n    }\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n    match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n    if (sticky) {\n      if (match) {\n        match.input = match.input.slice(charsAdded);\n        match[0] = match[0].slice(charsAdded);\n        match.index = re.lastIndex;\n        re.lastIndex += match[0].length;\n      } else re.lastIndex = 0;\n    } else if (UPDATES_LAST_INDEX_WRONG && match) {\n      re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n      nativeReplace.call(match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n", "'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n  exec: exec\n});\n", "var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n", "var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  version = match[0] < 4 ? 1 : match[0] + match[1];\n} else if (userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = match[1];\n  }\n}\n\nmodule.exports = version && +version;\n", "/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  var symbol = Symbol();\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n  return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n    !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n", "/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n  && !Symbol.sham\n  && typeof Symbol.iterator == 'symbol';\n", "var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!has(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n    if (NATIVE_SYMBOL && has(Symbol, name)) {\n      WellKnownSymbolsStore[name] = Symbol[name];\n    } else {\n      WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n    }\n  } return WellKnownSymbolsStore[name];\n};\n", "'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar redefine = require('../internals/redefine');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  // #replace needs built-in support for named groups.\n  // #match works fine because it just return the exec results, even if it has\n  // a \"grops\" property.\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  return ''.replace(re, '$<a>') !== '7';\n});\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n  // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n  return 'a'.replace(/./, '$0') === '$0';\n})();\n\nvar REPLACE = wellKnownSymbol('replace');\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n  if (/./[REPLACE]) {\n    return /./[REPLACE]('a', '$0') === '';\n  }\n  return false;\n})();\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n  // eslint-disable-next-line regexp/no-empty-group -- required for testing\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n  var SYMBOL = wellKnownSymbol(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegEp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) != 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n\n    if (KEY === 'split') {\n      // We can't use real regex here since it causes deoptimization\n      // and serious performance degradation in V8\n      // https://github.com/zloirock/core-js/issues/306\n      re = {};\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n      re.flags = '';\n      re[SYMBOL] = /./[SYMBOL];\n    }\n\n    re.exec = function () { execCalled = true; return null; };\n\n    re[SYMBOL]('');\n    return !execCalled;\n  });\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    (KEY === 'replace' && !(\n      REPLACE_SUPPORTS_NAMED_GROUPS &&\n      REPLACE_KEEPS_$0 &&\n      !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n    )) ||\n    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n  ) {\n    var nativeRegExpMethod = /./[SYMBOL];\n    var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n      var $exec = regexp.exec;\n      if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n        if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n          // The native String method already delegates to @@method (this\n          // polyfilled function), leasing to infinite recursion.\n          // We avoid it by directly calling the native @@method method.\n          return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n        }\n        return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n      }\n      return { done: false };\n    }, {\n      REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,\n      REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n    });\n    var stringMethod = methods[0];\n    var regexMethod = methods[1];\n\n    redefine(String.prototype, KEY, stringMethod);\n    redefine(RegExpPrototype, SYMBOL, length == 2\n      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n      // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n      ? function (string, arg) { return regexMethod.call(string, this, arg); }\n      // 21.2.5.6 RegExp.prototype[@@match](string)\n      // 21.2.5.9 RegExp.prototype[@@search](string)\n      : function (string) { return regexMethod.call(string, this); }\n    );\n  }\n\n  if (sham) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n", "var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n  return function ($this, pos) {\n    var S = String(requireObjectCoercible($this));\n    var position = toInteger(pos);\n    var size = S.length;\n    var first, second;\n    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n    first = S.charCodeAt(position);\n    return first < 0xD800 || first > 0xDBFF || position + 1 === size\n      || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n        ? CONVERT_TO_STRING ? S.charAt(position) : first\n        : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.codePointAt` method\n  // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n  codeAt: createMethod(false),\n  // `String.prototype.at` method\n  // https://github.com/mathiasbynens/String.prototype.at\n  charAt: createMethod(true)\n};\n", "'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? charAt(S, index).length : 1);\n};\n", "var toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar replace = ''.replace;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n  var tailPos = position + matched.length;\n  var m = captures.length;\n  var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n  if (namedCaptures !== undefined) {\n    namedCaptures = toObject(namedCaptures);\n    symbols = SUBSTITUTION_SYMBOLS;\n  }\n  return replace.call(replacement, symbols, function (match, ch) {\n    var capture;\n    switch (ch.charAt(0)) {\n      case '$': return '$';\n      case '&': return matched;\n      case '`': return str.slice(0, position);\n      case \"'\": return str.slice(tailPos);\n      case '<':\n        capture = namedCaptures[ch.slice(1, -1)];\n        break;\n      default: // \\d\\d?\n        var n = +ch;\n        if (n === 0) return match;\n        if (n > m) {\n          var f = floor(n / 10);\n          if (f === 0) return match;\n          if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n          return match;\n        }\n        capture = captures[n - 1];\n    }\n    return capture === undefined ? '' : capture;\n  });\n};\n", "var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (typeof exec === 'function') {\n    var result = exec.call(R, S);\n    if (typeof result !== 'object') {\n      throw TypeError('RegExp exec method returned something other than an Object or null');\n    }\n    return result;\n  }\n\n  if (classof(R) !== 'RegExp') {\n    throw TypeError('RegExp#exec called on incompatible receiver');\n  }\n\n  return regexpExec.call(R, S);\n};\n\n", "var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n", "var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n  var O, tag, result;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n    // builtinTag case\n    : CORRECT_ARGUMENTS ? classofRaw(O)\n    // ES3 arguments fallback\n    : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n", "'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n  return '[object ' + classof(this) + ']';\n};\n", "var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseFloat = global.parseFloat;\nvar FORCED = 1 / $parseFloat(whitespaces + '-0') !== -Infinity;\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n  var trimmedString = trim(String(string));\n  var result = $parseFloat(trimmedString);\n  return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n", "var classof = require('../internals/classof-raw');\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = function (value) {\n  if (typeof value != 'number' && classof(value) != 'Number') {\n    throw TypeError('Incorrect invocation');\n  }\n  return +value;\n};\n", "var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(arg) {\n  return classof(arg) == 'Array';\n};\n", "'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n  var propertyKey = toPrimitive(key);\n  if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n  else object[propertyKey] = value;\n};\n", "var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n  var C;\n  if (isArray(originalArray)) {\n    C = originalArray.constructor;\n    // cross-realm fallback\n    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n    else if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n", "var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n  // We can't use this feature detection in V8 since it causes\n  // deoptimization and serious performance degradation\n  // https://github.com/zloirock/core-js/issues/677\n  return V8_VERSION >= 51 || !fails(function () {\n    var array = [];\n    var constructor = array.constructor = {};\n    constructor[SPECIES] = function () {\n      return { foo: 1 };\n    };\n    return array[METHOD_NAME](Boolean).foo !== 1;\n  });\n};\n", "var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n", "var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n", "module.exports = function (it) {\n  if (typeof it != 'function') {\n    throw TypeError(String(it) + ' is not a function');\n  } return it;\n};\n", "var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n", "var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 0: return function () {\n      return fn.call(that);\n    };\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n", "var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterOut }` methods implementation\nvar createMethod = function (TYPE) {\n  var IS_MAP = TYPE == 1;\n  var IS_FILTER = TYPE == 2;\n  var IS_SOME = TYPE == 3;\n  var IS_EVERY = TYPE == 4;\n  var IS_FIND_INDEX = TYPE == 6;\n  var IS_FILTER_OUT = TYPE == 7;\n  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n  return function ($this, callbackfn, that, specificCreate) {\n    var O = toObject($this);\n    var self = IndexedObject(O);\n    var boundFunction = bind(callbackfn, that, 3);\n    var length = toLength(self.length);\n    var index = 0;\n    var create = specificCreate || arraySpeciesCreate;\n    var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_OUT ? create($this, 0) : undefined;\n    var value, result;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      value = self[index];\n      result = boundFunction(value, index, O);\n      if (TYPE) {\n        if (IS_MAP) target[index] = result; // map\n        else if (result) switch (TYPE) {\n          case 3: return true;              // some\n          case 5: return value;             // find\n          case 6: return index;             // findIndex\n          case 2: push.call(target, value); // filter\n        } else switch (TYPE) {\n          case 4: return false;             // every\n          case 7: push.call(target, value); // filterOut\n        }\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.forEach` method\n  // https://tc39.es/ecma262/#sec-array.prototype.foreach\n  forEach: createMethod(0),\n  // `Array.prototype.map` method\n  // https://tc39.es/ecma262/#sec-array.prototype.map\n  map: createMethod(1),\n  // `Array.prototype.filter` method\n  // https://tc39.es/ecma262/#sec-array.prototype.filter\n  filter: createMethod(2),\n  // `Array.prototype.some` method\n  // https://tc39.es/ecma262/#sec-array.prototype.some\n  some: createMethod(3),\n  // `Array.prototype.every` method\n  // https://tc39.es/ecma262/#sec-array.prototype.every\n  every: createMethod(4),\n  // `Array.prototype.find` method\n  // https://tc39.es/ecma262/#sec-array.prototype.find\n  find: createMethod(5),\n  // `Array.prototype.findIndex` method\n  // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n  findIndex: createMethod(6),\n  // `Array.prototype.filterOut` method\n  // https://github.com/tc39/proposal-array-filtering\n  filterOut: createMethod(7)\n};\n", "var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = objectKeys(Properties);\n  var length = keys.length;\n  var index = 0;\n  var key;\n  while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n  return O;\n};\n", "var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n", "var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n  activeXDocument.write(scriptTag(''));\n  activeXDocument.close();\n  var temp = activeXDocument.parentWindow.Object;\n  activeXDocument = null; // avoid memory leak\n  return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = documentCreateElement('iframe');\n  var JS = 'java' + SCRIPT + ':';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  html.appendChild(iframe);\n  // https://github.com/zloirock/core-js/issues/475\n  iframe.src = String(JS);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(scriptTag('document.F=Object'));\n  iframeDocument.close();\n  return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n  try {\n    /* global ActiveXObject -- old IE */\n    activeXDocument = document.domain && new ActiveXObject('htmlfile');\n  } catch (error) { /* ignore */ }\n  NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n  var length = enumBugKeys.length;\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n  return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    EmptyConstructor[PROTOTYPE] = anObject(O);\n    result = new EmptyConstructor();\n    EmptyConstructor[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = NullProtoObject();\n  return Properties === undefined ? result : defineProperties(result, Properties);\n};\n", "var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n  definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n    configurable: true,\n    value: create(null)\n  });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n  ArrayPrototype[UNSCOPABLES][key] = true;\n};\n", "var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n  if (!isObject(it) && it !== null) {\n    throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n  } return it;\n};\n", "/* eslint-disable no-proto -- safe */\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n  var CORRECT_SETTER = false;\n  var test = {};\n  var setter;\n  try {\n    // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n    setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n    setter.call(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    anObject(O);\n    aPossiblePrototype(proto);\n    if (CORRECT_SETTER) setter.call(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n", "var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n", "var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectPrototype : null;\n};\n", "'use strict';\nvar aFunction = require('../internals/a-function');\nvar isObject = require('../internals/is-object');\n\nvar slice = [].slice;\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n  if (!(argsLength in factories)) {\n    for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n    // eslint-disable-next-line no-new-func -- we have no proper alternatives, IE8- only\n    factories[argsLength] = Function('C,a', 'return new C(' + list.join(',') + ')');\n  } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n  var fn = aFunction(this);\n  var partArgs = slice.call(arguments, 1);\n  var boundFunction = function bound(/* args... */) {\n    var args = partArgs.concat(slice.call(arguments));\n    return this instanceof boundFunction ? construct(fn, args.length, args) : fn.apply(that, args);\n  };\n  if (isObject(fn.prototype)) boundFunction.prototype = fn.prototype;\n  return boundFunction;\n};\n", "/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n  ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n  try {\n    return $getOwnPropertyNames(it);\n  } catch (error) {\n    return windowNames.slice();\n  }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && toString.call(it) == '[object Window]'\n    ? getWindowNames(it)\n    : $getOwnPropertyNames(toIndexedObject(it));\n};\n", "var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n", "var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n  var Symbol = path.Symbol || (path.Symbol = {});\n  if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n    value: wrappedWellKnownSymbolModule.f(NAME)\n  });\n};\n", "var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n  if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n    defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n  }\n};\n", "module.exports = {};\n", "'use strict';\nvar fails = require('../internals/fails');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n  arrayIterator = [].keys();\n  // Safari 8 has buggy iterators w/o `next`\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n  else {\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n  }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n  var test = {};\n  // FF44- legacy iterators case\n  return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif ((!IS_PURE || NEW_ITERATOR_PROTOTYPE) && !has(IteratorPrototype, ITERATOR)) {\n  createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n", "'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n  var TO_STRING_TAG = NAME + ' Iterator';\n  IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n  setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n  Iterators[TO_STRING_TAG] = returnThis;\n  return IteratorConstructor;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n  createIteratorConstructor(IteratorConstructor, NAME, next);\n\n  var getIterationMethod = function (KIND) {\n    if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n    if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n    switch (KIND) {\n      case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n      case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n      case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n    } return function () { return new IteratorConstructor(this); };\n  };\n\n  var TO_STRING_TAG = NAME + ' Iterator';\n  var INCORRECT_VALUES_NAME = false;\n  var IterablePrototype = Iterable.prototype;\n  var nativeIterator = IterablePrototype[ITERATOR]\n    || IterablePrototype['@@iterator']\n    || DEFAULT && IterablePrototype[DEFAULT];\n  var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n  var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n  var CurrentIteratorPrototype, methods, KEY;\n\n  // fix native\n  if (anyNativeIterator) {\n    CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n    if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n      if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n        if (setPrototypeOf) {\n          setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n        } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n          createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n        }\n      }\n      // Set @@toStringTag to native iterators\n      setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n      if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n    }\n  }\n\n  // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n  if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n    INCORRECT_VALUES_NAME = true;\n    defaultIterator = function values() { return nativeIterator.call(this); };\n  }\n\n  // define iterator\n  if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n    createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n  }\n  Iterators[NAME] = defaultIterator;\n\n  // export additional methods\n  if (DEFAULT) {\n    methods = {\n      values: getIterationMethod(VALUES),\n      keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n      entries: getIterationMethod(ENTRIES)\n    };\n    if (FORCED) for (KEY in methods) {\n      if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n        redefine(IterablePrototype, KEY, methods[KEY]);\n      }\n    } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n  }\n\n  return methods;\n};\n", "'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n  setInternalState(this, {\n    type: ARRAY_ITERATOR,\n    target: toIndexedObject(iterated), // target\n    index: 0,                          // next index\n    kind: kind                         // kind\n  });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n  var state = getInternalState(this);\n  var target = state.target;\n  var kind = state.kind;\n  var index = state.index++;\n  if (!target || index >= target.length) {\n    state.target = undefined;\n    return { value: undefined, done: true };\n  }\n  if (kind == 'keys') return { value: index, done: false };\n  if (kind == 'values') return { value: target[index], done: false };\n  return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n", "// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n  CSSRuleList: 0,\n  CSSStyleDeclaration: 0,\n  CSSValueList: 0,\n  ClientRectList: 0,\n  DOMRectList: 0,\n  DOMStringList: 0,\n  DOMTokenList: 1,\n  DataTransferItemList: 0,\n  FileList: 0,\n  HTMLAllCollection: 0,\n  HTMLCollection: 0,\n  HTMLFormElement: 0,\n  HTMLSelectElement: 0,\n  MediaList: 0,\n  MimeTypeArray: 0,\n  NamedNodeMap: 0,\n  NodeList: 1,\n  PaintRequestList: 0,\n  Plugin: 0,\n  PluginArray: 0,\n  SVGLengthList: 0,\n  SVGNumberList: 0,\n  SVGPathSegList: 0,\n  SVGPointList: 0,\n  SVGStringList: 0,\n  SVGTransformList: 0,\n  SourceBufferList: 0,\n  StyleSheetList: 0,\n  TextTrackCueList: 0,\n  TextTrackList: 0,\n  TouchList: 0\n};\n", "var fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n  return fails(function () {\n    return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n  });\n};\n", "var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n  var NewTarget, NewTargetPrototype;\n  if (\n    // it can work only with native `setPrototypeOf`\n    setPrototypeOf &&\n    // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n    typeof (NewTarget = dummy.constructor) == 'function' &&\n    NewTarget !== Wrapper &&\n    isObject(NewTargetPrototype = NewTarget.prototype) &&\n    NewTargetPrototype !== Wrapper.prototype\n  ) setPrototypeOf($this, NewTargetPrototype);\n  return $this;\n};\n", "// `SameValue` abstract operation\n// https://tc39.es/ecma262/#sec-samevalue\n// eslint-disable-next-line es/no-object-is -- safe\nmodule.exports = Object.is || function is(x, y) {\n  // eslint-disable-next-line no-self-compare -- NaN check\n  return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n", "'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n  return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n", "var DESCRIPTORS = require('../internals/descriptors');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n  return function (it) {\n    var O = toIndexedObject(it);\n    var keys = objectKeys(O);\n    var length = keys.length;\n    var i = 0;\n    var result = [];\n    var key;\n    while (length > i) {\n      key = keys[i++];\n      if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {\n        result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n      }\n    }\n    return result;\n  };\n};\n\nmodule.exports = {\n  // `Object.entries` method\n  // https://tc39.es/ecma262/#sec-object.entries\n  entries: createMethod(true),\n  // `Object.values` method\n  // https://tc39.es/ecma262/#sec-object.values\n  values: createMethod(false)\n};\n", "var anObject = require('../internals/an-object');\n\nmodule.exports = function (iterator) {\n  var returnMethod = iterator['return'];\n  if (returnMethod !== undefined) {\n    return anObject(returnMethod.call(iterator)).value;\n  }\n};\n", "var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n  try {\n    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n  } catch (error) {\n    iteratorClose(iterator);\n    throw error;\n  }\n};\n", "var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n", "var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n  if (it != undefined) return it[ITERATOR]\n    || it['@@iterator']\n    || Iterators[classof(it)];\n};\n", "'use strict';\nvar bind = require('../internals/function-bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n  var O = toObject(arrayLike);\n  var C = typeof this == 'function' ? this : Array;\n  var argumentsLength = arguments.length;\n  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n  var mapping = mapfn !== undefined;\n  var iteratorMethod = getIteratorMethod(O);\n  var index = 0;\n  var length, result, step, iterator, next, value;\n  if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n  // if the target is not iterable or it's an array with the default iterator - use a simple case\n  if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n    iterator = iteratorMethod.call(O);\n    next = iterator.next;\n    result = new C();\n    for (;!(step = next.call(iterator)).done; index++) {\n      value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n      createProperty(result, index, value);\n    }\n  } else {\n    length = toLength(O.length);\n    result = new C(length);\n    for (;length > index; index++) {\n      value = mapping ? mapfn(O[index], index) : O[index];\n      createProperty(result, index, value);\n    }\n  }\n  result.length = index;\n  return result;\n};\n", "var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var called = 0;\n  var iteratorWithReturn = {\n    next: function () {\n      return { done: !!called++ };\n    },\n    'return': function () {\n      SAFE_CLOSING = true;\n    }\n  };\n  iteratorWithReturn[ITERATOR] = function () {\n    return this;\n  };\n  // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n  Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n  if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n  var ITERATION_SUPPORT = false;\n  try {\n    var object = {};\n    object[ITERATOR] = function () {\n      return {\n        next: function () {\n          return { done: ITERATION_SUPPORT = true };\n        }\n      };\n    };\n    exec(object);\n  } catch (error) { /* empty */ }\n  return ITERATION_SUPPORT;\n};\n", "// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined';\n", "var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n  for (var key in src) redefine(target, key, src[key], options);\n  return target;\n};\n", "module.exports = function (it, Constructor, name) {\n  if (!(it instanceof Constructor)) {\n    throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n  } return it;\n};\n", "var toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n  if (it === undefined) return 0;\n  var number = toInteger(it);\n  var length = toLength(number);\n  if (number !== length) throw RangeError('Wrong length or index');\n  return length;\n};\n", "// IEEE754 conversions based on https://github.com/feross/ieee754\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nvar pack = function (number, mantissaLength, bytes) {\n  var buffer = new Array(bytes);\n  var exponentLength = bytes * 8 - mantissaLength - 1;\n  var eMax = (1 << exponentLength) - 1;\n  var eBias = eMax >> 1;\n  var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n  var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n  var index = 0;\n  var exponent, mantissa, c;\n  number = abs(number);\n  // eslint-disable-next-line no-self-compare -- NaN check\n  if (number != number || number === Infinity) {\n    // eslint-disable-next-line no-self-compare -- NaN check\n    mantissa = number != number ? 1 : 0;\n    exponent = eMax;\n  } else {\n    exponent = floor(log(number) / LN2);\n    if (number * (c = pow(2, -exponent)) < 1) {\n      exponent--;\n      c *= 2;\n    }\n    if (exponent + eBias >= 1) {\n      number += rt / c;\n    } else {\n      number += rt * pow(2, 1 - eBias);\n    }\n    if (number * c >= 2) {\n      exponent++;\n      c /= 2;\n    }\n    if (exponent + eBias >= eMax) {\n      mantissa = 0;\n      exponent = eMax;\n    } else if (exponent + eBias >= 1) {\n      mantissa = (number * c - 1) * pow(2, mantissaLength);\n      exponent = exponent + eBias;\n    } else {\n      mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n      exponent = 0;\n    }\n  }\n  for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);\n  exponent = exponent << mantissaLength | mantissa;\n  exponentLength += mantissaLength;\n  for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);\n  buffer[--index] |= sign * 128;\n  return buffer;\n};\n\nvar unpack = function (buffer, mantissaLength) {\n  var bytes = buffer.length;\n  var exponentLength = bytes * 8 - mantissaLength - 1;\n  var eMax = (1 << exponentLength) - 1;\n  var eBias = eMax >> 1;\n  var nBits = exponentLength - 7;\n  var index = bytes - 1;\n  var sign = buffer[index--];\n  var exponent = sign & 127;\n  var mantissa;\n  sign >>= 7;\n  for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);\n  mantissa = exponent & (1 << -nBits) - 1;\n  exponent >>= -nBits;\n  nBits += mantissaLength;\n  for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);\n  if (exponent === 0) {\n    exponent = 1 - eBias;\n  } else if (exponent === eMax) {\n    return mantissa ? NaN : sign ? -Infinity : Infinity;\n  } else {\n    mantissa = mantissa + pow(2, mantissaLength);\n    exponent = exponent - eBias;\n  } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nmodule.exports = {\n  pack: pack,\n  unpack: unpack\n};\n", "'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n  var O = toObject(this);\n  var length = toLength(O.length);\n  var argumentsLength = arguments.length;\n  var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n  var end = argumentsLength > 2 ? arguments[2] : undefined;\n  var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n  while (endPos > index) O[index++] = value;\n  return O;\n};\n", "'use strict';\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefineAll = require('../internals/redefine-all');\nvar fails = require('../internals/fails');\nvar anInstance = require('../internals/an-instance');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar IEEE754 = require('../internals/ieee754');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar arrayFill = require('../internals/array-fill');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar $DataView = global[DATA_VIEW];\nvar $DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar RangeError = global.RangeError;\n\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\n\nvar packInt8 = function (number) {\n  return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n  return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n  return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar unpackInt32 = function (buffer) {\n  return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packFloat32 = function (number) {\n  return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n  return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key) {\n  defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n  var intIndex = toIndex(index);\n  var store = getInternalState(view);\n  if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n  var bytes = getInternalState(store.buffer).bytes;\n  var start = intIndex + store.byteOffset;\n  var pack = bytes.slice(start, start + count);\n  return isLittleEndian ? pack : pack.reverse();\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n  var intIndex = toIndex(index);\n  var store = getInternalState(view);\n  if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n  var bytes = getInternalState(store.buffer).bytes;\n  var start = intIndex + store.byteOffset;\n  var pack = conversion(+value);\n  for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n  $ArrayBuffer = function ArrayBuffer(length) {\n    anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n    var byteLength = toIndex(length);\n    setInternalState(this, {\n      bytes: arrayFill.call(new Array(byteLength), 0),\n      byteLength: byteLength\n    });\n    if (!DESCRIPTORS) this.byteLength = byteLength;\n  };\n\n  $DataView = function DataView(buffer, byteOffset, byteLength) {\n    anInstance(this, $DataView, DATA_VIEW);\n    anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n    var bufferLength = getInternalState(buffer).byteLength;\n    var offset = toInteger(byteOffset);\n    if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n    byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n    if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n    setInternalState(this, {\n      buffer: buffer,\n      byteLength: byteLength,\n      byteOffset: offset\n    });\n    if (!DESCRIPTORS) {\n      this.buffer = buffer;\n      this.byteLength = byteLength;\n      this.byteOffset = offset;\n    }\n  };\n\n  if (DESCRIPTORS) {\n    addGetter($ArrayBuffer, 'byteLength');\n    addGetter($DataView, 'buffer');\n    addGetter($DataView, 'byteLength');\n    addGetter($DataView, 'byteOffset');\n  }\n\n  redefineAll($DataView[PROTOTYPE], {\n    getInt8: function getInt8(byteOffset) {\n      return get(this, 1, byteOffset)[0] << 24 >> 24;\n    },\n    getUint8: function getUint8(byteOffset) {\n      return get(this, 1, byteOffset)[0];\n    },\n    getInt16: function getInt16(byteOffset /* , littleEndian */) {\n      var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n      return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n    },\n    getUint16: function getUint16(byteOffset /* , littleEndian */) {\n      var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n      return bytes[1] << 8 | bytes[0];\n    },\n    getInt32: function getInt32(byteOffset /* , littleEndian */) {\n      return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n    },\n    getUint32: function getUint32(byteOffset /* , littleEndian */) {\n      return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n    },\n    getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n      return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n    },\n    getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n      return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n    },\n    setInt8: function setInt8(byteOffset, value) {\n      set(this, 1, byteOffset, packInt8, value);\n    },\n    setUint8: function setUint8(byteOffset, value) {\n      set(this, 1, byteOffset, packInt8, value);\n    },\n    setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n      set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n      set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n      set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n    }\n  });\n} else {\n  /* eslint-disable no-new -- required for testing */\n  if (!fails(function () {\n    NativeArrayBuffer(1);\n  }) || !fails(function () {\n    new NativeArrayBuffer(-1);\n  }) || fails(function () {\n    new NativeArrayBuffer();\n    new NativeArrayBuffer(1.5);\n    new NativeArrayBuffer(NaN);\n    return NativeArrayBuffer.name != ARRAY_BUFFER;\n  })) {\n  /* eslint-enable no-new -- required for testing */\n    $ArrayBuffer = function ArrayBuffer(length) {\n      anInstance(this, $ArrayBuffer);\n      return new NativeArrayBuffer(toIndex(length));\n    };\n    var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE] = NativeArrayBuffer[PROTOTYPE];\n    for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n      if (!((key = keys[j++]) in $ArrayBuffer)) {\n        createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n      }\n    }\n    ArrayBufferPrototype.constructor = $ArrayBuffer;\n  }\n\n  // WebKit bug - the same parent prototype for typed arrays and data view\n  if (setPrototypeOf && getPrototypeOf($DataViewPrototype) !== ObjectPrototype) {\n    setPrototypeOf($DataViewPrototype, ObjectPrototype);\n  }\n\n  // iOS Safari 7.x bug\n  var testView = new $DataView(new $ArrayBuffer(2));\n  var $setInt8 = $DataViewPrototype.setInt8;\n  testView.setInt8(0, 2147483648);\n  testView.setInt8(1, 2147483649);\n  if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataViewPrototype, {\n    setInt8: function setInt8(byteOffset, value) {\n      $setInt8.call(this, byteOffset, value << 24 >> 24);\n    },\n    setUint8: function setUint8(byteOffset, value) {\n      $setInt8.call(this, byteOffset, value << 24 >> 24);\n    }\n  }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n  ArrayBuffer: $ArrayBuffer,\n  DataView: $DataView\n};\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n  var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n  var defineProperty = definePropertyModule.f;\n\n  if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n    defineProperty(Constructor, SPECIES, {\n      configurable: true,\n      get: function () { return this; }\n    });\n  }\n};\n", "var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n  return function (that, callbackfn, argumentsLength, memo) {\n    aFunction(callbackfn);\n    var O = toObject(that);\n    var self = IndexedObject(O);\n    var length = toLength(O.length);\n    var index = IS_RIGHT ? length - 1 : 0;\n    var i = IS_RIGHT ? -1 : 1;\n    if (argumentsLength < 2) while (true) {\n      if (index in self) {\n        memo = self[index];\n        index += i;\n        break;\n      }\n      index += i;\n      if (IS_RIGHT ? index < 0 : length <= index) {\n        throw TypeError('Reduce of empty array with no initial value');\n      }\n    }\n    for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n      memo = callbackfn(memo, self[index], index, O);\n    }\n    return memo;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.reduce` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduce\n  left: createMethod(false),\n  // `Array.prototype.reduceRight` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n  right: createMethod(true)\n};\n", "var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n", "import $ from \"jquery\";\n\nfunction disableFormSubmission() {\n  // disable form submissions\n  $(document).on(\"submit\", \"form:not([action])\", function (e) {\n    e.preventDefault();\n  });\n}\n\nexport { disableFormSubmission };", "import $ from \"jquery\";\n\nfunction trackHistory() {\n  var origPushState = window.history.pushState;\n\n  window.history.pushState = function () {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    var result = origPushState.apply(this, args);\n    $(document).trigger(\"pushstate\");\n    return result;\n  };\n}\n\nexport { trackHistory };", "'use strict';\n/* eslint-disable es/no-array-prototype-indexof -- required for testing */\nvar $ = require('../internals/export');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD }, {\n  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n    return NEGATIVE_ZERO\n      // convert -0 to +0\n      ? nativeIndexOf.apply(this, arguments) || 0\n      : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n", "var $ = require('../internals/export');\nvar parseIntImplementation = require('../internals/number-parse-int');\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != parseIntImplementation }, {\n  parseInt: parseIntImplementation\n});\n", "import \"core-js/modules/es.array.index-of.js\";\nimport \"core-js/modules/es.parse-int.js\";\nimport $ from \"jquery\";\nimport { isIE, setIsQt, setIsIE, setIEVersion } from \"../utils/browser\";\nimport { userAgent } from \"../utils/userAgent\";\n\nfunction getIEVersion() {\n  var msie = userAgent.indexOf(\"MSIE \");\n\n  if (isIE() && msie > 0) {\n    // IE 10 or older => return version number\n    return parseInt(userAgent.substring(msie + 5, userAgent.indexOf(\".\", msie)), 10);\n  }\n\n  var trident = userAgent.indexOf(\"Trident/\");\n\n  if (trident > 0) {\n    // IE 11 => return version number\n    var rv = userAgent.indexOf(\"rv:\");\n    return parseInt(userAgent.substring(rv + 3, userAgent.indexOf(\".\", rv)), 10);\n  }\n\n  return -1;\n}\n\nfunction determineBrowserInfo() {\n  // For easy handling of Qt quirks using CSS\n  if (/\\bQt\\//.test(userAgent)) {\n    $(document.documentElement).addClass(\"qt\");\n    setIsQt(true);\n  } else {\n    setIsQt(false);\n  } // For Qt on Mac. Note that the target string as of RStudio 1.4.173\n  // is \"QtWebEngine\" and does not have a trailing slash.\n\n\n  if (/\\bQt/.test(userAgent) && /\\bMacintosh/.test(userAgent)) {\n    $(document.documentElement).addClass(\"qtmac\");\n  } // Enable special treatment for Qt 5 quirks on Linux\n\n\n  if (/\\bQt\\/5/.test(userAgent) && /Linux/.test(userAgent)) {\n    $(document.documentElement).addClass(\"qt5\");\n  } // Detect IE and older (pre-Chromium) Edge\n\n\n  setIsIE(/MSIE|Trident|Edge/.test(userAgent));\n  setIEVersion(getIEVersion());\n}\n\nexport { determineBrowserInfo };", "var isQtVal = false;\nvar isIEVal = false;\nvar versionIE = -1;\n\nfunction setIsQt(isQt) {\n  isQtVal = isQt;\n}\n\nfunction setIsIE(isIE) {\n  isIEVal = isIE;\n}\n\nfunction setIEVersion(versionIE_) {\n  versionIE = versionIE_;\n}\n\nfunction isQt() {\n  return isQtVal;\n}\n\nfunction isIE() {\n  return isIEVal;\n} // (Name existed before TS conversion)\n// eslint-disable-next-line @typescript-eslint/naming-convention\n\n\nfunction IEVersion() {\n  return versionIE;\n}\n\nexport { isQt, isIE, IEVersion, setIsQt, setIsIE, setIEVersion };", "var userAgent;\n\nfunction setUserAgent(userAgent_) {\n  userAgent = userAgent_;\n}\n\nexport { userAgent, setUserAgent };", "function windowShiny() {\n  // Use `unknown` type as we know what we are doing is _dangerous_\n  // Immediately init shiny on the window\n  if (!window[\"Shiny\"]) {\n    window[\"Shiny\"] = {};\n  }\n\n  return window[\"Shiny\"];\n}\n\nexport { windowShiny };", "import $ from \"jquery\";\nimport { InputBinding, OutputBinding } from \"../bindings\";\nimport { resetBrush } from \"../imageutils/resetBrush\";\nimport { $escape, compareVersion } from \"../utils\";\nimport { showNotification, removeNotification } from \"./notifications\";\nimport { showModal, removeModal } from \"./modal\";\nimport { showReconnectDialog, hideReconnectDialog } from \"./reconnectDialog\";\nimport { renderContent, renderDependencies, renderHtml } from \"./render\";\nimport { initShiny } from \"./init\";\nimport { setFileInputBinding } from \"./initedMethods\";\nimport { addCustomMessageHandler } from \"./shinyapp\";\nimport { initInputBindings } from \"../bindings/input\";\nimport { initOutputBindings } from \"../bindings/output\";\nvar windowShiny;\n\nfunction setShiny(windowShiny_) {\n  windowShiny = windowShiny_; // `process.env.SHINY_VERSION` is overwritten to the Shiny version at build time.\n  // During testing, the `Shiny.version` will be `\"development\"`\n\n  windowShiny.version = process.env.SHINY_VERSION || \"development\";\n\n  var _initInputBindings = initInputBindings(),\n      inputBindings = _initInputBindings.inputBindings,\n      fileInputBinding = _initInputBindings.fileInputBinding;\n\n  var _initOutputBindings = initOutputBindings(),\n      outputBindings = _initOutputBindings.outputBindings; // set variable to be retrieved later\n\n\n  setFileInputBinding(fileInputBinding);\n  windowShiny.$escape = $escape;\n  windowShiny.compareVersion = compareVersion;\n  windowShiny.inputBindings = inputBindings;\n  windowShiny.InputBinding = InputBinding;\n  windowShiny.outputBindings = outputBindings;\n  windowShiny.OutputBinding = OutputBinding;\n  windowShiny.resetBrush = resetBrush;\n  windowShiny.notifications = {\n    show: showNotification,\n    remove: removeNotification\n  };\n  windowShiny.modal = {\n    show: showModal,\n    remove: removeModal\n  };\n  windowShiny.addCustomMessageHandler = addCustomMessageHandler;\n  windowShiny.showReconnectDialog = showReconnectDialog;\n  windowShiny.hideReconnectDialog = hideReconnectDialog;\n  windowShiny.renderDependencies = renderDependencies;\n  windowShiny.renderContent = renderContent;\n  windowShiny.renderHtml = renderHtml;\n  $(function () {\n    // Init Shiny a little later than document ready, so user code can\n    // run first (i.e. to register bindings)\n    setTimeout(function () {\n      initShiny(windowShiny);\n    }, 1);\n  });\n}\n\nexport { windowShiny, setShiny };", "var DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n  defineProperty(FunctionPrototype, NAME, {\n    configurable: true,\n    get: function () {\n      try {\n        return FunctionPrototypeToString.call(this).match(nameRE)[1];\n      } catch (error) {\n        return '';\n      }\n    }\n  });\n}\n", "import \"core-js/modules/es.regexp.exec.js\";\nimport \"core-js/modules/es.string.replace.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.regexp.to-string.js\";\nimport \"core-js/modules/es.parse-float.js\";\nimport \"core-js/modules/es.number.to-precision.js\";\nimport \"core-js/modules/es.array.concat.js\";\nimport \"core-js/modules/es.array.slice.js\";\nimport \"core-js/modules/es.array.splice.js\";\nimport \"core-js/modules/es.object.keys.js\";\nimport \"core-js/modules/es.string.split.js\";\nimport \"core-js/modules/es.parse-int.js\";\nimport $ from \"jquery\";\nimport { windowDevicePixelRatio } from \"../window/pixelRatio\";\nimport { makeBlob } from \"./blob\";\nimport { hasOwnProperty } from \"./object\";\n\nfunction escapeHTML(str) {\n  var escaped = {\n    \"&\": \"&amp;\",\n    \"<\": \"&lt;\",\n    \">\": \"&gt;\",\n    // eslint-disable-next-line prettier/prettier\n    \"\\\"\": \"&quot;\",\n    \"'\": \"&#039;\",\n    \"/\": \"&#x2F;\"\n  };\n  return str.replace(/[&<>'\"/]/g, function (m) {\n    return escaped[m];\n  });\n}\n\nfunction randomId() {\n  return Math.floor(0x100000000 + Math.random() * 0xf00000000).toString(16);\n}\n\nfunction strToBool(str) {\n  if (!str || !str.toLowerCase) return undefined;\n\n  switch (str.toLowerCase()) {\n    case \"true\":\n      return true;\n\n    case \"false\":\n      return false;\n\n    default:\n      return undefined;\n  }\n} // A wrapper for getComputedStyle that is compatible with older browsers.\n// This is significantly faster than jQuery's .css() function.\n\n\nfunction getStyle(el, styleProp) {\n  var x = undefined; // @ts-expect-error; Old, IE 5+ attribute only - https://developer.mozilla.org/en-US/docs/Web/API/Element/currentStyle\n\n  if (el.currentStyle) x = el.currentStyle[styleProp];else if (window.getComputedStyle) {\n    // getComputedStyle can return null when we're inside a hidden iframe on\n    // Firefox; don't attempt to retrieve style props in this case.\n    // https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n    var style = document.defaultView.getComputedStyle(el, null);\n    if (style) x = style.getPropertyValue(styleProp);\n  }\n  return x;\n} // Convert a number to a string with leading zeros\n\n\nfunction padZeros(n, digits) {\n  var str = n.toString();\n\n  while (str.length < digits) {\n    str = \"0\" + str;\n  }\n\n  return str;\n} // Round to a specified number of significant digits.\n\n\nfunction roundSignif(x) {\n  var digits = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n  if (digits < 1) throw \"Significant digits must be at least 1.\"; // This converts to a string and back to a number, which is inelegant, but\n  // is less prone to FP rounding error than an alternate method which used\n  // Math.round().\n\n  return parseFloat(x.toPrecision(digits));\n} // Take a string with format \"YYYY-MM-DD\" and return a Date object.\n// IE8 and QTWebKit don't support YYYY-MM-DD, but they support YYYY/MM/DD\n\n\nfunction parseDate(dateString) {\n  var date = new Date(dateString);\n\n  if (date.toString() === \"Invalid Date\") {\n    date = new Date(dateString.replace(/-/g, \"/\"));\n  }\n\n  return date;\n} // Given a Date object, return a string in yyyy-mm-dd format, using the\n// UTC date. This may be a day off from the date in the local time zone.\n\n\nfunction formatDateUTC(date) {\n  if (date instanceof Date) {\n    return date.getUTCFullYear() + \"-\" + padZeros(date.getUTCMonth() + 1, 2) + \"-\" + padZeros(date.getUTCDate(), 2);\n  } else {\n    return null;\n  }\n} // Given an element and a function(width, height), returns a function(). When\n// the output function is called, it calls the input function with the offset\n// width and height of the input element--but only if the size of the element\n// is non-zero and the size is different than the last time the output\n// function was called.\n//\n// Basically we are trying to filter out extraneous calls to func, so that\n// when the window size changes or whatever, we don't run resize logic for\n// elements that haven't actually changed size or aren't visible anyway.\n\n\nfunction makeResizeFilter(el, func) {\n  var lastSize = {};\n  return function () {\n    var size = {\n      w: el.offsetWidth,\n      h: el.offsetHeight\n    };\n    if (size.w === 0 && size.h === 0) return;\n    if (size.w === lastSize.w && size.h === lastSize.h) return;\n    lastSize = size;\n    func(size.w, size.h);\n  };\n}\n\nfunction pixelRatio() {\n  if (windowDevicePixelRatio()) {\n    return Math.round(windowDevicePixelRatio() * 100) / 100;\n  } else {\n    return 1;\n  }\n} // Takes a string expression and returns a function that takes an argument.\n//\n// When the function is executed, it will evaluate that expression using\n// \"with\" on the argument value, and return the result.\n\n\nfunction scopeExprToFunc(expr) {\n  /*jshint evil: true */\n  var exprEscaped = expr.replace(/[\\\\\"']/g, \"\\\\$&\") // eslint-disable-next-line no-control-regex\n  .replace(/\\u0000/g, \"\\\\0\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\") // \\b has a special meaning; need [\\b] to match backspace char.\n  .replace(/[\\b]/g, \"\\\\b\");\n  var func;\n\n  try {\n    // @ts-expect-error; Do not know how to type this _dangerous_ situation\n    func = new Function(\"with (this) {\\n        try {\\n          return (\".concat(expr, \");\\n        } catch (e) {\\n          console.error('Error evaluating expression: \").concat(exprEscaped, \"');\\n          throw e;\\n        }\\n      }\"));\n  } catch (e) {\n    console.error(\"Error parsing expression: \" + expr);\n    throw e;\n  }\n\n  return function (scope) {\n    return func.call(scope);\n  };\n}\n\nfunction asArray(value) {\n  if (value === null || value === undefined) return [];\n  if (Array.isArray(value)) return value;\n  return [value];\n} // We need a stable sorting algorithm for ordering\n// bindings by priority and insertion order.\n\n\nfunction mergeSort(list, sortfunc) {\n  function merge(sortfunc, a, b) {\n    var ia = 0;\n    var ib = 0;\n    var sorted = [];\n\n    while (ia < a.length && ib < b.length) {\n      if (sortfunc(a[ia], b[ib]) <= 0) {\n        sorted.push(a[ia++]);\n      } else {\n        sorted.push(b[ib++]);\n      }\n    }\n\n    while (ia < a.length) {\n      sorted.push(a[ia++]);\n    }\n\n    while (ib < b.length) {\n      sorted.push(b[ib++]);\n    }\n\n    return sorted;\n  } // Don't mutate list argument\n\n\n  list = list.slice(0);\n\n  for (var chunkSize = 1; chunkSize < list.length; chunkSize *= 2) {\n    for (var i = 0; i < list.length; i += chunkSize * 2) {\n      var listA = list.slice(i, i + chunkSize);\n      var listB = list.slice(i + chunkSize, i + chunkSize * 2);\n      var merged = merge(sortfunc, listA, listB);\n      var args = [i, merged.length];\n      Array.prototype.push.apply(args, merged);\n      Array.prototype.splice.apply(list, args);\n    }\n  }\n\n  return list;\n} // Escape jQuery selector metacharacters: !\"#$%&'()*+,./:;<=>?@[\\]^`{|}~\n\n\nvar $escape = function $escape(val) {\n  return val.replace(/([!\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~])/g, \"\\\\$1\");\n}; // Maps a function over an object, preserving keys. Like the mapValues\n// function from lodash.\n\n\nfunction mapValues(obj, f) {\n  var newObj = {};\n\n  for (var _key in obj) {\n    if (hasOwnProperty(obj, _key)) newObj[_key] = f(obj[_key], _key, obj);\n  }\n\n  return newObj;\n} // This is does the same as Number.isNaN, but that function unfortunately does\n// not exist in any version of IE.\n\n\nfunction isnan(x) {\n  return typeof x === \"number\" && isNaN(x);\n} // Binary equality function used by the equal function.\n// (Name existed before TS conversion)\n// eslint-disable-next-line @typescript-eslint/naming-convention\n\n\nfunction _equal(x, y) {\n  if ($.type(x) === \"object\" && $.type(y) === \"object\") {\n    var xo = x;\n    var yo = y;\n    if (Object.keys(xo).length !== Object.keys(yo).length) return false;\n\n    for (var prop in xo) {\n      if (!hasOwnProperty(yo, prop) || !_equal(xo[prop], yo[prop])) return false;\n    }\n\n    return true;\n  } else if ($.type(x) === \"array\" && $.type(y) === \"array\") {\n    var xa = x;\n    var ya = y;\n    if (xa.length !== ya.length) return false;\n\n    for (var i = 0; i < xa.length; i++) {\n      if (!_equal(xa[i], ya[i])) return false;\n    }\n\n    return true;\n  } else {\n    return x === y;\n  }\n} // Structural or \"deep\" equality predicate. Tests two or more arguments for\n// equality, traversing arrays and objects (as determined by $.type) as\n// necessary.\n//\n// Objects other than objects and arrays are tested for equality using ===.\n\n\nfunction equal() {\n  if (arguments.length < 2) throw new Error(\"equal requires at least two arguments.\");\n\n  for (var i = 0; i < arguments.length - 1; i++) {\n    if (!_equal(i < 0 || arguments.length <= i ? undefined : arguments[i], i + 1 < 0 || arguments.length <= i + 1 ? undefined : arguments[i + 1])) return false;\n  }\n\n  return true;\n} // Compare version strings like \"1.0.1\", \"1.4-2\". `op` must be a string like\n// \"==\" or \"<\".\n\n\nvar compareVersion = function compareVersion(a, op, b) {\n  function versionParts(ver) {\n    return (ver + \"\").replace(/-/, \".\").replace(/(\\.0)+[^.]*$/, \"\").split(\".\");\n  }\n\n  function cmpVersion(a, b) {\n    a = versionParts(a);\n    b = versionParts(b);\n    var len = Math.min(a.length, b.length);\n    var cmp;\n\n    for (var i = 0; i < len; i++) {\n      cmp = parseInt(a[i], 10) - parseInt(b[i], 10);\n\n      if (cmp !== 0) {\n        return cmp;\n      }\n    }\n\n    return a.length - b.length;\n  }\n\n  var diff = cmpVersion(a, b);\n  if (op === \"==\") return diff === 0;else if (op === \">=\") return diff >= 0;else if (op === \">\") return diff > 0;else if (op === \"<=\") return diff <= 0;else if (op === \"<\") return diff < 0;else throw \"Unknown operator: \".concat(op);\n};\n\nfunction updateLabel(labelTxt, labelNode) {\n  // Only update if label was specified in the update method\n  if (typeof labelTxt === \"undefined\") return;\n\n  if (labelNode.length !== 1) {\n    throw new Error(\"labelNode must be of length 1\");\n  } // Should the label be empty?\n\n\n  var emptyLabel = Array.isArray(labelTxt) && labelTxt.length === 0;\n\n  if (emptyLabel) {\n    labelNode.addClass(\"shiny-label-null\");\n  } else {\n    labelNode.text(labelTxt);\n    labelNode.removeClass(\"shiny-label-null\");\n  }\n} // Compute the color property of an a tag, scoped within the element\n\n\nfunction getComputedLinkColor(el) {\n  var a = document.createElement(\"a\");\n  a.href = \"/\";\n  var div = document.createElement(\"div\");\n  div.style.setProperty(\"position\", \"absolute\", \"important\");\n  div.style.setProperty(\"top\", \"-1000px\", \"important\");\n  div.style.setProperty(\"left\", \"0\", \"important\");\n  div.style.setProperty(\"width\", \"30px\", \"important\");\n  div.style.setProperty(\"height\", \"10px\", \"important\");\n  div.appendChild(a);\n  el.appendChild(div);\n  var linkColor = window.getComputedStyle(a).getPropertyValue(\"color\");\n  el.removeChild(div);\n  return linkColor;\n}\n\nfunction isBS3() {\n  // @ts-expect-error; Check if `window.bootstrap` exists\n  return !window.bootstrap;\n}\n\nfunction toLowerCase(str) {\n  return str.toLowerCase();\n}\n\nexport { escapeHTML, randomId, strToBool, getStyle, padZeros, roundSignif, parseDate, formatDateUTC, makeResizeFilter, pixelRatio, scopeExprToFunc, asArray, mergeSort, $escape, mapValues, isnan, _equal, equal, compareVersion, updateLabel, getComputedLinkColor, makeBlob, hasOwnProperty, isBS3, toLowerCase };", "'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n  var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n  var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n  var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.es/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = requireObjectCoercible(this);\n      var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n      return replacer !== undefined\n        ? replacer.call(searchValue, O, replaceValue)\n        : nativeReplace.call(String(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n    function (regexp, replaceValue) {\n      if (\n        (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n        (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n      ) {\n        var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n        if (res.done) return res.value;\n      }\n\n      var rx = anObject(regexp);\n      var S = String(this);\n\n      var functionalReplace = typeof replaceValue === 'function';\n      if (!functionalReplace) replaceValue = String(replaceValue);\n\n      var global = rx.global;\n      if (global) {\n        var fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n      var results = [];\n      while (true) {\n        var result = regExpExec(rx, S);\n        if (result === null) break;\n\n        results.push(result);\n        if (!global) break;\n\n        var matchStr = String(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n\n        var matched = String(result[0]);\n        var position = max(min(toInteger(result.index), S.length), 0);\n        var captures = [];\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = [matched].concat(captures, position, S);\n          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n          var replacement = String(replaceValue.apply(undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n      return accumulatedResult + S.slice(nextSourcePosition);\n    }\n  ];\n});\n", "var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n  redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n", "'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n  redefine(RegExp.prototype, TO_STRING, function toString() {\n    var R = anObject(this);\n    var p = String(R.source);\n    var rf = R.flags;\n    var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n    return '/' + p + '/' + f;\n  }, { unsafe: true });\n}\n", "var $ = require('../internals/export');\nvar parseFloatImplementation = require('../internals/number-parse-float');\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat != parseFloatImplementation }, {\n  parseFloat: parseFloatImplementation\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar thisNumberValue = require('../internals/this-number-value');\n\nvar nativeToPrecision = 1.0.toPrecision;\n\nvar FORCED = fails(function () {\n  // IE7-\n  return nativeToPrecision.call(1, undefined) !== '1';\n}) || !fails(function () {\n  // V8 ~ Android 4.3-\n  nativeToPrecision.call({});\n});\n\n// `Number.prototype.toPrecision` method\n// https://tc39.es/ecma262/#sec-number.prototype.toprecision\n$({ target: 'Number', proto: true, forced: FORCED }, {\n  toPrecision: function toPrecision(precision) {\n    return precision === undefined\n      ? nativeToPrecision.call(thisNumberValue(this))\n      : nativeToPrecision.call(thisNumberValue(this), precision);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n  var array = [];\n  array[IS_CONCAT_SPREADABLE] = false;\n  return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n  if (!isObject(O)) return false;\n  var spreadable = O[IS_CONCAT_SPREADABLE];\n  return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  concat: function concat(arg) {\n    var O = toObject(this);\n    var A = arraySpeciesCreate(O, 0);\n    var n = 0;\n    var i, k, length, len, E;\n    for (i = -1, length = arguments.length; i < length; i++) {\n      E = i === -1 ? O : arguments[i];\n      if (isConcatSpreadable(E)) {\n        len = toLength(E.length);\n        if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n      } else {\n        if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        createProperty(A, n++, E);\n      }\n    }\n    A.length = n;\n    return A;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  slice: function slice(start, end) {\n    var O = toIndexedObject(this);\n    var length = toLength(O.length);\n    var k = toAbsoluteIndex(start, length);\n    var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n    // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n    var Constructor, result, n;\n    if (isArray(O)) {\n      Constructor = O.constructor;\n      // cross-realm fallback\n      if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n        Constructor = undefined;\n      } else if (isObject(Constructor)) {\n        Constructor = Constructor[SPECIES];\n        if (Constructor === null) Constructor = undefined;\n      }\n      if (Constructor === Array || Constructor === undefined) {\n        return nativeSlice.call(O, k, fin);\n      }\n    }\n    result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n    for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n    result.length = n;\n    return result;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  splice: function splice(start, deleteCount /* , ...items */) {\n    var O = toObject(this);\n    var len = toLength(O.length);\n    var actualStart = toAbsoluteIndex(start, len);\n    var argumentsLength = arguments.length;\n    var insertCount, actualDeleteCount, A, k, from, to;\n    if (argumentsLength === 0) {\n      insertCount = actualDeleteCount = 0;\n    } else if (argumentsLength === 1) {\n      insertCount = 0;\n      actualDeleteCount = len - actualStart;\n    } else {\n      insertCount = argumentsLength - 2;\n      actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n    }\n    if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n      throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n    }\n    A = arraySpeciesCreate(O, actualDeleteCount);\n    for (k = 0; k < actualDeleteCount; k++) {\n      from = actualStart + k;\n      if (from in O) createProperty(A, k, O[from]);\n    }\n    A.length = actualDeleteCount;\n    if (insertCount < actualDeleteCount) {\n      for (k = actualStart; k < len - actualDeleteCount; k++) {\n        from = k + actualDeleteCount;\n        to = k + insertCount;\n        if (from in O) O[to] = O[from];\n        else delete O[to];\n      }\n      for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n    } else if (insertCount > actualDeleteCount) {\n      for (k = len - actualDeleteCount; k > actualStart; k--) {\n        from = k + actualDeleteCount - 1;\n        to = k + insertCount - 1;\n        if (from in O) O[to] = O[from];\n        else delete O[to];\n      }\n    }\n    for (k = 0; k < insertCount; k++) {\n      O[k + actualStart] = arguments[k + 2];\n    }\n    O.length = len - actualDeleteCount + insertCount;\n    return A;\n  }\n});\n", "var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n  keys: function keys(it) {\n    return nativeKeys(toObject(it));\n  }\n});\n", "'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n  var internalSplit;\n  if (\n    'abbc'.split(/(b)*/)[1] == 'c' ||\n    // eslint-disable-next-line regexp/no-empty-group -- required for testing\n    'test'.split(/(?:)/, -1).length != 4 ||\n    'ab'.split(/(?:ab)*/).length != 2 ||\n    '.'.split(/(.?)(.?)/).length != 4 ||\n    // eslint-disable-next-line regexp/no-assertion-capturing-group, regexp/no-empty-group -- required for testing\n    '.'.split(/()()/).length > 1 ||\n    ''.split(/.?/).length\n  ) {\n    // based on es5-shim implementation, need to rework it\n    internalSplit = function (separator, limit) {\n      var string = String(requireObjectCoercible(this));\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (separator === undefined) return [string];\n      // If `separator` is not a regex, use native split\n      if (!isRegExp(separator)) {\n        return nativeSplit.call(string, separator, lim);\n      }\n      var output = [];\n      var flags = (separator.ignoreCase ? 'i' : '') +\n                  (separator.multiline ? 'm' : '') +\n                  (separator.unicode ? 'u' : '') +\n                  (separator.sticky ? 'y' : '');\n      var lastLastIndex = 0;\n      // Make `global` and avoid `lastIndex` issues by working with a copy\n      var separatorCopy = new RegExp(separator.source, flags + 'g');\n      var match, lastIndex, lastLength;\n      while (match = regexpExec.call(separatorCopy, string)) {\n        lastIndex = separatorCopy.lastIndex;\n        if (lastIndex > lastLastIndex) {\n          output.push(string.slice(lastLastIndex, match.index));\n          if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n          lastLength = match[0].length;\n          lastLastIndex = lastIndex;\n          if (output.length >= lim) break;\n        }\n        if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n      }\n      if (lastLastIndex === string.length) {\n        if (lastLength || !separatorCopy.test('')) output.push('');\n      } else output.push(string.slice(lastLastIndex));\n      return output.length > lim ? output.slice(0, lim) : output;\n    };\n  // Chakra, V8\n  } else if ('0'.split(undefined, 0).length) {\n    internalSplit = function (separator, limit) {\n      return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n    };\n  } else internalSplit = nativeSplit;\n\n  return [\n    // `String.prototype.split` method\n    // https://tc39.es/ecma262/#sec-string.prototype.split\n    function split(separator, limit) {\n      var O = requireObjectCoercible(this);\n      var splitter = separator == undefined ? undefined : separator[SPLIT];\n      return splitter !== undefined\n        ? splitter.call(separator, O, limit)\n        : internalSplit.call(String(O), separator, limit);\n    },\n    // `RegExp.prototype[@@split]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n    //\n    // NOTE: This cannot be properly polyfilled in engines that don't support\n    // the 'y' flag.\n    function (regexp, limit) {\n      var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n      var C = speciesConstructor(rx, RegExp);\n\n      var unicodeMatching = rx.unicode;\n      var flags = (rx.ignoreCase ? 'i' : '') +\n                  (rx.multiline ? 'm' : '') +\n                  (rx.unicode ? 'u' : '') +\n                  (UNSUPPORTED_Y ? 'g' : 'y');\n\n      // ^(? + rx + ) is needed, in combination with some S slicing, to\n      // simulate the 'y' flag.\n      var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n      var p = 0;\n      var q = 0;\n      var A = [];\n      while (q < S.length) {\n        splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n        var z = callRegExpExec(splitter, UNSUPPORTED_Y ? S.slice(q) : S);\n        var e;\n        if (\n          z === null ||\n          (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n        ) {\n          q = advanceStringIndex(S, q, unicodeMatching);\n        } else {\n          A.push(S.slice(p, q));\n          if (A.length === lim) return A;\n          for (var i = 1; i <= z.length - 1; i++) {\n            A.push(z[i]);\n            if (A.length === lim) return A;\n          }\n          q = p = e;\n        }\n      }\n      A.push(S.slice(p));\n      return A;\n    }\n  ];\n}, UNSUPPORTED_Y);\n", "function windowDevicePixelRatio() {\n  return window.devicePixelRatio;\n}\n\nexport { windowDevicePixelRatio };", "import $ from \"jquery\";\nvar blobBuilderClass;\n\nfunction setBlobBuilder(blobBuilderClass_) {\n  blobBuilderClass = blobBuilderClass_;\n  return;\n}\n\nfunction makeBlob(parts) {\n  // Browser compatibility is a mess right now. The code as written works in\n  // a variety of modern browsers, but sadly gives a deprecation warning\n  // message on the console in current versions (as of this writing) of\n  // Chrome.\n  // Safari 6.0 (8536.25) on Mac OS X 10.8.1:\n  // Has Blob constructor but it doesn't work with ArrayBufferView args\n  // Google Chrome 21.0.1180.81 on Xubuntu 12.04:\n  // Has Blob constructor, accepts ArrayBufferView args, accepts ArrayBuffer\n  // but with a deprecation warning message\n  // Firefox 15.0 on Xubuntu 12.04:\n  // Has Blob constructor, accepts both ArrayBuffer and ArrayBufferView args\n  // Chromium 18.0.1025.168 (Developer Build 134367 Linux) on Xubuntu 12.04:\n  // No Blob constructor. Has WebKitBlobBuilder.\n  try {\n    return new Blob(parts);\n  } catch (e) {\n    var blobBuilder = new blobBuilderClass();\n    $.each(parts, function (i, part) {\n      blobBuilder.append(part);\n    });\n    return blobBuilder.getBlob();\n  }\n}\n\nexport { makeBlob, setBlobBuilder };", "function hasOwnProperty(x, y) {\n  return Object.prototype.hasOwnProperty.call(x, y);\n}\n\nexport { hasOwnProperty };", "import \"core-js/modules/es.function.name.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { mergeSort } from \"../utils\";\n\nvar BindingRegistry = /*#__PURE__*/function () {\n  function BindingRegistry() {\n    _classCallCheck(this, BindingRegistry);\n\n    _defineProperty(this, \"name\", void 0);\n\n    _defineProperty(this, \"bindings\", []);\n\n    _defineProperty(this, \"bindingNames\", {});\n  }\n\n  _createClass(BindingRegistry, [{\n    key: \"register\",\n    value: function register(binding, bindingName) {\n      var priority = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n      var bindingObj = {\n        binding: binding,\n        priority: priority\n      };\n      this.bindings.unshift(bindingObj);\n\n      if (bindingName) {\n        this.bindingNames[bindingName] = bindingObj;\n        binding.name = bindingName;\n      }\n    }\n  }, {\n    key: \"setPriority\",\n    value: function setPriority(bindingName, priority) {\n      var bindingObj = this.bindingNames[bindingName];\n      if (!bindingObj) throw \"Tried to set priority on unknown binding \" + bindingName;\n      bindingObj.priority = priority || 0;\n    }\n  }, {\n    key: \"getPriority\",\n    value: function getPriority(bindingName) {\n      var bindingObj = this.bindingNames[bindingName];\n      if (!bindingObj) return false;\n      return bindingObj.priority;\n    }\n  }, {\n    key: \"getBindings\",\n    value: function getBindings() {\n      // Sort the bindings. The ones with higher priority are consulted\n      // first; ties are broken by most-recently-registered.\n      return mergeSort(this.bindings, function (a, b) {\n        return b.priority - a.priority;\n      });\n    }\n  }]);\n\n  return BindingRegistry;\n}();\n\nexport { BindingRegistry };", "function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar InputBinding = /*#__PURE__*/function () {\n  function InputBinding() {\n    _classCallCheck(this, InputBinding);\n\n    _defineProperty(this, \"name\", void 0);\n  }\n\n  _createClass(InputBinding, [{\n    key: \"find\",\n    value: // Returns a jQuery object or element array that contains the\n    // descendants of scope that match this binding\n    function find(scope) {\n      throw \"Not implemented\"; // add so that typescript isn't mad about an unused var\n\n      scope;\n    }\n  }, {\n    key: \"getId\",\n    value: function getId(el) {\n      return el.getAttribute(\"data-input-id\") || el.id;\n    } // Gives the input a type in case the server needs to know it\n    // to deserialize the JSON correctly\n\n  }, {\n    key: \"getType\",\n    value: function getType(el) {\n      return false;\n      el;\n    }\n  }, {\n    key: \"getValue\",\n    value: function getValue(el) {\n      throw \"Not implemented\";\n      el; // unused var\n    } // The callback method takes one argument, whose value is boolean. If true,\n    // allow deferred (debounce or throttle) sending depending on the value of\n    // getRatePolicy. If false, send value immediately. Default behavior is `false`\n\n  }, {\n    key: \"subscribe\",\n    value: function subscribe(el, callback) {\n      // empty\n      el;\n      callback;\n    }\n  }, {\n    key: \"unsubscribe\",\n    value: function unsubscribe(el) {\n      // empty\n      el;\n    } // This is used for receiving messages that tell the input object to do\n    // things, such as setting values (including min, max, and others).\n    // 'data' should be an object with elements corresponding to value, min,\n    // max, etc., as appropriate for the type of input object. It also should\n    // trigger a change event.\n\n  }, {\n    key: \"receiveMessage\",\n    value: function receiveMessage(el, data) {\n      throw \"Not implemented\";\n      el;\n      data;\n    }\n  }, {\n    key: \"getState\",\n    value: function getState(el) {\n      throw \"Not implemented\";\n      el;\n    }\n  }, {\n    key: \"getRatePolicy\",\n    value: function getRatePolicy(el) {\n      return null;\n      el;\n    } // Some input objects need initialization before being bound. This is\n    // called when the document is ready (for statically-added input objects),\n    // and when new input objects are added to the document with\n    // htmlOutputBinding.renderValue() (for dynamically-added input objects).\n    // This is called before the input is bound.\n\n  }, {\n    key: \"initialize\",\n    value: function initialize(el) {\n      //empty\n      el;\n    } // This is called after unbinding the output.\n\n  }, {\n    key: \"dispose\",\n    value: function dispose(el) {\n      //empty\n      el;\n    }\n  }]);\n\n  return InputBinding;\n}(); //// NOTES FOR FUTURE DEV\n// Turn register systemin into something that is intialized for every instance.\n// \"Have a new instance for every item, not an instance that does work on every item\"\n//\n// * Keep register as is for historical purposes\n// make a new register function that would take a class\n// these class could be constructed at build time\n// store the constructed obj on the ele and retrieve\n// Then the classes could store their information within their local class, rather than on the element\n// VERY CLEAN!!!\n// to invoke methods, it would be something like `el.shinyClass.METHOD(x,y,z)`\n// * See https://github.com/rstudio/shinyvalidate/blob/c8becd99c01fac1bac03b50e2140f49fca39e7f4/srcjs/shinyvalidate.js#L157-L167\n// these methods would be added using a new method like `inputBindings.registerClass(ClassObj, name)`\n// things to watch out for:\n// * unbind, then rebind. Maybe we stash the local content.\n// Updates:\n// * Feel free to alter method names on classes. (And make them private)\n//// END NOTES FOR FUTURE DEV\n\n\nexport { InputBinding };", "'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n  find: function find(callbackfn /* , that = undefined */) {\n    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n", "var $ = require('../internals/export');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n$({ target: 'Object', stat: true }, {\n  setPrototypeOf: setPrototypeOf\n});\n", "var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar nativeGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n  getPrototypeOf: function getPrototypeOf(it) {\n    return nativeGetPrototypeOf(toObject(it));\n  }\n});\n\n", "var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar aFunction = require('../internals/a-function');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar bind = require('../internals/function-bind');\nvar fails = require('../internals/fails');\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\n\n// `Reflect.construct` method\n// https://tc39.es/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n  function F() { /* empty */ }\n  return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n  nativeConstruct(function () { /* empty */ });\n});\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n  construct: function construct(Target, args /* , newTarget */) {\n    aFunction(Target);\n    anObject(args);\n    var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n    if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n    if (Target == newTarget) {\n      // w/o altered newTarget, optimization for 0-4 arguments\n      switch (args.length) {\n        case 0: return new Target();\n        case 1: return new Target(args[0]);\n        case 2: return new Target(args[0], args[1]);\n        case 3: return new Target(args[0], args[1], args[2]);\n        case 4: return new Target(args[0], args[1], args[2], args[3]);\n      }\n      // w/o altered newTarget, lot of arguments case\n      var $args = [null];\n      $args.push.apply($args, args);\n      return new (bind.apply(Target, $args))();\n    }\n    // with altered newTarget, not support built-in constructors\n    var proto = newTarget.prototype;\n    var instance = create(isObject(proto) ? proto : Object.prototype);\n    var result = Function.apply.call(Target, instance, args);\n    return isObject(result) ? result : instance;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n  return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n    get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n  })).a != 7;\n}) ? function (O, P, Attributes) {\n  var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n  if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n  nativeDefineProperty(O, P, Attributes);\n  if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n    nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n  }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n  var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n  setInternalState(symbol, {\n    type: SYMBOL,\n    tag: tag,\n    description: description\n  });\n  if (!DESCRIPTORS) symbol.description = description;\n  return symbol;\n};\n\nvar isSymbol = USE_SYMBOL_AS_UID ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n  if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n  anObject(O);\n  var key = toPrimitive(P, true);\n  anObject(Attributes);\n  if (has(AllSymbols, key)) {\n    if (!Attributes.enumerable) {\n      if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n      O[HIDDEN][key] = true;\n    } else {\n      if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n      Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n    } return setSymbolDescriptor(O, key, Attributes);\n  } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n  anObject(O);\n  var properties = toIndexedObject(Properties);\n  var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n  $forEach(keys, function (key) {\n    if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n  });\n  return O;\n};\n\nvar $create = function create(O, Properties) {\n  return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n  var P = toPrimitive(V, true);\n  var enumerable = nativePropertyIsEnumerable.call(this, P);\n  if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n  return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n  var it = toIndexedObject(O);\n  var key = toPrimitive(P, true);\n  if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n  var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n  if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n    descriptor.enumerable = true;\n  }\n  return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n  var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n  });\n  return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n  var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n  var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n      result.push(AllSymbols[key]);\n    }\n  });\n  return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n  $Symbol = function Symbol() {\n    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n    var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n    var tag = uid(description);\n    var setter = function (value) {\n      if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n    };\n    if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n    return wrap(tag, description);\n  };\n\n  redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n    return getInternalState(this).tag;\n  });\n\n  redefine($Symbol, 'withoutSetter', function (description) {\n    return wrap(uid(description), description);\n  });\n\n  propertyIsEnumerableModule.f = $propertyIsEnumerable;\n  definePropertyModule.f = $defineProperty;\n  getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n  getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n  getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n  wrappedWellKnownSymbolModule.f = function (name) {\n    return wrap(wellKnownSymbol(name), name);\n  };\n\n  if (DESCRIPTORS) {\n    // https://github.com/tc39/proposal-Symbol-description\n    nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n      configurable: true,\n      get: function description() {\n        return getInternalState(this).description;\n      }\n    });\n    if (!IS_PURE) {\n      redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n    }\n  }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n  Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n  defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n  // `Symbol.for` method\n  // https://tc39.es/ecma262/#sec-symbol.for\n  'for': function (key) {\n    var string = String(key);\n    if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n    var symbol = $Symbol(string);\n    StringToSymbolRegistry[string] = symbol;\n    SymbolToStringRegistry[symbol] = string;\n    return symbol;\n  },\n  // `Symbol.keyFor` method\n  // https://tc39.es/ecma262/#sec-symbol.keyfor\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n    if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n  },\n  useSetter: function () { USE_SETTER = true; },\n  useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n  // `Object.create` method\n  // https://tc39.es/ecma262/#sec-object.create\n  create: $create,\n  // `Object.defineProperty` method\n  // https://tc39.es/ecma262/#sec-object.defineproperty\n  defineProperty: $defineProperty,\n  // `Object.defineProperties` method\n  // https://tc39.es/ecma262/#sec-object.defineproperties\n  defineProperties: $defineProperties,\n  // `Object.getOwnPropertyDescriptor` method\n  // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n  // `Object.getOwnPropertyNames` method\n  // https://tc39.es/ecma262/#sec-object.getownpropertynames\n  getOwnPropertyNames: $getOwnPropertyNames,\n  // `Object.getOwnPropertySymbols` method\n  // https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n  getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n  getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n    return getOwnPropertySymbolsModule.f(toObject(it));\n  }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.es/ecma262/#sec-json.stringify\nif ($stringify) {\n  var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n    var symbol = $Symbol();\n    // MS Edge converts symbol values to JSON as {}\n    return $stringify([symbol]) != '[null]'\n      // WebKit converts symbol values to JSON as null\n      || $stringify({ a: symbol }) != '{}'\n      // V8 throws on boxed symbols\n      || $stringify(Object(symbol)) != '{}';\n  });\n\n  $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n    // eslint-disable-next-line no-unused-vars -- required for `.length`\n    stringify: function stringify(it, replacer, space) {\n      var args = [it];\n      var index = 1;\n      var $replacer;\n      while (arguments.length > index) args.push(arguments[index++]);\n      $replacer = replacer;\n      if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n      if (!isArray(replacer)) replacer = function (key, value) {\n        if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n        if (!isSymbol(value)) return value;\n      };\n      args[1] = replacer;\n      return $stringify.apply(null, args);\n    }\n  });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n  createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n", "// `Symbol.prototype.description` getter\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar has = require('../internals/has');\nvar isObject = require('../internals/is-object');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n  // Safari 12 bug\n  NativeSymbol().description !== undefined\n)) {\n  var EmptyStringDescriptionStore = {};\n  // wrap Symbol constructor for correct work with undefined description\n  var SymbolWrapper = function Symbol() {\n    var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n    var result = this instanceof SymbolWrapper\n      ? new NativeSymbol(description)\n      // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n      : description === undefined ? NativeSymbol() : NativeSymbol(description);\n    if (description === '') EmptyStringDescriptionStore[result] = true;\n    return result;\n  };\n  copyConstructorProperties(SymbolWrapper, NativeSymbol);\n  var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n  symbolPrototype.constructor = SymbolWrapper;\n\n  var symbolToString = symbolPrototype.toString;\n  var native = String(NativeSymbol('test')) == 'Symbol(test)';\n  var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n  defineProperty(symbolPrototype, 'description', {\n    configurable: true,\n    get: function description() {\n      var symbol = isObject(this) ? this.valueOf() : this;\n      var string = symbolToString.call(symbol);\n      if (has(EmptyStringDescriptionStore, symbol)) return '';\n      var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n      return desc === '' ? undefined : desc;\n    }\n  });\n\n  $({ global: true, forced: true }, {\n    Symbol: SymbolWrapper\n  });\n}\n", "var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport $ from \"jquery\";\nimport { InputBinding } from \"./inputBinding\";\nimport { hasOwnProperty } from \"../../utils\";\n\nvar CheckboxInputBinding = /*#__PURE__*/function (_InputBinding) {\n  _inherits(CheckboxInputBinding, _InputBinding);\n\n  var _super = _createSuper(CheckboxInputBinding);\n\n  function CheckboxInputBinding() {\n    _classCallCheck(this, CheckboxInputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(CheckboxInputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find('input[type=\"checkbox\"]');\n    }\n  }, {\n    key: \"getValue\",\n    value: function getValue(el) {\n      return el.checked;\n    }\n  }, {\n    key: \"setValue\",\n    value: function setValue(el, value) {\n      el.checked = value;\n    }\n  }, {\n    key: \"subscribe\",\n    value: function subscribe(el, callback) {\n      $(el).on(\"change.checkboxInputBinding\", function () {\n        callback(true);\n      });\n    }\n  }, {\n    key: \"unsubscribe\",\n    value: function unsubscribe(el) {\n      $(el).off(\".checkboxInputBinding\");\n    }\n  }, {\n    key: \"getState\",\n    value: function getState(el) {\n      return {\n        label: $(el).parent().find(\"span\").text(),\n        value: el.checked\n      };\n    }\n  }, {\n    key: \"receiveMessage\",\n    value: function receiveMessage(el, data) {\n      if (hasOwnProperty(data, \"value\")) el.checked = data.value; // checkboxInput()'s label works different from other\n      // input labels...the label container should always exist\n\n      if (hasOwnProperty(data, \"label\")) $(el).parent().find(\"span\").text(data.label);\n      $(el).trigger(\"change\");\n    }\n  }]);\n\n  return CheckboxInputBinding;\n}(InputBinding);\n\nexport { CheckboxInputBinding };", "'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n  setInternalState(this, {\n    type: STRING_ITERATOR,\n    string: String(iterated),\n    index: 0\n  });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n  var state = getInternalState(this);\n  var string = state.string;\n  var index = state.index;\n  var point;\n  if (index >= string.length) return { value: undefined, done: true };\n  point = charAt(string, index);\n  state.index += point.length;\n  return { value: point, done: false };\n});\n", "var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  var Collection = global[COLLECTION_NAME];\n  var CollectionPrototype = Collection && Collection.prototype;\n  if (CollectionPrototype) {\n    // some Chrome versions have non-configurable methods on DOMTokenList\n    if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n      createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n    } catch (error) {\n      CollectionPrototype[ITERATOR] = ArrayValues;\n    }\n    if (!CollectionPrototype[TO_STRING_TAG]) {\n      createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n    }\n    if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n      // some Chrome versions have non-configurable methods on DOMTokenList\n      if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n        createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n      } catch (error) {\n        CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n      }\n    }\n  }\n}\n", "'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n  trim: function trim() {\n    return $trim(this);\n  }\n});\n", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.string.trim.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\nimport $ from \"jquery\";\nimport { InputBinding } from \"./inputBinding\";\nimport { $escape, hasOwnProperty, updateLabel } from \"../../utils\";\n\n// Get the DOM element that contains the top-level label\nfunction getLabelNode(el) {\n  return $(el).find('label[for=\"' + $escape(el.id) + '\"]');\n} // Given an input DOM object, get the associated label. Handles labels\n// that wrap the input as well as labels associated with 'for' attribute.\n\n\nfunction getLabel(obj) {\n  // If <label><input /><span>label text</span></label>\n  if (obj.parentNode.tagName === \"LABEL\") {\n    return $(obj.parentNode).find(\"span\").text().trim();\n  }\n\n  return null;\n} // Given an input DOM object, set the associated label. Handles labels\n// that wrap the input as well as labels associated with 'for' attribute.\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\n\nfunction setLabel(obj, value) {\n  // If <label><input /><span>label text</span></label>\n  if (obj.parentNode.tagName === \"LABEL\") {\n    $(obj.parentNode).find(\"span\").text(value);\n  }\n\n  return null;\n}\n\nvar CheckboxGroupInputBinding = /*#__PURE__*/function (_InputBinding) {\n  _inherits(CheckboxGroupInputBinding, _InputBinding);\n\n  var _super = _createSuper(CheckboxGroupInputBinding);\n\n  function CheckboxGroupInputBinding() {\n    _classCallCheck(this, CheckboxGroupInputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(CheckboxGroupInputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find(\".shiny-input-checkboxgroup\");\n    }\n  }, {\n    key: \"getValue\",\n    value: function getValue(el) {\n      // Select the checkbox objects that have name equal to the grouping div's id\n      var $objs = $('input:checkbox[name=\"' + $escape(el.id) + '\"]:checked');\n      var values = new Array($objs.length);\n\n      for (var i = 0; i < $objs.length; i++) {\n        values[i] = $objs[i].value;\n      }\n\n      return values;\n    }\n  }, {\n    key: \"setValue\",\n    value: function setValue(el, value) {\n      // Clear all checkboxes\n      $('input:checkbox[name=\"' + $escape(el.id) + '\"]').prop(\"checked\", false); // Accept array\n\n      if (value instanceof Array) {\n        for (var i = 0; i < value.length; i++) {\n          $('input:checkbox[name=\"' + $escape(el.id) + '\"][value=\"' + $escape(value[i]) + '\"]').prop(\"checked\", true);\n        } // Else assume it's a single value\n\n      } else {\n        $('input:checkbox[name=\"' + $escape(el.id) + '\"][value=\"' + $escape(value) + '\"]').prop(\"checked\", true);\n      }\n    }\n  }, {\n    key: \"getState\",\n    value: function getState(el) {\n      var $objs = $('input:checkbox[name=\"' + $escape(el.id) + '\"]'); // Store options in an array of objects, each with with value and label\n\n      var options = new Array($objs.length);\n\n      for (var i = 0; i < options.length; i++) {\n        options[i] = {\n          value: $objs[i].value,\n          label: getLabel($objs[i])\n        };\n      }\n\n      return {\n        label: getLabelNode(el).text(),\n        value: this.getValue(el),\n        options: options\n      };\n    }\n  }, {\n    key: \"receiveMessage\",\n    value: function receiveMessage(el, data) {\n      var $el = $(el); // This will replace all the options\n\n      if (hasOwnProperty(data, \"options\")) {\n        // Clear existing options and add each new one\n        $el.find(\"div.shiny-options-group\").remove(); // Backward compatibility: for HTML generated by shinybootstrap2 package\n\n        $el.find(\"label.checkbox\").remove();\n        $el.append(data.options);\n      }\n\n      if (hasOwnProperty(data, \"value\")) this.setValue(el, data.value);\n      updateLabel(data.label, getLabelNode(el));\n      $(el).trigger(\"change\");\n    }\n  }, {\n    key: \"subscribe\",\n    value: function subscribe(el, callback) {\n      $(el).on(\"change.checkboxGroupInputBinding\", function () {\n        callback(false);\n      });\n    }\n  }, {\n    key: \"unsubscribe\",\n    value: function unsubscribe(el) {\n      $(el).off(\".checkboxGroupInputBinding\");\n    }\n  }]);\n\n  return CheckboxGroupInputBinding;\n}(InputBinding);\n\nexport { CheckboxGroupInputBinding };", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof-raw');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.es/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n  var it = toPrimitive(argument, false);\n  var first, third, radix, maxCode, digits, length, index, code;\n  if (typeof it == 'string' && it.length > 2) {\n    it = trim(it);\n    first = it.charCodeAt(0);\n    if (first === 43 || first === 45) {\n      third = it.charCodeAt(2);\n      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n    } else if (first === 48) {\n      switch (it.charCodeAt(1)) {\n        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n        default: return +it;\n      }\n      digits = it.slice(2);\n      length = digits.length;\n      for (index = 0; index < length; index++) {\n        code = digits.charCodeAt(index);\n        // parseInt parses a string to a first unavailable symbol\n        // but ToNumber should return NaN if a string contains unavailable symbols\n        if (code < 48 || code > maxCode) return NaN;\n      } return parseInt(digits, radix);\n    }\n  } return +it;\n};\n\n// `Number` constructor\n// https://tc39.es/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n  var NumberWrapper = function Number(value) {\n    var it = arguments.length < 1 ? 0 : value;\n    var dummy = this;\n    return dummy instanceof NumberWrapper\n      // check on 1..constructor(foo) case\n      && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n        ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n  };\n  for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n    // ES3:\n    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n    // ES2015 (in case, if modules with ES2015 Number statics required before):\n    'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n    'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,' +\n    // ESNext\n    'fromString,range'\n  ).split(','), j = 0, key; keys.length > j; j++) {\n    if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n      defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n    }\n  }\n  NumberWrapper.prototype = NumberPrototype;\n  NumberPrototype.constructor = NumberWrapper;\n  redefine(global, NUMBER, NumberWrapper);\n}\n", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.number.constructor.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\nimport $ from \"jquery\";\nimport { $escape, hasOwnProperty, updateLabel } from \"../../utils\";\nimport { TextInputBindingBase } from \"./text\";\n\nfunction getLabelNode(el) {\n  return $(el).parent().find('label[for=\"' + $escape(el.id) + '\"]');\n}\n\nvar NumberInputBinding = /*#__PURE__*/function (_TextInputBindingBase) {\n  _inherits(NumberInputBinding, _TextInputBindingBase);\n\n  var _super = _createSuper(NumberInputBinding);\n\n  function NumberInputBinding() {\n    _classCallCheck(this, NumberInputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(NumberInputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find('input[type=\"number\"]');\n    }\n  }, {\n    key: \"getValue\",\n    value: function getValue(el) {\n      var numberVal = $(el).val();\n\n      if (typeof numberVal == \"string\") {\n        if (/^\\s*$/.test(numberVal)) // Return null if all whitespace\n          return null;\n      } // If valid Javascript number string, coerce to number\n\n\n      var numberValue = Number(numberVal);\n\n      if (!isNaN(numberValue)) {\n        return numberValue;\n      }\n\n      return numberVal; // If other string like \"1e6\", send it unchanged\n    }\n  }, {\n    key: \"setValue\",\n    value: function setValue(el, value) {\n      el.value = \"\" + value;\n    }\n  }, {\n    key: \"getType\",\n    value: function getType(el) {\n      return \"shiny.number\";\n      el;\n    }\n  }, {\n    key: \"receiveMessage\",\n    value: function receiveMessage(el, data) {\n      if (hasOwnProperty(data, \"value\")) el.value = data.value;\n      if (hasOwnProperty(data, \"min\")) el.min = data.min;\n      if (hasOwnProperty(data, \"max\")) el.max = data.max;\n      if (hasOwnProperty(data, \"step\")) el.step = data.step;\n      updateLabel(data.label, getLabelNode(el));\n      $(el).trigger(\"change\");\n    }\n  }, {\n    key: \"getState\",\n    value: function getState(el) {\n      return {\n        label: getLabelNode(el).text(),\n        value: this.getValue(el),\n        min: Number(el.min),\n        max: Number(el.max),\n        step: Number(el.step)\n      };\n    }\n  }]);\n\n  return NumberInputBinding;\n}(TextInputBindingBase);\n\nexport { NumberInputBinding };", "var $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar has = require('../internals/has');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\n\n// `Reflect.get` method\n// https://tc39.es/ecma262/#sec-reflect.get\nfunction get(target, propertyKey /* , receiver */) {\n  var receiver = arguments.length < 3 ? target : arguments[2];\n  var descriptor, prototype;\n  if (anObject(target) === receiver) return target[propertyKey];\n  if (descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey)) return has(descriptor, 'value')\n    ? descriptor.value\n    : descriptor.get === undefined\n      ? undefined\n      : descriptor.get.call(receiver);\n  if (isObject(prototype = getPrototypeOf(target))) return get(prototype, propertyKey, receiver);\n}\n\n$({ target: 'Reflect', stat: true }, {\n  get: get\n});\n", "var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n  getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n    return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n  }\n});\n", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.function.name.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.reflect.get.js\";\nimport \"core-js/modules/es.object.get-own-property-descriptor.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\nimport $ from \"jquery\";\nimport { $escape, updateLabel, hasOwnProperty } from \"../../utils\";\nimport { InputBinding } from \"./inputBinding\"; // interface TextHTMLElement extends NameValueHTMLElement {\n//   placeholder: any;\n// }\n\nfunction getLabelNode(el) {\n  return $(el).parent().find('label[for=\"' + $escape(el.id) + '\"]');\n}\n\nvar TextInputBindingBase = /*#__PURE__*/function (_InputBinding) {\n  _inherits(TextInputBindingBase, _InputBinding);\n\n  var _super = _createSuper(TextInputBindingBase);\n\n  function TextInputBindingBase() {\n    _classCallCheck(this, TextInputBindingBase);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(TextInputBindingBase, [{\n    key: \"find\",\n    value: function find(scope) {\n      var $inputs = $(scope).find('input[type=\"text\"], input[type=\"search\"], input[type=\"url\"], input[type=\"email\"]'); // selectize.js 0.12.4 inserts a hidden text input with an\n      // id that ends in '-selectized'. The .not() selector below\n      // is to prevent textInputBinding from accidentally picking up\n      // this hidden element as a shiny input (#2396)\n\n      return $inputs.not('input[type=\"text\"][id$=\"-selectized\"]');\n    }\n  }, {\n    key: \"getId\",\n    value: function getId(el) {\n      return _get(_getPrototypeOf(TextInputBindingBase.prototype), \"getId\", this).call(this, el) || el.name; // return InputBinding.prototype.getId.call(this, el) || el.name;\n    }\n  }, {\n    key: \"getValue\",\n    value: function getValue(el) {\n      throw \"not implemented\";\n      el;\n    }\n  }, {\n    key: \"setValue\",\n    value: function setValue(el, value) {\n      throw \"not implemented\";\n      el;\n      value;\n    }\n  }, {\n    key: \"subscribe\",\n    value: function subscribe(el, callback) {\n      $(el).on(\"keyup.textInputBinding input.textInputBinding\", // event: Event\n      function () {\n        callback(true);\n      });\n      $(el).on(\"change.textInputBinding\", // event: Event\n      function () {\n        callback(false);\n      });\n    }\n  }, {\n    key: \"unsubscribe\",\n    value: function unsubscribe(el) {\n      $(el).off(\".textInputBinding\");\n    }\n  }, {\n    key: \"receiveMessage\",\n    value: function receiveMessage(el, data) {\n      throw \"not implemented\";\n      el;\n      data;\n    }\n  }, {\n    key: \"getState\",\n    value: function getState(el) {\n      throw \"not implemented\";\n      el;\n    }\n  }, {\n    key: \"getRatePolicy\",\n    value: function getRatePolicy(el) {\n      return {\n        policy: \"debounce\",\n        delay: 250\n      };\n      el;\n    }\n  }]);\n\n  return TextInputBindingBase;\n}(InputBinding);\n\nvar TextInputBinding = /*#__PURE__*/function (_TextInputBindingBase) {\n  _inherits(TextInputBinding, _TextInputBindingBase);\n\n  var _super2 = _createSuper(TextInputBinding);\n\n  function TextInputBinding() {\n    _classCallCheck(this, TextInputBinding);\n\n    return _super2.apply(this, arguments);\n  }\n\n  _createClass(TextInputBinding, [{\n    key: \"setValue\",\n    value: function setValue(el, value) {\n      el.value = value;\n    }\n  }, {\n    key: \"getValue\",\n    value: function getValue(el) {\n      return el.value;\n    }\n  }, {\n    key: \"getState\",\n    value: function getState(el) {\n      return {\n        label: getLabelNode(el).text(),\n        value: el.value,\n        placeholder: el.placeholder\n      };\n    }\n  }, {\n    key: \"receiveMessage\",\n    value: function receiveMessage(el, data) {\n      if (hasOwnProperty(data, \"value\")) this.setValue(el, data.value);\n      updateLabel(data.label, getLabelNode(el));\n      if (hasOwnProperty(data, \"placeholder\")) el.placeholder = data.placeholder;\n      $(el).trigger(\"change\");\n    }\n  }]);\n\n  return TextInputBinding;\n}(TextInputBindingBase);\n\nexport { TextInputBinding, TextInputBindingBase };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport $ from \"jquery\";\nimport { TextInputBinding } from \"./text\";\n\nvar PasswordInputBinding = /*#__PURE__*/function (_TextInputBinding) {\n  _inherits(PasswordInputBinding, _TextInputBinding);\n\n  var _super = _createSuper(PasswordInputBinding);\n\n  function PasswordInputBinding() {\n    _classCallCheck(this, PasswordInputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(PasswordInputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find('input[type=\"password\"]');\n    }\n  }, {\n    key: \"getType\",\n    value: function getType(el) {\n      return \"shiny.password\";\n      el;\n    }\n  }]);\n\n  return PasswordInputBinding;\n}(TextInputBinding);\n\nexport { PasswordInputBinding };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport $ from \"jquery\";\nimport { TextInputBinding } from \"./text\";\n\nvar TextareaInputBinding = /*#__PURE__*/function (_TextInputBinding) {\n  _inherits(TextareaInputBinding, _TextInputBinding);\n\n  var _super = _createSuper(TextareaInputBinding);\n\n  function TextareaInputBinding() {\n    _classCallCheck(this, TextareaInputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(TextareaInputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find(\"textarea\");\n    }\n  }]);\n\n  return TextareaInputBinding;\n}(TextInputBinding);\n\nexport { TextareaInputBinding };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.string.trim.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\nimport $ from \"jquery\";\nimport { InputBinding } from \"./inputBinding\";\nimport { $escape, hasOwnProperty, updateLabel } from \"../../utils\";\n\n// Get the DOM element that contains the top-level label\nfunction getLabelNode(el) {\n  return $(el).parent().find('label[for=\"' + $escape(el.id) + '\"]');\n} // Given an input DOM object, get the associated label. Handles labels\n// that wrap the input as well as labels associated with 'for' attribute.\n\n\nfunction getLabel(obj) {\n  // If <label><input /><span>label text</span></label>\n  if (obj.parentNode.tagName === \"LABEL\") {\n    return $(obj.parentNode).find(\"span\").text().trim();\n  }\n\n  return null;\n} // Given an input DOM object, set the associated label. Handles labels\n// that wrap the input as well as labels associated with 'for' attribute.\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\n\nfunction setLabel(obj, value) {\n  // If <label><input /><span>label text</span></label>\n  if (obj.parentNode.tagName === \"LABEL\") {\n    $(obj.parentNode).find(\"span\").text(value);\n  }\n\n  return null;\n}\n\nvar RadioInputBinding = /*#__PURE__*/function (_InputBinding) {\n  _inherits(RadioInputBinding, _InputBinding);\n\n  var _super = _createSuper(RadioInputBinding);\n\n  function RadioInputBinding() {\n    _classCallCheck(this, RadioInputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(RadioInputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find(\".shiny-input-radiogroup\");\n    }\n  }, {\n    key: \"getValue\",\n    value: function getValue(el) {\n      // Select the radio objects that have name equal to the grouping div's id\n      var checkedItems = $('input:radio[name=\"' + $escape(el.id) + '\"]:checked');\n\n      if (checkedItems.length === 0) {\n        // If none are checked, the input will return null (it's the default on load,\n        // but it wasn't emptied when calling updateRadioButtons with character(0)\n        return null;\n      }\n\n      return checkedItems.val();\n    }\n  }, {\n    key: \"setValue\",\n    value: function setValue(el, value) {\n      if ($.isArray(value) && value.length === 0) {\n        // Removing all checked item if the sent data is empty\n        $('input:radio[name=\"' + $escape(el.id) + '\"]').prop(\"checked\", false);\n      } else {\n        $('input:radio[name=\"' + $escape(el.id) + '\"][value=\"' + $escape(value) + '\"]').prop(\"checked\", true);\n      }\n    }\n  }, {\n    key: \"getState\",\n    value: function getState(el) {\n      var $objs = $('input:radio[name=\"' + $escape(el.id) + '\"]'); // Store options in an array of objects, each with with value and label\n\n      var options = new Array($objs.length);\n\n      for (var i = 0; i < options.length; i++) {\n        options[i] = {\n          value: $objs[i].value,\n          label: getLabel($objs[i])\n        };\n      }\n\n      return {\n        label: getLabelNode(el).text(),\n        value: this.getValue(el),\n        options: options\n      };\n    }\n  }, {\n    key: \"receiveMessage\",\n    value: function receiveMessage(el, data) {\n      var $el = $(el); // This will replace all the options\n\n      if (hasOwnProperty(data, \"options\")) {\n        // Clear existing options and add each new one\n        $el.find(\"div.shiny-options-group\").remove(); // Backward compatibility: for HTML generated by shinybootstrap2 package\n\n        $el.find(\"label.radio\").remove(); // @ts-expect-error; TODO-barret; IDK what this line is doing\n\n        $el.append(data.options);\n      }\n\n      if (hasOwnProperty(data, \"value\")) this.setValue(el, data.value);\n      updateLabel(data.label, getLabelNode(el));\n      $(el).trigger(\"change\");\n    }\n  }, {\n    key: \"subscribe\",\n    value: function subscribe(el, callback) {\n      $(el).on(\"change.radioInputBinding\", function () {\n        callback(false);\n      });\n    }\n  }, {\n    key: \"unsubscribe\",\n    value: function unsubscribe(el) {\n      $(el).off(\".radioInputBinding\");\n    }\n  }]);\n\n  return RadioInputBinding;\n}(InputBinding);\n\nexport { RadioInputBinding };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport $ from \"jquery\";\nimport { InputBinding } from \"./inputBinding\";\nimport { formatDateUTC, updateLabel, $escape, parseDate, hasOwnProperty } from \"../../utils\";\n\nvar DateInputBindingBase = /*#__PURE__*/function (_InputBinding) {\n  _inherits(DateInputBindingBase, _InputBinding);\n\n  var _super = _createSuper(DateInputBindingBase);\n\n  function DateInputBindingBase() {\n    _classCallCheck(this, DateInputBindingBase);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(DateInputBindingBase, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find(\".shiny-date-input\");\n    }\n  }, {\n    key: \"getType\",\n    value: function getType(el) {\n      return \"shiny.date\";\n      el;\n    }\n  }, {\n    key: \"subscribe\",\n    value: function subscribe(el, callback) {\n      $(el).on(\"keyup.dateInputBinding input.dateInputBinding\", // event: Event\n      function () {\n        // Use normal debouncing policy when typing\n        callback(true);\n      });\n      $(el).on(\"changeDate.dateInputBinding change.dateInputBinding\", // event: Event\n      function () {\n        // Send immediately when clicked\n        callback(false);\n      });\n    }\n  }, {\n    key: \"unsubscribe\",\n    value: function unsubscribe(el) {\n      $(el).off(\".dateInputBinding\");\n    }\n  }, {\n    key: \"getRatePolicy\",\n    value: function getRatePolicy() {\n      return {\n        policy: \"debounce\",\n        delay: 250\n      };\n    }\n  }, {\n    key: \"setValue\",\n    value: function setValue(el, data) {\n      throw \"not implemented\";\n      el;\n      data;\n    }\n  }, {\n    key: \"initialize\",\n    value: function initialize(el) {\n      var $input = $(el).find(\"input\"); // The challenge with dates is that we want them to be at 00:00 in UTC so\n      // that we can do comparisons with them. However, the Date object itself\n      // does not carry timezone information, so we should call _floorDateTime()\n      // on Dates as soon as possible so that we know we're always working with\n      // consistent objects.\n\n      var date = $input.data(\"initial-date\"); // If initial_date is null, set to current date\n\n      if (date === undefined || date === null) {\n        // Get local date, but normalized to beginning of day in UTC.\n        date = this._floorDateTime(this._dateAsUTC(new Date()));\n      }\n\n      this.setValue(el, date); // Set the start and end dates, from min-date and max-date. These always\n      // use yyyy-mm-dd format, instead of bootstrap-datepicker's built-in\n      // support for date-startdate and data-enddate, which use the current\n      // date format.\n\n      if ($input.data(\"min-date\") !== undefined) {\n        this._setMin($input[0], $input.data(\"min-date\"));\n      }\n\n      if ($input.data(\"max-date\") !== undefined) {\n        this._setMax($input[0], $input.data(\"max-date\"));\n      }\n    }\n  }, {\n    key: \"_getLabelNode\",\n    value: function _getLabelNode(el) {\n      return $(el).find('label[for=\"' + $escape(el.id) + '\"]');\n    } // Given a format object from a date picker, return a string\n\n  }, {\n    key: \"_formatToString\",\n    value: function _formatToString(format) {\n      // Format object has structure like:\n      // { parts: ['mm', 'dd', 'yy'], separators: ['', '/', '/' ,''] }\n      var str = \"\";\n      var i;\n\n      for (i = 0; i < format.parts.length; i++) {\n        str += format.separators[i] + format.parts[i];\n      }\n\n      str += format.separators[i];\n      return str;\n    } // Given an unambiguous date string or a Date object, set the min (start) date.\n    // null will unset. undefined will result in no change,\n\n  }, {\n    key: \"_setMin\",\n    value: function _setMin(el, date) {\n      if (date === undefined) return;\n\n      if (date === null) {\n        $(el).bsDatepicker(\"setStartDate\", null);\n        return;\n      }\n\n      var parsedDate = this._newDate(date); // If date parsing fails, do nothing\n\n\n      if (parsedDate === null) return; // (Assign back to date as a Date object)\n\n      date = parsedDate;\n      if (isNaN(date.valueOf())) return; // Workarounds for\n      // https://github.com/rstudio/shiny/issues/2335\n\n      var curValue = $(el).bsDatepicker(\"getUTCDate\"); // Note that there's no `setUTCStartDate`, so we need to convert this Date.\n      // It starts at 00:00 UTC, and we convert it to 00:00 in local time, which\n      // is what's needed for `setStartDate`.\n\n      $(el).bsDatepicker(\"setStartDate\", this._utcDateAsLocal(date)); // If the new min is greater than the current date, unset the current date.\n\n      if (date && curValue && date.getTime() > curValue.getTime()) {\n        $(el).bsDatepicker(\"clearDates\");\n      } else {\n        // Setting the date needs to be done AFTER `setStartDate`, because the\n        // datepicker has a bug where calling `setStartDate` will clear the date\n        // internally (even though it will still be visible in the UI) when a\n        // 2-digit year format is used.\n        // https://github.com/eternicode/bootstrap-datepicker/issues/2010\n        $(el).bsDatepicker(\"setUTCDate\", curValue);\n      }\n    } // Given an unambiguous date string or a Date object, set the max (end) date\n    // null will unset.\n\n  }, {\n    key: \"_setMax\",\n    value: function _setMax(el, date) {\n      if (date === undefined) return;\n\n      if (date === null) {\n        $(el).bsDatepicker(\"setEndDate\", null);\n        return;\n      }\n\n      var parsedDate = this._newDate(date); // If date parsing fails, do nothing\n\n\n      if (parsedDate === null) return;\n      date = parsedDate;\n      if (isNaN(date.valueOf())) return; // Workaround for same issue as in _setMin.\n\n      var curValue = $(el).bsDatepicker(\"getUTCDate\");\n      $(el).bsDatepicker(\"setEndDate\", this._utcDateAsLocal(date)); // If the new min is greater than the current date, unset the current date.\n\n      if (date && curValue && date.getTime() < curValue.getTime()) {\n        $(el).bsDatepicker(\"clearDates\");\n      } else {\n        $(el).bsDatepicker(\"setUTCDate\", curValue);\n      }\n    } // Given a date string of format yyyy-mm-dd, return a Date object with\n    // that date at 12AM UTC.\n    // If date is a Date object, return it unchanged.\n\n  }, {\n    key: \"_newDate\",\n    value: function _newDate(date) {\n      if (date instanceof Date) return date;\n      if (!date) return null; // Get Date object - this will be at 12AM in UTC, but may print\n      // differently at the Javascript console.\n\n      var d = parseDate(date); // If invalid date, return null\n\n      if (isNaN(d.valueOf())) return null;\n      return d;\n    } // A Date can have any time during a day; this will return a new Date object\n    // set to 00:00 in UTC.\n\n  }, {\n    key: \"_floorDateTime\",\n    value: function _floorDateTime(date) {\n      date = new Date(date.getTime());\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    } // Given a Date object, return a Date object which has the same \"clock time\"\n    // in UTC. For example, if input date is 2013-02-01 23:00:00 GMT-0600 (CST),\n    // output will be 2013-02-01 23:00:00 UTC. Note that the JS console may\n    // print this in local time, as \"Sat Feb 02 2013 05:00:00 GMT-0600 (CST)\".\n\n  }, {\n    key: \"_dateAsUTC\",\n    value: function _dateAsUTC(date) {\n      return new Date(date.getTime() - date.getTimezoneOffset() * 60000);\n    } // The inverse of _dateAsUTC. This is needed to adjust time zones because\n    // some bootstrap-datepicker methods only take local dates as input, and not\n    // UTC.\n\n  }, {\n    key: \"_utcDateAsLocal\",\n    value: function _utcDateAsLocal(date) {\n      return new Date(date.getTime() + date.getTimezoneOffset() * 60000);\n    }\n  }]);\n\n  return DateInputBindingBase;\n}(InputBinding);\n\nvar DateInputBinding = /*#__PURE__*/function (_DateInputBindingBase) {\n  _inherits(DateInputBinding, _DateInputBindingBase);\n\n  var _super2 = _createSuper(DateInputBinding);\n\n  function DateInputBinding() {\n    _classCallCheck(this, DateInputBinding);\n\n    return _super2.apply(this, arguments);\n  }\n\n  _createClass(DateInputBinding, [{\n    key: \"getValue\",\n    value: // Return the date in an unambiguous format, yyyy-mm-dd (as opposed to a\n    // format like mm/dd/yyyy)\n    function getValue(el) {\n      var date = $(el).find(\"input\").bsDatepicker(\"getUTCDate\");\n      return formatDateUTC(date);\n    } // value must be an unambiguous string like '2001-01-01', or a Date object.\n\n  }, {\n    key: \"setValue\",\n    value: function setValue(el, value) {\n      // R's NA, which is null here will remove current value\n      if (value === null) {\n        $(el).find(\"input\").val(\"\").bsDatepicker(\"update\");\n        return;\n      }\n\n      var date = this._newDate(value);\n\n      if (date === null) {\n        return;\n      } // If date is invalid, do nothing\n\n\n      if (isNaN(date.valueOf())) return;\n      $(el).find(\"input\").bsDatepicker(\"setUTCDate\", date);\n    }\n  }, {\n    key: \"getState\",\n    value: function getState(el) {\n      var $el = $(el);\n      var $input = $el.find(\"input\");\n      var min = $input.data(\"datepicker\").startDate;\n      var max = $input.data(\"datepicker\").endDate; // Stringify min and max. If min and max aren't set, they will be\n      // -Infinity and Infinity; replace these with null.\n\n      min = min === -Infinity ? null : formatDateUTC(min);\n      max = max === Infinity ? null : formatDateUTC(max); // startViewMode is stored as a number; convert to string\n\n      var startview = $input.data(\"datepicker\").startViewMode;\n      if (startview === 2) startview = \"decade\";else if (startview === 1) startview = \"year\";else if (startview === 0) startview = \"month\";\n      return {\n        label: this._getLabelNode(el).text(),\n        value: this.getValue(el),\n        valueString: $input.val(),\n        min: min,\n        max: max,\n        language: $input.data(\"datepicker\").language,\n        weekstart: $input.data(\"datepicker\").weekStart,\n        format: this._formatToString($input.data(\"datepicker\").format),\n        startview: startview\n      };\n    }\n  }, {\n    key: \"receiveMessage\",\n    value: function receiveMessage(el, data) {\n      var $input = $(el).find(\"input\");\n      updateLabel(data.label, this._getLabelNode(el));\n      if (hasOwnProperty(data, \"min\")) this._setMin($input[0], data.min);\n      if (hasOwnProperty(data, \"max\")) this._setMax($input[0], data.max); // Must set value only after min and max have been set. If new value is\n      // outside the bounds of the previous min/max, then the result will be a\n      // blank input.\n\n      if (hasOwnProperty(data, \"value\")) this.setValue(el, data.value);\n      $(el).trigger(\"change\");\n    }\n  }]);\n\n  return DateInputBinding;\n}(DateInputBindingBase);\n\nexport { DateInputBinding, DateInputBindingBase };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.number.constructor.js\";\nimport \"core-js/modules/es.regexp.exec.js\";\nimport \"core-js/modules/es.string.split.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.regexp.to-string.js\";\nimport \"core-js/modules/es.string.replace.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\nimport $ from \"jquery\"; // import { NameValueHTMLElement } from \".\";\n\nimport { formatDateUTC, updateLabel, $escape, hasOwnProperty } from \"../../utils\";\nimport { TextInputBindingBase } from \"./text\"; // interface SliderHTMLElement extends NameValueHTMLElement {\n//   checked?: any;\n// }\n\n// Necessary to get hidden sliders to send their updated values\nfunction forceIonSliderUpdate(slider) {\n  if (slider.$cache && slider.$cache.input) slider.$cache.input.trigger(\"change\");else console.log(\"Couldn't force ion slider to update\");\n}\n\nfunction getTypePrettifyer(dataType, timeFormat, timezone) {\n  var timeFormatter;\n  var prettify;\n\n  if (dataType === \"date\") {\n    timeFormatter = window.strftime.utc();\n\n    prettify = function prettify(num) {\n      return timeFormatter(timeFormat, new Date(num));\n    };\n  } else if (dataType === \"datetime\") {\n    if (timezone) timeFormatter = window.strftime.timezone(timezone);else timeFormatter = window.strftime;\n\n    prettify = function prettify(num) {\n      return timeFormatter(timeFormat, new Date(num));\n    };\n  } else {\n    // The default prettify function for ion.rangeSlider adds thousands\n    // separators after the decimal mark, so we have our own version here.\n    // (#1958)\n    prettify = function prettify(num) {\n      // When executed, `this` will refer to the `IonRangeSlider.options`\n      // object.\n      return formatNumber(num, this.prettify_separator);\n    };\n  }\n\n  return prettify;\n}\n\nfunction getLabelNode(el) {\n  return $(el).parent().find('label[for=\"' + $escape(el.id) + '\"]');\n} // Number of values; 1 for single slider, 2 for range slider\n\n\nfunction numValues(el) {\n  if ($(el).data(\"ionRangeSlider\").options.type === \"double\") return 2;else return 1;\n}\n\nvar SliderInputBinding = /*#__PURE__*/function (_TextInputBindingBase) {\n  _inherits(SliderInputBinding, _TextInputBindingBase);\n\n  var _super = _createSuper(SliderInputBinding);\n\n  function SliderInputBinding() {\n    _classCallCheck(this, SliderInputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(SliderInputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      // Check if ionRangeSlider plugin is loaded\n      if (!$.fn.ionRangeSlider) {\n        // Return empty set of _found_ items\n        return $();\n      }\n\n      return $(scope).find(\"input.js-range-slider\");\n    }\n  }, {\n    key: \"getType\",\n    value: function getType(el) {\n      var dataType = $(el).data(\"data-type\");\n      if (dataType === \"date\") return \"shiny.date\";else if (dataType === \"datetime\") return \"shiny.datetime\";else return false;\n    }\n  }, {\n    key: \"getValue\",\n    value: function getValue(el) {\n      var $el = $(el);\n      var result = $(el).data(\"ionRangeSlider\").result; // Function for converting numeric value from slider to appropriate type.\n\n      var convert;\n      var dataType = $el.data(\"data-type\");\n\n      if (dataType === \"date\") {\n        convert = function convert(val) {\n          return formatDateUTC(new Date(Number(val)));\n        };\n      } else if (dataType === \"datetime\") {\n        convert = function convert(val) {\n          // Convert ms to s\n          return Number(val) / 1000;\n        };\n      } else {\n        convert = function convert(val) {\n          return Number(val);\n        };\n      }\n\n      if (numValues(el) === 2) {\n        return [convert(result.from), convert(result.to)];\n      } else {\n        return convert(result.from);\n      }\n    }\n  }, {\n    key: \"setValue\",\n    value: function setValue(el, value) {\n      var $el = $(el);\n      var slider = $el.data(\"ionRangeSlider\");\n      $el.data(\"immediate\", true);\n\n      try {\n        if (numValues(el) === 2 && value instanceof Array) {\n          slider.update({\n            from: value[0],\n            to: value[1]\n          });\n        } else {\n          slider.update({\n            from: value\n          });\n        }\n\n        forceIonSliderUpdate(slider);\n      } finally {\n        $el.data(\"immediate\", false);\n      }\n    }\n  }, {\n    key: \"subscribe\",\n    value: function subscribe(el, callback) {\n      $(el).on(\"change.sliderInputBinding\", function () {\n        callback(!$(el).data(\"immediate\") && !$(el).data(\"animating\"));\n      });\n    }\n  }, {\n    key: \"unsubscribe\",\n    value: function unsubscribe(el) {\n      $(el).off(\".sliderInputBinding\");\n    }\n  }, {\n    key: \"receiveMessage\",\n    value: function receiveMessage(el, data) {\n      var $el = $(el);\n      var slider = $el.data(\"ionRangeSlider\");\n      var msg = {};\n\n      if (hasOwnProperty(data, \"value\")) {\n        if (numValues(el) === 2 && data.value instanceof Array) {\n          msg.from = data.value[0];\n          msg.to = data.value[1];\n        } else {\n          msg.from = data.value;\n        }\n      }\n\n      var sliderFeatures = [\"min\", \"max\", \"step\"];\n\n      for (var i = 0; i < sliderFeatures.length; i++) {\n        var feats = sliderFeatures[i];\n\n        if (hasOwnProperty(data, feats)) {\n          msg[feats] = data[feats];\n        }\n      }\n\n      updateLabel(data.label, getLabelNode(el)); // (maybe) update data elements\n\n      var domElements = [\"data-type\", \"time-format\", \"timezone\"];\n\n      for (var _i = 0; _i < domElements.length; _i++) {\n        var elem = domElements[_i];\n\n        if (hasOwnProperty(data, elem)) {\n          $el.data(elem, data[elem]);\n        }\n      } // retrieve latest data values\n\n\n      var dataType = $el.data(\"data-type\");\n      var timeFormat = $el.data(\"time-format\");\n      var timezone = $el.data(\"timezone\");\n      msg.prettify = getTypePrettifyer(dataType, timeFormat, timezone);\n      $el.data(\"immediate\", true);\n\n      try {\n        slider.update(msg);\n        forceIonSliderUpdate(slider);\n      } finally {\n        $el.data(\"immediate\", false);\n      }\n    }\n  }, {\n    key: \"getRatePolicy\",\n    value: function getRatePolicy(el) {\n      return {\n        policy: \"debounce\",\n        delay: 250\n      };\n      el;\n    } // TODO-barret Why not implemented?\n\n  }, {\n    key: \"getState\",\n    value: function getState(el) {\n      // empty\n      el;\n    }\n  }, {\n    key: \"initialize\",\n    value: function initialize(el) {\n      var $el = $(el);\n      var dataType = $el.data(\"data-type\");\n      var timeFormat = $el.data(\"time-format\");\n      var timezone = $el.data(\"timezone\");\n      var opts = {\n        prettify: getTypePrettifyer(dataType, timeFormat, timezone)\n      };\n      $el.ionRangeSlider(opts);\n    }\n  }]);\n\n  return SliderInputBinding;\n}(TextInputBindingBase); // Format numbers for nicer output.\n// formatNumber(1234567.12345)           === \"1,234,567.12345\"\n// formatNumber(1234567.12345, \".\", \",\") === \"1.234.567,12345\"\n// formatNumber(1000, \" \")               === \"1 000\"\n// formatNumber(20)                      === \"20\"\n// formatNumber(1.2345e24)               === \"1.2345e+24\"\n\n\nfunction formatNumber(num) {\n  var thousandSep = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \",\";\n  var decimalSep = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \".\";\n  var parts = num.toString().split(\".\"); // Add separators to portion before decimal mark.\n\n  parts[0] = parts[0].replace(/(\\d{1,3}(?=(?:\\d\\d\\d)+(?!\\d)))/g, \"$1\" + thousandSep);\n  if (parts.length === 1) return parts[0];else if (parts.length === 2) return parts[0] + decimalSep + parts[1];else return \"\";\n} // TODO-barret ; this should be put in the \"init\" areas, correct?\n\n\n$(document).on(\"click\", \".slider-animate-button\", function (evt) {\n  evt.preventDefault();\n  var self = $(this);\n  var target = $(\"#\" + $escape(self.attr(\"data-target-id\")));\n  var startLabel = \"Play\";\n  var stopLabel = \"Pause\";\n  var loop = self.attr(\"data-loop\") !== undefined && !/^\\s*false\\s*$/i.test(self.attr(\"data-loop\"));\n  var animInterval = self.attr(\"data-interval\");\n  if (isNaN(animInterval)) animInterval = 1500;else animInterval = Number(animInterval);\n\n  if (!target.data(\"animTimer\")) {\n    var timer; // Separate code paths:\n    // Backward compatible code for old-style jsliders (Shiny <= 0.10.2.2),\n    // and new-style ionsliders.\n\n    if (target.hasClass(\"jslider\")) {\n      var slider = target.slider(); // If we're currently at the end, restart\n\n      if (!slider.canStepNext()) slider.resetToStart();\n      timer = setInterval(function () {\n        if (loop && !slider.canStepNext()) {\n          slider.resetToStart();\n        } else {\n          slider.stepNext();\n\n          if (!loop && !slider.canStepNext()) {\n            // TODO-barret replace with self.trigger(\"click\")\n            self.click(); // stop the animation\n          }\n        }\n      }, animInterval);\n    } else {\n      var _slider = target.data(\"ionRangeSlider\"); // Single sliders have slider.options.type == \"single\", and only the\n      // `from` value is used. Double sliders have type == \"double\", and also\n      // use the `to` value for the right handle.\n\n\n      var sliderCanStep = function sliderCanStep() {\n        if (_slider.options.type === \"double\") return _slider.result.to < _slider.result.max;else return _slider.result.from < _slider.result.max;\n      };\n\n      var sliderReset = function sliderReset() {\n        var val = {\n          from: _slider.result.min\n        }; // Preserve the current spacing for double sliders\n\n        if (_slider.options.type === \"double\") val.to = val.from + (_slider.result.to - _slider.result.from);\n\n        _slider.update(val);\n\n        forceIonSliderUpdate(_slider);\n      };\n\n      var sliderStep = function sliderStep() {\n        // Don't overshoot the end\n        var val = {\n          from: Math.min(_slider.result.max, _slider.result.from + _slider.options.step)\n        };\n        if (_slider.options.type === \"double\") val.to = Math.min(_slider.result.max, _slider.result.to + _slider.options.step);\n\n        _slider.update(val);\n\n        forceIonSliderUpdate(_slider);\n      }; // If we're currently at the end, restart\n\n\n      if (!sliderCanStep()) sliderReset();\n      timer = setInterval(function () {\n        if (loop && !sliderCanStep()) {\n          sliderReset();\n        } else {\n          sliderStep();\n\n          if (!loop && !sliderCanStep()) {\n            self.click(); // stop the animation\n          }\n        }\n      }, animInterval);\n    }\n\n    target.data(\"animTimer\", timer);\n    self.attr(\"title\", stopLabel);\n    self.addClass(\"playing\");\n    target.data(\"animating\", true);\n  } else {\n    clearTimeout(target.data(\"animTimer\"));\n    target.removeData(\"animTimer\");\n    self.attr(\"title\", startLabel);\n    self.removeClass(\"playing\");\n    target.removeData(\"animating\");\n  }\n});\nexport { SliderInputBinding };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\nimport $ from \"jquery\";\nimport { $escape, formatDateUTC, hasOwnProperty, updateLabel } from \"../../utils\";\nimport { DateInputBindingBase } from \"./date\";\n\nfunction getLabelNode(el) {\n  return $(el).find('label[for=\"' + $escape(el.id) + '\"]');\n}\n\nvar DateRangeInputBinding = /*#__PURE__*/function (_DateInputBindingBase) {\n  _inherits(DateRangeInputBinding, _DateInputBindingBase);\n\n  var _super = _createSuper(DateRangeInputBinding);\n\n  function DateRangeInputBinding() {\n    _classCallCheck(this, DateRangeInputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(DateRangeInputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find(\".shiny-date-range-input\");\n    } // Return the date in an unambiguous format, yyyy-mm-dd (as opposed to a\n    // format like mm/dd/yyyy)\n\n  }, {\n    key: \"getValue\",\n    value: function getValue(el) {\n      var $inputs = $(el).find(\"input\");\n      var start = $inputs.eq(0).bsDatepicker(\"getUTCDate\");\n      var end = $inputs.eq(1).bsDatepicker(\"getUTCDate\");\n      return [formatDateUTC(start), formatDateUTC(end)];\n    } // value must be an object, with optional fields `start` and `end`. These\n    // should be unambiguous strings like '2001-01-01', or Date objects.\n\n  }, {\n    key: \"setValue\",\n    value: function setValue(el, value) {\n      if (!(value instanceof Object)) {\n        return;\n      } // Get the start and end input objects\n\n\n      var $inputs = $(el).find(\"input\"); // If value is undefined, don't try to set\n      // null will remove the current value\n\n      if (value.start !== undefined) {\n        if (value.start === null) {\n          $inputs.eq(0).val(\"\").bsDatepicker(\"update\");\n        } else {\n          var start = this._newDate(value.start);\n\n          $inputs.eq(0).bsDatepicker(\"setUTCDate\", start);\n        }\n      }\n\n      if (value.end !== undefined) {\n        if (value.end === null) {\n          $inputs.eq(1).val(\"\").bsDatepicker(\"update\");\n        } else {\n          var end = this._newDate(value.end);\n\n          $inputs.eq(1).bsDatepicker(\"setUTCDate\", end);\n        }\n      }\n    }\n  }, {\n    key: \"getState\",\n    value: function getState(el) {\n      var $el = $(el);\n      var $inputs = $el.find(\"input\");\n      var $startinput = $inputs.eq(0);\n      var $endinput = $inputs.eq(1); // For many of the properties, assume start and end have the same values\n\n      var min = $startinput.bsDatepicker(\"getStartDate\");\n      var max = $startinput.bsDatepicker(\"getEndDate\"); // Stringify min and max. If min and max aren't set, they will be\n      // -Infinity and Infinity; replace these with null.\n\n      var minStr = min === -Infinity ? null : formatDateUTC(min);\n      var maxStr = max === Infinity ? null : formatDateUTC(max); // startViewMode is stored as a number; convert to string\n\n      var startview = $startinput.data(\"datepicker\").startView;\n      if (startview === 2) startview = \"decade\";else if (startview === 1) startview = \"year\";else if (startview === 0) startview = \"month\";\n      return {\n        label: getLabelNode(el).text(),\n        value: this.getValue(el),\n        valueString: [$startinput.val(), $endinput.val()],\n        min: minStr,\n        max: maxStr,\n        weekstart: $startinput.data(\"datepicker\").weekStart,\n        format: this._formatToString($startinput.data(\"datepicker\").format),\n        language: $startinput.data(\"datepicker\").language,\n        startview: startview\n      };\n    }\n  }, {\n    key: \"receiveMessage\",\n    value: function receiveMessage(el, data) {\n      var $el = $(el);\n      var $inputs = $el.find(\"input\");\n      var $startinput = $inputs.eq(0);\n      var $endinput = $inputs.eq(1);\n      updateLabel(data.label, getLabelNode(el));\n\n      if (hasOwnProperty(data, \"min\")) {\n        this._setMin($startinput[0], data.min);\n\n        this._setMin($endinput[0], data.min);\n      }\n\n      if (hasOwnProperty(data, \"max\")) {\n        this._setMax($startinput[0], data.max);\n\n        this._setMax($endinput[0], data.max);\n      } // Must set value only after min and max have been set. If new value is\n      // outside the bounds of the previous min/max, then the result will be a\n      // blank input.\n\n\n      if (hasOwnProperty(data, \"value\")) this.setValue(el, data.value);\n      $el.trigger(\"change\");\n    }\n  }, {\n    key: \"initialize\",\n    value: function initialize(el) {\n      var $el = $(el);\n      var $inputs = $el.find(\"input\");\n      var $startinput = $inputs.eq(0);\n      var $endinput = $inputs.eq(1);\n      var start = $startinput.data(\"initial-date\");\n      var end = $endinput.data(\"initial-date\"); // If empty/null, use local date, but as UTC\n\n      if (start === undefined || start === null) start = this._dateAsUTC(new Date());\n      if (end === undefined || end === null) end = this._dateAsUTC(new Date());\n      this.setValue(el, {\n        start: start,\n        end: end\n      }); // // Set the start and end dates, from min-date and max-date. These always\n      // // use yyyy-mm-dd format, instead of bootstrap-datepicker's built-in\n      // // support for date-startdate and data-enddate, which use the current\n      // // date format.\n\n      this._setMin($startinput[0], $startinput.data(\"min-date\"));\n\n      this._setMin($endinput[0], $startinput.data(\"min-date\"));\n\n      this._setMax($startinput[0], $endinput.data(\"max-date\"));\n\n      this._setMax($endinput[0], $endinput.data(\"max-date\"));\n    }\n  }, {\n    key: \"subscribe\",\n    value: function subscribe(el, callback) {\n      $(el).on(\"keyup.dateRangeInputBinding input.dateRangeInputBinding\", // event: Event\n      function () {\n        // Use normal debouncing policy when typing\n        callback(true);\n      });\n      $(el).on(\"changeDate.dateRangeInputBinding change.dateRangeInputBinding\", // event: Event\n      function () {\n        // Send immediately when clicked\n        callback(false);\n      });\n    }\n  }, {\n    key: \"unsubscribe\",\n    value: function unsubscribe(el) {\n      $(el).off(\".dateRangeInputBinding\");\n    }\n  }]);\n\n  return DateRangeInputBinding;\n}(DateInputBindingBase);\n\nexport { DateRangeInputBinding };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.function.name.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\nimport $ from \"jquery\";\nimport { InputBinding } from \"./inputBinding\";\nimport { $escape, hasOwnProperty, updateLabel } from \"../../utils\";\nimport { indirectEval } from \"../../utils/eval\";\n\nfunction getLabelNode(el) {\n  var escapedId = $escape(el.id);\n\n  if (isSelectize(el)) {\n    escapedId += \"-selectized\";\n  }\n\n  return $(el).parent().parent().find('label[for=\"' + escapedId + '\"]');\n} // Return true if it's a selectize input, false if it's a regular select input.\n// eslint-disable-next-line camelcase\n\n\nfunction isSelectize(el) {\n  var config = $(el).parent().find('script[data-for=\"' + $escape(el.id) + '\"]');\n  return config.length > 0;\n}\n\nvar SelectInputBinding = /*#__PURE__*/function (_InputBinding) {\n  _inherits(SelectInputBinding, _InputBinding);\n\n  var _super = _createSuper(SelectInputBinding);\n\n  function SelectInputBinding() {\n    _classCallCheck(this, SelectInputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(SelectInputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find(\"select\");\n    }\n  }, {\n    key: \"getType\",\n    value: function getType(el) {\n      var $el = $(el);\n\n      if (!$el.hasClass(\"symbol\")) {\n        // default character type\n        return null;\n      }\n\n      if ($el.attr(\"multiple\") === \"multiple\") {\n        return \"shiny.symbolList\";\n      } else {\n        return \"shiny.symbol\";\n      }\n    }\n  }, {\n    key: \"getId\",\n    value: function getId(el) {\n      return InputBinding.prototype.getId.call(this, el) || el.name;\n    }\n  }, {\n    key: \"getValue\",\n    value: function getValue(el) {\n      return $(el).val();\n    }\n  }, {\n    key: \"setValue\",\n    value: function setValue(el, value) {\n      if (!isSelectize(el)) {\n        $(el).val(value);\n      } else {\n        var selectize = this._selectize(el);\n\n        if (selectize) {\n          selectize.setValue(value);\n        }\n      }\n    }\n  }, {\n    key: \"getState\",\n    value: function getState(el) {\n      // Store options in an array of objects, each with with value and label\n      var options = new Array(el.length);\n\n      for (var i = 0; i < el.length; i++) {\n        options[i] = {\n          // TODO-barret; Is this a safe assumption?; Are there no Option Groups?\n          value: el[i].value,\n          label: el[i].label\n        };\n      }\n\n      return {\n        label: getLabelNode(el),\n        value: this.getValue(el),\n        options: options\n      };\n    }\n  }, {\n    key: \"receiveMessage\",\n    value: function receiveMessage(el, data) {\n      var $el = $(el);\n      var selectize; // This will replace all the options\n\n      if (hasOwnProperty(data, \"options\")) {\n        selectize = this._selectize(el); // Must destroy selectize before appending new options, otherwise\n        // selectize will restore the original select\n\n        if (selectize) selectize.destroy(); // Clear existing options and add each new one\n\n        $el.empty().append(data.options);\n\n        this._selectize(el);\n      } // re-initialize selectize\n\n\n      if (hasOwnProperty(data, \"config\")) {\n        $el.parent().find('script[data-for=\"' + $escape(el.id) + '\"]').replaceWith(data.config);\n\n        this._selectize(el, true);\n      } // use server-side processing for selectize\n\n\n      if (hasOwnProperty(data, \"url\")) {\n        selectize = this._selectize(el);\n        selectize.clearOptions();\n        var loaded = false;\n\n        selectize.settings.load = function (query, callback) {\n          var settings = selectize.settings;\n          $.ajax({\n            url: data.url,\n            data: {\n              query: query,\n              field: JSON.stringify([settings.searchField]),\n              value: settings.valueField,\n              conju: settings.searchConjunction,\n              maxop: settings.maxOptions\n            },\n            type: \"GET\",\n            error: function error() {\n              callback();\n            },\n            success: function success(res) {\n              // res = [{label: '1', value: '1', group: '1'}, ...]\n              // success is called after options are added, but\n              // groups need to be added manually below\n              $.each(res, function (index, elem) {\n                // Call selectize.addOptionGroup once for each optgroup; the\n                // first argument is the group ID, the second is an object with\n                // the group's label and value. We use the current settings of\n                // the selectize object to decide the fieldnames of that obj.\n                var optgroupId = elem[settings.optgroupField || \"optgroup\"];\n                var optgroup = {};\n                optgroup[settings.optgroupLabelField || \"label\"] = optgroupId;\n                optgroup[settings.optgroupValueField || \"value\"] = optgroupId;\n                selectize.addOptionGroup(optgroupId, optgroup);\n              });\n              callback(res);\n\n              if (!loaded) {\n                if (hasOwnProperty(data, \"value\")) {\n                  selectize.setValue(data.value);\n                } else if (settings.maxItems === 1) {\n                  // first item selected by default only for single-select\n                  selectize.setValue(res[0].value);\n                }\n              }\n\n              loaded = true;\n            }\n          });\n        }; // perform an empty search after changing the `load` function\n\n\n        selectize.load(function (callback) {\n          selectize.settings.load.apply(selectize, [\"\", callback]);\n        });\n      } else if (hasOwnProperty(data, \"value\")) {\n        this.setValue(el, data.value);\n      }\n\n      updateLabel(data.label, getLabelNode(el));\n      $(el).trigger(\"change\");\n    }\n  }, {\n    key: \"subscribe\",\n    value: function subscribe(el, callback) {\n      var _this = this;\n\n      $(el).on(\"change.selectInputBinding\", // event: Event\n      function () {\n        // https://github.com/rstudio/shiny/issues/2162\n        // Prevent spurious events that are gonna be squelched in\n        // a second anyway by the onItemRemove down below\n        if (el.nonempty && _this.getValue(el) === \"\") {\n          return;\n        }\n\n        callback(false);\n      });\n    }\n  }, {\n    key: \"unsubscribe\",\n    value: function unsubscribe(el) {\n      $(el).off(\".selectInputBinding\");\n    }\n  }, {\n    key: \"initialize\",\n    value: function initialize(el) {\n      this._selectize(el);\n    }\n  }, {\n    key: \"_selectize\",\n    value: function _selectize(el) {\n      var update = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      if (!$.fn.selectize) return undefined;\n      var $el = $(el);\n      var config = $el.parent().find('script[data-for=\"' + $escape(el.id) + '\"]');\n      if (config.length === 0) return undefined;\n      var options = $.extend({\n        labelField: \"label\",\n        valueField: \"value\",\n        searchField: [\"label\"]\n      }, JSON.parse(config.html())); // selectize created from selectInput()\n\n      if (typeof config.data(\"nonempty\") !== \"undefined\") {\n        el.nonempty = true;\n        options = $.extend(options, {\n          onItemRemove: function onItemRemove(value) {\n            if (this.getValue() === \"\") $(\"select#\" + $escape(el.id)).empty().append($(\"<option/>\", {\n              value: value,\n              selected: true\n            })).trigger(\"change\");\n          },\n          onDropdownClose: // $dropdown: any\n          function onDropdownClose() {\n            if (this.getValue() === \"\") this.setValue($(\"select#\" + $escape(el.id)).val());\n          }\n        });\n      } else {\n        el.nonempty = false;\n      } // options that should be eval()ed\n\n\n      if (config.data(\"eval\") instanceof Array) $.each(config.data(\"eval\"), function (i, x) {\n        /*jshint evil: true*/\n        options[x] = indirectEval(\"(\" + options[x] + \")\");\n      });\n      var control = $el.selectize(options)[0].selectize; // .selectize() does not really update settings; must destroy and rebuild\n\n      if (update) {\n        var settings = $.extend(control.settings, options);\n        control.destroy();\n        control = $el.selectize(settings)[0].selectize;\n      }\n\n      return control;\n    }\n  }]);\n\n  return SelectInputBinding;\n}(InputBinding);\n\nexport { SelectInputBinding };", "//esbuild.github.io/content-types/#direct-eval\n//tl/dr;\n// * Direct usage of `eval(\"x\")` is bad with bundled code.\n// * Instead, use indirect calls to `eval` such as `indirectEval(\"x\")`\n//   * Even just renaming the function works well enough.\n// > This is known as \"indirect eval\" because eval is not being called directly, and so does not trigger the grammatical special case for direct eval in the JavaScript VM. You can call indirect eval using any syntax at all except for an expression of the exact form eval('x'). For example, var eval2 = eval; eval2('x') and [eval][0]('x') and window.eval('x') are all indirect eval calls.\n// > When you use indirect eval, the code is evaluated in the global scope instead of in the inline scope of the caller.\nvar indirectEval = eval;\nexport { indirectEval };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport $ from \"jquery\";\nimport { InputBinding } from \"./inputBinding\";\nimport { hasOwnProperty } from \"../../utils\";\n\nvar ActionButtonInputBinding = /*#__PURE__*/function (_InputBinding) {\n  _inherits(ActionButtonInputBinding, _InputBinding);\n\n  var _super = _createSuper(ActionButtonInputBinding);\n\n  function ActionButtonInputBinding() {\n    _classCallCheck(this, ActionButtonInputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(ActionButtonInputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find(\".action-button\");\n    }\n  }, {\n    key: \"getValue\",\n    value: function getValue(el) {\n      return $(el).data(\"val\") || 0;\n    }\n  }, {\n    key: \"setValue\",\n    value: function setValue(el, value) {\n      $(el).data(\"val\", value);\n    }\n  }, {\n    key: \"getType\",\n    value: function getType(el) {\n      return \"shiny.action\";\n      el;\n    }\n  }, {\n    key: \"subscribe\",\n    value: function subscribe(el, callback) {\n      $(el).on(\"click.actionButtonInputBinding\", // e: Event\n      function () {\n        var $el = $(this);\n        var val = $el.data(\"val\") || 0;\n        $el.data(\"val\", val + 1);\n        callback(false);\n      });\n    }\n  }, {\n    key: \"getState\",\n    value: function getState(el) {\n      return {\n        value: this.getValue(el)\n      };\n    }\n  }, {\n    key: \"receiveMessage\",\n    value: function receiveMessage(el, data) {\n      var $el = $(el); // retrieve current label and icon\n\n      var label = $el.text();\n      var icon = \"\"; // to check (and store) the previous icon, we look for a $el child\n      // object that has an i tag, and some (any) class (this prevents\n      // italicized text - which has an i tag but, usually, no class -\n      // from being mistakenly selected)\n\n      if ($el.find(\"i[class]\").length > 0) {\n        var iconHtml = $el.find(\"i[class]\")[0];\n\n        if (iconHtml === $el.children()[0]) {\n          // another check for robustness\n          icon = $(iconHtml).prop(\"outerHTML\");\n        }\n      } // update the requested properties\n\n\n      if (hasOwnProperty(data, \"label\")) label = data.label;\n\n      if (hasOwnProperty(data, \"icon\")) {\n        icon = data.icon; // if the user entered icon=character(0), remove the icon\n\n        if (icon.length === 0) icon = \"\";\n      } // produce new html\n\n\n      $el.html(icon + \" \" + label);\n    }\n  }, {\n    key: \"unsubscribe\",\n    value: function unsubscribe(el) {\n      $(el).off(\".actionButtonInputBinding\");\n    }\n  }]);\n\n  return ActionButtonInputBinding;\n}(InputBinding); // TODO-barret should this be put in the init methods?\n\n\n$(document).on(\"click\", \"a.action-button\", function (e) {\n  e.preventDefault();\n});\nexport { ActionButtonInputBinding };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport $ from \"jquery\";\nimport { InputBinding } from \"./inputBinding\";\nimport { hasOwnProperty, isBS3 } from \"../../utils\";\n\nfunction getTabName(anchor) {\n  return anchor.attr(\"data-value\") || anchor.text();\n}\n\nvar BootstrapTabInputBinding = /*#__PURE__*/function (_InputBinding) {\n  _inherits(BootstrapTabInputBinding, _InputBinding);\n\n  var _super = _createSuper(BootstrapTabInputBinding);\n\n  function BootstrapTabInputBinding() {\n    _classCallCheck(this, BootstrapTabInputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(BootstrapTabInputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find(\"ul.nav.shiny-tab-input\");\n    }\n  }, {\n    key: \"getValue\",\n    value: function getValue(el) {\n      // prettier-ignore\n      // The BS4+ selectors may not work as is for dropdowns within dropdowns, but BS3+ dropped support for those anyway\n      var anchor = isBS3() ? $(el).find(\"li:not(.dropdown).active > a\") : $(el).find(\".nav-link:not(.dropdown-toggle).active, .dropdown-menu .dropdown-item.active\");\n      if (anchor.length === 1) return getTabName(anchor);\n      return null;\n    }\n  }, {\n    key: \"setValue\",\n    value: function setValue(el, value) {\n      var success = false;\n\n      if (value) {\n        // prettier-ignore\n        // The BS4+ selectors may not work as is for dropdowns within dropdowns, but BS3+ dropped support for those anyway\n        var anchors = isBS3() ? $(el).find(\"li:not(.dropdown) > a\") : $(el).find(\".nav-link:not(.dropdown-toggle), .dropdown-menu .dropdown-item\");\n        anchors.each(function () {\n          if (getTabName($(this)) === value) {\n            $(this).tab(\"show\");\n            success = true;\n            return false; // Break out of each()\n          }\n\n          return;\n        });\n      }\n\n      if (!success) {\n        // This is to handle the case where nothing is selected, e.g. the last tab\n        // was removed using removeTab.\n        $(el).trigger(\"change\");\n      }\n    }\n  }, {\n    key: \"getState\",\n    value: function getState(el) {\n      return {\n        value: this.getValue(el)\n      };\n    }\n  }, {\n    key: \"receiveMessage\",\n    value: function receiveMessage(el, data) {\n      if (hasOwnProperty(data, \"value\")) this.setValue(el, data.value);\n      $(el).trigger(\"change\");\n    }\n  }, {\n    key: \"subscribe\",\n    value: function subscribe(el, callback) {\n      $(el).on(\"change shown.bootstrapTabInputBinding shown.bs.tab.bootstrapTabInputBinding\", // event: Event\n      function () {\n        callback(false);\n      });\n    }\n  }, {\n    key: \"unsubscribe\",\n    value: function unsubscribe(el) {\n      $(el).off(\".bootstrapTabInputBinding\");\n    }\n  }]);\n\n  return BootstrapTabInputBinding;\n}(InputBinding);\n\nexport { BootstrapTabInputBinding };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.function.name.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\nimport $ from \"jquery\";\nimport { InputBinding } from \"./inputBinding\";\nimport { FileUploader } from \"../../file/fileProcessor\";\nimport { shinyShinyApp } from \"../../shiny/initedMethods\";\nvar zoneActive = \"shiny-file-input-active\";\nvar zoneOver = \"shiny-file-input-over\";\n\nfunction zoneOf(el) {\n  return $(el).closest(\"div.input-group\");\n} // This function makes it possible to attach listeners to the dragenter,\n// dragleave, and drop events of a single element with children. It's not\n// intuitive to do directly because outer elements fire \"dragleave\" events\n// both when the drag leaves the element and when the drag enters a child. To\n// make it easier, we maintain a count of the elements being dragged across\n// and trigger 3 new types of event:\n//\n// 1. draghover:enter - When a drag enters el and any of its children.\n// 2. draghover:leave - When the drag leaves el and all of its children.\n// 3. draghover:drop - When an item is dropped on el or any of its children.\n\n\nfunction enableDraghover(el) {\n  var $el = $(el);\n  var childCounter = 0;\n  $el.on({\n    \"dragenter.draghover\": function dragenterDraghover(e) {\n      if (childCounter++ === 0) {\n        $el.trigger(\"draghover:enter\", e);\n      }\n    },\n    \"dragleave.draghover\": function dragleaveDraghover(e) {\n      if (--childCounter === 0) {\n        $el.trigger(\"draghover:leave\", e);\n      }\n\n      if (childCounter < 0) {\n        console.error(\"draghover childCounter is negative somehow\");\n      }\n    },\n    \"dragover.draghover\": function dragoverDraghover(e) {\n      e.preventDefault();\n    },\n    \"drop.draghover\": function dropDraghover(e) {\n      childCounter = 0;\n      $el.trigger(\"draghover:drop\", e);\n      e.preventDefault();\n    }\n  });\n  return $el;\n}\n\nfunction disableDraghover(el) {\n  return $(el).off(\".draghover\");\n}\n\nfunction enableDocumentEvents() {\n  var $doc = $(\"html\");\n  enableDraghover($doc).on({\n    \"draghover:enter.draghover\": // e: Event\n    function draghoverEnterDraghover() {\n      zoneOf($fileInputs).addClass(zoneActive);\n    },\n    \"draghover:leave.draghover\": // e: Event\n    function draghoverLeaveDraghover() {\n      zoneOf($fileInputs).removeClass(zoneActive);\n    },\n    \"draghover:drop.draghover\": // e: Event\n    function draghoverDropDraghover() {\n      zoneOf($fileInputs).removeClass(zoneOver).removeClass(zoneActive);\n    }\n  });\n}\n\nfunction disableDocumentEvents() {\n  var $doc = $(\"html\");\n  $doc.off(\".draghover\");\n  disableDraghover($doc);\n}\n\nfunction canSetFiles(fileList) {\n  var testEl = document.createElement(\"input\");\n  testEl.type = \"file\";\n\n  try {\n    testEl.files = fileList;\n  } catch (e) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction handleDrop(e, el) {\n  var files = e.originalEvent.dataTransfer.files,\n      $el = $(el);\n\n  if (files === undefined || files === null) {\n    // 1. The FileList object isn't supported by this browser, and\n    // there's nothing else we can try. (< IE 10)\n    console.log(\"Dropping files is not supported on this browser. (no FileList)\");\n  } else if (!canSetFiles(files)) {\n    // 2. The browser doesn't support assigning a type=file input's .files\n    // property, but we do have a FileList to work with. (IE10+/Edge)\n    $el.val(\"\");\n    uploadDroppedFilesIE10Plus(el, files);\n  } else {\n    // 3. The browser supports FileList and input.files assignment.\n    // (Chrome, Safari)\n    $el.val(\"\");\n    el.files = e.originalEvent.dataTransfer.files; // Recent versions of Firefox (57+, or \"Quantum\" and beyond) don't seem to\n    // automatically trigger a change event, so we trigger one manually here.\n    // On browsers that do trigger change, this operation appears to be\n    // idempotent, as el.files doesn't change between events.\n\n    $el.trigger(\"change\");\n  }\n} // NOTE On Safari, at least version 10.1.2, *if the developer console is open*,\n// setting the input's value will behave strangely because of a Safari bug. The\n// uploaded file's name will appear over the placeholder value, instead of\n// replacing it. The workaround is to restart Safari. When I (Alan Dipert) ran\n// into this bug Winston Chang helped me diagnose the exact problem, and Winston\n// then submitted a bug report to Apple.\n\n\nfunction setFileText($el, files) {\n  var $fileText = $el.closest(\"div.input-group\").find(\"input[type=text]\");\n\n  if (files.length === 1) {\n    $fileText.val(files[0].name);\n  } else {\n    $fileText.val(files.length + \" files\");\n  }\n} // If previously selected files are uploading, abort that.\n\n\nfunction abortCurrentUpload($el) {\n  var uploader = $el.data(\"currentUploader\");\n  if (uploader) uploader.abort(); // Clear data-restore attribute if present.\n\n  $el.removeAttr(\"data-restore\");\n}\n\nfunction uploadDroppedFilesIE10Plus(el, files) {\n  var $el = $(el);\n  abortCurrentUpload($el); // Set the label in the text box\n\n  setFileText($el, files); // Start the new upload and put the uploader in 'currentUploader'.\n\n  $el.data(\"currentUploader\", new FileUploader(shinyShinyApp(), fileInputBindingGetId(el), files, el));\n}\n\nfunction uploadFiles(evt) {\n  var $el = $(evt.target);\n  abortCurrentUpload($el);\n  var files = evt.target.files;\n  var id = fileInputBindingGetId(evt.target);\n  if (files.length === 0) return; // Set the label in the text box\n\n  setFileText($el, files); // Start the new upload and put the uploader in 'currentUploader'.\n\n  $el.data(\"currentUploader\", new FileUploader(shinyShinyApp(), id, files, evt.target));\n} // Here we maintain a list of all the current file inputs. This is necessary\n// because we need to trigger events on them in order to respond to file drag\n// events. For example, they should all light up when a file is dragged on to\n// the page.\n// TODO-barret ; Should this be an internal class property?\n\n\nvar $fileInputs = $();\n\nfunction fileInputBindingGetId(el) {\n  return InputBinding.prototype.getId.call(this, el) || el.name;\n}\n\nvar FileInputBinding = /*#__PURE__*/function (_InputBinding) {\n  _inherits(FileInputBinding, _InputBinding);\n\n  var _super = _createSuper(FileInputBinding);\n\n  function FileInputBinding() {\n    _classCallCheck(this, FileInputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(FileInputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find('input[type=\"file\"]');\n    }\n  }, {\n    key: \"getId\",\n    value: function getId(el) {\n      return fileInputBindingGetId(el);\n    }\n  }, {\n    key: \"getValue\",\n    value: function getValue(el) {\n      // This returns a non-undefined value only when there's a 'data-restore'\n      // attribute, which is set only when restoring Shiny state. If a file is\n      // uploaded through the browser, 'data-restore' gets cleared.\n      var data = $(el).attr(\"data-restore\");\n\n      if (data) {\n        var dataParsed = JSON.parse(data); // Set the label in the text box\n\n        var $fileText = $(el).closest(\"div.input-group\").find(\"input[type=text]\");\n\n        if (dataParsed.name.length === 1) {\n          $fileText.val(dataParsed.name[0]);\n        } else {\n          $fileText.val(dataParsed.name.length + \" files\");\n        } // Manually set up progress bar. A bit inelegant because it duplicates\n        // code from FileUploader, but duplication is less bad than alternatives.\n\n\n        var $progress = $(el).closest(\"div.form-group\").find(\".progress\");\n        var $bar = $progress.find(\".progress-bar\");\n        $progress.removeClass(\"active\");\n        $bar.width(\"100%\");\n        $bar.css(\"visibility\", \"visible\");\n        return dataParsed;\n      } else {\n        return null;\n      }\n    }\n  }, {\n    key: \"setValue\",\n    value: function setValue(el, value) {\n      // Not implemented\n      el;\n      value;\n    }\n  }, {\n    key: \"getType\",\n    value: function getType(el) {\n      // This will be used only when restoring a file from a saved state.\n      return \"shiny.file\";\n      el;\n    }\n  }, {\n    key: \"subscribe\",\n    value: function subscribe(el, callback) {\n      callback;\n      $(el).on(\"change.fileInputBinding\", uploadFiles); // Here we try to set up the necessary events for Drag and Drop (\"DnD\").\n\n      if ($fileInputs.length === 0) enableDocumentEvents();\n      $fileInputs = $fileInputs.add(el);\n      var $zone = zoneOf(el);\n      enableDraghover($zone).on({\n        \"draghover:enter.draghover\": function draghoverEnterDraghover(e) {\n          e;\n          $zone.addClass(zoneOver);\n        },\n        \"draghover:leave.draghover\": function draghoverLeaveDraghover(e) {\n          $zone.removeClass(zoneOver); // Prevent this event from bubbling to the document handler,\n          // which would deactivate all zones.\n\n          e.stopPropagation();\n        },\n        \"draghover:drop.draghover\": function draghoverDropDraghover(e, dropEvent) {\n          e;\n          handleDrop(dropEvent, el);\n        }\n      });\n    }\n  }, {\n    key: \"unsubscribe\",\n    value: function unsubscribe(el) {\n      var $el = $(el),\n          $zone = zoneOf(el);\n      $zone.removeClass(zoneOver).removeClass(zoneActive);\n      disableDraghover($zone);\n      $el.off(\".fileInputBinding\");\n      $zone.off(\".draghover\"); // Remove el from list of inputs and (maybe) clean up global event handlers.\n\n      $fileInputs = $fileInputs.not(el);\n      if ($fileInputs.length === 0) disableDocumentEvents();\n    }\n  }]);\n\n  return FileInputBinding;\n}(InputBinding);\n\nexport { FileInputBinding };", "'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  map: function map(callbackfn /* , thisArg */) {\n    return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.array.map.js\";\nimport \"core-js/modules/es.function.name.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport $ from \"jquery\";\nimport { triggerFileInputChanged } from \"../events/inputChanged\";\nimport { $escape } from \"../utils\";\nimport { getFileInputBinding } from \"../shiny/initedMethods\";\n\n// Generic driver class for doing chunk-wise asynchronous processing of a\n// FileList object. Subclass/clone it and override the `on*` functions to\n// make it do something useful.\nvar FileProcessor = /*#__PURE__*/function () {\n  // Currently need to use small chunk size because R-Websockets can't\n  // handle continuation frames\n  function FileProcessor(files) {\n    var exec$run = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n    _classCallCheck(this, FileProcessor);\n\n    _defineProperty(this, \"files\", void 0);\n\n    _defineProperty(this, \"fileIndex\", -1);\n\n    _defineProperty(this, \"aborted\", false);\n\n    _defineProperty(this, \"completed\", false);\n\n    this.files = files; // TODO: Register error/abort callbacks\n\n    if (exec$run) {\n      this.$run();\n    }\n  } // Begin callbacks. Subclassers/cloners may override any or all of these.\n\n\n  _createClass(FileProcessor, [{\n    key: \"onBegin\",\n    value: function onBegin(files, cont) {\n      files;\n      setTimeout(cont, 0);\n    }\n  }, {\n    key: \"onFile\",\n    value: function onFile(file, cont) {\n      file;\n      setTimeout(cont, 0);\n    }\n  }, {\n    key: \"onComplete\",\n    value: function onComplete() {\n      return;\n    }\n  }, {\n    key: \"onAbort\",\n    value: function onAbort() {\n      return;\n    } // End callbacks\n    // Aborts processing, unless it's already completed\n\n  }, {\n    key: \"abort\",\n    value: function abort() {\n      if (this.completed || this.aborted) return;\n      this.aborted = true;\n      this.onAbort();\n    } // Returns a bound function that will call this.$run one time.\n\n  }, {\n    key: \"$getRun\",\n    value: function $getRun() {\n      var _this = this;\n\n      var called = false;\n      return function () {\n        if (called) return;\n        called = true;\n\n        _this.$run();\n      };\n    } // This function will be called multiple times to advance the process.\n    // It relies on the state of the object's fields to know what to do next.\n\n  }, {\n    key: \"$run\",\n    value: function $run() {\n      if (this.aborted || this.completed) return;\n\n      if (this.fileIndex < 0) {\n        // Haven't started yet--begin\n        this.fileIndex = 0;\n        this.onBegin(this.files, this.$getRun());\n        return;\n      }\n\n      if (this.fileIndex === this.files.length) {\n        // Just ended\n        this.completed = true;\n        this.onComplete();\n        return;\n      } // If we got here, then we have a file to process, or we are\n      // in the middle of processing a file, or have just finished\n      // processing a file.\n\n\n      var file = this.files[this.fileIndex++];\n      this.onFile(file, this.$getRun());\n    }\n  }]);\n\n  return FileProcessor;\n}();\n\nvar FileUploader = /*#__PURE__*/function (_FileProcessor) {\n  _inherits(FileUploader, _FileProcessor);\n\n  var _super = _createSuper(FileUploader);\n\n  function FileUploader(shinyapp, id, files, el) {\n    var _this2;\n\n    _classCallCheck(this, FileUploader);\n\n    // Init super with files, do not execute `this.$run()` before setting variables\n    _this2 = _super.call(this, files, false);\n\n    _defineProperty(_assertThisInitialized(_this2), \"shinyapp\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this2), \"id\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this2), \"el\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this2), \"jobId\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this2), \"uploadUrl\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this2), \"progressBytes\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this2), \"totalBytes\", void 0);\n\n    _this2.shinyapp = shinyapp;\n    _this2.id = id;\n    _this2.el = el;\n\n    _this2.$run();\n\n    return _this2;\n  }\n\n  _createClass(FileUploader, [{\n    key: \"makeRequest\",\n    value: function makeRequest(method, args, onSuccess, onFailure, blobs) {\n      this.shinyapp.makeRequest(method, args, onSuccess, onFailure, blobs);\n    }\n  }, {\n    key: \"onBegin\",\n    value: function onBegin(files, cont) {\n      var _this3 = this;\n\n      // Reset progress bar\n      this.$setError(null);\n      this.$setActive(true);\n      this.$setVisible(true);\n      this.onProgress(null, 0);\n      this.totalBytes = 0;\n      this.progressBytes = 0;\n      $.each(files, function (i, file) {\n        _this3.totalBytes += file.size;\n      });\n      var fileInfo = $.map(files, function (file, i) {\n        return {\n          name: file.name,\n          size: file.size,\n          type: file.type\n        };\n        i;\n      });\n      this.makeRequest(\"uploadInit\", [fileInfo], function (response) {\n        _this3.jobId = response.jobId;\n        _this3.uploadUrl = response.uploadUrl;\n        cont();\n      }, function (error) {\n        _this3.onError(error);\n      }, undefined);\n    }\n  }, {\n    key: \"onFile\",\n    value: function onFile(file, cont) {\n      var _this4 = this;\n\n      this.onProgress(file, 0);\n      $.ajax(this.uploadUrl, {\n        type: \"POST\",\n        cache: false,\n        xhr: function xhr() {\n          var xhrVal = $.ajaxSettings.xhr();\n\n          if (xhrVal.upload) {\n            xhrVal.upload.onprogress = function (e) {\n              if (e.lengthComputable) {\n                _this4.onProgress(file, (_this4.progressBytes + e.loaded) / _this4.totalBytes);\n              }\n            };\n          }\n\n          return xhrVal;\n        },\n        data: file,\n        contentType: \"application/octet-stream\",\n        processData: false,\n        success: function success() {\n          _this4.progressBytes += file.size;\n          cont();\n        },\n        error: function error(jqXHR, textStatus, errorThrown) {\n          errorThrown;\n\n          _this4.onError(jqXHR.responseText || textStatus);\n        }\n      });\n    }\n  }, {\n    key: \"onComplete\",\n    value: function onComplete() {\n      var _this5 = this;\n\n      var fileInfo = $.map(this.files, function (file, i) {\n        return {\n          name: file.name,\n          size: file.size,\n          type: file.type\n        };\n        i;\n      }); // Trigger shiny:inputchanged. Unlike a normal shiny:inputchanged event,\n      // it's not possible to modify the information before the values get\n      // sent to the server.\n\n      var evt = triggerFileInputChanged(this.id, fileInfo, getFileInputBinding(), this.el, \"shiny.fileupload\", document);\n      this.makeRequest(\"uploadEnd\", [this.jobId, this.id], function () {\n        _this5.$setActive(false);\n\n        _this5.onProgress(null, 1);\n\n        _this5.$bar().text(\"Upload complete\"); // Reset the file input's value to \"\". This allows the same file to be\n        // uploaded again. https://stackoverflow.com/a/22521275\n\n\n        $(evt.el).val(\"\");\n      }, function (error) {\n        _this5.onError(error);\n      }, undefined);\n      this.$bar().text(\"Finishing upload\");\n    }\n  }, {\n    key: \"onError\",\n    value: function onError(message) {\n      this.$setError(message || \"\");\n      this.$setActive(false);\n    }\n  }, {\n    key: \"onAbort\",\n    value: function onAbort() {\n      this.$setVisible(false);\n    }\n  }, {\n    key: \"onProgress\",\n    value: function onProgress(file, completed) {\n      this.$bar().width(Math.round(completed * 100) + \"%\");\n      this.$bar().text(file ? file.name : \"\");\n    }\n  }, {\n    key: \"$container\",\n    value: function $container() {\n      return $(\"#\" + $escape(this.id) + \"_progress.shiny-file-input-progress\");\n    }\n  }, {\n    key: \"$bar\",\n    value: function $bar() {\n      return $(\"#\" + $escape(this.id) + \"_progress.shiny-file-input-progress .progress-bar\");\n    }\n  }, {\n    key: \"$setVisible\",\n    value: function $setVisible(visible) {\n      this.$container().css(\"visibility\", visible ? \"visible\" : \"hidden\");\n    }\n  }, {\n    key: \"$setError\",\n    value: function $setError(error) {\n      this.$bar().toggleClass(\"progress-bar-danger\", error !== null);\n\n      if (error !== null) {\n        this.onProgress(null, 1);\n        this.$bar().text(error);\n      }\n    }\n  }, {\n    key: \"$setActive\",\n    value: function $setActive(active) {\n      this.$container().toggleClass(\"active\", !!active);\n    }\n  }]);\n\n  return FileUploader;\n}(FileProcessor);\n\nexport { FileUploader };", "import \"core-js/modules/es.function.name.js\";\nimport $ from \"jquery\";\n\nfunction triggerFileInputChanged(name, value, binding, el, inputType, onEl) {\n  var evt = $.Event(\"shiny:inputchanged\");\n  evt.name = name;\n  evt.value = value;\n  evt.binding = binding;\n  evt.el = el;\n  evt.inputType = inputType;\n  $(onEl).trigger(evt);\n  return evt;\n}\n\nexport { triggerFileInputChanged };", "var fullShinyObj = null;\n\nfunction setShinyObj(shiny) {\n  fullShinyObj = shiny;\n} //// 2021/03: TypeScript Conversion note\n// These methods are here due to the delayed initialization of `Shiny.shinyapp`. I\n// In theory, there could be multiple instances of `shinyapp`. In practice (and implementation), this is not possible and is a 1:1 coupling with `window.Shiny`.\n// To avoid calls to a large Shiny object, helper methods are created to wrap around calling the fully instantiated window.Shiny value.\n// TODO-barret; Why is `initShiny()` delayed? Is this to allow users to shim in some code? Why can't it be defined in the init method (maybe w/ an extra trigger call?)\n\n\nfunction shinySetInputValue(name, value, opts) {\n  fullShinyObj.setInputValue(name, value, opts);\n}\n\nfunction shinyShinyApp() {\n  return fullShinyObj.shinyapp;\n}\n\nfunction setShinyUser(user) {\n  fullShinyObj.user = user;\n}\n\nfunction shinyForgetLastInputValue(name) {\n  fullShinyObj.forgetLastInputValue(name);\n}\n\nfunction shinyBindAll(scope) {\n  fullShinyObj.bindAll(scope);\n}\n\nfunction shinyUnbindAll(scope) {\n  var includeSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  fullShinyObj.unbindAll(scope, includeSelf);\n}\n\nfunction shinyInitializeInputs(scope) {\n  fullShinyObj.initializeInputs(scope);\n}\n\nfunction shinyAppBindOutput(id, binding) {\n  fullShinyObj.shinyapp.bindOutput(id, binding);\n}\n\nfunction shinyAppUnbindOutput(id, binding) {\n  return fullShinyObj.shinyapp.unbindOutput(id, binding);\n}\n\nfunction getShinyOnCustomMessage() {\n  return fullShinyObj.oncustommessage;\n}\n\nvar fileInputBinding;\n\nfunction getFileInputBinding() {\n  return fileInputBinding;\n}\n\nfunction setFileInputBinding(fileInputBinding_) {\n  fileInputBinding = fileInputBinding_;\n}\n\nfunction getShinyCreateWebsocket() {\n  return fullShinyObj.createSocket;\n}\n\nexport { setShinyObj, shinySetInputValue, shinyShinyApp, setShinyUser, shinyForgetLastInputValue, shinyBindAll, shinyUnbindAll, shinyInitializeInputs, shinyAppBindOutput, shinyAppUnbindOutput, getShinyOnCustomMessage, getFileInputBinding, setFileInputBinding, getShinyCreateWebsocket };", "import { BindingRegistry } from \"../registry\";\nimport { InputBinding } from \"./inputBinding\";\nimport { CheckboxInputBinding } from \"./checkbox\";\nimport { CheckboxGroupInputBinding } from \"./checkboxgroup\";\nimport { NumberInputBinding } from \"./number\";\nimport { PasswordInputBinding } from \"./password\";\nimport { TextInputBinding } from \"./text\";\nimport { TextareaInputBinding } from \"./textarea\";\nimport { RadioInputBinding } from \"./radio\";\nimport { DateInputBinding } from \"./date\";\nimport { SliderInputBinding } from \"./slider\";\nimport { DateRangeInputBinding } from \"./daterange\";\nimport { SelectInputBinding } from \"./selectInput\";\nimport { ActionButtonInputBinding } from \"./actionbutton\";\nimport { BootstrapTabInputBinding } from \"./tabinput\";\nimport { FileInputBinding } from \"./fileinput\"; // TODO-barret make this an init method\n\nfunction initInputBindings() {\n  var inputBindings = new BindingRegistry();\n  inputBindings.register(new TextInputBinding(), \"shiny.textInput\");\n  inputBindings.register(new TextareaInputBinding(), \"shiny.textareaInput\");\n  inputBindings.register(new PasswordInputBinding(), \"shiny.passwordInput\");\n  inputBindings.register(new NumberInputBinding(), \"shiny.numberInput\");\n  inputBindings.register(new CheckboxInputBinding(), \"shiny.checkboxInput\");\n  inputBindings.register(new CheckboxGroupInputBinding(), \"shiny.checkboxGroupInput\");\n  inputBindings.register(new RadioInputBinding(), \"shiny.radioInput\");\n  inputBindings.register(new SliderInputBinding(), \"shiny.sliderInput\");\n  inputBindings.register(new DateInputBinding(), \"shiny.dateInput\");\n  inputBindings.register(new DateRangeInputBinding(), \"shiny.dateRangeInput\");\n  inputBindings.register(new SelectInputBinding(), \"shiny.selectInput\");\n  inputBindings.register(new ActionButtonInputBinding(), \"shiny.actionButtonInput\");\n  inputBindings.register(new BootstrapTabInputBinding(), \"shiny.bootstrapTabInput\");\n  var fileInputBinding = new FileInputBinding();\n  inputBindings.register(fileInputBinding, \"shiny.fileInputBinding\");\n  return {\n    inputBindings: inputBindings,\n    fileInputBinding: fileInputBinding\n  };\n}\n\nexport { initInputBindings, InputBinding };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport $ from \"jquery\";\nimport { OutputBinding } from \"./outputBinding\";\n\nvar TextOutputBinding = /*#__PURE__*/function (_OutputBinding) {\n  _inherits(TextOutputBinding, _OutputBinding);\n\n  var _super = _createSuper(TextOutputBinding);\n\n  function TextOutputBinding() {\n    _classCallCheck(this, TextOutputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(TextOutputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find(\".shiny-text-output\");\n    }\n  }, {\n    key: \"renderValue\",\n    value: function renderValue(el, data) {\n      $(el).text(data);\n    }\n  }]);\n\n  return TextOutputBinding;\n}(OutputBinding);\n\nexport { TextOutputBinding };", "'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n  join: function join(separator) {\n    return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n  }\n});\n", "import \"core-js/modules/es.array.join.js\";\nimport \"core-js/modules/es.array.map.js\";\nimport \"core-js/modules/es.regexp.exec.js\";\nimport \"core-js/modules/es.string.replace.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport $ from \"jquery\";\nimport { asArray } from \"../../utils\";\n\nvar OutputBinding = /*#__PURE__*/function () {\n  function OutputBinding() {\n    _classCallCheck(this, OutputBinding);\n\n    _defineProperty(this, \"name\", void 0);\n  }\n\n  _createClass(OutputBinding, [{\n    key: \"find\",\n    value: // Returns a jQuery object or element array that contains the\n    // descendants of scope that match this binding\n    function find(scope) {\n      throw \"Not implemented\";\n      scope;\n    }\n  }, {\n    key: \"renderValue\",\n    value: function renderValue(el, data) {\n      throw \"Not implemented\";\n      el;\n      data;\n    }\n  }, {\n    key: \"getId\",\n    value: function getId(el) {\n      return el.getAttribute(\"data-input-id\") || el.id;\n    }\n  }, {\n    key: \"onValueChange\",\n    value: function onValueChange(el, data) {\n      this.clearError(el);\n      this.renderValue(el, data);\n    }\n  }, {\n    key: \"onValueError\",\n    value: function onValueError(el, err) {\n      this.renderError(el, err);\n    }\n  }, {\n    key: \"renderError\",\n    value: function renderError(el, err) {\n      this.clearError(el);\n\n      if (err.message === \"\") {\n        // not really error, but we just need to wait (e.g. action buttons)\n        $(el).empty();\n        return;\n      }\n\n      var errClass = \"shiny-output-error\";\n\n      if (err.type !== null) {\n        // use the classes of the error condition as CSS class names\n        errClass = errClass + \" \" + $.map(asArray(err.type), function (type) {\n          return errClass + \"-\" + type;\n        }).join(\" \");\n      }\n\n      $(el).addClass(errClass).text(err.message);\n    }\n  }, {\n    key: \"clearError\",\n    value: function clearError(el) {\n      $(el).attr(\"class\", function (i, c) {\n        return c.replace(/(^|\\s)shiny-output-error\\S*/g, \"\");\n      });\n    }\n  }, {\n    key: \"showProgress\",\n    value: function showProgress(el, show) {\n      var recalcClass = \"recalculating\";\n      if (show) $(el).addClass(recalcClass);else $(el).removeClass(recalcClass);\n    }\n  }]);\n\n  return OutputBinding;\n}();\n\nexport { OutputBinding };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.function.name.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport $ from \"jquery\";\nimport { OutputBinding } from \"./outputBinding\";\n\nvar DownloadLinkOutputBinding = /*#__PURE__*/function (_OutputBinding) {\n  _inherits(DownloadLinkOutputBinding, _OutputBinding);\n\n  var _super = _createSuper(DownloadLinkOutputBinding);\n\n  function DownloadLinkOutputBinding() {\n    _classCallCheck(this, DownloadLinkOutputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(DownloadLinkOutputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find(\"a.shiny-download-link\");\n    }\n  }, {\n    key: \"renderValue\",\n    value: function renderValue(el, data) {\n      $(el).attr(\"href\", data);\n    }\n  }]);\n\n  return DownloadLinkOutputBinding;\n}(OutputBinding);\n\n// TODO-barret should this be in an init method?\n// Trigger shiny:filedownload event whenever a downloadButton/Link is clicked\n$(document).on(\"click.shinyDownloadLink\", \"a.shiny-download-link\", function (e) {\n  e;\n  var evt = jQuery.Event(\"shiny:filedownload\");\n  evt.name = this.id;\n  evt.href = this.href;\n  $(document).trigger(evt);\n});\nexport { DownloadLinkOutputBinding };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.array.join.js\";\nimport \"core-js/modules/es.array.map.js\";\nimport \"core-js/modules/es.regexp.exec.js\";\nimport \"core-js/modules/es.string.replace.js\";\nimport \"core-js/modules/es.string.search.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport $ from \"jquery\";\nimport { OutputBinding } from \"./outputBinding\";\nimport { shinyUnbindAll } from \"../../shiny/initedMethods\";\nimport { debounce } from \"../../time\";\nimport { escapeHTML } from \"../../utils\";\nimport { indirectEval } from \"../../utils/eval\";\n\nvar DatatableOutputBinding = /*#__PURE__*/function (_OutputBinding) {\n  _inherits(DatatableOutputBinding, _OutputBinding);\n\n  var _super = _createSuper(DatatableOutputBinding);\n\n  function DatatableOutputBinding() {\n    _classCallCheck(this, DatatableOutputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(DatatableOutputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find(\".shiny-datatable-output\");\n    }\n  }, {\n    key: \"onValueError\",\n    value: function onValueError(el, err) {\n      shinyUnbindAll(el);\n      this.renderError(el, err);\n    }\n  }, {\n    key: \"renderValue\",\n    value: function renderValue(el, _data) {\n      var $el = $(el).empty();\n      if (!_data || !_data.colnames) return;\n      var colnames = $.makeArray(_data.colnames);\n      var header = $.map(colnames, function (x) {\n        return \"<th>\" + x + \"</th>\";\n      }).join(\"\");\n      header = \"<thead><tr>\" + header + \"</tr></thead>\";\n      var footer = \"\";\n\n      if (_data.options === null || _data.options.searching !== false) {\n        footer = $.map(colnames, function (x) {\n          // placeholder needs to be escaped (and HTML tags are stripped off)\n          return '<th><input type=\"text\" placeholder=\"' + escapeHTML(x.replace(/(<([^>]+)>)/gi, \"\")) + '\" /></th>';\n        }).join(\"\");\n        footer = \"<tfoot>\" + footer + \"</tfoot>\";\n      }\n\n      var content = '<table class=\"table table-striped table-hover\">' + header + footer + \"</table>\";\n      $el.append(content); // options that should be eval()ed\n\n      if (_data.evalOptions) $.each(_data.evalOptions, function (i, x) {\n        /*jshint evil: true */\n        _data.options[x] = indirectEval(\"(\" + _data.options[x] + \")\");\n      }); // caseInsensitive searching? default true\n\n      var searchCI = _data.options === null || typeof _data.options.search === \"undefined\" || _data.options.search.caseInsensitive !== false;\n      var oTable = $(el).children(\"table\").DataTable($.extend({\n        processing: true,\n        serverSide: true,\n        order: [],\n        orderClasses: false,\n        pageLength: 25,\n        ajax: {\n          url: _data.action,\n          type: \"POST\",\n          data: function data(d) {\n            d.search.caseInsensitive = searchCI;\n            d.escape = _data.escape;\n          }\n        }\n      }, _data.options)); // the table object may need post-processing\n\n      if (typeof _data.callback === \"string\") {\n        /*jshint evil: true */\n        var callback = indirectEval(\"(\" + _data.callback + \")\");\n        if (typeof callback === \"function\") callback(oTable);\n      } // use debouncing for searching boxes\n\n\n      $el.find(\"label input\").first().unbind(\"keyup\").keyup(debounce(_data.searchDelay, function () {\n        oTable.search(this.value).draw();\n      }));\n      var searchInputs = $el.find(\"tfoot input\");\n\n      if (searchInputs.length > 0) {\n        // this is a little weird: aoColumns/bSearchable are still in DT 1.10\n        // https://github.com/DataTables/DataTables/issues/388\n        $.each(oTable.settings()[0].aoColumns, function (i, x) {\n          // hide the text box if not searchable\n          if (!x.bSearchable) searchInputs.eq(i).hide();\n        });\n        searchInputs.keyup(debounce(_data.searchDelay, function () {\n          oTable.column(searchInputs.index(this)).search(this.value).draw();\n        }));\n      } // FIXME: ugly scrollbars in tab panels b/c Bootstrap uses 'visible: auto'\n\n\n      $el.parents(\".tab-content\").css(\"overflow\", \"visible\");\n    }\n  }]);\n\n  return DatatableOutputBinding;\n}(OutputBinding);\n\nexport { DatatableOutputBinding };", "'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) {\n  return [\n    // `String.prototype.search` method\n    // https://tc39.es/ecma262/#sec-string.prototype.search\n    function search(regexp) {\n      var O = requireObjectCoercible(this);\n      var searcher = regexp == undefined ? undefined : regexp[SEARCH];\n      return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n    },\n    // `RegExp.prototype[@@search]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@search\n    function (regexp) {\n      var res = maybeCallNative(nativeSearch, regexp, this);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n\n      var previousLastIndex = rx.lastIndex;\n      if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n      var result = regExpExec(rx, S);\n      if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n      return result === null ? -1 : result.index;\n    }\n  ];\n});\n", "function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Debouncer = /*#__PURE__*/function () {\n  function Debouncer(target, func, delayMs) {\n    _classCallCheck(this, Debouncer);\n\n    _defineProperty(this, \"target\", void 0);\n\n    _defineProperty(this, \"func\", void 0);\n\n    _defineProperty(this, \"delayMs\", void 0);\n\n    _defineProperty(this, \"timerId\", void 0);\n\n    _defineProperty(this, \"args\", void 0);\n\n    this.target = target;\n    this.func = func;\n    this.delayMs = delayMs;\n    this.timerId = null;\n    this.args = null;\n  }\n\n  _createClass(Debouncer, [{\n    key: \"normalCall\",\n    value: function normalCall() {\n      var _this = this;\n\n      this.$clearTimer();\n\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      this.args = args;\n      this.timerId = setTimeout(function () {\n        // IE8 doesn't reliably clear timeout, so this additional\n        // check is needed\n        if (_this.timerId === null) return;\n\n        _this.$clearTimer();\n\n        _this.$invoke();\n      }, this.delayMs);\n    }\n  }, {\n    key: \"immediateCall\",\n    value: function immediateCall() {\n      this.$clearTimer();\n\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      this.args = args;\n      this.$invoke();\n    }\n  }, {\n    key: \"isPending\",\n    value: function isPending() {\n      return this.timerId !== null;\n    }\n  }, {\n    key: \"$clearTimer\",\n    value: function $clearTimer() {\n      if (this.timerId !== null) {\n        clearTimeout(this.timerId);\n        this.timerId = null;\n      }\n    }\n  }, {\n    key: \"$invoke\",\n    value: function $invoke() {\n      this.func.apply(this.target, this.args);\n      this.args = null;\n    }\n  }]);\n\n  return Debouncer;\n}(); // Returns a debounced version of the given function.\n// Debouncing means that when the function is invoked,\n// there is a delay of `threshold` milliseconds before\n// it is actually executed, and if the function is\n// invoked again before that threshold has elapsed then\n// the clock starts over.\n//\n// For example, if a function is debounced with a\n// threshold of 1000ms, then calling it 17 times at\n// 900ms intervals will result in a single execution\n// of the underlying function, 1000ms after the 17th\n// call.\n\n\nfunction debounce(threshold, func) {\n  var timerId = null;\n  return function () {\n    var _this2 = this;\n\n    for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n      args[_key3] = arguments[_key3];\n    }\n\n    if (timerId !== null) {\n      clearTimeout(timerId);\n      timerId = null;\n    }\n\n    timerId = setTimeout(function () {\n      // IE8 doesn't reliably clear timeout, so this additional\n      // check is needed\n      if (timerId === null) return;\n      timerId = null;\n      func.apply(_this2, args);\n    }, threshold);\n  };\n}\n\nexport { Debouncer, debounce };", "function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Invoker = /*#__PURE__*/function () {\n  function Invoker(target, func) {\n    _classCallCheck(this, Invoker);\n\n    _defineProperty(this, \"target\", void 0);\n\n    _defineProperty(this, \"func\", void 0);\n\n    this.target = target;\n    this.func = func;\n  } // TODO-barret - Don't know how to define the method twice and still have access to \"this\"\n\n\n  _createClass(Invoker, [{\n    key: \"normalCall\",\n    value: function normalCall() {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      this.func.apply(this.target, args);\n    }\n  }, {\n    key: \"immediateCall\",\n    value: function immediateCall() {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      this.func.apply(this.target, args);\n    }\n  }]);\n\n  return Invoker;\n}();\n\nexport { Invoker };", "import \"core-js/modules/es.array.concat.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Throttler = /*#__PURE__*/function () {\n  function Throttler(target, func, delayMs) {\n    _classCallCheck(this, Throttler);\n\n    _defineProperty(this, \"target\", void 0);\n\n    _defineProperty(this, \"func\", void 0);\n\n    _defineProperty(this, \"delayMs\", void 0);\n\n    _defineProperty(this, \"timerId\", void 0);\n\n    _defineProperty(this, \"args\", void 0);\n\n    this.target = target;\n    this.func = func;\n    this.delayMs = delayMs;\n    this.timerId = null;\n    this.args = null;\n  }\n\n  _createClass(Throttler, [{\n    key: \"normalCall\",\n    value: function normalCall() {\n      var _this = this;\n\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      this.args = args;\n\n      if (this.timerId === null) {\n        this.$invoke();\n        this.timerId = setTimeout(function () {\n          var _this$normalCall;\n\n          // IE8 doesn't reliably clear timeout, so this additional\n          // check is needed\n          if (_this.timerId === null) return;\n\n          _this.$clearTimer();\n\n          if (args.length > 0) (_this$normalCall = _this.normalCall).apply.apply(_this$normalCall, [_this].concat(args));\n        }, this.delayMs);\n      }\n    }\n  }, {\n    key: \"immediateCall\",\n    value: function immediateCall() {\n      this.$clearTimer();\n\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      this.args = args;\n      this.$invoke();\n    }\n  }, {\n    key: \"isPending\",\n    value: function isPending() {\n      return this.timerId !== null;\n    }\n  }, {\n    key: \"$clearTimer\",\n    value: function $clearTimer() {\n      if (this.timerId !== null) {\n        clearTimeout(this.timerId);\n        this.timerId = null;\n      }\n    }\n  }, {\n    key: \"$invoke\",\n    value: function $invoke() {\n      this.func.apply(this.target, this.args);\n      this.args = null;\n    }\n  }]);\n\n  return Throttler;\n}(); // Returns a throttled version of the given function.\n// Throttling means that the underlying function will\n// be executed no more than once every `threshold`\n// milliseconds.\n//\n// For example, if a function is throttled with a\n// threshold of 1000ms, then calling it 17 times at\n// 900ms intervals will result in something like 15\n// or 16 executions of the underlying function.\n// eslint-disable-next-line no-unused-vars\n\n\nfunction throttle(threshold, func) {\n  var executionPending = false;\n  var timerId = null;\n  var self, args;\n\n  function throttled() {\n    self = null;\n    args = null;\n\n    for (var _len3 = arguments.length, argumentVals = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n      argumentVals[_key3] = arguments[_key3];\n    }\n\n    if (timerId === null) {\n      // Haven't seen a call recently. Execute now and\n      // start a timer to buffer any subsequent calls.\n      timerId = setTimeout(function () {\n        // When time expires, clear the timer; and if\n        // there has been a call in the meantime, repeat.\n        timerId = null;\n\n        if (executionPending) {\n          executionPending = false;\n          throttled.apply(self, args);\n        }\n      }, threshold);\n      func.apply(this, argumentVals);\n    } else {\n      // Something executed recently. Don't do anything\n      // except set up target/arguments to be called later\n      executionPending = true;\n      self = this;\n      args = argumentVals;\n    }\n  }\n\n  return throttled;\n}\n\nexport { Throttler, throttle };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport $ from \"jquery\";\nimport { OutputBinding } from \"./outputBinding\";\nimport { shinyUnbindAll } from \"../../shiny/initedMethods\";\nimport { renderContent } from \"../../shiny/render\";\n\nvar HtmlOutputBinding = /*#__PURE__*/function (_OutputBinding) {\n  _inherits(HtmlOutputBinding, _OutputBinding);\n\n  var _super = _createSuper(HtmlOutputBinding);\n\n  function HtmlOutputBinding() {\n    _classCallCheck(this, HtmlOutputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(HtmlOutputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find(\".shiny-html-output\");\n    }\n  }, {\n    key: \"onValueError\",\n    value: function onValueError(el, err) {\n      shinyUnbindAll(el);\n      this.renderError(el, err);\n    }\n  }, {\n    key: \"renderValue\",\n    value: function renderValue(el, data) {\n      renderContent(el, data);\n    }\n  }]);\n\n  return HtmlOutputBinding;\n}(OutputBinding);\n\nexport { HtmlOutputBinding };", "'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n  forEach: forEach\n});\n", "var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  var Collection = global[COLLECTION_NAME];\n  var CollectionPrototype = Collection && Collection.prototype;\n  // some Chrome versions have non-configurable methods on DOMTokenList\n  if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n    createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n  } catch (error) {\n    CollectionPrototype.forEach = forEach;\n  }\n}\n", "var $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.es/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n  entries: function entries(O) {\n    return $entries(O);\n  }\n});\n", "function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.array.for-each.js\";\nimport \"core-js/modules/web.dom-collections.for-each.js\";\nimport \"core-js/modules/es.object.keys.js\";\nimport \"core-js/modules/es.array.index-of.js\";\nimport \"core-js/modules/es.function.name.js\";\nimport \"core-js/modules/es.array.map.js\";\nimport \"core-js/modules/es.object.entries.js\";\nimport \"core-js/modules/es.regexp.exec.js\";\nimport \"core-js/modules/es.string.replace.js\";\nimport \"core-js/modules/es.string.split.js\";\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.regexp.to-string.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\nimport \"core-js/modules/es.array.slice.js\";\nimport \"core-js/modules/es.array.from.js\";\nimport $ from \"jquery\";\nimport { asArray, hasOwnProperty } from \"../utils\";\nimport { isIE } from \"../utils/browser\";\nimport { shinyBindAll, shinyInitializeInputs, shinyUnbindAll } from \"./initedMethods\";\nimport { sendImageSizeFns } from \"./sendImageSize\";\nimport { renderHtml as singletonsRenderHtml } from \"./singletons\";\n\nfunction renderDependencies(dependencies) {\n  if (dependencies) {\n    dependencies.forEach(renderDependency);\n  }\n} // Render HTML in a DOM element, add dependencies, and bind Shiny\n// inputs/outputs. `content` can be null, a string, or an object with\n// properties 'html' and 'deps'.\n\n\nfunction renderContent(el, content) {\n  var where = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"replace\";\n\n  if (where === \"replace\") {\n    shinyUnbindAll(el);\n  }\n\n  var html = \"\";\n  var dependencies = [];\n\n  if (content === null) {\n    html = \"\";\n  } else if (typeof content === \"string\") {\n    html = content;\n  } else if (_typeof(content) === \"object\") {\n    html = content.html;\n    dependencies = content.deps || [];\n  }\n\n  renderHtml(html, el, dependencies, where);\n  var scope = el;\n\n  if (where === \"replace\") {\n    shinyInitializeInputs(el);\n    shinyBindAll(el);\n  } else {\n    var $parent = $(el).parent();\n\n    if ($parent.length > 0) {\n      scope = $parent;\n\n      if (where === \"beforeBegin\" || where === \"afterEnd\") {\n        var $grandparent = $parent.parent();\n        if ($grandparent.length > 0) scope = $grandparent;\n      }\n    }\n\n    shinyInitializeInputs(scope);\n    shinyBindAll(scope);\n  }\n} // Render HTML in a DOM element, inserting singletons into head as needed\n\n\nfunction renderHtml(html, el, dependencies) {\n  var where = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : \"replace\";\n  renderDependencies(dependencies);\n  return singletonsRenderHtml(html, el, where);\n}\n\nvar htmlDependencies = {};\n\nfunction registerDependency(name, version) {\n  htmlDependencies[name] = version;\n} // Re-render stylesheet(s) if the dependency has specificially requested it\n// and it matches an existing dependency (name and version)\n\n\nfunction needsRestyle(dep) {\n  if (!dep.restyle) {\n    return false;\n  }\n\n  var names = Object.keys(htmlDependencies);\n  var idx = names.indexOf(dep.name);\n\n  if (idx === -1) {\n    return false;\n  }\n\n  return htmlDependencies[names[idx]] === dep.version;\n} // Client-side dependency resolution and rendering\n\n\nfunction renderDependency(dep_) {\n  var dep = normalizeHtmlDependency(dep_); // Convert stylesheet objs to links early, because if `restyle` is true, we'll\n  // pass them through to `renderStylesheet` below.\n\n  var stylesheetLinks = dep.stylesheet.map(function (x) {\n    // Add \"rel\" and \"type\" fields if not already present.\n    if (!hasOwnProperty(x, \"rel\")) x.rel = \"stylesheet\";\n    if (!hasOwnProperty(x, \"type\")) x.type = \"text/css\";\n    var link = document.createElement(\"link\");\n    Object.entries(x).forEach(function (_ref) {\n      var _ref2 = _slicedToArray(_ref, 2),\n          attr = _ref2[0],\n          val = _ref2[1];\n\n      if (attr === \"href\") {\n        val = encodeURI(val);\n      } // If val isn't truthy (e.g., null), consider it a boolean attribute\n\n\n      link.setAttribute(attr, val ? val : \"\");\n    });\n    return link;\n  }); // If a restyle is needed, do that stuff and return. Note that other items\n  // (like scripts) aren't added, because they would have been added in a\n  // previous run.\n\n  if (needsRestyle(dep)) {\n    addStylesheetsAndRestyle(stylesheetLinks);\n    return true;\n  }\n\n  if (hasOwnProperty(htmlDependencies, dep.name)) return false;\n  registerDependency(dep.name, dep.version);\n  var $head = $(\"head\").first(); // Add each type of element to the DOM.\n\n  dep.meta.forEach(function (x) {\n    var meta = document.createElement(\"meta\");\n\n    for (var _i2 = 0, _Object$entries = Object.entries(x); _i2 < _Object$entries.length; _i2++) {\n      var _Object$entries$_i = _slicedToArray(_Object$entries[_i2], 2),\n          attr = _Object$entries$_i[0],\n          val = _Object$entries$_i[1];\n\n      meta.setAttribute(attr, val);\n    }\n\n    $head.append(meta);\n  });\n\n  if (stylesheetLinks.length !== 0) {\n    $head.append(stylesheetLinks);\n  }\n\n  dep.script.forEach(function (x) {\n    var script = document.createElement(\"script\");\n    Object.entries(x).forEach(function (_ref3) {\n      var _ref4 = _slicedToArray(_ref3, 2),\n          attr = _ref4[0],\n          val = _ref4[1];\n\n      if (attr === \"src\") {\n        val = encodeURI(val);\n      } // If val isn't truthy (e.g., null), consider it a boolean attribute\n\n\n      script.setAttribute(attr, val ? val : \"\");\n    });\n    $head.append(script);\n  });\n  dep.attachment.forEach(function (x) {\n    var link = $(\"<link rel='attachment'>\").attr(\"id\", dep.name + \"-\" + x.key + \"-attachment\").attr(\"href\", encodeURI(x.href));\n    $head.append(link);\n  });\n\n  if (dep.head) {\n    var $newHead = $(\"<head></head>\");\n    $newHead.html(dep.head);\n    $head.append($newHead.children());\n  }\n\n  return true;\n}\n\nfunction addStylesheetsAndRestyle(links) {\n  var $head = $(\"head\").first(); // This inline <style> based approach works for IE11\n\n  var refreshStyle = function refreshStyle(href, oldSheet) {\n    var xhr = new XMLHttpRequest();\n    xhr.open(\"GET\", href);\n\n    xhr.onload = function () {\n      var id = \"shiny_restyle_\" + href.split(\"?restyle\")[0].replace(/\\W/g, \"_\");\n      var oldStyle = $head.find(\"style#\" + id);\n      var newStyle = $(\"<style>\").attr(\"id\", id).html(xhr.responseText);\n      $head.append(newStyle); // We can remove the old styles immediately because the new styles\n      // should have been applied synchronously.\n\n      oldStyle.remove();\n      removeSheet(oldSheet);\n      sendImageSizeFns.transitioned();\n    };\n\n    xhr.send();\n  };\n\n  var findSheet = function findSheet(href) {\n    if (!href) return null;\n\n    for (var i = 0; i < document.styleSheets.length; i++) {\n      var sheet = document.styleSheets[i]; // The sheet's href is a full URL\n\n      if (typeof sheet.href === \"string\" && sheet.href.indexOf(href) > -1) {\n        return sheet;\n      }\n    }\n\n    return null;\n  }; // Removes the stylesheet from document.styleSheets, and also removes\n  // the owning <link> element, if present.\n\n\n  var removeSheet = function removeSheet(sheet) {\n    if (!sheet) return;\n    sheet.disabled = true; // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore; .cssText doesn't normally exist, but it does on IE?\n\n    if (isIE()) sheet.cssText = \"\";\n\n    if (sheet.ownerNode instanceof Element) {\n      $(sheet.ownerNode).remove();\n    }\n  };\n\n  links.map(function (link) {\n    var $link = $(link); // Find any document.styleSheets that match this link's href\n    // so we can remove it after bringing in the new stylesheet\n\n    var oldSheet = findSheet($link.attr(\"href\")); // Add a timestamp to the href to prevent caching\n\n    var href = $link.attr(\"href\") + \"?restyle=\" + new Date().getTime(); // Use inline <style> approach for IE, otherwise use the more elegant\n    // <link> -based approach\n\n    if (isIE()) {\n      refreshStyle(href, oldSheet);\n    } else {\n      $link.attr(\"href\", href); // This part is a bit tricky. The link's onload callback will be\n      // invoked after the file is loaded, but it can be _before_ the\n      // styles are actually applied. The amount of time it takes for the\n      // style to be applied is not predictable. We need to make sure the\n      // styles are applied before we send updated size/style information\n      // to the server.\n      //\n      // We do this by adding _another_ link, with CSS content\n      // base64-encoded and inlined into the href. We also add a dummy DOM\n      // element that the CSS applies to. The dummy CSS includes a\n      // transition, and when the `transitionend` event happens, we call\n      // sendImageSizeFns.transitioned() and remove the old sheet. We also remove the\n      // dummy DOM element and dummy CSS content.\n      //\n      // The reason this works is because (we assume) that if multiple\n      // <link> tags are added, they will be applied in the same order\n      // that they are loaded. This seems to be true in the browsers we\n      // have tested.\n      //\n      // Because it is common for multiple stylesheets to arrive close\n      // together, but not on exactly the same tick, we call\n      // sendImageSizeFns.transitioned(), which is debounced. Otherwise, it can result in\n      // the same plot being redrawn multiple times with different\n      // styling.\n\n      $link.attr(\"onload\", function () {\n        var $dummyEl = $(\"<div>\").css(\"transition\", \"0.1s all\").css(\"position\", \"absolute\").css(\"top\", \"-1000px\").css(\"left\", \"0\");\n        $dummyEl.one(\"transitionend\", function () {\n          $dummyEl.remove();\n          removeSheet(oldSheet);\n          sendImageSizeFns.transitioned();\n        });\n        $(document.body).append($dummyEl); // To ensure a transition actually happens, change the inline style _after_\n        // the DOM element has been added, and also use a new random color each time\n        // to prevent any potential caching done by the browser\n\n        var color = \"#\" + Math.floor(Math.random() * 16777215).toString(16);\n        setTimeout(function () {\n          return $dummyEl.css(\"color\", color);\n        }, 10);\n      });\n      $head.append(link);\n    }\n  });\n} // Convert legacy HtmlDependency to new HTMLDependency format. This is\n// idempotent; new HTMLDependency objects are returned unchanged.\n\n\nfunction normalizeHtmlDependency(dep) {\n  var _dep$src;\n\n  var hrefPrefix = (_dep$src = dep.src) === null || _dep$src === void 0 ? void 0 : _dep$src.href;\n  var result = {\n    name: dep.name,\n    version: dep.version,\n    restyle: dep.restyle,\n    meta: [],\n    stylesheet: [],\n    script: [],\n    attachment: [],\n    head: dep.head\n  };\n\n  if (dep.meta) {\n    if (Array.isArray(dep.meta)) {\n      // Assume we already have the canonical format:\n      //   [{name: \"myname\", content: \"mycontent\"}, ...]\n      result.meta = dep.meta;\n    } else {\n      // If here, then we have the legacy format, which we have to convert.\n      //   {myname: \"mycontent\", ...}\n      result.meta = Object.entries(dep.meta).map(function (_ref5) {\n        var _ref6 = _slicedToArray(_ref5, 2),\n            attr = _ref6[0],\n            val = _ref6[1];\n\n        return {\n          name: attr,\n          content: val\n        };\n      });\n    }\n  }\n\n  result.stylesheet = asArray(dep.stylesheet).map(function (s) {\n    if (typeof s === \"string\") {\n      s = {\n        href: s\n      };\n    }\n\n    if (hrefPrefix) {\n      s.href = hrefPrefix + \"/\" + s.href;\n    }\n\n    return s;\n  });\n  result.script = asArray(dep.script).map(function (s) {\n    if (typeof s === \"string\") {\n      s = {\n        src: s\n      };\n    }\n\n    if (hrefPrefix) {\n      s.src = hrefPrefix + \"/\" + s.src;\n    }\n\n    return s;\n  }); // dep.attachment might be one of the following types, which we will convert\n  // as shown:\n  // 0. undefined => []\n  // 1. A single string:\n  //    \"foo.txt\"\n  //    => [{key: \"1\", href: \"foo.txt\"}]\n  // 2. An array of strings:\n  //    [\"foo.txt\" ,\"bar.dat\"]\n  //    => [{key: \"1\", href: \"foo.txt\"}, {key: \"2\", href: \"bar.dat\"}]\n  // 3. An object:\n  //    {foo: \"foo.txt\", bar: \"bar.dat\"}\n  //    => [{key: \"foo\", href: \"foo.txt\"}, {key: \"bar\", href: \"bar.dat\"}]\n  // 4. An array of objects:\n  //    [{key: \"foo\", href: \"foo.txt\"}, {key: \"bar\", href: \"bar.dat\"}]\n  //    => (Returned unchanged)\n  //\n  // Note that the first three formats are from legacy code, and the last format\n  // is from new code.\n\n  var attachments = dep.attachment; // Convert format 0 (undefined) to format 2 or 4.\n\n  if (!attachments) attachments = []; // Convert format 1 to format 2.\n\n  if (typeof attachments === \"string\") attachments = [attachments];\n\n  if (Array.isArray(attachments)) {\n    // If we've gotten here, the format is either 2 or 4. Even though they are\n    // quite different, we can handle them both in the same loop.\n    // Need to give TypeScript a bit of help so that it's happy with .map()\n    // below. Instead of a union of two array types, tell it it's an array of\n    // a union of two types.\n    var tmp = attachments; // The contract for attachments is that arrays of attachments are\n    // addressed using 1-based indexes. Convert this array to an object.\n\n    attachments = tmp.map(function (attachment, index) {\n      if (typeof attachment === \"string\") {\n        return {\n          key: (index + 1).toString(),\n          href: attachment\n        };\n      } else {\n        return attachment;\n      }\n    });\n  } else {\n    // If we got here, it's format 3.\n    attachments = Object.entries(attachments).map(function (_ref7) {\n      var _ref8 = _slicedToArray(_ref7, 2),\n          attr = _ref8[0],\n          val = _ref8[1];\n\n      return {\n        key: attr,\n        href: val\n      };\n    });\n  } // At this point, we've normalized the format to #4. Now we can iterate over\n  // it and prepend `hrefPrefix`.\n\n\n  result.attachment = attachments.map(function (s) {\n    if (hrefPrefix) {\n      s.href = hrefPrefix + \"/\" + s.href;\n    }\n\n    return s;\n  });\n  return result;\n}\n\nexport { renderDependencies, renderContent, renderHtml, registerDependency };", "var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n  // eslint-disable-next-line es/no-array-from -- required for testing\n  Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n  from: from\n});\n", "function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { debounce, Debouncer } from \"../time\";\n\nvar SendImageSize = /*#__PURE__*/function () {\n  function SendImageSize() {\n    _classCallCheck(this, SendImageSize);\n\n    _defineProperty(this, \"regular\", void 0);\n\n    _defineProperty(this, \"transitioned\", void 0);\n  }\n\n  _createClass(SendImageSize, [{\n    key: \"setImageSend\",\n    value: function setImageSend(inputBatchSender, doSendImageSize) {\n      var sendImageSizeDebouncer = new Debouncer(null, doSendImageSize, 0);\n\n      this.regular = function () {\n        sendImageSizeDebouncer.normalCall();\n      }; // Make sure sendImageSize actually gets called before the inputBatchSender\n      // sends data to the server.\n\n\n      inputBatchSender.lastChanceCallback.push(function () {\n        if (sendImageSizeDebouncer.isPending()) sendImageSizeDebouncer.immediateCall();\n      }); // A version of sendImageSize which debounces for longer.\n\n      this.transitioned = debounce(200, this.regular);\n      return sendImageSizeDebouncer;\n    }\n  }]);\n\n  return SendImageSize;\n}();\n\nvar sendImageSizeFns = new SendImageSize();\nexport { sendImageSizeFns };", "import \"core-js/modules/es.regexp.exec.js\";\nimport \"core-js/modules/es.string.replace.js\";\nimport \"core-js/modules/es.array.join.js\";\nimport $ from \"jquery\";\nimport { toLowerCase } from \"../utils\";\nvar reSingleton = /<!--(SHINY.SINGLETON\\[([\\w]+)\\])-->([\\s\\S]*?)<!--\\/\\1-->/;\nvar reHead = /<head(?:\\s[^>]*)?>([\\s\\S]*?)<\\/head>/;\nvar knownSingletons = {};\n\nfunction renderHtml(html, el, where) {\n  var processed = processHtml(html);\n  addToHead(processed.head);\n  register(processed.singletons);\n\n  if (where === \"replace\") {\n    $(el).html(processed.html);\n  } else {\n    var elElements;\n\n    if (el instanceof HTMLElement) {\n      elElements = [el];\n    } else {\n      elElements = el.toArray();\n    }\n\n    $.each(elElements, function (i, el) {\n      // type InsertPosition = \"beforebegin\" | \"afterbegin\" | \"beforeend\" | \"afterend\"\n      el.insertAdjacentHTML(toLowerCase(where), processed.html);\n    });\n  }\n\n  return processed;\n} // Take an object where keys are names of singletons, and merges it into\n// knownSingletons\n\n\nfunction register(s) {\n  $.extend(knownSingletons, s);\n} // Takes a string or array of strings and adds them to knownSingletons\n\n\nfunction registerNames(s) {\n  if (typeof s === \"string\") {\n    knownSingletons[s] = true;\n  } else if (s instanceof Array) {\n    for (var i = 0; i < s.length; i++) {\n      knownSingletons[s[i]] = true;\n    }\n  }\n} // Inserts new content into document head\n\n\nfunction addToHead(head) {\n  if (head.length > 0) {\n    var tempDiv = $(\"<div>\" + head + \"</div>\").get(0);\n    var $head = $(\"head\");\n\n    while (tempDiv.hasChildNodes()) {\n      // @ts-expect-error; TODO-barret; IDK how this function works. Seems like it would add the first child forever.\n      $head.append(tempDiv.firstChild);\n    }\n  }\n} // Reads HTML and returns an object with info about singletons\n\n\nfunction processHtml(val) {\n  var newSingletons = {};\n  var newVal;\n\n  var findNewPayload = function findNewPayload(match, p1, sig, payload) {\n    if (knownSingletons[sig] || newSingletons[sig]) return \"\";\n    newSingletons[sig] = true;\n    return payload;\n  }; // eslint-disable-next-line no-constant-condition\n\n\n  while (true) {\n    newVal = val.replace(reSingleton, findNewPayload);\n    if (val.length === newVal.length) break;\n    val = newVal;\n  }\n\n  var heads = [];\n\n  var headAddPayload = function headAddPayload(match, payload) {\n    heads.push(payload);\n    return \"\";\n  }; // eslint-disable-next-line no-constant-condition\n\n\n  while (true) {\n    newVal = val.replace(reHead, headAddPayload);\n    if (val.length === newVal.length) break;\n    val = newVal;\n  }\n\n  return {\n    html: val,\n    head: heads.join(\"\\n\"),\n    singletons: newSingletons\n  };\n}\n\nexport { renderHtml, registerNames };", "'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  filter: function filter(callbackfn /* , thisArg */) {\n    return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.function.name.js\";\nimport \"core-js/modules/es.array.filter.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport $ from \"jquery\";\nimport { OutputBinding } from \"./outputBinding\";\nimport { createBrushHandler, createClickHandler, createClickInfo, createHoverHandler, disableDrag, initCoordmap } from \"../../imageutils\";\nimport { strToBool, getComputedLinkColor, getStyle, hasOwnProperty } from \"../../utils\";\nimport { isIE, IEVersion } from \"../../utils/browser\";\n\nvar ImageOutputBinding = /*#__PURE__*/function (_OutputBinding) {\n  _inherits(ImageOutputBinding, _OutputBinding);\n\n  var _super = _createSuper(ImageOutputBinding);\n\n  function ImageOutputBinding() {\n    _classCallCheck(this, ImageOutputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(ImageOutputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find(\".shiny-image-output, .shiny-plot-output\");\n    }\n  }, {\n    key: \"renderValue\",\n    value: function renderValue(el, data) {\n      // The overall strategy:\n      // * Clear out existing image and event handlers.\n      // * Create new image.\n      // * Create various event handlers.\n      // * Bind those event handlers to events.\n      // * Insert the new image.\n      var outputId = this.getId(el);\n      var $el = $(el);\n      var img; // Get existing img element if present.\n\n      var $img = $el.find(\"img\");\n\n      if ($img.length === 0) {\n        // If a img element is not already present, that means this is either\n        // the first time renderValue() has been called, or this is after an\n        // error.\n        img = document.createElement(\"img\");\n        $el.append(img);\n        $img = $(img);\n      } else {\n        // Trigger custom 'reset' event for any existing images in the div\n        img = $img[0];\n        $img.trigger(\"reset\");\n      }\n\n      if (!data) {\n        $el.empty();\n        return;\n      } // If value is undefined, return alternate. Sort of like ||, except it won't\n      // return alternate for other falsy values (0, false, null).\n\n\n      function ifUndefined(value, alternate) {\n        if (value === undefined) return alternate;\n        return value;\n      }\n\n      var opts = {\n        clickId: $el.data(\"click-id\"),\n        clickClip: ifUndefined(strToBool($el.data(\"click-clip\")), true),\n        dblclickId: $el.data(\"dblclick-id\"),\n        dblclickClip: ifUndefined(strToBool($el.data(\"dblclick-clip\")), true),\n        dblclickDelay: ifUndefined($el.data(\"dblclick-delay\"), 400),\n        hoverId: $el.data(\"hover-id\"),\n        hoverClip: ifUndefined(strToBool($el.data(\"hover-clip\")), true),\n        hoverDelayType: ifUndefined($el.data(\"hover-delay-type\"), \"debounce\"),\n        hoverDelay: ifUndefined($el.data(\"hover-delay\"), 300),\n        hoverNullOutside: ifUndefined(strToBool($el.data(\"hover-null-outside\")), false),\n        brushId: $el.data(\"brush-id\"),\n        brushClip: ifUndefined(strToBool($el.data(\"brush-clip\")), true),\n        brushDelayType: ifUndefined($el.data(\"brush-delay-type\"), \"debounce\"),\n        brushDelay: ifUndefined($el.data(\"brush-delay\"), 300),\n        brushFill: ifUndefined($el.data(\"brush-fill\"), \"#666\"),\n        brushStroke: ifUndefined($el.data(\"brush-stroke\"), \"#000\"),\n        brushOpacity: ifUndefined($el.data(\"brush-opacity\"), 0.3),\n        brushDirection: ifUndefined($el.data(\"brush-direction\"), \"xy\"),\n        brushResetOnNew: ifUndefined(strToBool($el.data(\"brush-reset-on-new\")), false),\n        coordmap: data.coordmap\n      };\n\n      if (opts.brushFill === \"auto\") {\n        opts.brushFill = getComputedLinkColor($el[0]);\n      }\n\n      if (opts.brushStroke === \"auto\") {\n        opts.brushStroke = getStyle($el[0], \"color\");\n      } // Copy items from data to img. Don't set the coordmap as an attribute.\n\n\n      $.each(data, function (key, value) {\n        if (value === null || key === \"coordmap\") {\n          return;\n        } // this checks only against base64 encoded src values\n        // images put here are only from renderImage and renderPlot\n\n\n        if (key === \"src\" && value === img.getAttribute(\"src\")) {\n          // Ensure the browser actually fires an onLoad event, which doesn't\n          // happen on WebKit if the value we set on src is the same as the\n          // value it already has\n          // https://github.com/rstudio/shiny/issues/2197\n          // https://stackoverflow.com/questions/5024111/javascript-image-onload-doesnt-fire-in-webkit-if-loading-same-image\n          img.removeAttribute(\"src\");\n        }\n\n        img.setAttribute(key, value);\n      }); // Unset any attributes in the current img that were not provided in the\n      // new data.\n\n      for (var i = 0; i < img.attributes.length; i++) {\n        var attrib = img.attributes[i]; // Need to check attrib.specified on IE because img.attributes contains\n        // all possible attributes on IE.\n\n        if (attrib.specified && !hasOwnProperty(data, attrib.name)) {\n          img.removeAttribute(attrib.name);\n        }\n      }\n\n      if (!opts.coordmap) {\n        opts.coordmap = {\n          panels: [],\n          dims: {\n            // These values be set to the naturalWidth and naturalHeight once the image has loaded\n            height: null,\n            width: null\n          }\n        };\n      } // Remove event handlers that were added in previous runs of this function.\n\n\n      $el.off(\".image_output\");\n      $img.off(\".image_output\"); // When the image loads, initialize all the interaction handlers. When the\n      // value of src is set, the browser may not load the image immediately,\n      // even if it's a data URL. If we try to initialize this stuff\n      // immediately, it can cause problems because we use we need the raw image\n      // height and width\n\n      $img.off(\"load.shiny_image_interaction\");\n      $img.one(\"load.shiny_image_interaction\", function () {\n        // Use a local variable so the type check is happy\n        var optsCoordmap = opts.coordmap = initCoordmap($el, opts.coordmap); // This object listens for mousedowns, and triggers mousedown2 and dblclick2\n        // events as appropriate.\n\n        var clickInfo = createClickInfo($el, opts.dblclickId, opts.dblclickDelay);\n        $el.on(\"mousedown.image_output\", clickInfo.mousedown);\n\n        if (isIE() && IEVersion() === 8) {\n          $el.on(\"dblclick.image_output\", clickInfo.dblclickIE8);\n        } // ----------------------------------------------------------\n        // Register the various event handlers\n        // ----------------------------------------------------------\n\n\n        if (opts.clickId) {\n          disableDrag($el, $img);\n          var clickHandler = createClickHandler(opts.clickId, opts.clickClip, optsCoordmap);\n          $el.on(\"mousedown2.image_output\", clickHandler.mousedown);\n          $el.on(\"resize.image_output\", clickHandler.onResize); // When img is reset, do housekeeping: clear $el's mouse listener and\n          // call the handler's onResetImg callback.\n\n          $img.on(\"reset.image_output\", clickHandler.onResetImg);\n        }\n\n        if (opts.dblclickId) {\n          disableDrag($el, $img); // We'll use the clickHandler's mousedown function, but register it to\n          // our custom 'dblclick2' event.\n\n          var dblclickHandler = createClickHandler(opts.dblclickId, opts.clickClip, optsCoordmap);\n          $el.on(\"dblclick2.image_output\", dblclickHandler.mousedown);\n          $el.on(\"resize.image_output\", dblclickHandler.onResize);\n          $img.on(\"reset.image_output\", dblclickHandler.onResetImg);\n        }\n\n        if (opts.hoverId) {\n          disableDrag($el, $img);\n          var hoverHandler = createHoverHandler(opts.hoverId, opts.hoverDelay, opts.hoverDelayType, opts.hoverClip, opts.hoverNullOutside, optsCoordmap);\n          $el.on(\"mousemove.image_output\", hoverHandler.mousemove);\n          $el.on(\"mouseout.image_output\", hoverHandler.mouseout);\n          $el.on(\"resize.image_output\", hoverHandler.onResize);\n          $img.on(\"reset.image_output\", hoverHandler.onResetImg);\n        }\n\n        if (opts.brushId) {\n          disableDrag($el, $img);\n          var brushHandler = createBrushHandler(opts.brushId, $el, opts, optsCoordmap, outputId);\n          $el.on(\"mousedown.image_output\", brushHandler.mousedown);\n          $el.on(\"mousemove.image_output\", brushHandler.mousemove);\n          $el.on(\"resize.image_output\", brushHandler.onResize);\n          $img.on(\"reset.image_output\", brushHandler.onResetImg);\n        }\n\n        if (opts.clickId || opts.dblclickId || opts.hoverId || opts.brushId) {\n          $el.addClass(\"crosshair\");\n        }\n\n        if (data.error) console.log(\"Error on server extracting coordmap: \" + data.error);\n      });\n    }\n  }, {\n    key: \"renderError\",\n    value: function renderError(el, err) {\n      $(el).find(\"img\").trigger(\"reset\");\n      OutputBinding.prototype.renderError.call(this, el, err);\n    }\n  }, {\n    key: \"clearError\",\n    value: function clearError(el) {\n      // Remove all elements except img and the brush; this is usually just\n      // error messages.\n      $(el).contents().filter(function () {\n        return !(this instanceof HTMLElement && (this.tagName === \"IMG\" || this.id === el.id + \"_brush\"));\n      }).remove(); // TODO-barret does this work?: `super.clearError(el)`\n\n      OutputBinding.prototype.clearError.call(this, el);\n    }\n  }, {\n    key: \"resize\",\n    value: function resize(el, width, height) {\n      $(el).find(\"img\").trigger(\"resize\");\n      return;\n      width;\n      height;\n    }\n  }]);\n\n  return ImageOutputBinding;\n}(OutputBinding);\n\nvar imageOutputBinding = new ImageOutputBinding();\nexport { imageOutputBinding, ImageOutputBinding };", "import \"core-js/modules/es.array.find.js\";\nimport $ from \"jquery\";\nimport { findOrigin } from \"./initCoordmap\";\nimport { equal, isnan, mapValues, roundSignif } from \"../utils\";\nimport { findBox } from \"./findbox\";\nimport { shiftToRange } from \"./shiftToRange\";\n\n// Returns an object that represents the state of the brush. This gets wrapped\n// in a brushHandler, which provides various event listeners.\nfunction createBrush($el, opts, coordmap, expandPixels) {\n  // Number of pixels outside of brush to allow start resizing\n  var resizeExpand = 10;\n  var el = $el[0];\n  var $div = null; // The div representing the brush\n\n  var state = {}; // Aliases for conciseness\n\n  var cssToImg = coordmap.scaleCssToImg;\n  var imgToCss = coordmap.scaleImgToCss;\n  reset();\n\n  function reset() {\n    // Current brushing/dragging/resizing state\n    state.brushing = false;\n    state.dragging = false;\n    state.resizing = false; // Offset of last mouse down and up events (in CSS pixels)\n\n    state.down = {\n      x: NaN,\n      y: NaN\n    };\n    state.up = {\n      x: NaN,\n      y: NaN\n    }; // Which side(s) we're currently resizing\n\n    state.resizeSides = {\n      left: false,\n      right: false,\n      top: false,\n      bottom: false\n    }; // Bounding rectangle of the brush, in CSS pixel and data dimensions. We\n    // need to record data dimensions along with pixel dimensions so that when\n    // a new plot is sent, we can re-draw the brush div with the appropriate\n    // coords.\n\n    state.boundsCss = {\n      xmin: NaN,\n      xmax: NaN,\n      ymin: NaN,\n      ymax: NaN\n    };\n    state.boundsData = {\n      xmin: NaN,\n      xmax: NaN,\n      ymin: NaN,\n      ymax: NaN\n    }; // Panel object that the brush is in\n\n    state.panel = null; // The bounds at the start of a drag/resize (in CSS pixels)\n\n    state.changeStartBounds = {\n      xmin: NaN,\n      xmax: NaN,\n      ymin: NaN,\n      ymax: NaN\n    };\n    if ($div) $div.remove();\n  } // If there's an existing brush div, use that div to set the new brush's\n  // settings, provided that the x, y, and panel variables have the same names,\n  // and there's a panel with matching panel variable values.\n\n\n  function importOldBrush() {\n    var oldDiv = $el.find(\"#\" + el.id + \"_brush\");\n    if (oldDiv.length === 0) return;\n    var oldBoundsData = oldDiv.data(\"bounds-data\");\n    var oldPanel = oldDiv.data(\"panel\");\n    if (!oldBoundsData || !oldPanel) return; // Find a panel that has matching vars; if none found, we can't restore.\n    // The oldPanel and new panel must match on their mapping vars, and the\n    // values.\n\n    for (var i = 0; i < coordmap.panels.length; i++) {\n      var curPanel = coordmap.panels[i];\n\n      if (equal(oldPanel.mapping, curPanel.mapping) && equal(oldPanel.panel_vars, curPanel.panel_vars)) {\n        // We've found a matching panel\n        state.panel = coordmap.panels[i];\n        break;\n      }\n    } // If we didn't find a matching panel, remove the old div and return\n\n\n    if (state.panel === null) {\n      oldDiv.remove();\n      return;\n    }\n\n    $div = oldDiv;\n    boundsData(oldBoundsData);\n    updateDiv();\n  } // This will reposition the brush div when the image is resized, maintaining\n  // the same data coordinates. Note that the \"resize\" here refers to the\n  // wrapper div/img being resized; elsewhere, \"resize\" refers to the brush\n  // div being resized.\n\n\n  function onResize() {\n    var boundsDataVal = boundsData(); // Check to see if we have valid boundsData\n\n    for (var val in boundsDataVal) {\n      if (isnan(boundsDataVal[val])) return;\n    }\n\n    boundsData(boundsDataVal);\n    updateDiv();\n  } // Return true if the offset is inside min/max coords\n\n\n  function isInsideBrush(offsetCss) {\n    var bounds = state.boundsCss;\n    return offsetCss.x <= bounds.xmax && offsetCss.x >= bounds.xmin && offsetCss.y <= bounds.ymax && offsetCss.y >= bounds.ymin;\n  } // Return true if offset is inside a region to start a resize\n\n\n  function isInResizeArea(offsetCss) {\n    var sides = whichResizeSides(offsetCss);\n    return sides.left || sides.right || sides.top || sides.bottom;\n  } // Return an object representing which resize region(s) the cursor is in.\n\n\n  function whichResizeSides(offsetCss) {\n    var b = state.boundsCss; // Bounds with expansion\n\n    var e = {\n      xmin: b.xmin - resizeExpand,\n      xmax: b.xmax + resizeExpand,\n      ymin: b.ymin - resizeExpand,\n      ymax: b.ymax + resizeExpand\n    };\n    var res = {\n      left: false,\n      right: false,\n      top: false,\n      bottom: false\n    };\n\n    if ((opts.brushDirection === \"xy\" || opts.brushDirection === \"x\") && offsetCss.y <= e.ymax && offsetCss.y >= e.ymin) {\n      if (offsetCss.x < b.xmin && offsetCss.x >= e.xmin) res.left = true;else if (offsetCss.x > b.xmax && offsetCss.x <= e.xmax) res.right = true;\n    }\n\n    if ((opts.brushDirection === \"xy\" || opts.brushDirection === \"y\") && offsetCss.x <= e.xmax && offsetCss.x >= e.xmin) {\n      if (offsetCss.y < b.ymin && offsetCss.y >= e.ymin) res.top = true;else if (offsetCss.y > b.ymax && offsetCss.y <= e.ymax) res.bottom = true;\n    }\n\n    return res;\n  } // Sets the bounds of the brush (in CSS pixels), given a box and optional\n  // panel. This will fit the box bounds into the panel, so we don't brush\n  // outside of it. This knows whether we're brushing in the x, y, or xy\n  // directions, and sets bounds accordingly. If no box is passed in, just\n  // return current bounds.\n\n\n  function boundsCss(boxCss) {\n    if (boxCss === undefined) {\n      return $.extend({}, state.boundsCss);\n    }\n\n    var minCss = {\n      x: boxCss.xmin,\n      y: boxCss.ymin\n    };\n    var maxCss = {\n      x: boxCss.xmax,\n      y: boxCss.ymax\n    };\n    var panel = state.panel;\n    var panelBoundsImg = panel.range;\n\n    if (opts.brushClip) {\n      minCss = imgToCss(panel.clipImg(cssToImg(minCss)));\n      maxCss = imgToCss(panel.clipImg(cssToImg(maxCss)));\n    }\n\n    if (opts.brushDirection === \"xy\") {// No change\n    } else if (opts.brushDirection === \"x\") {\n      // Extend top and bottom of plotting area\n      minCss.y = imgToCss({\n        y: panelBoundsImg.top\n      }).y;\n      maxCss.y = imgToCss({\n        y: panelBoundsImg.bottom\n      }).y;\n    } else if (opts.brushDirection === \"y\") {\n      minCss.x = imgToCss({\n        x: panelBoundsImg.left\n      }).x;\n      maxCss.x = imgToCss({\n        x: panelBoundsImg.right\n      }).x;\n    }\n\n    state.boundsCss = {\n      xmin: minCss.x,\n      xmax: maxCss.x,\n      ymin: minCss.y,\n      ymax: maxCss.y\n    }; // Positions in data space\n\n    var minData = state.panel.scaleImgToData(cssToImg(minCss));\n    var maxData = state.panel.scaleImgToData(cssToImg(maxCss)); // For reversed scales, the min and max can be reversed, so use findBox\n    // to ensure correct order.\n\n    state.boundsData = findBox(minData, maxData); // Round to 14 significant digits to avoid spurious changes in FP values\n    // (#1634).\n\n    state.boundsData = mapValues(state.boundsData, function (val) {\n      return roundSignif(val, 14);\n    }); // We also need to attach the data bounds and panel as data attributes, so\n    // that if the image is re-sent, we can grab the data bounds to create a new\n    // brush. This should be fast because it doesn't actually modify the DOM.\n\n    $div.data(\"bounds-data\", state.boundsData);\n    $div.data(\"panel\", state.panel);\n    return undefined;\n  } // Get or set the bounds of the brush using coordinates in the data space.\n\n\n  function boundsData(boxData) {\n    if (boxData === undefined) {\n      return $.extend({}, state.boundsData);\n    }\n\n    var boxCss = imgToCss(state.panel.scaleDataToImg(boxData)); // Round to 13 significant digits to avoid spurious changes in FP values\n    // (#2197).\n\n    boxCss = mapValues(boxCss, function (val) {\n      return roundSignif(val, 13);\n    }); // The scaling function can reverse the direction of the axes, so we need to\n    // find the min and max again.\n\n    boundsCss({\n      xmin: Math.min(boxCss.xmin, boxCss.xmax),\n      xmax: Math.max(boxCss.xmin, boxCss.xmax),\n      ymin: Math.min(boxCss.ymin, boxCss.ymax),\n      ymax: Math.max(boxCss.ymin, boxCss.ymax)\n    });\n    return undefined;\n  }\n\n  function getPanel() {\n    return state.panel;\n  } // Add a new div representing the brush.\n\n\n  function addDiv() {\n    if ($div) $div.remove(); // Start hidden; we'll show it when movement occurs\n\n    $div = $(document.createElement(\"div\")).attr(\"id\", el.id + \"_brush\").css({\n      \"background-color\": opts.brushFill,\n      opacity: opts.brushOpacity,\n      \"pointer-events\": \"none\",\n      position: \"absolute\"\n    }).hide();\n    var borderStyle = \"1px solid \" + opts.brushStroke;\n\n    if (opts.brushDirection === \"xy\") {\n      $div.css({\n        border: borderStyle\n      });\n    } else if (opts.brushDirection === \"x\") {\n      $div.css({\n        \"border-left\": borderStyle,\n        \"border-right\": borderStyle\n      });\n    } else if (opts.brushDirection === \"y\") {\n      $div.css({\n        \"border-top\": borderStyle,\n        \"border-bottom\": borderStyle\n      });\n    }\n\n    $el.append($div);\n    $div.offset({\n      x: 0,\n      y: 0\n    }).width(0).outerHeight(0);\n  } // Update the brush div to reflect the current brush bounds.\n\n\n  function updateDiv() {\n    // Need parent offset relative to page to calculate mouse offset\n    // relative to page.\n    var imgOffsetCss = findOrigin($el.find(\"img\"));\n    var b = state.boundsCss;\n    $div.offset({\n      top: imgOffsetCss.y + b.ymin,\n      left: imgOffsetCss.x + b.xmin\n    }).outerWidth(b.xmax - b.xmin + 1).outerHeight(b.ymax - b.ymin + 1);\n  }\n\n  function down(offsetCss) {\n    if (offsetCss === undefined) return state.down;\n    state.down = offsetCss;\n    return undefined;\n  }\n\n  function up(offsetCss) {\n    if (offsetCss === undefined) return state.up;\n    state.up = offsetCss;\n    return undefined;\n  }\n\n  function isBrushing() {\n    return state.brushing;\n  }\n\n  function startBrushing() {\n    state.brushing = true;\n    addDiv();\n    state.panel = coordmap.getPanelCss(state.down, expandPixels);\n    boundsCss(findBox(state.down, state.down));\n    updateDiv();\n  }\n\n  function brushTo(offsetCss) {\n    boundsCss(findBox(state.down, offsetCss));\n    $div.show();\n    updateDiv();\n  }\n\n  function stopBrushing() {\n    state.brushing = false; // Save the final bounding box of the brush\n\n    boundsCss(findBox(state.down, state.up));\n  }\n\n  function isDragging() {\n    return state.dragging;\n  }\n\n  function startDragging() {\n    state.dragging = true;\n    state.changeStartBounds = $.extend({}, state.boundsCss);\n  }\n\n  function dragTo(offsetCss) {\n    // How far the brush was dragged\n    var dx = offsetCss.x - state.down.x;\n    var dy = offsetCss.y - state.down.y; // Calculate what new positions would be, before clipping.\n\n    var start = state.changeStartBounds;\n    var newBoundsCss = {\n      xmin: start.xmin + dx,\n      xmax: start.xmax + dx,\n      ymin: start.ymin + dy,\n      ymax: start.ymax + dy\n    }; // Clip to the plotting area\n\n    if (opts.brushClip) {\n      var panelBoundsImg = state.panel.range;\n      var newBoundsImg = cssToImg(newBoundsCss); // Convert to format for shiftToRange\n\n      var xvalsImg = [newBoundsImg.xmin, newBoundsImg.xmax];\n      var yvalsImg = [newBoundsImg.ymin, newBoundsImg.ymax];\n      xvalsImg = shiftToRange(xvalsImg, panelBoundsImg.left, panelBoundsImg.right);\n      yvalsImg = shiftToRange(yvalsImg, panelBoundsImg.top, panelBoundsImg.bottom); // Convert back to bounds format\n\n      newBoundsCss = imgToCss({\n        xmin: xvalsImg[0],\n        xmax: xvalsImg[1],\n        ymin: yvalsImg[0],\n        ymax: yvalsImg[1]\n      });\n    }\n\n    boundsCss(newBoundsCss);\n    updateDiv();\n  }\n\n  function stopDragging() {\n    state.dragging = false;\n  }\n\n  function isResizing() {\n    return state.resizing;\n  }\n\n  function startResizing() {\n    state.resizing = true;\n    state.changeStartBounds = $.extend({}, state.boundsCss);\n    state.resizeSides = whichResizeSides(state.down);\n  }\n\n  function resizeTo(offsetCss) {\n    // How far the brush was dragged\n    var dCss = {\n      x: offsetCss.x - state.down.x,\n      y: offsetCss.y - state.down.y\n    };\n    var dImg = cssToImg(dCss); // Calculate what new positions would be, before clipping.\n\n    var bImg = cssToImg(state.changeStartBounds);\n    var panelBoundsImg = state.panel.range;\n\n    if (state.resizeSides.left) {\n      var xminImg = shiftToRange(bImg.xmin + dImg.x, panelBoundsImg.left, bImg.xmax)[0];\n      bImg.xmin = xminImg;\n    } else if (state.resizeSides.right) {\n      var xmaxImg = shiftToRange(bImg.xmax + dImg.x, bImg.xmin, panelBoundsImg.right)[0];\n      bImg.xmax = xmaxImg;\n    }\n\n    if (state.resizeSides.top) {\n      var yminImg = shiftToRange(bImg.ymin + dImg.y, panelBoundsImg.top, bImg.ymax)[0];\n      bImg.ymin = yminImg;\n    } else if (state.resizeSides.bottom) {\n      var ymaxImg = shiftToRange(bImg.ymax + dImg.y, bImg.ymin, panelBoundsImg.bottom)[0];\n      bImg.ymax = ymaxImg;\n    }\n\n    boundsCss(imgToCss(bImg));\n    updateDiv();\n  }\n\n  function stopResizing() {\n    state.resizing = false;\n  }\n\n  return {\n    reset: reset,\n    importOldBrush: importOldBrush,\n    isInsideBrush: isInsideBrush,\n    isInResizeArea: isInResizeArea,\n    whichResizeSides: whichResizeSides,\n    onResize: onResize,\n    // A callback when the wrapper div or img is resized.\n    boundsCss: boundsCss,\n    boundsData: boundsData,\n    getPanel: getPanel,\n    down: down,\n    up: up,\n    isBrushing: isBrushing,\n    startBrushing: startBrushing,\n    brushTo: brushTo,\n    stopBrushing: stopBrushing,\n    isDragging: isDragging,\n    startDragging: startDragging,\n    dragTo: dragTo,\n    stopDragging: stopDragging,\n    isResizing: isResizing,\n    startResizing: startResizing,\n    resizeTo: resizeTo,\n    stopResizing: stopResizing\n  };\n}\n\nexport { createBrush };", "import \"core-js/modules/es.parse-int.js\";\nimport \"core-js/modules/es.array.find.js\";\nimport $ from \"jquery\";\nimport { shinySetInputValue } from \"../shiny/initedMethods\";\nimport { mapValues } from \"../utils\";\nimport { initPanelScales } from \"./initPanelScales\"; // -----------------------------------------------------------------------\n// Utility functions for finding dimensions and locations of DOM elements\n// -----------------------------------------------------------------------\n// Returns the ratio that an element has been scaled (for example, by CSS\n// transforms) in the x and y directions.\n\nfunction findScalingRatio($el) {\n  var boundingRect = $el[0].getBoundingClientRect();\n  return {\n    x: boundingRect.width / $el.outerWidth(),\n    y: boundingRect.height / $el.outerHeight()\n  };\n}\n\nfunction findOrigin($el) {\n  var offset = $el.offset();\n  var scalingRatio = findScalingRatio($el); // Find the size of the padding and border, for the top and left. This is\n  // before any transforms.\n\n  var paddingBorder = {\n    left: parseInt($el.css(\"border-left-width\")) + parseInt($el.css(\"padding-left\")),\n    top: parseInt($el.css(\"border-top-width\")) + parseInt($el.css(\"padding-top\"))\n  }; // offset() returns the upper left corner of the element relative to the\n  // page, but it includes padding and border. Here we find the upper left\n  // of the element, not including padding and border.\n\n  return {\n    x: offset.left + scalingRatio.x * paddingBorder.left,\n    y: offset.top + scalingRatio.y * paddingBorder.top\n  };\n} // Find the dimensions of a tag, after transforms, and without padding and\n// border.\n\n\nfunction findDims($el) {\n  // If there's any padding/border, we need to find the ratio of the actual\n  // element content compared to the element plus padding and border.\n  var contentRatio = {\n    x: $el.width() / $el.outerWidth(),\n    y: $el.height() / $el.outerHeight()\n  }; // Get the dimensions of the element _after_ any CSS transforms. This\n  // includes the padding and border.\n\n  var boundingRect = $el[0].getBoundingClientRect(); // Dimensions of the element after any CSS transforms, and without\n  // padding/border.\n\n  return {\n    x: contentRatio.x * boundingRect.width,\n    y: contentRatio.y * boundingRect.height\n  };\n}\n\n// This adds functions to the coordmap object to handle various\n// coordinate-mapping tasks, and send information to the server. The input\n// coordmap is an array of objects, each of which represents a panel. coordmap\n// must be an array, even if empty, so that it can be modified in place; when\n// empty, we add a dummy panel to the array. It also calls initPanelScales,\n// which modifies each panel object to have scaleImgToData, scaleDataToImg,\n// and clip functions.\n//\n// There are three coordinate spaces which we need to translate between:\n//\n// 1. css: The pixel coordinates in the web browser, also known as CSS pixels.\n//    The origin is the upper-left corner of the <img> (not including padding\n//    and border).\n// 2. img: The pixel coordinates of the image data. A common case is on a\n//    HiDPI device, where the source PNG image could be 1000 pixels wide but\n//    be displayed in 500 CSS pixels. Another case is when the image has\n//    additional scaling due to CSS transforms or width.\n// 3. data: The coordinates in the data space. This is a bit more complicated\n//    than the other two, because there can be multiple panels (as in facets).\nfunction initCoordmap($el, coordmap_) {\n  var coordmap = coordmap_;\n  var $img = $el.find(\"img\");\n  var img = $img[0]; // If we didn't get any panels, create a dummy one where the domain and range\n  // are simply the pixel dimensions.\n  // that we modify.\n\n  if (coordmap.panels.length === 0) {\n    var bounds = {\n      top: 0,\n      left: 0,\n      right: img.clientWidth - 1,\n      bottom: img.clientHeight - 1\n    };\n    coordmap.panels[0] = {\n      domain: bounds,\n      range: bounds,\n      mapping: {}\n    };\n  } // If no dim height and width values are found, set them to the raw image height and width\n  // These values should be the same...\n  // This is only done to initialize an image output, whose height and width are unknown until the image is retrieved\n\n\n  coordmap.dims.height = coordmap.dims.height || img.naturalHeight;\n  coordmap.dims.width = coordmap.dims.width || img.naturalWidth; // Add scaling functions to each panel\n\n  initPanelScales(coordmap.panels); // This returns the offset of the mouse in CSS pixels relative to the img,\n  // but not including the  padding or border, if present.\n\n  coordmap.mouseOffsetCss = function (mouseEvent) {\n    var imgOrigin = findOrigin($img); // The offset of the mouse from the upper-left corner of the img, in\n    // pixels.\n\n    return {\n      x: mouseEvent.pageX - imgOrigin.x,\n      y: mouseEvent.pageY - imgOrigin.y\n    };\n  }; // Given an offset in an img in CSS pixels, return the corresponding offset\n  // in source image pixels. The offsetCss can have properties like \"x\",\n  // \"xmin\", \"y\", and \"ymax\" -- anything that starts with \"x\" and \"y\". If the\n  // img content is 1000 pixels wide, but is scaled to 400 pixels on screen,\n  // and the input is x:400, then this will return x:1000.\n\n\n  function scaleCssToImg(offsetCss) {\n    var pixelScaling = coordmap.imgToCssScalingRatio();\n    var result = mapValues(offsetCss, function (value, key) {\n      var prefix = key.substring(0, 1);\n\n      if (prefix === \"x\") {\n        return offsetCss[key] / pixelScaling.x;\n      } else if (prefix === \"y\") {\n        return offsetCss[key] / pixelScaling.y;\n      }\n\n      return null;\n    });\n    return result;\n  }\n\n  coordmap.scaleCssToImg = scaleCssToImg; // Given an offset in an img, in source image pixels, return the\n  // corresponding offset in CSS pixels. If the img content is 1000 pixels\n  // wide, but is scaled to 400 pixels on screen, and the input is x:1000,\n  // then this will return x:400.\n\n  function scaleImgToCss(offsetImg) {\n    var pixelScaling = coordmap.imgToCssScalingRatio();\n    var result = mapValues(offsetImg, function (value, key) {\n      var prefix = key.substring(0, 1);\n\n      if (prefix === \"x\") {\n        return offsetImg[key] * pixelScaling.x;\n      } else if (prefix === \"y\") {\n        return offsetImg[key] * pixelScaling.y;\n      }\n\n      return null;\n    });\n    return result;\n  }\n\n  coordmap.scaleImgToCss = scaleImgToCss; // Returns the x and y ratio the image content is scaled to on screen. If\n  // the image data is 1000 pixels wide and is scaled to 300 pixels on screen,\n  // then this returns 0.3. (Note the 300 pixels refers to CSS pixels.)\n\n  coordmap.imgToCssScalingRatio = function () {\n    var imgDims = findDims($img);\n    return {\n      x: imgDims.x / coordmap.dims.width,\n      y: imgDims.y / coordmap.dims.height\n    };\n  };\n\n  coordmap.cssToImgScalingRatio = function () {\n    var res = coordmap.imgToCssScalingRatio();\n    return {\n      x: 1 / res.x,\n      y: 1 / res.y\n    };\n  }; // Given an offset in css pixels, return an object representing which panel\n  // it's in. The `expand` argument tells it to expand the panel area by that\n  // many pixels. It's possible for an offset to be within more than one\n  // panel, because of the `expand` value. If that's the case, find the\n  // nearest panel.\n\n\n  coordmap.getPanelCss = function (offsetCss) {\n    var expand = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n    var offsetImg = coordmap.scaleCssToImg(offsetCss);\n    var x = offsetImg.x;\n    var y = offsetImg.y; // Convert expand from css pixels to img pixels\n\n    var cssToImgRatio = coordmap.cssToImgScalingRatio();\n    var expandImg = {\n      x: expand * cssToImgRatio.x,\n      y: expand * cssToImgRatio.y\n    };\n    var matches = []; // Panels that match\n\n    var dists = []; // Distance of offset to each matching panel\n\n    var b;\n    var i;\n\n    for (i = 0; i < coordmap.panels.length; i++) {\n      b = coordmap.panels[i].range;\n\n      if (x <= b.right + expandImg.x && x >= b.left - expandImg.x && y <= b.bottom + expandImg.y && y >= b.top - expandImg.y) {\n        matches.push(coordmap.panels[i]); // Find distance from edges for x and y\n\n        var xdist = 0;\n        var ydist = 0;\n\n        if (x > b.right && x <= b.right + expandImg.x) {\n          xdist = x - b.right;\n        } else if (x < b.left && x >= b.left - expandImg.x) {\n          xdist = x - b.left;\n        }\n\n        if (y > b.bottom && y <= b.bottom + expandImg.y) {\n          ydist = y - b.bottom;\n        } else if (y < b.top && y >= b.top - expandImg.y) {\n          ydist = y - b.top;\n        } // Cartesian distance\n\n\n        dists.push(Math.sqrt(Math.pow(xdist, 2) + Math.pow(ydist, 2)));\n      }\n    }\n\n    if (matches.length) {\n      // Find shortest distance\n      var minDist = Math.min.apply(null, dists);\n\n      for (i = 0; i < matches.length; i++) {\n        if (dists[i] === minDist) {\n          return matches[i];\n        }\n      }\n    }\n\n    return null;\n  }; // Is an offset (in css pixels) in a panel? If supplied, `expand` tells us\n  // to expand the panels by that many pixels in all directions.\n\n\n  coordmap.isInPanelCss = function (offsetCss) {\n    var expand = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n    if (coordmap.getPanelCss(offsetCss, expand)) return true;\n    return false;\n  }; // Returns a function that sends mouse coordinates, scaled to data space.\n  // If that function is passed a null event, it will send null.\n\n\n  coordmap.mouseCoordinateSender = function (inputId) {\n    var clip = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n    var nullOutside = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n    return function (e) {\n      if (e === null) {\n        shinySetInputValue(inputId, null);\n        return;\n      }\n\n      var coordsCss = coordmap.mouseOffsetCss(e); // If outside of plotting region\n\n      if (!coordmap.isInPanelCss(coordsCss)) {\n        if (nullOutside) {\n          shinySetInputValue(inputId, null);\n          return;\n        }\n\n        if (clip) return;\n        var _coords = {\n          // eslint-disable-next-line @typescript-eslint/naming-convention\n          coords_css: coordsCss,\n          // eslint-disable-next-line @typescript-eslint/naming-convention\n          coords_img: coordmap.scaleCssToImg(coordsCss)\n        };\n        shinySetInputValue(inputId, _coords, {\n          priority: \"event\"\n        });\n        return;\n      }\n\n      var panel = coordmap.getPanelCss(coordsCss);\n      var coordsImg = coordmap.scaleCssToImg(coordsCss);\n      var coordsData = panel.scaleImgToData(coordsImg);\n      var coords = {\n        x: coordsData.x,\n        y: coordsData.y,\n        // eslint-disable-next-line @typescript-eslint/naming-convention\n        coords_css: coordsCss,\n        // eslint-disable-next-line @typescript-eslint/naming-convention\n        coords_img: coordsImg,\n        // eslint-disable-next-line @typescript-eslint/naming-convention\n        img_css_ratio: coordmap.cssToImgScalingRatio()\n      }; // Add the panel (facet) variables, if present\n\n      $.extend(coords, panel.panel_vars); // Add variable name mappings\n\n      coords.mapping = panel.mapping; // Add scaling information\n\n      coords.domain = panel.domain;\n      coords.range = panel.range;\n      coords.log = panel.log;\n      shinySetInputValue(inputId, coords, {\n        priority: \"event\"\n      });\n    };\n  };\n\n  return coordmap;\n}\n\nexport { initCoordmap, findOrigin };", "// Map a value x from a domain to a range. If clip is true, clip it to the\nimport { mapValues } from \"../utils\"; // range.\n\nfunction mapLinear(x, domainMin, domainMax, rangeMin, rangeMax) {\n  var clip = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n  // By default, clip to range\n  clip = clip || true;\n  var factor = (rangeMax - rangeMin) / (domainMax - domainMin);\n  var val = x - domainMin;\n  var newval = val * factor + rangeMin;\n\n  if (clip) {\n    var max = Math.max(rangeMax, rangeMin);\n    var min = Math.min(rangeMax, rangeMin);\n    if (newval > max) newval = max;else if (newval < min) newval = min;\n  }\n\n  return newval;\n} // Create scale and inverse-scale functions for a single direction (x or y).\n\n\nfunction scaler1D(domainMin, domainMax, rangeMin, rangeMax, logbase) {\n  return {\n    scale: function scale(val, clip) {\n      if (logbase) val = Math.log(val) / Math.log(logbase);\n      return mapLinear(val, domainMin, domainMax, rangeMin, rangeMax, clip);\n    },\n    scaleInv: function scaleInv(val, clip) {\n      var res = mapLinear(val, rangeMin, rangeMax, domainMin, domainMax, clip);\n      if (logbase) res = Math.pow(logbase, res);\n      return res;\n    }\n  };\n}\n\n// Modify panel, adding scale and inverse-scale functions that take objects\n// like {x:1, y:3}, and also add clip function.\nfunction addScaleFuns(panel) {\n  var d = panel.domain;\n  var r = panel.range;\n  var xlog = panel.log && panel.log.x ? panel.log.x : null;\n  var ylog = panel.log && panel.log.y ? panel.log.y : null;\n  var xscaler = scaler1D(d.left, d.right, r.left, r.right, xlog);\n  var yscaler = scaler1D(d.bottom, d.top, r.bottom, r.top, ylog); // Given an object of form {x:1, y:2}, or {x:1, xmin:2:, ymax: 3}, convert\n  // from data coordinates to img. Whether a value is converted as x or y\n  // depends on the first character of the key.\n\n  panel.scaleDataToImg = function (val, clip) {\n    return mapValues(val, function (value, key) {\n      var prefix = key.substring(0, 1);\n\n      if (prefix === \"x\") {\n        return xscaler.scale(value, clip);\n      } else if (prefix === \"y\") {\n        return yscaler.scale(value, clip);\n      }\n\n      return null;\n    });\n  };\n\n  function scaleImgToData(val, clip) {\n    return mapValues(val, function (value, key) {\n      var prefix = key.substring(0, 1);\n\n      if (prefix === \"x\") {\n        return xscaler.scaleInv(value, clip);\n      } else if (prefix === \"y\") {\n        return yscaler.scaleInv(value, clip);\n      }\n\n      return null;\n    });\n  }\n\n  panel.scaleImgToData = scaleImgToData; // Given a scaled offset (in img pixels), clip it to the nearest panel region.\n\n  panel.clipImg = function (offsetImg) {\n    var newOffset = {\n      x: offsetImg.x,\n      y: offsetImg.y\n    };\n    var bounds = panel.range;\n    if (offsetImg.x > bounds.right) newOffset.x = bounds.right;else if (offsetImg.x < bounds.left) newOffset.x = bounds.left;\n    if (offsetImg.y > bounds.bottom) newOffset.y = bounds.bottom;else if (offsetImg.y < bounds.top) newOffset.y = bounds.top;\n    return newOffset;\n  };\n} // Modifies the panel objects in a coordmap, adding scaleImgToData(),\n// scaleDataToImg(), and clipImg() functions to each one. The panel objects\n// use img and data coordinates only; they do not use css coordinates. The\n// domain is in data coordinates; the range is in img coordinates.\n\n\nfunction initPanelScales(panels) {\n  // Add the functions to each panel object.\n  for (var i = 0; i < panels.length; i++) {\n    var panel = panels[i];\n    addScaleFuns(panel);\n  }\n}\n\nexport { initPanelScales };", "// Given two sets of x/y coordinates, return an object representing the min\n// and max x and y values. (This could be generalized to any number of\n// points).\nfunction findBox(offset1, offset2) {\n  return {\n    xmin: Math.min(offset1.x, offset2.x),\n    xmax: Math.max(offset1.x, offset2.x),\n    ymin: Math.min(offset1.y, offset2.y),\n    ymax: Math.max(offset1.y, offset2.y)\n  };\n}\n\nexport { findBox };", "// Shift an array of values so that they are within a min and max. The vals\n// will be shifted so that they maintain the same spacing internally. If the\n// range in vals is larger than the range of min and max, the result might not\n// make sense.\nfunction shiftToRange(vals, min, max) {\n  if (!(vals instanceof Array)) vals = [vals];\n  var maxval = Math.max.apply(null, vals);\n  var minval = Math.min.apply(null, vals);\n  var shiftAmount = 0;\n\n  if (maxval > max) {\n    shiftAmount = max - maxval;\n  } else if (minval < min) {\n    shiftAmount = min - minval;\n  }\n\n  var newvals = [];\n\n  for (var i = 0; i < vals.length; i++) {\n    newvals[i] = vals[i] + shiftAmount;\n  }\n\n  return newvals;\n}\n\nexport { shiftToRange };", "import $ from \"jquery\"; // This object provides two public event listeners: mousedown, and\n// dblclickIE8.\n// We need to make sure that, when the image is listening for double-\n// clicks, that a double-click doesn't trigger two click events. We'll\n// trigger custom mousedown2 and dblclick2 events with this mousedown\n// listener.\n\nfunction createClickInfo($el, dblclickId, dblclickDelay) {\n  var clickTimer = null;\n  var pendingE = null; // A pending mousedown2 event\n  // Create a new event of type eventType (like 'mousedown2'), and trigger\n  // it with the information stored in this.e.\n\n  function triggerEvent(newEventType, e) {\n    // Extract important info from e and construct a new event with type\n    // eventType.\n    var e2 = $.Event(newEventType, {\n      which: e.which,\n      pageX: e.pageX,\n      pageY: e.pageY\n    });\n    $el.trigger(e2);\n  }\n\n  function triggerPendingMousedown2() {\n    // It's possible that between the scheduling of a mousedown2 and the\n    // time this callback is executed, someone else triggers a\n    // mousedown2, so check for that.\n    if (pendingE) {\n      triggerEvent(\"mousedown2\", pendingE);\n      pendingE = null;\n    }\n  } // Set a timer to trigger a mousedown2 event, using information from the\n  // last recorded mousdown event.\n\n\n  function scheduleMousedown2(e) {\n    pendingE = e;\n    clickTimer = setTimeout(function () {\n      triggerPendingMousedown2();\n    }, dblclickDelay);\n  }\n\n  function mousedown(e) {\n    // Listen for left mouse button only\n    if (e.which !== 1) return; // If no dblclick listener, immediately trigger a mousedown2 event.\n\n    if (!dblclickId) {\n      triggerEvent(\"mousedown2\", e);\n      return;\n    } // If there's a dblclick listener, make sure not to count this as a\n    // click on the first mousedown; we need to wait for the dblclick\n    // delay before we can be sure this click was a single-click.\n\n\n    if (pendingE === null) {\n      scheduleMousedown2(e);\n    } else {\n      clearTimeout(clickTimer); // If second click is too far away, it doesn't count as a double\n      // click. Instead, immediately trigger a mousedown2 for the previous\n      // click, and set this click as a new first click.\n\n      if (pendingE && Math.abs(pendingE.pageX - e.pageX) > 2 || Math.abs(pendingE.pageY - e.pageY) > 2) {\n        triggerPendingMousedown2();\n        scheduleMousedown2(e);\n      } else {\n        // The second click was close to the first one. If it happened\n        // within specified delay, trigger our custom 'dblclick2' event.\n        pendingE = null;\n        triggerEvent(\"dblclick2\", e);\n      }\n    }\n  } // IE8 needs a special hack because when you do a double-click it doesn't\n  // trigger the click event twice - it directly triggers dblclick.\n\n\n  function dblclickIE8(e) {\n    e.which = 1; // In IE8, e.which is 0 instead of 1. ???\n\n    triggerEvent(\"dblclick2\", e);\n  }\n\n  return {\n    mousedown: mousedown,\n    dblclickIE8: dblclickIE8\n  };\n}\n\nexport { createClickInfo };", "import \"core-js/modules/es.array.find.js\";\nimport $ from \"jquery\";\nimport { imageOutputBinding } from \"../bindings/output/image\";\nimport { shinySetInputValue } from \"../shiny/initedMethods\";\nimport { Debouncer, Throttler } from \"../time\";\nimport { createBrush } from \"./createBrush\";\n\nfunction createClickHandler(inputId, clip, coordmap) {\n  var clickInfoSender = coordmap.mouseCoordinateSender(inputId, clip);\n  return {\n    mousedown: function mousedown(e) {\n      // Listen for left mouse button only\n      if (e.which !== 1) return;\n      clickInfoSender(e);\n    },\n    onResetImg: function onResetImg() {\n      clickInfoSender(null);\n    },\n    onResize: null\n  };\n}\n\nfunction createHoverHandler(inputId, delay, delayType, clip, nullOutside, coordmap) {\n  var sendHoverInfo = coordmap.mouseCoordinateSender(inputId, clip, nullOutside);\n  var hoverInfoSender;\n  if (delayType === \"throttle\") hoverInfoSender = new Throttler(null, sendHoverInfo, delay);else hoverInfoSender = new Debouncer(null, sendHoverInfo, delay); // What to do when mouse exits the image\n\n  var mouseout;\n  if (nullOutside) mouseout = function mouseout() {\n    hoverInfoSender.normalCall(null);\n  };else mouseout = function mouseout() {// do nothing\n  };\n  return {\n    mousemove: function mousemove(e) {\n      hoverInfoSender.normalCall(e);\n    },\n    mouseout: mouseout,\n    onResetImg: function onResetImg() {\n      hoverInfoSender.immediateCall(null);\n    },\n    onResize: null\n  };\n} // Returns a brush handler object. This has three public functions:\n// mousedown, mousemove, and onResetImg.\n\n\nfunction createBrushHandler(inputId, $el, opts, coordmap, outputId) {\n  // Parameter: expand the area in which a brush can be started, by this\n  // many pixels in all directions. (This should probably be a brush option)\n  var expandPixels = 20; // Represents the state of the brush\n\n  var brush = createBrush($el, opts, coordmap, expandPixels); // Brush IDs can span multiple image/plot outputs. When an output is brushed,\n  // if a brush with the same ID is active on a different image/plot, it must\n  // be dismissed (but without sending any data to the server). We implement\n  // this by sending the shiny-internal:brushed event to all plots, and letting\n  // each plot decide for itself what to do.\n  //\n  // The decision to have the event sent to each plot (as opposed to a single\n  // event triggered on, say, the document) was made to make cleanup easier;\n  // listening on an event on the document would prevent garbage collection\n  // of plot outputs that are removed from the document.\n\n  $el.on(\"shiny-internal:brushed.image_output\", function (e, coords) {\n    // If the new brush shares our ID but not our output element ID, we\n    // need to clear our brush (if any).\n    if (coords.brushId === inputId && coords.outputId !== outputId) {\n      $el.data(\"mostRecentBrush\", false);\n      brush.reset();\n    }\n  }); // Set cursor to one of 7 styles. We need to set the cursor on the whole\n  // el instead of the brush div, because the brush div has\n  // 'pointer-events:none' so that it won't intercept pointer events.\n  // If `style` is null, don't add a cursor style.\n\n  function setCursorStyle(style) {\n    $el.removeClass(\"crosshair grabbable grabbing ns-resize ew-resize nesw-resize nwse-resize\");\n    if (style) $el.addClass(style);\n  }\n\n  function sendBrushInfo() {\n    var coords = brush.boundsData(); // We're in a new or reset state\n\n    if (isNaN(coords.xmin)) {\n      shinySetInputValue(inputId, null); // Must tell other brushes to clear.\n\n      imageOutputBinding.find(document.documentElement).trigger(\"shiny-internal:brushed\", {\n        brushId: inputId,\n        outputId: null\n      });\n      return;\n    }\n\n    var panel = brush.getPanel(); // Add the panel (facet) variables, if present\n\n    $.extend(coords, panel.panel_vars); // eslint-disable-next-line camelcase\n\n    coords.coords_css = brush.boundsCss(); // eslint-disable-next-line camelcase\n\n    coords.coords_img = coordmap.scaleCssToImg(coords.coords_css); // eslint-disable-next-line camelcase\n\n    coords.img_css_ratio = coordmap.cssToImgScalingRatio(); // Add variable name mappings\n\n    coords.mapping = panel.mapping; // Add scaling information\n\n    coords.domain = panel.domain;\n    coords.range = panel.range;\n    coords.log = panel.log;\n    coords.direction = opts.brushDirection;\n    coords.brushId = inputId;\n    coords.outputId = outputId; // Send data to server\n\n    shinySetInputValue(inputId, coords);\n    $el.data(\"mostRecentBrush\", true);\n    imageOutputBinding.find(document.documentElement).trigger(\"shiny-internal:brushed\", coords);\n  }\n\n  var brushInfoSender;\n\n  if (opts.brushDelayType === \"throttle\") {\n    brushInfoSender = new Throttler(null, sendBrushInfo, opts.brushDelay);\n  } else {\n    brushInfoSender = new Debouncer(null, sendBrushInfo, opts.brushDelay);\n  }\n\n  function mousedown(e) {\n    // This can happen when mousedown inside the graphic, then mouseup\n    // outside, then mousedown inside. Just ignore the second\n    // mousedown.\n    if (brush.isBrushing() || brush.isDragging() || brush.isResizing()) return; // Listen for left mouse button only\n\n    if (e.which !== 1) return; // In general, brush uses css pixels, and coordmap uses img pixels.\n\n    var offsetCss = coordmap.mouseOffsetCss(e); // Ignore mousedown events outside of plotting region, expanded by\n    // a number of pixels specified in expandPixels.\n\n    if (opts.brushClip && !coordmap.isInPanelCss(offsetCss, expandPixels)) return;\n    brush.up({\n      x: NaN,\n      y: NaN\n    });\n    brush.down(offsetCss);\n\n    if (brush.isInResizeArea(offsetCss)) {\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      // @ts-expect-error; TODO-barret; Remove the variable? it is not used\n      brush.startResizing(offsetCss); // Attach the move and up handlers to the window so that they respond\n      // even when the mouse is moved outside of the image.\n\n      $(document).on(\"mousemove.image_brush\", mousemoveResizing).on(\"mouseup.image_brush\", mouseupResizing);\n    } else if (brush.isInsideBrush(offsetCss)) {\n      // @ts-expect-error; TODO-barret this variable is not respected\n      brush.startDragging(offsetCss);\n      setCursorStyle(\"grabbing\"); // Attach the move and up handlers to the window so that they respond\n      // even when the mouse is moved outside of the image.\n\n      $(document).on(\"mousemove.image_brush\", mousemoveDragging).on(\"mouseup.image_brush\", mouseupDragging);\n    } else {\n      var panel = coordmap.getPanelCss(offsetCss, expandPixels); // @ts-expect-error; TODO-barret start brushing does not take any args; Either change the function to ignore, or do not send to function;\n\n      brush.startBrushing(panel.clipImg(coordmap.scaleCssToImg(offsetCss))); // Attach the move and up handlers to the window so that they respond\n      // even when the mouse is moved outside of the image.\n\n      $(document).on(\"mousemove.image_brush\", mousemoveBrushing).on(\"mouseup.image_brush\", mouseupBrushing);\n    }\n  } // This sets the cursor style when it's in the el\n\n\n  function mousemove(e) {\n    // In general, brush uses css pixels, and coordmap uses img pixels.\n    var offsetCss = coordmap.mouseOffsetCss(e);\n\n    if (!(brush.isBrushing() || brush.isDragging() || brush.isResizing())) {\n      // Set the cursor depending on where it is\n      if (brush.isInResizeArea(offsetCss)) {\n        var r = brush.whichResizeSides(offsetCss);\n\n        if (r.left && r.top || r.right && r.bottom) {\n          setCursorStyle(\"nwse-resize\");\n        } else if (r.left && r.bottom || r.right && r.top) {\n          setCursorStyle(\"nesw-resize\");\n        } else if (r.left || r.right) {\n          setCursorStyle(\"ew-resize\");\n        } else if (r.top || r.bottom) {\n          setCursorStyle(\"ns-resize\");\n        }\n      } else if (brush.isInsideBrush(offsetCss)) {\n        setCursorStyle(\"grabbable\");\n      } else if (coordmap.isInPanelCss(offsetCss, expandPixels)) {\n        setCursorStyle(\"crosshair\");\n      } else {\n        setCursorStyle(null);\n      }\n    }\n  } // mousemove handlers while brushing or dragging\n\n\n  function mousemoveBrushing(e) {\n    brush.brushTo(coordmap.mouseOffsetCss(e));\n    brushInfoSender.normalCall();\n  }\n\n  function mousemoveDragging(e) {\n    brush.dragTo(coordmap.mouseOffsetCss(e));\n    brushInfoSender.normalCall();\n  }\n\n  function mousemoveResizing(e) {\n    brush.resizeTo(coordmap.mouseOffsetCss(e));\n    brushInfoSender.normalCall();\n  } // mouseup handlers while brushing or dragging\n\n\n  function mouseupBrushing(e) {\n    // Listen for left mouse button only\n    if (e.which !== 1) return;\n    $(document).off(\"mousemove.image_brush\").off(\"mouseup.image_brush\");\n    brush.up(coordmap.mouseOffsetCss(e));\n    brush.stopBrushing();\n    setCursorStyle(\"crosshair\"); // If the brush didn't go anywhere, hide the brush, clear value,\n    // and return.\n\n    if (brush.down().x === brush.up().x && brush.down().y === brush.up().y) {\n      brush.reset();\n      brushInfoSender.immediateCall();\n      return;\n    } // Send info immediately on mouseup, but only if needed. If we don't\n    // do the pending check, we might send the same data twice (with\n    // with difference nonce).\n\n\n    if (brushInfoSender.isPending()) brushInfoSender.immediateCall();\n  }\n\n  function mouseupDragging(e) {\n    // Listen for left mouse button only\n    if (e.which !== 1) return;\n    $(document).off(\"mousemove.image_brush\").off(\"mouseup.image_brush\");\n    brush.up(coordmap.mouseOffsetCss(e));\n    brush.stopDragging();\n    setCursorStyle(\"grabbable\");\n    if (brushInfoSender.isPending()) brushInfoSender.immediateCall();\n  }\n\n  function mouseupResizing(e) {\n    // Listen for left mouse button only\n    if (e.which !== 1) return;\n    $(document).off(\"mousemove.image_brush\").off(\"mouseup.image_brush\");\n    brush.up(coordmap.mouseOffsetCss(e));\n    brush.stopResizing();\n    if (brushInfoSender.isPending()) brushInfoSender.immediateCall();\n  } // Brush maintenance: When an image is re-rendered, the brush must either\n  // be removed (if brushResetOnNew) or imported (if !brushResetOnNew). The\n  // \"mostRecentBrush\" bit is to ensure that when multiple outputs share the\n  // same brush ID, inactive brushes don't send null values up to the server.\n  // This should be called when the img (not the el) is reset\n\n\n  function onResetImg() {\n    if (opts.brushResetOnNew) {\n      if ($el.data(\"mostRecentBrush\")) {\n        brush.reset();\n        brushInfoSender.immediateCall();\n      }\n    }\n  }\n\n  if (!opts.brushResetOnNew) {\n    if ($el.data(\"mostRecentBrush\")) {\n      // Importing an old brush must happen after the image data has loaded\n      // and the <img> DOM element has the updated size. If importOldBrush()\n      // is called before this happens, then the css-img coordinate mappings\n      // will give the wrong result, and the brush will have the wrong\n      // position.\n      //\n      // jcheng 09/26/2018: This used to happen in img.onLoad, but recently\n      // we moved to all brush initialization moving to img.onLoad so this\n      // logic can be executed inline.\n      brush.importOldBrush();\n      brushInfoSender.immediateCall();\n    }\n  }\n\n  function onResize() {\n    brush.onResize();\n    brushInfoSender.immediateCall();\n  }\n\n  return {\n    mousedown: mousedown,\n    mousemove: mousemove,\n    onResetImg: onResetImg,\n    onResize: onResize\n  };\n}\n\nexport { createClickHandler, createHoverHandler, createBrushHandler };", "function disableDrag($el, $img) {\n  // Make image non-draggable (Chrome, Safari)\n  $img.css(\"-webkit-user-drag\", \"none\"); // Firefox, IE<=10\n  // First remove existing handler so we don't keep adding handlers.\n\n  $img.off(\"dragstart.image_output\");\n  $img.on(\"dragstart.image_output\", function () {\n    return false;\n  }); // Disable selection of image and text when dragging in IE<=10\n\n  $el.off(\"selectstart.image_output\");\n  $el.on(\"selectstart.image_output\", function () {\n    return false;\n  });\n}\n\nexport { disableDrag };", "import { TextOutputBinding } from \"./text\";\nimport { BindingRegistry } from \"../registry\";\nimport { DownloadLinkOutputBinding } from \"./downloadlink\";\nimport { DatatableOutputBinding } from \"./datatable\";\nimport { HtmlOutputBinding } from \"./html\";\nimport { imageOutputBinding } from \"./image\";\nimport { OutputBinding } from \"./outputBinding\";\n\nfunction initOutputBindings() {\n  var outputBindings = new BindingRegistry();\n  outputBindings.register(new TextOutputBinding(), \"shiny.textOutput\");\n  outputBindings.register(new DownloadLinkOutputBinding(), \"shiny.downloadLink\");\n  outputBindings.register(new DatatableOutputBinding(), \"shiny.datatableOutput\");\n  outputBindings.register(new HtmlOutputBinding(), \"shiny.htmlOutput\");\n  outputBindings.register(imageOutputBinding, \"shiny.imageOutput\");\n  return {\n    outputBindings: outputBindings\n  };\n}\n\nexport { OutputBinding, initOutputBindings };", "import \"core-js/modules/es.array.find.js\";\nimport { imageOutputBinding } from \"../bindings/output/image\";\nimport { shinySetInputValue } from \"../shiny/initedMethods\";\n\nfunction resetBrush(brushId) {\n  shinySetInputValue(brushId, null);\n  imageOutputBinding.find(document.documentElement).trigger(\"shiny-internal:brushed\", {\n    brushId: brushId,\n    outputId: null\n  });\n}\n\nexport { resetBrush };", "import \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.array.join.js\";\nimport \"core-js/modules/es.array.filter.js\";\nimport \"core-js/modules/es.regexp.exec.js\";\nimport \"core-js/modules/es.string.split.js\";\nimport \"core-js/modules/es.string.match.js\";\nimport \"core-js/modules/es.array.map.js\";\nimport \"core-js/modules/es.string.replace.js\";\nimport $ from \"jquery\";\nimport { $escape, randomId } from \"../utils\";\nimport { shinyUnbindAll } from \"./initedMethods\";\nimport { renderContent } from \"./render\"; // Milliseconds to fade in or out\n\nvar fadeDuration = 250;\n\nfunction show() {\n  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n      _ref$html = _ref.html,\n      html = _ref$html === void 0 ? \"\" : _ref$html,\n      _ref$action = _ref.action,\n      action = _ref$action === void 0 ? \"\" : _ref$action,\n      _ref$deps = _ref.deps,\n      deps = _ref$deps === void 0 ? [] : _ref$deps,\n      _ref$duration = _ref.duration,\n      duration = _ref$duration === void 0 ? 5000 : _ref$duration,\n      _ref$id = _ref.id,\n      id = _ref$id === void 0 ? null : _ref$id,\n      _ref$closeButton = _ref.closeButton,\n      closeButton = _ref$closeButton === void 0 ? true : _ref$closeButton,\n      _ref$type = _ref.type,\n      type = _ref$type === void 0 ? null : _ref$type;\n\n  if (!id) id = randomId(); // Create panel if necessary\n\n  createPanel(); // Get existing DOM element for this ID, or create if needed.\n\n  var $notification = get(id);\n  if ($notification.length === 0) $notification = create(id); // Render html and dependencies\n\n  var newHtml = \"<div class=\\\"shiny-notification-content-text\\\">\".concat(html, \"</div>\") + \"<div class=\\\"shiny-notification-content-action\\\">\".concat(action, \"</div>\");\n  var $content = $notification.find(\".shiny-notification-content\");\n  renderContent($content, {\n    html: newHtml,\n    deps: deps\n  }); // Remove any existing classes of the form 'shiny-notification-xxxx'.\n  // The xxxx would be strings like 'warning'.\n\n  var classes = $notification.attr(\"class\").split(/\\s+/).filter(function (cls) {\n    return cls.match(/^shiny-notification-/);\n  }).join(\" \");\n  $notification.removeClass(classes); // Add class. 'default' means no additional CSS class.\n\n  if (type && type !== \"default\") $notification.addClass(\"shiny-notification-\" + type); // Make sure that the presence/absence of close button matches with value\n  // of `closeButton`.\n\n  var $close = $notification.find(\".shiny-notification-close\");\n\n  if (closeButton && $close.length === 0) {\n    $notification.append('<div class=\"shiny-notification-close\">&times;</div>');\n  } else if (!closeButton && $close.length !== 0) {\n    $close.remove();\n  } // If duration was provided, schedule removal. If not, clear existing\n  // removal callback (this happens if a message was first added with\n  // a duration, and then updated with no duration).\n\n\n  if (duration) addRemovalCallback(id, duration);else clearRemovalCallback(id);\n  return id;\n} // TODO-barret - Should `id` be required? (some places do not supply one)\n\n\nfunction remove(id) {\n  get(id).fadeOut(fadeDuration, function () {\n    shinyUnbindAll(this);\n    $(this).remove(); // If no more notifications, remove the panel from the DOM.\n\n    if (ids().length === 0) {\n      getPanel().remove();\n    }\n  });\n} // Returns an individual notification DOM object (wrapped in jQuery).\n\n\nfunction get(id) {\n  if (!id) return null;\n  return getPanel().find(\"#shiny-notification-\" + $escape(id));\n} // Return array of all notification IDs\n\n\nfunction ids() {\n  return getPanel().find(\".shiny-notification\").map(function () {\n    return this.id.replace(/shiny-notification-/, \"\");\n  }).get();\n} // Returns the notification panel DOM object (wrapped in jQuery).\n\n\nfunction getPanel() {\n  return $(\"#shiny-notification-panel\");\n} // Create notifications panel and return the jQuery object. If the DOM\n// element already exists, just return it.\n\n\nfunction createPanel() {\n  var $panel = getPanel();\n  if ($panel.length > 0) return $panel;\n  $(document.body).append('<div id=\"shiny-notification-panel\">');\n  return $panel;\n} // Create a notification DOM element and return the jQuery object. If the\n// DOM element already exists for the ID, just return it without creating.\n\n\nfunction create(id) {\n  var $notification = get(id);\n\n  if ($notification.length === 0) {\n    $notification = $(\"<div id=\\\"shiny-notification-\".concat(id, \"\\\" class=\\\"shiny-notification\\\">\") + '<div class=\"shiny-notification-close\">&times;</div>' + '<div class=\"shiny-notification-content\"></div>' + \"</div>\");\n    $notification.find(\".shiny-notification-close\").on(\"click\", function (e) {\n      e.preventDefault();\n      e.stopPropagation();\n      remove(id);\n    });\n    getPanel().append($notification);\n  }\n\n  return $notification;\n} // Add a callback to remove a notification after a delay in ms.\n\n\nfunction addRemovalCallback(id, delay) {\n  // If there's an existing removalCallback, clear it before adding the new\n  // one.\n  clearRemovalCallback(id); // Attach new removal callback\n\n  var removalCallback = setTimeout(function () {\n    remove(id);\n  }, delay);\n  get(id).data(\"removalCallback\", removalCallback);\n} // Clear a removal callback from a notification, if present.\n\n\nfunction clearRemovalCallback(id) {\n  var $notification = get(id);\n  var oldRemovalCallback = $notification.data(\"removalCallback\");\n\n  if (oldRemovalCallback) {\n    clearTimeout(oldRemovalCallback);\n  }\n}\n\nexport { show as showNotification, remove as removeNotification };", "'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n  return [\n    // `String.prototype.match` method\n    // https://tc39.es/ecma262/#sec-string.prototype.match\n    function match(regexp) {\n      var O = requireObjectCoercible(this);\n      var matcher = regexp == undefined ? undefined : regexp[MATCH];\n      return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n    },\n    // `RegExp.prototype[@@match]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n    function (regexp) {\n      var res = maybeCallNative(nativeMatch, regexp, this);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n\n      if (!rx.global) return regExpExec(rx, S);\n\n      var fullUnicode = rx.unicode;\n      rx.lastIndex = 0;\n      var A = [];\n      var n = 0;\n      var result;\n      while ((result = regExpExec(rx, S)) !== null) {\n        var matchStr = String(result[0]);\n        A[n] = matchStr;\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n        n++;\n      }\n      return n === 0 ? null : A;\n    }\n  ];\n});\n", "import \"core-js/modules/es.array.find.js\";\nimport $ from \"jquery\";\nimport { shinyUnbindAll } from \"./initedMethods\";\nimport { renderContent } from \"./render\"; // Show a modal dialog. This is meant to handle two types of cases: one is\n// that the content is a Bootstrap modal dialog, and the other is that the\n// content is non-Bootstrap. Bootstrap modals require some special handling,\n// which is coded in here.\n\nfunction show() {\n  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n      _ref$html = _ref.html,\n      html = _ref$html === void 0 ? \"\" : _ref$html,\n      _ref$deps = _ref.deps,\n      deps = _ref$deps === void 0 ? [] : _ref$deps;\n\n  // If there was an existing Bootstrap modal, then there will be a modal-\n  // backdrop div that was added outside of the modal wrapper, and it must be\n  // removed; otherwise there can be multiple of these divs.\n  $(\".modal-backdrop\").remove(); // Get existing wrapper DOM element, or create if needed.\n\n  var $modal = $(\"#shiny-modal-wrapper\");\n\n  if ($modal.length === 0) {\n    $modal = $('<div id=\"shiny-modal-wrapper\"></div>');\n    $(document.body).append($modal); // If the wrapper's content is a Bootstrap modal, then when the inner\n    // modal is hidden, remove the entire thing, including wrapper.\n\n    $modal.on(\"hidden.bs.modal\", function (e) {\n      if (e.target === $(\"#shiny-modal\")[0]) {\n        shinyUnbindAll($modal);\n        $modal.remove();\n      }\n    });\n  }\n\n  $modal.on(\"keydown.shinymodal\", function (e) {\n    // If we're listening for Esc, don't let the event propagate. See\n    // https://github.com/rstudio/shiny/issues/1453. The value of\n    // data(\"keyboard\") needs to be checked inside the handler, because at\n    // the time that $modal.on() is called, the $(\"#shiny-modal\") div doesn't\n    // yet exist.\n    if ($(\"#shiny-modal\").data(\"keyboard\") === false) return;\n\n    if (e.keyCode === 27) {\n      e.stopPropagation();\n      e.preventDefault();\n    }\n  }); // Set/replace contents of wrapper with html.\n\n  renderContent($modal, {\n    html: html,\n    deps: deps\n  });\n}\n\nfunction remove() {\n  var $modal = $(\"#shiny-modal-wrapper\");\n  $modal.off(\"keydown.shinymodal\"); // Look for a Bootstrap modal and if present, trigger hide event. This will\n  // trigger the hidden.bs.modal callback that we set in show(), which unbinds\n  // and removes the element.\n\n  if ($modal.find(\".modal\").length > 0) {\n    $modal.find(\".modal\").modal(\"hide\");\n  } else {\n    // If not a Bootstrap modal dialog, simply unbind and remove it.\n    shinyUnbindAll($modal);\n    $modal.remove();\n  }\n}\n\nexport { show as showModal, remove as removeModal };", "import $ from \"jquery\";\nimport { showNotification, removeNotification } from \"./notifications\";\n\nfunction updateTime(reconnectTime) {\n  var $time = $(\"#shiny-reconnect-time\"); // If the time has been removed, exit and don't reschedule this function.\n\n  if ($time.length === 0) return;\n  var seconds = Math.floor((reconnectTime - new Date().getTime()) / 1000);\n\n  if (seconds > 0) {\n    $time.text(\" in \" + seconds + \"s\");\n  } else {\n    $time.text(\"...\");\n  } // Reschedule this function after 1 second\n\n\n  setTimeout(function () {\n    updateTime(reconnectTime);\n  }, 1000);\n}\n\nfunction showReconnectDialog(delay) {\n  var reconnectTime = new Date().getTime() + delay; // If there's already a reconnect dialog, don't add another\n\n  if ($(\"#shiny-reconnect-text\").length > 0) return;\n  var html = '<span id=\"shiny-reconnect-text\">Attempting to reconnect</span>' + '<span id=\"shiny-reconnect-time\"></span>';\n  var action = '<a id=\"shiny-reconnect-now\" href=\"#\" onclick=\"Shiny.shinyapp.reconnect();\">Try now</a>';\n  showNotification({\n    id: \"reconnect\",\n    html: html,\n    action: action,\n    duration: null,\n    closeButton: false,\n    type: \"warning\"\n  });\n  updateTime(reconnectTime);\n}\n\nfunction hideReconnectDialog() {\n  removeNotification(\"reconnect\");\n}\n\nexport { showReconnectDialog, hideReconnectDialog };", "import \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.regexp.exec.js\";\nimport \"core-js/modules/es.string.match.js\";\nimport \"core-js/modules/es.parse-float.js\";\nimport \"core-js/modules/es.string.split.js\";\nimport \"core-js/modules/es.string.replace.js\";\nimport \"core-js/modules/es.array.index-of.js\";\nimport \"core-js/modules/es.array.concat.js\";\nimport \"core-js/modules/es.string.search.js\";\nimport $ from \"jquery\";\nimport { InputBatchSender, InputDeferDecorator, InputEventDecorator, InputNoResendDecorator, InputRateDecorator, InputValidateDecorator } from \"../inputPolicies\";\nimport { addDefaultInputOpts } from \"../inputPolicies/inputValidateDecorator\";\nimport { debounce, Debouncer } from \"../time\";\nimport { getComputedLinkColor, getStyle, hasOwnProperty, mapValues, pixelRatio } from \"../utils\";\nimport { bindAll, unbindAll, _bindAll } from \"./bind\";\nimport { setShinyObj } from \"./initedMethods\";\nimport { registerDependency } from \"./render\";\nimport { sendImageSizeFns } from \"./sendImageSize\";\nimport { ShinyApp } from \"./shinyapp\";\nimport { registerNames as singletonsRegisterNames } from \"./singletons\"; // \"init_shiny.js\"\n\nfunction initShiny(windowShiny) {\n  setShinyObj(windowShiny);\n  var shinyapp = windowShiny.shinyapp = new ShinyApp();\n  windowShiny.progressHandlers = shinyapp.progressHandlers;\n  var inputBatchSender = new InputBatchSender(shinyapp);\n  var inputsNoResend = new InputNoResendDecorator(inputBatchSender);\n  var inputsEvent = new InputEventDecorator(inputsNoResend);\n  var inputsRate = new InputRateDecorator(inputsEvent);\n  var inputsDefer = new InputDeferDecorator(inputsEvent);\n  var target;\n\n  if ($('input[type=\"submit\"], button[type=\"submit\"]').length > 0) {\n    // If there is a submit button on the page, use defer decorator\n    target = inputsDefer;\n    $('input[type=\"submit\"], button[type=\"submit\"]').each(function () {\n      $(this).click(function (event) {\n        event.preventDefault();\n        inputsDefer.submit();\n      });\n    });\n  } else {\n    // By default, use rate decorator\n    target = inputsRate;\n  }\n\n  var inputs = new InputValidateDecorator(target);\n\n  windowShiny.setInputValue = windowShiny.onInputChange = function (name, value, opts) {\n    var newOpts = addDefaultInputOpts(opts);\n    inputs.setInput(name, value, newOpts);\n  }; // By default, Shiny deduplicates input value changes; that is, if\n  // `setInputValue` is called with the same value as the input already\n  // has, the call is ignored (unless opts.priority = \"event\"). Calling\n  // `forgetLastInputValue` tells Shiny that the very next call to\n  // `setInputValue` for this input id shouldn't be ignored, even if it\n  // is a dupe of the existing value.\n\n\n  windowShiny.forgetLastInputValue = function (name) {\n    inputsNoResend.forget(name);\n  }; // MUST be called after `setShiny()`\n\n\n  var inputBindings = windowShiny.inputBindings;\n  var outputBindings = windowShiny.outputBindings;\n\n  function shinyBindCtx() {\n    return {\n      inputs: inputs,\n      inputsRate: inputsRate,\n      sendOutputHiddenState: sendOutputHiddenState,\n      maybeAddThemeObserver: maybeAddThemeObserver,\n      inputBindings: inputBindings,\n      outputBindings: outputBindings,\n      initDeferredIframes: initDeferredIframes\n    };\n  }\n\n  windowShiny.bindAll = function (scope) {\n    bindAll(shinyBindCtx(), scope);\n  };\n\n  windowShiny.unbindAll = function (scope) {\n    var includeSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n    unbindAll(shinyBindCtx(), scope, includeSelf);\n  }; // Calls .initialize() for all of the input objects in all input bindings,\n  // in the given scope.\n\n\n  function initializeInputs() {\n    var scope = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document.documentElement;\n    var bindings = inputBindings.getBindings(); // Iterate over all bindings\n\n    for (var i = 0; i < bindings.length; i++) {\n      var binding = bindings[i].binding;\n      var inputObjects = binding.find(scope);\n\n      if (inputObjects) {\n        // Iterate over all input objects for this binding\n        for (var j = 0; j < inputObjects.length; j++) {\n          var $inputObjectJ = $(inputObjects[j]);\n\n          if (!$inputObjectJ.data(\"_shiny_initialized\")) {\n            $inputObjectJ.data(\"_shiny_initialized\", true);\n            binding.initialize(inputObjects[j]);\n          }\n        }\n      }\n    }\n  }\n\n  windowShiny.initializeInputs = initializeInputs;\n\n  function getIdFromEl(el) {\n    var $el = $(el);\n    var bindingAdapter = $el.data(\"shiny-output-binding\");\n    if (!bindingAdapter) return null;else return bindingAdapter.getId();\n  } // Initialize all input objects in the document, before binding\n\n\n  initializeInputs(document.documentElement); // The input values returned by _bindAll() each have a structure like this:\n  //   { value: 123, opts: { ... } }\n  // We want to only keep the value. This is because when the initialValues is\n  // passed to ShinyApp.connect(), the ShinyApp object stores the\n  // initialValues object for the duration of the session, and the opts may\n  // have a reference to the DOM element, which would prevent it from being\n  // GC'd.\n\n  var initialValues = mapValues(_bindAll(shinyBindCtx(), document.documentElement), function (x) {\n    return x.value;\n  }); // The server needs to know the size of each image and plot output element,\n  // in case it is auto-sizing\n\n  $(\".shiny-image-output, .shiny-plot-output, .shiny-report-size\").each(function () {\n    var id = getIdFromEl(this);\n\n    if (this.offsetWidth !== 0 || this.offsetHeight !== 0) {\n      initialValues[\".clientdata_output_\" + id + \"_width\"] = this.offsetWidth;\n      initialValues[\".clientdata_output_\" + id + \"_height\"] = this.offsetHeight;\n    }\n  });\n\n  function getComputedBgColor(el) {\n    if (!el) {\n      // Top of document, can't recurse further\n      return null;\n    }\n\n    var bgColor = getStyle(el, \"background-color\");\n    var m = bgColor.match(/^rgba\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*\\)$/);\n\n    if (bgColor === \"transparent\" || m && parseFloat(m[4]) === 0) {\n      // No background color on this element. See if it has a background image.\n      var bgImage = getStyle(el, \"background-image\");\n\n      if (bgImage && bgImage !== \"none\") {\n        // Failed to detect background color, since it has a background image\n        return null;\n      } else {\n        // Recurse\n        return getComputedBgColor(el.parentElement);\n      }\n    }\n\n    return bgColor;\n  }\n\n  function getComputedFont(el) {\n    var fontFamily = getStyle(el, \"font-family\");\n    var fontSize = getStyle(el, \"font-size\");\n    return {\n      families: fontFamily.replace(/\"/g, \"\").split(\", \"),\n      size: fontSize\n    };\n  }\n\n  $(\".shiny-image-output, .shiny-plot-output, .shiny-report-theme\").each(function () {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    var el = this;\n    var id = getIdFromEl(el);\n    initialValues[\".clientdata_output_\" + id + \"_bg\"] = getComputedBgColor(el);\n    initialValues[\".clientdata_output_\" + id + \"_fg\"] = getStyle(el, \"color\");\n    initialValues[\".clientdata_output_\" + id + \"_accent\"] = getComputedLinkColor(el);\n    initialValues[\".clientdata_output_\" + id + \"_font\"] = getComputedFont(el);\n    maybeAddThemeObserver(el);\n  }); // Resend computed styles if *an output element's* class or style attribute changes.\n  // This gives us some level of confidence that getCurrentOutputInfo() will be\n  // properly invalidated if output container is mutated; but unfortunately,\n  // we don't have a reasonable way to detect change in *inherited* styles\n  // (other than session$setCurrentTheme())\n  // https://github.com/rstudio/shiny/issues/3196\n  // https://github.com/rstudio/shiny/issues/2998\n\n  function maybeAddThemeObserver(el) {\n    if (!window.MutationObserver) {\n      return; // IE10 and lower\n    }\n\n    var cl = el.classList;\n    var reportTheme = cl.contains(\"shiny-image-output\") || cl.contains(\"shiny-plot-output\") || cl.contains(\"shiny-report-theme\");\n\n    if (!reportTheme) {\n      return;\n    }\n\n    var $el = $(el);\n\n    if ($el.data(\"shiny-theme-observer\")) {\n      return; // i.e., observer is already observing\n    }\n\n    var observerCallback = new Debouncer(null, function () {\n      return doSendTheme(el);\n    }, 100);\n    var observer = new MutationObserver(function () {\n      return observerCallback.normalCall();\n    });\n    var config = {\n      attributes: true,\n      attributeFilter: [\"style\", \"class\"]\n    };\n    observer.observe(el, config);\n    $el.data(\"shiny-theme-observer\", observer);\n  }\n\n  function doSendTheme(el) {\n    // Sending theme info on error isn't necessary (it'd add an unnecessary additional round-trip)\n    if (el.classList.contains(\"shiny-output-error\")) {\n      return;\n    }\n\n    var id = getIdFromEl(el);\n    inputs.setInput(\".clientdata_output_\" + id + \"_bg\", getComputedBgColor(el));\n    inputs.setInput(\".clientdata_output_\" + id + \"_fg\", getStyle(el, \"color\"));\n    inputs.setInput(\".clientdata_output_\" + id + \"_accent\", getComputedLinkColor(el));\n    inputs.setInput(\".clientdata_output_\" + id + \"_font\", getComputedFont(el));\n  }\n\n  function doSendImageSize() {\n    $(\".shiny-image-output, .shiny-plot-output, .shiny-report-size\").each(function () {\n      var id = getIdFromEl(this);\n\n      if (this.offsetWidth !== 0 || this.offsetHeight !== 0) {\n        inputs.setInput(\".clientdata_output_\" + id + \"_width\", this.offsetWidth);\n        inputs.setInput(\".clientdata_output_\" + id + \"_height\", this.offsetHeight);\n      }\n    });\n    $(\".shiny-image-output, .shiny-plot-output, .shiny-report-theme\").each(function () {\n      doSendTheme(this);\n    });\n    $(\".shiny-bound-output\").each(function () {\n      var $this = $(this),\n          binding = $this.data(\"shiny-output-binding\");\n      $this.trigger({\n        type: \"shiny:visualchange\",\n        // @ts-expect-error; Can not remove info on a established, malformed Event object\n        visible: !isHidden(this),\n        binding: binding\n      });\n      binding.onResize();\n    });\n  }\n\n  sendImageSizeFns.setImageSend(inputBatchSender, doSendImageSize); // Return true if the object or one of its ancestors in the DOM tree has\n  // style='display:none'; otherwise return false.\n\n  function isHidden(obj) {\n    // null means we've hit the top of the tree. If width or height is\n    // non-zero, then we know that no ancestor has display:none.\n    if (obj === null || obj.offsetWidth !== 0 || obj.offsetHeight !== 0) {\n      return false;\n    } else if (getStyle(obj, \"display\") === \"none\") {\n      return true;\n    } else {\n      return isHidden(obj.parentNode);\n    }\n  }\n\n  var lastKnownVisibleOutputs = {}; // Set initial state of outputs to hidden, if needed\n\n  $(\".shiny-bound-output\").each(function () {\n    var id = getIdFromEl(this);\n\n    if (isHidden(this)) {\n      initialValues[\".clientdata_output_\" + id + \"_hidden\"] = true;\n    } else {\n      lastKnownVisibleOutputs[id] = true;\n      initialValues[\".clientdata_output_\" + id + \"_hidden\"] = false;\n    }\n  }); // Send update when hidden state changes\n\n  function doSendOutputHiddenState() {\n    var visibleOutputs = {};\n    $(\".shiny-bound-output\").each(function () {\n      var id = getIdFromEl(this);\n      delete lastKnownVisibleOutputs[id]; // Assume that the object is hidden when width and height are 0\n\n      var hidden = isHidden(this),\n          evt = {\n        type: \"shiny:visualchange\",\n        visible: !hidden\n      };\n\n      if (hidden) {\n        inputs.setInput(\".clientdata_output_\" + id + \"_hidden\", true);\n      } else {\n        visibleOutputs[id] = true;\n        inputs.setInput(\".clientdata_output_\" + id + \"_hidden\", false);\n      }\n\n      var $this = $(this); // @ts-expect-error; Can not remove info on a established, malformed Event object\n\n      evt.binding = $this.data(\"shiny-output-binding\"); // @ts-expect-error; Can not remove info on a established, malformed Event object\n\n      $this.trigger(evt);\n    }); // Anything left in lastKnownVisibleOutputs is orphaned\n\n    for (var name in lastKnownVisibleOutputs) {\n      if (hasOwnProperty(lastKnownVisibleOutputs, name)) inputs.setInput(\".clientdata_output_\" + name + \"_hidden\", true);\n    } // Update the visible outputs for next time\n\n\n    lastKnownVisibleOutputs = visibleOutputs;\n  } // sendOutputHiddenState gets called each time DOM elements are shown or\n  // hidden. This can be in the hundreds or thousands of times at startup.\n  // We'll debounce it, so that we do the actual work once per tick.\n\n\n  var sendOutputHiddenStateDebouncer = new Debouncer(null, doSendOutputHiddenState, 0);\n\n  function sendOutputHiddenState() {\n    sendOutputHiddenStateDebouncer.normalCall();\n  } // We need to make sure doSendOutputHiddenState actually gets called before\n  // the inputBatchSender sends data to the server. The lastChanceCallback\n  // here does that - if the debouncer has a pending call, flush it.\n\n\n  inputBatchSender.lastChanceCallback.push(function () {\n    if (sendOutputHiddenStateDebouncer.isPending()) sendOutputHiddenStateDebouncer.immediateCall();\n  }); // Given a namespace and a handler function, return a function that invokes\n  // the handler only when e's namespace matches. For example, if the\n  // namespace is \"bs\", it would match when e.namespace is \"bs\" or \"bs.tab\".\n  // If the namespace is \"bs.tab\", it would match for \"bs.tab\", but not \"bs\".\n\n  function filterEventsByNamespace(namespace, handler) {\n    for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n      args[_key - 2] = arguments[_key];\n    }\n\n    namespace = namespace.split(\".\");\n    return function (e) {\n      var eventNamespace = e.namespace.split(\".\"); // If any of the namespace strings aren't present in this event, quit.\n\n      for (var i = 0; i < namespace.length; i++) {\n        if (eventNamespace.indexOf(namespace[i]) === -1) return;\n      }\n\n      handler.apply(this, [namespace, handler].concat(args));\n    };\n  } // The size of each image may change either because the browser window was\n  // resized, or because a tab was shown/hidden (hidden elements report size\n  // of 0x0). It's OK to over-report sizes because the input pipeline will\n  // filter out values that haven't changed.\n\n\n  $(window).resize(debounce(500, sendImageSizeFns.regular)); // Need to register callbacks for each Bootstrap 3 class.\n\n  var bs3classes = [\"modal\", \"dropdown\", \"tab\", \"tooltip\", \"popover\", \"collapse\"];\n  $.each(bs3classes, function (idx, classname) {\n    $(document.body).on(\"shown.bs.\" + classname + \".sendImageSize\", \"*\", filterEventsByNamespace(\"bs\", sendImageSizeFns.regular));\n    $(document.body).on(\"shown.bs.\" + classname + \".sendOutputHiddenState \" + \"hidden.bs.\" + classname + \".sendOutputHiddenState\", \"*\", filterEventsByNamespace(\"bs\", sendOutputHiddenState));\n  }); // This is needed for Bootstrap 2 compatibility and for non-Bootstrap\n  // related shown/hidden events (like conditionalPanel)\n\n  $(document.body).on(\"shown.sendImageSize\", \"*\", sendImageSizeFns.regular);\n  $(document.body).on(\"shown.sendOutputHiddenState hidden.sendOutputHiddenState\", \"*\", sendOutputHiddenState); // Send initial pixel ratio, and update it if it changes\n\n  initialValues[\".clientdata_pixelratio\"] = pixelRatio();\n  $(window).resize(function () {\n    inputs.setInput(\".clientdata_pixelratio\", pixelRatio());\n  }); // Send initial URL\n\n  initialValues[\".clientdata_url_protocol\"] = window.location.protocol;\n  initialValues[\".clientdata_url_hostname\"] = window.location.hostname;\n  initialValues[\".clientdata_url_port\"] = window.location.port;\n  initialValues[\".clientdata_url_pathname\"] = window.location.pathname; // Send initial URL search (query string) and update it if it changes\n\n  initialValues[\".clientdata_url_search\"] = window.location.search;\n  $(window).on(\"pushstate\", function (e) {\n    inputs.setInput(\".clientdata_url_search\", window.location.search);\n    return;\n    e;\n  });\n  $(window).on(\"popstate\", function (e) {\n    inputs.setInput(\".clientdata_url_search\", window.location.search);\n    return;\n    e;\n  }); // This is only the initial value of the hash. The hash can change, but\n  // a reactive version of this isn't sent because watching for changes can\n  // require polling on some browsers. The JQuery hashchange plugin can be\n  // used if this capability is important.\n\n  initialValues[\".clientdata_url_hash_initial\"] = window.location.hash;\n  initialValues[\".clientdata_url_hash\"] = window.location.hash;\n  $(window).on(\"hashchange\", function (e) {\n    inputs.setInput(\".clientdata_url_hash\", window.location.hash);\n    return;\n    e;\n  }); // The server needs to know what singletons were rendered as part of\n  // the page loading\n\n  var singletonText = initialValues[\".clientdata_singletons\"] = $('script[type=\"application/shiny-singletons\"]').text();\n  singletonsRegisterNames(singletonText.split(/,/));\n  var dependencyText = $('script[type=\"application/html-dependencies\"]').text();\n  $.each(dependencyText.split(/;/), function (i, depStr) {\n    var match = /\\s*^(.+)\\[(.+)\\]\\s*$/.exec(depStr);\n\n    if (match) {\n      registerDependency(match[1], match[2]);\n    }\n  }); // We've collected all the initial values--start the server process!\n\n  inputsNoResend.reset(initialValues);\n  shinyapp.connect(initialValues);\n  $(document).one(\"shiny:connected\", function () {\n    initDeferredIframes();\n  }); // window.console.log(\"Shiny version: \", windowShiny.version);\n} // function initShiny()\n// Give any deferred iframes a chance to load.\n\n\nfunction initDeferredIframes() {\n  // TODO-barret; This method uses `window.Shiny`. Could be replaced with `fullShinyObj_.shinyapp?.isConnected()`,\n  // but that would not use `window.Shiny`. Is it a problem???\n  if ( // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-ignore; Do not want to define `window.Shiny` as a type to discourage usage of `window.Shiny`;\n  // Can not expect error when combining with window available Shiny definition\n  !window.Shiny || // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-ignore; Do not want to define `window.Shiny` as a type to discourage usage of `window.Shiny`;\n  // Can not expect error when combining with window available Shiny definition\n  !window.Shiny.shinyapp || // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-ignore; Do not want to define `window.Shiny` as a type to discourage usage of `window.Shiny`;\n  // Can not expect error when combining with window available Shiny definition\n  !window.Shiny.shinyapp.isConnected()) {\n    // If somehow we accidentally call this before the server connection is\n    // established, just ignore the call. At the time of this writing it\n    // doesn't happen, but it's easy to imagine a later refactoring putting\n    // us in this situation and it'd be hard to notice with either manual\n    // testing or automated tests, because the only effect is on HTTP request\n    // timing. (Update: Actually Aron saw this being called without even\n    // window.Shiny being defined, but it was hard to repro.)\n    return;\n  }\n\n  $(\".shiny-frame-deferred\").each(function (i, el) {\n    var $el = $(el);\n    $el.removeClass(\"shiny-frame-deferred\");\n    $el.attr(\"src\", $el.attr(\"data-deferred-src\"));\n    $el.attr(\"data-deferred-src\", null);\n  });\n}\n\nexport { initShiny };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport $ from \"jquery\";\nimport { InputPolicy } from \"./inputPolicy\";\n\n// Schedules data to be sent to shinyapp at the next setTimeout(0).\n// Batches multiple input calls into one websocket message.\nvar InputBatchSender = /*#__PURE__*/function (_InputPolicy) {\n  _inherits(InputBatchSender, _InputPolicy);\n\n  var _super = _createSuper(InputBatchSender);\n\n  function InputBatchSender(shinyapp) {\n    var _this;\n\n    _classCallCheck(this, InputBatchSender);\n\n    _this = _super.call(this);\n\n    _defineProperty(_assertThisInitialized(_this), \"shinyapp\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"timerId\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"pendingData\", {});\n\n    _defineProperty(_assertThisInitialized(_this), \"reentrant\", false);\n\n    _defineProperty(_assertThisInitialized(_this), \"lastChanceCallback\", []);\n\n    _this.shinyapp = shinyapp;\n    return _this;\n  }\n\n  _createClass(InputBatchSender, [{\n    key: \"setInput\",\n    value: function setInput(nameType, value, opts) {\n      this.pendingData[nameType] = value;\n\n      if (!this.reentrant) {\n        if (opts.priority === \"event\") {\n          this._sendNow();\n        } else if (!this.timerId) {\n          this.timerId = setTimeout(this._sendNow.bind(this), 0);\n        }\n      }\n    }\n  }, {\n    key: \"_sendNow\",\n    value: function _sendNow() {\n      if (this.reentrant) {\n        console.trace(\"Unexpected reentrancy in InputBatchSender!\");\n      }\n\n      this.reentrant = true;\n\n      try {\n        this.timerId = null;\n        $.each(this.lastChanceCallback, function (i, callback) {\n          callback();\n        });\n        var currentData = this.pendingData;\n        this.pendingData = {};\n        this.shinyapp.sendInput(currentData);\n      } finally {\n        this.reentrant = false;\n      }\n    }\n  }]);\n\n  return InputBatchSender;\n}(InputPolicy);\n\nexport { InputBatchSender };", "function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// Schedules data to be sent to shinyapp at the next setTimeout(0).\n// Batches multiple input calls into one websocket message.\nvar InputPolicy = /*#__PURE__*/function () {\n  function InputPolicy() {\n    _classCallCheck(this, InputPolicy);\n\n    _defineProperty(this, \"target\", void 0);\n  }\n\n  _createClass(InputPolicy, [{\n    key: \"setInput\",\n    value: function setInput(name, value, opts) {\n      throw \"not implemented\";\n      name;\n      value;\n      opts;\n    }\n  }]);\n\n  return InputPolicy;\n}();\n\nexport { InputPolicy };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.function.name.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { InputPolicy } from \"./inputPolicy\";\nimport { hasOwnProperty } from \"../utils\";\nimport { splitInputNameType } from \"./splitInputNameType\";\n\nvar InputNoResendDecorator = /*#__PURE__*/function (_InputPolicy) {\n  _inherits(InputNoResendDecorator, _InputPolicy);\n\n  var _super = _createSuper(InputNoResendDecorator);\n\n  function InputNoResendDecorator(target) {\n    var _this;\n\n    var initialValues = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, InputNoResendDecorator);\n\n    _this = _super.call(this);\n\n    _defineProperty(_assertThisInitialized(_this), \"lastSentValues\", void 0);\n\n    _this.target = target;\n\n    _this.reset(initialValues);\n\n    return _this;\n  }\n\n  _createClass(InputNoResendDecorator, [{\n    key: \"setInput\",\n    value: function setInput(nameType, value, opts) {\n      var _splitInputNameType = splitInputNameType(nameType),\n          inputName = _splitInputNameType.name,\n          inputType = _splitInputNameType.inputType;\n\n      var jsonValue = JSON.stringify(value);\n\n      if (opts.priority !== \"event\" && this.lastSentValues[inputName] && this.lastSentValues[inputName].jsonValue === jsonValue && this.lastSentValues[inputName].inputType === inputType) {\n        return;\n      }\n\n      this.lastSentValues[inputName] = {\n        jsonValue: jsonValue,\n        inputType: inputType\n      };\n      this.target.setInput(nameType, value, opts);\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      var values = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      // Given an object with flat name-value format:\n      //   { x: \"abc\", \"y.shiny.number\": 123 }\n      // Create an object in cache format and save it:\n      //   { x: { jsonValue: '\"abc\"', inputType: \"\" },\n      //     y: { jsonValue: \"123\", inputType: \"shiny.number\" } }\n      var cacheValues = {};\n\n      for (var inputName in values) {\n        if (hasOwnProperty(values, inputName)) {\n          var _splitInputNameType2 = splitInputNameType(inputName),\n              name = _splitInputNameType2.name,\n              inputType = _splitInputNameType2.inputType;\n\n          cacheValues[name] = {\n            jsonValue: JSON.stringify(values[inputName]),\n            inputType: inputType\n          };\n        }\n      }\n\n      this.lastSentValues = cacheValues;\n    }\n  }, {\n    key: \"forget\",\n    value: function forget(name) {\n      delete this.lastSentValues[name];\n    }\n  }]);\n\n  return InputNoResendDecorator;\n}(InputPolicy);\n\nexport { InputNoResendDecorator };", "import \"core-js/modules/es.regexp.exec.js\";\nimport \"core-js/modules/es.string.split.js\";\n\nfunction splitInputNameType(nameType) {\n  var name2 = nameType.split(\":\");\n  return {\n    name: name2[0],\n    inputType: name2.length > 1 ? name2[1] : \"\"\n  };\n}\n\nexport { splitInputNameType };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.function.name.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport $ from \"jquery\";\nimport { InputPolicy } from \"./inputPolicy\";\nimport { splitInputNameType } from \"./splitInputNameType\";\n\nvar InputEventDecorator = /*#__PURE__*/function (_InputPolicy) {\n  _inherits(InputEventDecorator, _InputPolicy);\n\n  var _super = _createSuper(InputEventDecorator);\n\n  function InputEventDecorator(target) {\n    var _this;\n\n    _classCallCheck(this, InputEventDecorator);\n\n    _this = _super.call(this);\n    _this.target = target;\n    return _this;\n  }\n\n  _createClass(InputEventDecorator, [{\n    key: \"setInput\",\n    value: function setInput(nameType, value, opts) {\n      var evt = jQuery.Event(\"shiny:inputchanged\");\n      var input = splitInputNameType(nameType);\n      evt.name = input.name;\n      evt.inputType = input.inputType;\n      evt.value = value;\n      evt.binding = opts.binding;\n      evt.el = opts.el;\n      evt.priority = opts.priority;\n      $(opts.el).trigger(evt);\n\n      if (!evt.isDefaultPrevented()) {\n        var name = evt.name;\n        if (evt.inputType !== \"\") name += \":\" + evt.inputType; // Most opts aren't passed along to lower levels in the input decorator\n        // stack.\n\n        this.target.setInput(name, evt.value, {\n          priority: opts.priority\n        });\n      }\n    }\n  }]);\n\n  return InputEventDecorator;\n}(InputPolicy);\n\nexport { InputEventDecorator };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.function.name.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { InputPolicy } from \"./inputPolicy\";\nimport { Debouncer, Invoker, Throttler } from \"../time\";\nimport { splitInputNameType } from \"./splitInputNameType\";\n\nvar InputRateDecorator = /*#__PURE__*/function (_InputPolicy) {\n  _inherits(InputRateDecorator, _InputPolicy);\n\n  var _super = _createSuper(InputRateDecorator);\n\n  function InputRateDecorator(target) {\n    var _this;\n\n    _classCallCheck(this, InputRateDecorator);\n\n    _this = _super.call(this);\n\n    _defineProperty(_assertThisInitialized(_this), \"inputRatePolicies\", {});\n\n    _this.target = target;\n    return _this;\n  } // Note that the first argument of setInput() and setRatePolicy()\n  // are passed both the input name (i.e., inputId) and type.\n  // https://github.com/rstudio/shiny/blob/67d3a/srcjs/init_shiny.js#L111-L126\n  // However, $ensureInit() and $doSetInput() are meant to be passed just\n  // the input name (i.e., inputId), which is why we distinguish between\n  // nameType and name.\n\n\n  _createClass(InputRateDecorator, [{\n    key: \"setInput\",\n    value: function setInput(nameType, value, opts) {\n      var _splitInputNameType = splitInputNameType(nameType),\n          inputName = _splitInputNameType.name;\n\n      this._ensureInit(inputName);\n\n      if (opts.priority !== \"deferred\") this.inputRatePolicies[inputName].immediateCall(nameType, value, opts);else this.inputRatePolicies[inputName].normalCall(nameType, value, opts);\n    }\n  }, {\n    key: \"setRatePolicy\",\n    value: function setRatePolicy(nameType, mode, millis) {\n      var _splitInputNameType2 = splitInputNameType(nameType),\n          inputName = _splitInputNameType2.name;\n\n      if (mode === \"direct\") {\n        this.inputRatePolicies[inputName] = new Invoker(this, this._doSetInput);\n      } else if (mode === \"debounce\") {\n        this.inputRatePolicies[inputName] = new Debouncer(this, this._doSetInput, millis);\n      } else if (mode === \"throttle\") {\n        this.inputRatePolicies[inputName] = new Throttler(this, this._doSetInput, millis);\n      }\n    }\n  }, {\n    key: \"_ensureInit\",\n    value: function _ensureInit(name) {\n      if (!(name in this.inputRatePolicies)) this.setRatePolicy(name, \"direct\");\n    }\n  }, {\n    key: \"_doSetInput\",\n    value: function _doSetInput(nameType, value, opts) {\n      this.target.setInput(nameType, value, opts);\n    }\n  }]);\n\n  return InputRateDecorator;\n}(InputPolicy);\n\nexport { InputRateDecorator };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { InputPolicy } from \"./inputPolicy\";\nimport { hasOwnProperty } from \"../utils\";\n\nvar InputDeferDecorator = /*#__PURE__*/function (_InputPolicy) {\n  _inherits(InputDeferDecorator, _InputPolicy);\n\n  var _super = _createSuper(InputDeferDecorator);\n\n  function InputDeferDecorator(target) {\n    var _this;\n\n    _classCallCheck(this, InputDeferDecorator);\n\n    _this = _super.call(this);\n\n    _defineProperty(_assertThisInitialized(_this), \"pendingInput\", {});\n\n    _this.target = target;\n    return _this;\n  }\n\n  _createClass(InputDeferDecorator, [{\n    key: \"setInput\",\n    value: function setInput(nameType, value, opts) {\n      if (/^\\./.test(nameType)) this.target.setInput(nameType, value, opts);else this.pendingInput[nameType] = {\n        value: value,\n        opts: opts\n      };\n    }\n  }, {\n    key: \"submit\",\n    value: function submit() {\n      for (var nameType in this.pendingInput) {\n        if (hasOwnProperty(this.pendingInput, nameType)) {\n          var _this$pendingInput$na = this.pendingInput[nameType],\n              value = _this$pendingInput$na.value,\n              opts = _this$pendingInput$na.opts;\n          this.target.setInput(nameType, value, opts);\n        }\n      }\n    }\n  }]);\n\n  return InputDeferDecorator;\n}(InputPolicy);\n\nexport { InputDeferDecorator };", "function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport $ from \"jquery\";\n\n// Merge opts with defaults, and return a new object.\nfunction addDefaultInputOpts(opts) {\n  var newOpts = $.extend({\n    priority: \"immediate\",\n    binding: null,\n    el: null\n  }, opts);\n\n  if (newOpts && typeof newOpts.priority !== \"undefined\") {\n    switch (newOpts.priority) {\n      case \"deferred\":\n      case \"immediate\":\n      case \"event\":\n        break;\n\n      default:\n        throw new Error(\"Unexpected input value mode: '\" + newOpts.priority + \"'\");\n    }\n  }\n\n  return newOpts;\n}\n\nvar InputValidateDecorator = function InputValidateDecorator(target) {\n  _classCallCheck(this, InputValidateDecorator);\n\n  _defineProperty(this, \"target\", void 0);\n\n  _defineProperty(this, \"setInput\", function (nameType, value, opts) {\n    if (!nameType) throw \"Can't set input with empty name.\";\n    var newOpts = addDefaultInputOpts(opts);\n    this.target.setInput(nameType, value, newOpts);\n  });\n\n  this.target = target;\n};\n\nexport { InputValidateDecorator, addDefaultInputOpts };", "import \"core-js/modules/es.array.find.js\";\nimport $ from \"jquery\";\nimport { OutputBindingAdapter } from \"../bindings/outputAdapter\";\nimport { shinyAppBindOutput, shinyAppUnbindOutput } from \"./initedMethods\";\nimport { sendImageSizeFns } from \"./sendImageSize\";\nvar boundInputs = {};\n\n// todo make sure allowDeferred can NOT be supplied and still work\nfunction valueChangeCallback(inputs, binding, el, allowDeferred) {\n  var id = binding.getId(el);\n\n  if (id) {\n    var value = binding.getValue(el);\n    var type = binding.getType(el);\n    if (type) id = id + \":\" + type;\n    var opts = {\n      priority: allowDeferred ? \"deferred\" : \"immediate\",\n      binding: binding,\n      el: el\n    };\n    inputs.setInput(id, value, opts);\n  }\n}\n\nfunction bindInputs(shinyCtx) {\n  var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document.documentElement;\n  var inputs = shinyCtx.inputs,\n      inputsRate = shinyCtx.inputsRate,\n      inputBindings = shinyCtx.inputBindings;\n  var bindings = inputBindings.getBindings();\n  var inputItems = {};\n\n  var _loop = function _loop(i) {\n    var binding = bindings[i].binding;\n    var matches = binding.find(scope) || [];\n\n    var _loop2 = function _loop2(j) {\n      var el = matches[j];\n      var id = binding.getId(el); // Check if ID is falsy, or if already bound\n\n      if (!id || boundInputs[id]) return \"continue\";\n      var type = binding.getType(el);\n      var effectiveId = type ? id + \":\" + type : id;\n      inputItems[effectiveId] = {\n        value: binding.getValue(el),\n        opts: {\n          immediate: true,\n          binding: binding,\n          el: el\n        }\n      };\n      /*jshint loopfunc:true*/\n\n      var thisCallback = function () {\n        var thisBinding = binding;\n        var thisEl = el;\n        return function (allowDeferred) {\n          valueChangeCallback(inputs, thisBinding, thisEl, allowDeferred);\n        };\n      }();\n\n      binding.subscribe(el, thisCallback);\n      $(el).data(\"shiny-input-binding\", binding);\n      $(el).addClass(\"shiny-bound-input\");\n      var ratePolicy = binding.getRatePolicy(el);\n\n      if (ratePolicy !== null) {\n        inputsRate.setRatePolicy(effectiveId, ratePolicy.policy, ratePolicy.delay);\n      }\n\n      boundInputs[id] = {\n        binding: binding,\n        node: el\n      };\n      $(el).trigger({\n        type: \"shiny:bound\",\n        // @ts-expect-error; Can not remove info on a established, malformed Event object\n        binding: binding,\n        bindingType: \"input\"\n      });\n    };\n\n    for (var j = 0; j < matches.length; j++) {\n      var _ret = _loop2(j);\n\n      if (_ret === \"continue\") continue;\n    }\n  };\n\n  for (var i = 0; i < bindings.length; i++) {\n    _loop(i);\n  }\n\n  return inputItems;\n}\n\nfunction bindOutputs(_ref) {\n  var sendOutputHiddenState = _ref.sendOutputHiddenState,\n      maybeAddThemeObserver = _ref.maybeAddThemeObserver,\n      outputBindings = _ref.outputBindings;\n  var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document.documentElement;\n  var $scope = $(scope);\n  var bindings = outputBindings.getBindings();\n\n  for (var i = 0; i < bindings.length; i++) {\n    var binding = bindings[i].binding;\n    var matches = binding.find($scope) || [];\n\n    for (var j = 0; j < matches.length; j++) {\n      var _el = matches[j];\n      var id = binding.getId(_el); // Check if ID is falsy\n\n      if (!id) continue; // In some uncommon cases, elements that are later in the\n      // matches array can be removed from the document by earlier\n      // iterations. See https://github.com/rstudio/shiny/issues/1399\n\n      if (!$.contains(document.documentElement, _el)) continue;\n      var $el = $(_el);\n\n      if ($el.hasClass(\"shiny-bound-output\")) {\n        // Already bound; can happen with nested uiOutput (bindAll\n        // gets called on two ancestors)\n        continue;\n      } // If this element reports its CSS styles to getCurrentOutputInfo()\n      // then it should have a MutationObserver() to resend CSS if its\n      // style/class attributes change. This observer should already exist\n      // for _static_ UI, but not yet for _dynamic_ UI\n\n\n      maybeAddThemeObserver(_el);\n      var bindingAdapter = new OutputBindingAdapter(_el, binding);\n      shinyAppBindOutput(id, bindingAdapter);\n      $el.data(\"shiny-output-binding\", bindingAdapter);\n      $el.addClass(\"shiny-bound-output\");\n      if (!$el.attr(\"aria-live\")) $el.attr(\"aria-live\", \"polite\");\n      $el.trigger({\n        type: \"shiny:bound\",\n        // @ts-expect-error; Can not remove info on a established, malformed Event object\n        binding: binding,\n        bindingType: \"output\"\n      });\n    }\n  } // Send later in case DOM layout isn't final yet.\n\n\n  setTimeout(sendImageSizeFns.regular, 0);\n  setTimeout(sendOutputHiddenState, 0);\n}\n\nfunction unbindInputs() {\n  var scope = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document.documentElement;\n  var includeSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  var inputs = $(scope).find(\".shiny-bound-input\").toArray();\n\n  if (includeSelf && $(scope).hasClass(\"shiny-bound-input\")) {\n    inputs.push(scope);\n  }\n\n  for (var i = 0; i < inputs.length; i++) {\n    var _el2 = inputs[i];\n    var binding = $(_el2).data(\"shiny-input-binding\");\n    if (!binding) continue;\n    var id = binding.getId(_el2);\n    $(_el2).removeClass(\"shiny-bound-input\");\n    delete boundInputs[id];\n    binding.unsubscribe(_el2);\n    $(_el2).trigger({\n      type: \"shiny:unbound\",\n      // @ts-expect-error; Can not remove info on a established, malformed Event object\n      binding: binding,\n      bindingType: \"input\"\n    });\n  }\n}\n\nfunction unbindOutputs(_ref2) {\n  var sendOutputHiddenState = _ref2.sendOutputHiddenState;\n  var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document.documentElement;\n  var includeSelf = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  var outputs = $(scope).find(\".shiny-bound-output\").toArray();\n\n  if (includeSelf && $(scope).hasClass(\"shiny-bound-output\")) {\n    outputs.push(scope);\n  }\n\n  for (var i = 0; i < outputs.length; i++) {\n    var $el = $(outputs[i]);\n    var bindingAdapter = $el.data(\"shiny-output-binding\");\n    if (!bindingAdapter) continue;\n    var id = bindingAdapter.binding.getId(outputs[i]);\n    shinyAppUnbindOutput(id, bindingAdapter);\n    $el.removeClass(\"shiny-bound-output\");\n    $el.removeData(\"shiny-output-binding\");\n    $el.trigger({\n      type: \"shiny:unbound\",\n      // @ts-expect-error; Can not remove info on a established, malformed Event object\n      binding: bindingAdapter.binding,\n      bindingType: \"output\"\n    });\n  } // Send later in case DOM layout isn't final yet.\n\n\n  setTimeout(sendImageSizeFns.regular, 0);\n  setTimeout(sendOutputHiddenState, 0);\n} // (Named used before TS conversion)\n// eslint-disable-next-line @typescript-eslint/naming-convention\n\n\nfunction _bindAll(shinyCtx, scope) {\n  bindOutputs(shinyCtx, scope);\n  return bindInputs(shinyCtx, scope);\n}\n\nfunction unbindAll(shinyCtx, scope) {\n  var includeSelf = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  unbindInputs(scope, includeSelf);\n  unbindOutputs(shinyCtx, scope, includeSelf);\n}\n\nfunction bindAll(shinyCtx, scope) {\n  // _bindAll returns input values; it doesn't send them to the server.\n  // Shiny.bindAll needs to send the values to the server.\n  var currentInputItems = _bindAll(shinyCtx, scope);\n\n  var inputs = shinyCtx.inputs;\n  $.each(currentInputItems, function (name, item) {\n    inputs.setInput(name, item.value, item.opts);\n  }); // Not sure if the iframe stuff is an intrinsic part of bindAll, but bindAll\n  // is a convenient place to hang it. bindAll will be called anytime new HTML\n  // appears that might contain inputs/outputs; it's reasonable to assume that\n  // any such HTML may contain iframes as well.\n\n  shinyCtx.initDeferredIframes();\n}\n\nexport { unbindAll, bindAll, _bindAll };", "function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { makeResizeFilter } from \"../utils\";\n\nvar OutputBindingAdapter = /*#__PURE__*/function () {\n  function OutputBindingAdapter(el, binding) {\n    _classCallCheck(this, OutputBindingAdapter);\n\n    _defineProperty(this, \"el\", void 0);\n\n    _defineProperty(this, \"binding\", void 0);\n\n    this.el = el;\n    this.binding = binding; // If the binding actually has a resize method, override the prototype of\n    // onResize with a version that does a makeResizeFilter on the element.\n\n    if (binding.resize) {\n      this.onResize = makeResizeFilter(el, function (width, height) {\n        binding.resize(el, width, height);\n      });\n    }\n  }\n\n  _createClass(OutputBindingAdapter, [{\n    key: \"getId\",\n    value: function getId() {\n      return this.binding.getId(this.el);\n    }\n  }, {\n    key: \"onValueChange\",\n    value: function onValueChange(data) {\n      this.binding.onValueChange(this.el, data);\n    }\n  }, {\n    key: \"onValueError\",\n    value: function onValueError(err) {\n      this.binding.onValueError(this.el, err);\n    }\n  }, {\n    key: \"showProgress\",\n    value: function showProgress(show) {\n      this.binding.showProgress(this.el, show);\n    }\n  }, {\n    key: \"onResize\",\n    value: function onResize() {// Intentionally left blank; see constructor\n    }\n  }]);\n\n  return OutputBindingAdapter;\n}();\n\nexport { OutputBindingAdapter };", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar arrayBufferModule = require('../internals/array-buffer');\nvar setSpecies = require('../internals/set-species');\n\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\n\n// `ArrayBuffer` constructor\n// https://tc39.es/ecma262/#sec-arraybuffer-constructor\n$({ global: true, forced: NativeArrayBuffer !== ArrayBuffer }, {\n  ArrayBuffer: ArrayBuffer\n});\n\nsetSpecies(ARRAY_BUFFER);\n", "'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anObject = require('../internals/an-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar nativeArrayBufferSlice = ArrayBuffer.prototype.slice;\n\nvar INCORRECT_SLICE = fails(function () {\n  return !new ArrayBuffer(2).slice(1, undefined).byteLength;\n});\n\n// `ArrayBuffer.prototype.slice` method\n// https://tc39.es/ecma262/#sec-arraybuffer.prototype.slice\n$({ target: 'ArrayBuffer', proto: true, unsafe: true, forced: INCORRECT_SLICE }, {\n  slice: function slice(start, end) {\n    if (nativeArrayBufferSlice !== undefined && end === undefined) {\n      return nativeArrayBufferSlice.call(anObject(this), start); // FF fix\n    }\n    var length = anObject(this).byteLength;\n    var first = toAbsoluteIndex(start, length);\n    var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n    var result = new (speciesConstructor(this, ArrayBuffer))(toLength(fin - first));\n    var viewSource = new DataView(this);\n    var viewTarget = new DataView(result);\n    var index = 0;\n    while (first < fin) {\n      viewTarget.setUint8(index++, viewSource.getUint8(first++));\n    } return result;\n  }\n});\n", "var $ = require('../internals/export');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\n\n// `DataView` constructor\n// https://tc39.es/ecma262/#sec-dataview-constructor\n$({ global: true, forced: !NATIVE_ARRAY_BUFFER }, {\n  DataView: ArrayBufferModule.DataView\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || CHROME_BUG }, {\n  reduce: function reduce(callbackfn /* , initialValue */) {\n    return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n", "function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport \"core-js/modules/es.array.index-of.js\";\nimport \"core-js/modules/es.array.splice.js\";\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.array-buffer.constructor.js\";\nimport \"core-js/modules/es.array-buffer.slice.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.data-view.js\";\nimport \"core-js/modules/es.function.name.js\";\nimport \"core-js/modules/es.array.reduce.js\";\nimport \"core-js/modules/es.array.map.js\";\nimport \"core-js/modules/es.array.filter.js\";\nimport \"core-js/modules/es.object.keys.js\";\nimport \"core-js/modules/es.regexp.exec.js\";\nimport \"core-js/modules/es.string.replace.js\";\nimport \"core-js/modules/es.array.join.js\";\nimport \"core-js/modules/es.array.slice.js\";\nimport \"core-js/modules/es.array.for-each.js\";\nimport \"core-js/modules/web.dom-collections.for-each.js\";\nimport \"core-js/modules/es.number.constructor.js\";\nimport \"core-js/modules/es.string.search.js\";\nimport $ from \"jquery\";\nimport { $escape, hasOwnProperty, makeBlob, randomId, scopeExprToFunc } from \"../utils\";\nimport { getShinyCreateWebsocket, getShinyOnCustomMessage, setShinyUser, shinyForgetLastInputValue, shinyUnbindAll } from \"./initedMethods\";\nimport { isQt } from \"../utils/browser\";\nimport { showNotification, removeNotification } from \"./notifications\";\nimport { showModal, removeModal } from \"./modal\";\nimport { renderContent, renderHtml } from \"./render\";\nimport { hideReconnectDialog, showReconnectDialog } from \"./reconnectDialog\";\nimport { resetBrush } from \"../imageutils/resetBrush\";\nimport { indirectEval } from \"../utils/eval\";\n//// 2021/03 - TypeScript conversion note:\n// These four variables were moved from being internally defined to being defined globally within the file.\n// Before the TypeScript conversion, the values where attached to `window.Shiny.addCustomMessageHandler()`.\n// This prevents multiple instances of `ShinyApp` from existing independently. :-/\n// This behavior is also exhibited on `Shiny.progressHandlers`, however there are no instances of use on GitHub. So moving the assignment to within `initShiny()`.\n// Records insertion order of handlers. Maps number to name. This is so\n// we can dispatch messages to handlers in the order that handlers were\n// added.\nvar messageHandlerOrder = []; // Keep track of handlers by name. Maps name to handler function.\n\nvar messageHandlers = {}; // Two categories of message handlers: those that are from Shiny, and those\n// that are added by the user. The Shiny ones handle messages in\n// msgObj.values, msgObj.errors, and so on. The user ones handle messages\n// in msgObj.custom.foo and msgObj.custom.bar.\n\nvar customMessageHandlerOrder = [];\nvar customMessageHandlers = {}; // Adds Shiny (internal) message handler\n\nfunction addMessageHandler(type, handler) {\n  if (messageHandlers[type]) {\n    throw 'handler for message of type \"' + type + '\" already added.';\n  }\n\n  if (typeof handler !== \"function\") {\n    throw \"handler must be a function.\";\n  }\n\n  if (handler.length !== 1) {\n    throw \"handler must be a function that takes one argument.\";\n  }\n\n  messageHandlerOrder.push(type);\n  messageHandlers[type] = handler;\n} // Adds custom message handler - this one is exposed to the user\n\n\nfunction addCustomMessageHandler(type, handler) {\n  // Remove any previously defined handlers so that only the most recent one\n  // will be called\n  if (customMessageHandlers[type]) {\n    var typeIdx = customMessageHandlerOrder.indexOf(type);\n\n    if (typeIdx !== -1) {\n      customMessageHandlerOrder.splice(typeIdx, 1);\n      delete customMessageHandlers[type];\n    }\n  }\n\n  if (typeof handler !== \"function\") {\n    throw \"handler must be a function.\";\n  }\n\n  if (handler.length !== 1) {\n    throw \"handler must be a function that takes one argument.\";\n  }\n\n  customMessageHandlerOrder.push(type);\n  customMessageHandlers[type] = handler;\n} //// End message handler variables\n\n\nvar ShinyApp = /*#__PURE__*/function () {\n  // Cached input values\n  // Input values at initialization (and reconnect)\n  // Output bindings\n  // Cached values/errors\n  // Conditional bindings (show/hide element based on expression)\n  function ShinyApp() {\n    _classCallCheck(this, ShinyApp);\n\n    _defineProperty(this, \"$socket\", null);\n\n    _defineProperty(this, \"config\", null);\n\n    _defineProperty(this, \"$inputValues\", {});\n\n    _defineProperty(this, \"$initialInput\", void 0);\n\n    _defineProperty(this, \"$bindings\", {});\n\n    _defineProperty(this, \"$values\", {});\n\n    _defineProperty(this, \"$errors\", {});\n\n    _defineProperty(this, \"$conditionals\", {});\n\n    _defineProperty(this, \"$pendingMessages\", []);\n\n    _defineProperty(this, \"$activeRequests\", {});\n\n    _defineProperty(this, \"$nextRequestId\", 0);\n\n    _defineProperty(this, \"$allowReconnect\", false);\n\n    _defineProperty(this, \"scheduledReconnect\", null);\n\n    _defineProperty(this, \"reconnectDelay\", function () {\n      var attempts = 0; // Time to wait before each reconnection attempt. If we go through all of\n      // these values, repeated use the last one. Add 500ms to each one so that\n      // in the last 0.5s, it shows \"...\"\n\n      var delays = [1500, 1500, 2500, 2500, 5500, 5500, 10500];\n      return {\n        next: function next() {\n          var i = attempts; // Instead of going off the end, use the last one\n\n          if (i >= delays.length) {\n            i = delays.length - 1;\n          }\n\n          attempts++;\n          return delays[i];\n        },\n        reset: function reset() {\n          attempts = 0;\n        }\n      };\n    }());\n\n    _defineProperty(this, \"progressHandlers\", {\n      // Progress for a particular object\n      binding: function binding(message) {\n        var key = message.id;\n        var binding = this.$bindings[key];\n\n        if (binding) {\n          $(binding.el).trigger({\n            type: \"shiny:outputinvalidated\",\n            // @ts-expect-error; Can not remove info on a established, malformed Event object\n            binding: binding,\n            name: key\n          });\n          if (binding.showProgress) binding.showProgress(true);\n        }\n      },\n      // Open a page-level progress bar\n      open: function open(message) {\n        if (message.style === \"notification\") {\n          // For new-style (starting in Shiny 0.14) progress indicators that use\n          // the notification API.\n          // Progress bar starts hidden; will be made visible if a value is provided\n          // during updates.\n          showNotification({\n            html: \"<div id=\\\"shiny-progress-\".concat(message.id, \"\\\" class=\\\"shiny-progress-notification\\\">\") + '<div class=\"progress active\" style=\"display: none;\"><div class=\"progress-bar\"></div></div>' + '<div class=\"progress-text\">' + '<span class=\"progress-message\">message</span> ' + '<span class=\"progress-detail\"></span>' + \"</div>\" + \"</div>\",\n            id: message.id,\n            duration: null\n          });\n        } else if (message.style === \"old\") {\n          // For old-style (Shiny <=0.13.2) progress indicators.\n          // Add progress container (for all progress items) if not already present\n          var $container = $(\".shiny-progress-container\");\n\n          if ($container.length === 0) {\n            $container = $('<div class=\"shiny-progress-container\"></div>');\n            $(document.body).append($container);\n          } // Add div for just this progress ID\n\n\n          var depth = $(\".shiny-progress.open\").length; // The 'bar' class is needed for backward compatibility with Bootstrap 2.\n\n          var $progress = $('<div class=\"shiny-progress open\">' + '<div class=\"progress active\"><div class=\"progress-bar bar\"></div></div>' + '<div class=\"progress-text\">' + '<span class=\"progress-message\">message</span>' + '<span class=\"progress-detail\"></span>' + \"</div>\" + \"</div>\");\n          $progress.attr(\"id\", message.id);\n          $container.append($progress); // Stack bars\n\n          var $progressBar = $progress.find(\".progress\");\n          $progressBar.css(\"top\", depth * $progressBar.height() + \"px\"); // Stack text objects\n\n          var $progressText = $progress.find(\".progress-text\");\n          $progressText.css(\"top\", 3 * $progressBar.height() + depth * $progressText.outerHeight() + \"px\");\n          $progress.hide();\n        }\n      },\n      // Update page-level progress bar\n      update: function update(message) {\n        if (message.style === \"notification\") {\n          // For new-style (starting in Shiny 0.14) progress indicators that use\n          // the notification API.\n          var $progress = $(\"#shiny-progress-\" + message.id);\n          if ($progress.length === 0) return;\n\n          if (typeof message.message !== \"undefined\") {\n            $progress.find(\".progress-message\").text(message.message);\n          }\n\n          if (typeof message.detail !== \"undefined\") {\n            $progress.find(\".progress-detail\").text(message.detail);\n          }\n\n          if (typeof message.value !== \"undefined\" && message.value !== null) {\n            $progress.find(\".progress\").show();\n            $progress.find(\".progress-bar\").width(message.value * 100 + \"%\");\n          }\n        } else if (message.style === \"old\") {\n          // For old-style (Shiny <=0.13.2) progress indicators.\n          var _$progress = $(\"#\" + message.id + \".shiny-progress\");\n\n          if (typeof message.message !== \"undefined\") {\n            _$progress.find(\".progress-message\").text(message.message);\n          }\n\n          if (typeof message.detail !== \"undefined\") {\n            _$progress.find(\".progress-detail\").text(message.detail);\n          }\n\n          if (typeof message.value !== \"undefined\" && message.value !== null) {\n            _$progress.find(\".progress\").show();\n\n            _$progress.find(\".bar\").width(message.value * 100 + \"%\");\n          }\n\n          _$progress.fadeIn();\n        }\n      },\n      // Close page-level progress bar\n      close: function close(message) {\n        if (message.style === \"notification\") {\n          removeNotification(message.id);\n        } else if (message.style === \"old\") {\n          var $progress = $(\"#\" + message.id + \".shiny-progress\");\n          $progress.removeClass(\"open\");\n          $progress.fadeOut({\n            complete: function complete() {\n              $progress.remove(); // If this was the last shiny-progress, remove container\n\n              if ($(\".shiny-progress\").length === 0) $(\".shiny-progress-container\").remove();\n            }\n          });\n        }\n      }\n    });\n\n    this._init();\n  }\n\n  _createClass(ShinyApp, [{\n    key: \"connect\",\n    value: function connect(initialInput) {\n      if (this.$socket) throw \"Connect was already called on this application object\";\n      this.$socket = this.createSocket();\n      this.$initialInput = initialInput;\n      $.extend(this.$inputValues, initialInput);\n      this.$updateConditionals();\n    }\n  }, {\n    key: \"isConnected\",\n    value: function isConnected() {\n      return !!this.$socket;\n    }\n  }, {\n    key: \"reconnect\",\n    value: function reconnect() {\n      // This function can be invoked directly even if there's a scheduled\n      // reconnect, so be sure to clear any such scheduled reconnects.\n      clearTimeout(this.scheduledReconnect);\n      if (this.isConnected()) throw \"Attempted to reconnect, but already connected.\";\n      this.$socket = this.createSocket();\n      this.$initialInput = $.extend({}, this.$inputValues);\n      this.$updateConditionals();\n    }\n  }, {\n    key: \"createSocket\",\n    value: function createSocket() {\n      var _this = this;\n\n      var createSocketFunc = getShinyCreateWebsocket() || function () {\n        var protocol = \"ws:\";\n        if (window.location.protocol === \"https:\") protocol = \"wss:\";\n        var defaultPath = window.location.pathname; // some older WebKit browsers return the pathname already decoded;\n        // if we find invalid URL characters in the path, encode them\n\n        if (!/^([$#!&-;=?-[\\]_a-z~]|%[0-9a-fA-F]{2})+$/.test(defaultPath)) {\n          defaultPath = encodeURI(defaultPath); // Bizarrely, QtWebKit requires us to encode these characters *twice*\n\n          if (isQt()) {\n            defaultPath = encodeURI(defaultPath);\n          }\n        }\n\n        if (!/\\/$/.test(defaultPath)) defaultPath += \"/\";\n        defaultPath += \"websocket/\";\n        var ws = new WebSocket(protocol + \"//\" + window.location.host + defaultPath);\n        ws.binaryType = \"arraybuffer\";\n        return ws;\n      };\n\n      var socket = createSocketFunc();\n      var hasOpened = false;\n\n      socket.onopen = function () {\n        hasOpened = true;\n        $(document).trigger({\n          type: \"shiny:connected\",\n          // @ts-expect-error; Can not remove info on a established, malformed Event object\n          socket: socket\n        });\n\n        _this.onConnected();\n\n        socket.send(JSON.stringify({\n          method: \"init\",\n          data: _this.$initialInput\n        }));\n\n        while (_this.$pendingMessages.length) {\n          var msg = _this.$pendingMessages.shift();\n\n          socket.send(msg);\n        }\n      };\n\n      socket.onmessage = function (e) {\n        _this.dispatchMessage(e.data);\n      }; // Called when a successfully-opened websocket is closed, or when an\n      // attempt to open a connection fails.\n\n\n      socket.onclose = function () {\n        // These things are needed only if we've successfully opened the\n        // websocket.\n        if (hasOpened) {\n          $(document).trigger({\n            type: \"shiny:disconnected\",\n            // @ts-expect-error; Can not remove info on a established, malformed Event object\n            socket: socket\n          });\n\n          _this.$notifyDisconnected();\n        }\n\n        _this.onDisconnected(); // Must be run before this.$removeSocket()\n\n\n        _this.$removeSocket();\n      };\n\n      return socket;\n    }\n  }, {\n    key: \"sendInput\",\n    value: function sendInput(values) {\n      var msg = JSON.stringify({\n        method: \"update\",\n        data: values\n      });\n      this.$sendMsg(msg);\n      $.extend(this.$inputValues, values);\n      this.$updateConditionals();\n    }\n  }, {\n    key: \"$notifyDisconnected\",\n    value: function $notifyDisconnected() {\n      if (window.parent) {\n        window.parent.postMessage(\"disconnected\", \"*\");\n      }\n    }\n  }, {\n    key: \"$removeSocket\",\n    value: function $removeSocket() {\n      this.$socket = null;\n    }\n  }, {\n    key: \"$scheduleReconnect\",\n    value: function $scheduleReconnect(delay) {\n      var _this2 = this;\n\n      this.scheduledReconnect = setTimeout(function () {\n        _this2.reconnect();\n      }, delay);\n    } // How long should we wait before trying the next reconnection?\n    // The delay will increase with subsequent attempts.\n    // .next: Return the time to wait for next connection, and increment counter.\n    // .reset: Reset the attempt counter.\n\n  }, {\n    key: \"onDisconnected\",\n    value: function onDisconnected() {\n      // Add gray-out overlay, if not already present\n      var $overlay = $(\"#shiny-disconnected-overlay\");\n\n      if ($overlay.length === 0) {\n        $(document.body).append('<div id=\"shiny-disconnected-overlay\"></div>');\n      } // To try a reconnect, both the app (this.$allowReconnect) and the\n      // server (this.$socket.allowReconnect) must allow reconnections, or\n      // session$allowReconnect(\"force\") was called. The \"force\" option should\n      // only be used for testing.\n\n\n      if (this.$allowReconnect === true && this.$socket.allowReconnect === true || this.$allowReconnect === \"force\") {\n        var delay = this.reconnectDelay.next();\n        showReconnectDialog(delay);\n        this.$scheduleReconnect(delay);\n      }\n    }\n  }, {\n    key: \"onConnected\",\n    value: function onConnected() {\n      $(\"#shiny-disconnected-overlay\").remove();\n      hideReconnectDialog();\n      this.reconnectDelay.reset();\n    } // NB: Including blobs will cause IE to break!\n    // TODO: Make blobs work with Internet Explorer\n    //\n    // Websocket messages are normally one-way--i.e. the client passes a\n    // message to the server but there is no way for the server to provide\n    // a response to that specific message. makeRequest provides a way to\n    // do asynchronous RPC over websocket. Each request has a method name\n    // and arguments, plus optionally one or more binary blobs can be\n    // included as well. The request is tagged with a unique number that\n    // the server will use to label the corresponding response.\n    //\n    // @param method A string that tells the server what logic to run.\n    // @param args An array of objects that should also be passed to the\n    //   server in JSON-ified form.\n    // @param onSuccess A function that will be called back if the server\n    //   responds with success. If the server provides a value in the\n    //   response, the function will be called with it as the only argument.\n    // @param onError A function that will be called back if the server\n    //   responds with error, or if the request fails for any other reason.\n    //   The parameter to onError will be a string describing the error.\n    // @param blobs Optionally, an array of Blob, ArrayBuffer, or string\n    //   objects that will be made available to the server as part of the\n    //   request. Strings will be encoded using UTF-8.\n\n  }, {\n    key: \"makeRequest\",\n    value: function makeRequest(method, args, onSuccess, onError, blobs) {\n      var requestId = this.$nextRequestId;\n\n      while (this.$activeRequests[requestId]) {\n        requestId = (requestId + 1) % 1000000000;\n      }\n\n      this.$nextRequestId = requestId + 1;\n      this.$activeRequests[requestId] = {\n        onSuccess: onSuccess,\n        onError: onError\n      };\n      var msg = JSON.stringify({\n        method: method,\n        args: args,\n        tag: requestId\n      });\n\n      if (blobs) {\n        // We have binary data to transfer; form a different kind of packet.\n        // Start with a 4-byte signature, then for each blob, emit 4 bytes for\n        // the length followed by the blob. The json payload is UTF-8 encoded\n        // and used as the first blob.\n        var uint32ToBuf = function uint32ToBuf(val) {\n          var buffer = new ArrayBuffer(4);\n          var view = new DataView(buffer);\n          view.setUint32(0, val, true); // little-endian\n\n          return buffer;\n        };\n\n        var payload = [];\n        payload.push(uint32ToBuf(0x01020202)); // signature\n\n        var jsonBuf = makeBlob([msg]);\n        payload.push(uint32ToBuf(jsonBuf.size));\n        payload.push(jsonBuf);\n\n        for (var i = 0; i < blobs.length; i++) {\n          var _blob = blobs[i];\n          payload.push(uint32ToBuf(_blob.byteLength || _blob.size || 0));\n          payload.push(_blob);\n        }\n\n        var blob = makeBlob(payload);\n        msg = blob;\n      }\n\n      this.$sendMsg(msg);\n    }\n  }, {\n    key: \"$sendMsg\",\n    value: function $sendMsg(msg) {\n      if (!this.$socket.readyState) {\n        this.$pendingMessages.push(msg);\n      } else {\n        this.$socket.send(msg);\n      }\n    }\n  }, {\n    key: \"receiveError\",\n    value: function receiveError(name, error) {\n      if (this.$errors[name] === error) return;\n      this.$errors[name] = error;\n      delete this.$values[name];\n      var binding = this.$bindings[name];\n      var evt = jQuery.Event(\"shiny:error\");\n      evt.name = name;\n      evt.error = error;\n      evt.binding = binding;\n      $(binding ? binding.el : document).trigger(evt);\n\n      if (!evt.isDefaultPrevented() && binding && binding.onValueError) {\n        binding.onValueError(evt.error);\n      }\n    }\n  }, {\n    key: \"receiveOutput\",\n    value: function receiveOutput(name, value) {\n      var binding = this.$bindings[name];\n      var evt = jQuery.Event(\"shiny:value\");\n      evt.name = name;\n      evt.value = value;\n      evt.binding = binding;\n\n      if (this.$values[name] === value) {\n        $(binding ? binding.el : document).trigger(evt);\n        return undefined;\n      }\n\n      this.$values[name] = value;\n      delete this.$errors[name];\n      $(binding ? binding.el : document).trigger(evt);\n\n      if (!evt.isDefaultPrevented() && binding) {\n        binding.onValueChange(evt.value);\n      }\n\n      return value;\n    }\n  }, {\n    key: \"bindOutput\",\n    value: function bindOutput(id, binding) {\n      if (!id) throw \"Can't bind an element with no ID\";\n      if (this.$bindings[id]) throw \"Duplicate binding for ID \" + id;\n      this.$bindings[id] = binding;\n      if (this.$values[id] !== undefined) binding.onValueChange(this.$values[id]);else if (this.$errors[id] !== undefined) binding.onValueError(this.$errors[id]);\n      return binding;\n    }\n  }, {\n    key: \"unbindOutput\",\n    value: function unbindOutput(id, binding) {\n      if (this.$bindings[id] === binding) {\n        delete this.$bindings[id];\n        return true;\n      } else {\n        return false;\n      }\n    } // Narrows a scopeComponent -- an input or output object -- to one constrained\n    // by nsPrefix. Returns a new object with keys removed and renamed as\n    // necessary.\n\n  }, {\n    key: \"_narrowScopeComponent\",\n    value: function _narrowScopeComponent(scopeComponent, nsPrefix) {\n      return Object.keys(scopeComponent).filter(function (k) {\n        return k.indexOf(nsPrefix) === 0;\n      }).map(function (k) {\n        return _defineProperty({}, k.substring(nsPrefix.length), scopeComponent[k]);\n      }).reduce(function (obj, pair) {\n        return $.extend(obj, pair);\n      }, {});\n    } // Narrows a scope -- an object with input and output \"subComponents\" -- to\n    // one constrained by the nsPrefix string.\n    //\n    // If nsPrefix is null or empty, returns scope without modification.\n    //\n    // Otherwise, returns a new object with keys in subComponents removed and\n    // renamed as necessary.\n\n  }, {\n    key: \"_narrowScope\",\n    value: function _narrowScope(scope, nsPrefix) {\n      if (nsPrefix) {\n        return {\n          input: this._narrowScopeComponent(scope.input, nsPrefix),\n          output: this._narrowScopeComponent(scope.output, nsPrefix)\n        };\n      }\n\n      return scope;\n    }\n  }, {\n    key: \"$updateConditionals\",\n    value: function $updateConditionals() {\n      // @ts-expect-error; TODO-barret; Could this be transformed into `.trigger(TYPE)`?\n      $(document).trigger({\n        type: \"shiny:conditional\"\n      });\n      var inputs = {}; // Input keys use \"name:type\" format; we don't want the user to\n      // have to know about the type suffix when referring to inputs.\n\n      for (var name in this.$inputValues) {\n        if (hasOwnProperty(this.$inputValues, name)) {\n          var shortName = name.replace(/:.*/, \"\");\n          inputs[shortName] = this.$inputValues[name];\n        }\n      }\n\n      var scope = {\n        input: inputs,\n        output: this.$values\n      };\n      var conditionals = $(document).find(\"[data-display-if]\");\n\n      for (var i = 0; i < conditionals.length; i++) {\n        var el = $(conditionals[i]);\n        var condFunc = el.data(\"data-display-if-func\");\n\n        if (!condFunc) {\n          var condExpr = el.attr(\"data-display-if\");\n          condFunc = scopeExprToFunc(condExpr);\n          el.data(\"data-display-if-func\", condFunc);\n        }\n\n        var nsPrefix = el.attr(\"data-ns-prefix\");\n\n        var nsScope = this._narrowScope(scope, nsPrefix);\n\n        var show = condFunc(nsScope);\n        var showing = el.css(\"display\") !== \"none\";\n\n        if (show !== showing) {\n          if (show) {\n            el.trigger(\"show\");\n            el.show();\n            el.trigger(\"shown\");\n          } else {\n            el.trigger(\"hide\");\n            el.hide();\n            el.trigger(\"hidden\");\n          }\n        }\n      }\n    } // Message handler management functions =================================\n    // // Added in shiny init method\n    // Shiny.addCustomMessageHandler = addCustomMessageHandler;\n\n  }, {\n    key: \"dispatchMessage\",\n    value: function dispatchMessage(data) {\n      var msgObj = {};\n\n      if (typeof data === \"string\") {\n        msgObj = JSON.parse(data);\n      } else {\n        // data is arraybuffer\n        var len = new DataView(data, 0, 1).getUint8(0);\n        var typedv = new DataView(data, 1, len);\n        var typebuf = [];\n\n        for (var i = 0; i < len; i++) {\n          typebuf.push(String.fromCharCode(typedv.getUint8(i)));\n        }\n\n        var type = typebuf.join(\"\");\n        data = data.slice(len + 1);\n        msgObj.custom = {};\n        msgObj.custom[type] = data;\n      }\n\n      var evt = jQuery.Event(\"shiny:message\");\n      evt.message = msgObj;\n      $(document).trigger(evt);\n      if (evt.isDefaultPrevented()) return; // Send msgObj.foo and msgObj.bar to appropriate handlers\n\n      this._sendMessagesToHandlers(evt.message, messageHandlers, messageHandlerOrder);\n\n      this.$updateConditionals();\n    } // Message handlers =====================================================\n    // A function for sending messages to the appropriate handlers.\n    // - msgObj: the object containing messages, with format {msgObj.foo, msObj.bar\n\n  }, {\n    key: \"_sendMessagesToHandlers\",\n    value: function _sendMessagesToHandlers(msgObj, handlers, handlerOrder) {\n      // Dispatch messages to handlers, if handler is present\n      for (var i = 0; i < handlerOrder.length; i++) {\n        var msgType = handlerOrder[i];\n\n        if (hasOwnProperty(msgObj, msgType)) {\n          // Execute each handler with 'this' referring to the present value of\n          // 'this'\n          handlers[msgType].call(this, msgObj[msgType]);\n        }\n      }\n    }\n  }, {\n    key: \"_init\",\n    value: function _init() {\n      var _this3 = this;\n\n      // Dev note:\n      // * Use arrow functions to allow the Types to propagate.\n      // * However, `_sendMessagesToHandlers()` will adjust the `this` context to the same _`this`_.\n      addMessageHandler(\"values\", function (message) {\n        for (var name in _this3.$bindings) {\n          if (hasOwnProperty(_this3.$bindings, name)) _this3.$bindings[name].showProgress(false);\n        }\n\n        for (var _key in message) {\n          if (hasOwnProperty(message, _key)) {\n            _this3.receiveOutput(_key, message[_key]);\n          }\n        }\n      });\n      addMessageHandler(\"errors\", function (message) {\n        for (var _key2 in message) {\n          if (hasOwnProperty(message, _key2)) this.receiveError(_key2, message[_key2]);\n        }\n      });\n      addMessageHandler(\"inputMessages\", function (message) {\n        // inputMessages should be an array\n        for (var i = 0; i < message.length; i++) {\n          var $obj = $(\".shiny-bound-input#\" + $escape(message[i].id));\n          var inputBinding = $obj.data(\"shiny-input-binding\"); // Dispatch the message to the appropriate input object\n\n          if ($obj.length > 0) {\n            if (!$obj.attr(\"aria-live\")) $obj.attr(\"aria-live\", \"polite\");\n            var el = $obj[0];\n            var evt = jQuery.Event(\"shiny:updateinput\");\n            evt.message = message[i].message;\n            evt.binding = inputBinding;\n            $(el).trigger(evt);\n            if (!evt.isDefaultPrevented()) inputBinding.receiveMessage(el, evt.message);\n          }\n        }\n      });\n      addMessageHandler(\"javascript\", function (message) {\n        /*jshint evil: true */\n        indirectEval(message);\n      });\n      addMessageHandler(\"console\", function (message) {\n        for (var i = 0; i < message.length; i++) {\n          if (console.log) console.log(message[i]);\n        }\n      });\n      addMessageHandler(\"progress\", function (message) {\n        if (message.type && message.message) {\n          var handler = _this3.progressHandlers[message.type];\n          if (handler) handler.call(_this3, message.message);\n        }\n      });\n      addMessageHandler(\"notification\", function (message) {\n        if (message.type === \"show\") showNotification(message.message);else if (message.type === \"remove\") removeNotification(message.message);else throw \"Unkown notification type: \" + message.type;\n      });\n      addMessageHandler(\"modal\", function (message) {\n        if (message.type === \"show\") showModal(message.message); // For 'remove', message content isn't used\n        else if (message.type === \"remove\") removeModal();else throw \"Unkown modal type: \" + message.type;\n      });\n      addMessageHandler(\"response\", function (message) {\n        var requestId = message.tag;\n        var request = _this3.$activeRequests[requestId];\n\n        if (request) {\n          delete _this3.$activeRequests[requestId];\n          if (\"value\" in message) request.onSuccess(message.value);else request.onError(message.error);\n        }\n      });\n      addMessageHandler(\"allowReconnect\", function (message) {\n        switch (message) {\n          case true:\n          case false:\n          case \"force\":\n            _this3.$allowReconnect = message;\n            break;\n\n          default:\n            throw \"Invalid value for allowReconnect: \" + message;\n        }\n      });\n      addMessageHandler(\"custom\", function (message) {\n        // For old-style custom messages - should deprecate and migrate to new\n        // method\n        var shinyOnCustomMessage = getShinyOnCustomMessage();\n        if (shinyOnCustomMessage) shinyOnCustomMessage(message); // Send messages.foo and messages.bar to appropriate handlers\n\n        _this3._sendMessagesToHandlers(message, customMessageHandlers, customMessageHandlerOrder);\n      });\n      addMessageHandler(\"config\", function (message) {\n        _this3.config = {\n          workerId: message.workerId,\n          sessionId: message.sessionId\n        };\n        if (message.user) setShinyUser(message.user);\n        $(document).trigger(\"shiny:sessioninitialized\");\n      });\n      addMessageHandler(\"busy\", function (message) {\n        if (message === \"busy\") {\n          $(document.documentElement).addClass(\"shiny-busy\");\n          $(document).trigger(\"shiny:busy\");\n        } else if (message === \"idle\") {\n          $(document.documentElement).removeClass(\"shiny-busy\");\n          $(document).trigger(\"shiny:idle\");\n        }\n      });\n      addMessageHandler(\"recalculating\", function (message) {\n        if (hasOwnProperty(message, \"name\") && hasOwnProperty(message, \"status\")) {\n          var binding = _this3.$bindings[message.name]; // @ts-expect-error; TODO-barret; Could this be transformed into `.trigger(TYPE)`?\n\n          $(binding ? binding.el : null).trigger({\n            type: \"shiny:\" + message.status\n          });\n        }\n      });\n      addMessageHandler(\"reload\", function (message) {\n        window.location.reload();\n        return;\n        message;\n      });\n      addMessageHandler(\"shiny-insert-ui\", function (message) {\n        var targets = $(message.selector);\n\n        if (targets.length === 0) {\n          // render the HTML and deps to a null target, so\n          // the side-effect of rendering the deps, singletons,\n          // and <head> still occur\n          console.warn('The selector you chose (\"' + message.selector + '\") could not be found in the DOM.');\n          renderHtml(message.content.html, $([]).get(0), message.content.deps);\n        } else {\n          targets.each(function (i, target) {\n            renderContent(target, message.content, message.where);\n            return message.multiple;\n          });\n        }\n      });\n      addMessageHandler(\"shiny-remove-ui\", function (message) {\n        var els = $(message.selector);\n        els.each(function (i, el) {\n          shinyUnbindAll(el, true);\n          $(el).remove(); // If `multiple` is false, returning false terminates the function\n          // and no other elements are removed; if `multiple` is true,\n          // returning true continues removing all remaining elements.\n\n          return message.multiple;\n        });\n      });\n      addMessageHandler(\"frozen\", function (message) {\n        for (var i = 0; i < message.ids.length; i++) {\n          shinyForgetLastInputValue(message.ids[i]);\n        }\n      });\n\n      function getTabset(id) {\n        var $tabset = $(\"#\" + $escape(id));\n        if ($tabset.length === 0) throw \"There is no tabsetPanel (or navbarPage or navlistPanel) \" + \"with id equal to '\" + id + \"'\";\n        return $tabset;\n      }\n\n      function getTabContent($tabset) {\n        var tabsetId = $tabset.attr(\"data-tabsetid\");\n        var $tabContent = $(\"div.tab-content[data-tabsetid='\" + $escape(tabsetId) + \"']\");\n        return $tabContent;\n      }\n\n      function getTargetTabs($tabset, $tabContent, target) {\n        var dataValue = \"[data-value='\" + $escape(target) + \"']\";\n        var $aTag = $tabset.find(\"a\" + dataValue);\n        var $liTag = $aTag.parent();\n\n        if ($liTag.length === 0) {\n          throw \"There is no tabPanel (or navbarMenu) with value\" + \" (or menuName) equal to '\" + target + \"'\";\n        }\n\n        var $liTags = [];\n        var $divTags = [];\n\n        if ($aTag.attr(\"data-toggle\") === \"dropdown\") {\n          // dropdown\n          var $dropdownTabset = $aTag.find(\"+ ul.dropdown-menu\");\n          var dropdownId = $dropdownTabset.attr(\"data-tabsetid\");\n          var $dropdownLiTags = $dropdownTabset.find(\"a[data-toggle='tab']\").parent(\"li\");\n          $dropdownLiTags.each(function (i, el) {\n            $liTags.push($(el));\n          });\n          var selector = \"div.tab-pane[id^='tab-\" + $escape(dropdownId) + \"']\";\n          var $dropdownDivs = $tabContent.find(selector);\n          $dropdownDivs.each(function (i, el) {\n            $divTags.push($(el));\n          });\n        } else {\n          // regular tab\n          $divTags.push($tabContent.find(\"div\" + dataValue));\n        }\n\n        return {\n          $liTag: $liTag,\n          $liTags: $liTags,\n          $divTags: $divTags\n        };\n      }\n\n      addMessageHandler(\"shiny-insert-tab\", function (message) {\n        var $parentTabset = getTabset(message.inputId);\n        var $tabset = $parentTabset;\n        var $tabContent = getTabContent($tabset);\n        var tabsetId = $parentTabset.attr(\"data-tabsetid\");\n        var $divTag = $(message.divTag.html);\n        var $liTag = $(message.liTag.html);\n        var $aTag = $liTag.find(\"> a\"); // Unless the item is being prepended/appended, the target tab\n        // must be provided\n\n        var target = null;\n        var $targetLiTag = null;\n\n        if (message.target !== null) {\n          target = getTargetTabs($tabset, $tabContent, message.target);\n          $targetLiTag = target.$liTag;\n        } // If the item is to be placed inside a navbarMenu (dropdown),\n        // change the value of $tabset from the parent's ul tag to the\n        // dropdown's ul tag\n\n\n        var dropdown = getDropdown();\n\n        if (dropdown !== null) {\n          if ($aTag.attr(\"data-toggle\") === \"dropdown\") throw \"Cannot insert a navbarMenu inside another one\";\n          $tabset = dropdown.$tabset;\n          tabsetId = dropdown.id; // In the BS4+ case, the server will be generating \"top-level\" nav markup\n          // (i.e., `li.nav-item a.nav-link`), but when inserting inside a dropdown we\n          // need `li a.dropdown-item` for correct styling\n          // https://getbootstrap.com/docs/5.0/components/navs-tabs/#tabs-with-dropdowns\n\n          $liTag.removeClass(\"nav-item\").find(\".nav-link\").removeClass(\"nav-link\").addClass(\"dropdown-item\");\n        } // For regular tab items, fix the href (of the li > a tag)\n        // and the id (of the div tag). This does not apply to plain\n        // text items (which function as dividers and headers inside\n        // navbarMenus) and whole navbarMenus (since those get\n        // constructed from scratch on the R side and therefore\n        // there are no ids that need matching)\n\n\n        if ($aTag.attr(\"data-toggle\") === \"tab\") {\n          var index = getTabIndex($tabset, tabsetId);\n          var tabId = \"tab-\" + tabsetId + \"-\" + index;\n          $liTag.find(\"> a\").attr(\"href\", \"#\" + tabId);\n          $divTag.attr(\"id\", tabId);\n        } // actually insert the item into the right place\n\n\n        if (message.position === \"before\") {\n          if ($targetLiTag) {\n            $targetLiTag.before($liTag);\n          } else {\n            $tabset.prepend($liTag);\n          }\n        } else if (message.position === \"after\") {\n          if ($targetLiTag) {\n            $targetLiTag.after($liTag);\n          } else {\n            $tabset.append($liTag);\n          }\n        }\n\n        renderContent($liTag[0], {\n          html: $liTag.html(),\n          deps: message.liTag.deps\n        }); // jcheng 2017-07-28: This next part might look a little insane versus the\n        // more obvious `$tabContent.append($divTag);`, but there's a method to the\n        // madness.\n        //\n        // 1) We need to load the dependencies, and this needs to happen before\n        //    any scripts in $divTag get a chance to run.\n        // 2) The scripts in $divTag need to run only once.\n        // 3) The contents of $divTag need to be sent through renderContent so that\n        //    singletons may be registered and/or obeyed, and so that inputs/outputs\n        //    may be bound.\n        //\n        // Add to these constraints these facts:\n        //\n        // A) The (non-jQuery) DOM manipulation functions don't cause scripts to\n        //    run, but the jQuery functions all do.\n        // B) renderContent must be called on an element that's attached to the\n        //    document.\n        // C) $divTag may be of length > 1 (e.g. navbarMenu). I also noticed text\n        //    elements consisting of just \"\\n\" being included in the nodeset of\n        //    $divTag.\n        // D) renderContent has a bug where only position \"replace\" (the default)\n        //    uses the jQuery functions, so other positions like \"beforeend\" will\n        //    prevent child script tags from running.\n        //\n        // In theory the same problem exists for $liTag but since that content is\n        // much less likely to include arbitrary scripts, we're skipping it.\n        //\n        // This code could be nicer if we didn't use renderContent, but rather the\n        // lower-level functions that renderContent uses. Like if we pre-process\n        // the value of message.divTag.html for singletons, we could do that, then\n        // render dependencies, then do $tabContent.append($divTag).\n\n        renderContent($tabContent[0], {\n          html: \"\",\n          deps: message.divTag.deps\n        }, // @ts-expect-error; TODO-barret; There is no usage of beforeend\n        \"beforeend\");\n        $divTag.get().forEach(function (el) {\n          // Must not use jQuery for appending el to the doc, we don't want any\n          // scripts to run (since they will run when renderContent takes a crack).\n          $tabContent[0].appendChild(el); // If `el` itself is a script tag, this approach won't work (the script\n          // won't be run), since we're only sending innerHTML through renderContent\n          // and not the whole tag. That's fine in this case because we control the\n          // R code that generates this HTML, and we know that the element is not\n          // a script tag.\n\n          renderContent(el, el.innerHTML || el.textContent);\n        });\n\n        if (message.select) {\n          $liTag.find(\"a\").tab(\"show\");\n        }\n        /* Barbara -- August 2017\n        Note: until now, the number of tabs in a tabsetPanel (or navbarPage\n        or navlistPanel) was always fixed. So, an easy way to give an id to\n        a tab was simply incrementing a counter. (Just like it was easy to\n        give a random 4-digit number to identify the tabsetPanel). Now that\n        we're introducing dynamic tabs, we must retrieve these numbers and\n        fix the dummy id given to the tab in the R side -- there, we always\n        set the tab id (counter dummy) to \"id\" and the tabset id to \"tsid\")\n        */\n\n\n        function getTabIndex($tabset, tabsetId) {\n          // The 0 is to ensure this works for empty tabsetPanels as well\n          var existingTabIds = [0]; // loop through all existing tabs, find the one with highest id\n          // (since this is based on a numeric counter), and increment\n\n          $tabset.find(\"> li\").each(function () {\n            var $tab = $(this).find(\"> a[data-toggle='tab']\");\n\n            if ($tab.length > 0) {\n              // remove leading url if it exists. (copy of bootstrap url stripper)\n              var href = $tab.attr(\"href\").replace(/.*(?=#[^\\s]+$)/, \"\"); // remove tab id to get the index\n\n              var _index = href.replace(\"#tab-\" + tabsetId + \"-\", \"\");\n\n              existingTabIds.push(Number(_index));\n            }\n          });\n          return Math.max.apply(null, existingTabIds) + 1;\n        } // Finds out if the item will be placed inside a navbarMenu\n        // (dropdown). If so, returns the dropdown tabset (ul tag)\n        // and the dropdown tabsetid (to be used to fix the tab ID)\n\n\n        function getDropdown() {\n          if (message.menuName !== null) {\n            // menuName is only provided if the user wants to prepend\n            // or append an item inside a navbarMenu (dropdown)\n            var $dropdownATag = $(\"a.dropdown-toggle[data-value='\" + $escape(message.menuName) + \"']\");\n\n            if ($dropdownATag.length === 0) {\n              throw \"There is no navbarMenu with menuName equal to '\" + message.menuName + \"'\";\n            }\n\n            var $dropdownTabset = $dropdownATag.find(\"+ ul.dropdown-menu\");\n            var dropdownId = $dropdownTabset.attr(\"data-tabsetid\");\n            return {\n              $tabset: $dropdownTabset,\n              id: dropdownId\n            };\n          } else if (message.target !== null) {\n            // if our item is to be placed next to a tab that is inside\n            // a navbarMenu, our item will also be inside\n            var $uncleTabset = $targetLiTag.parent(\"ul\");\n\n            if ($uncleTabset.hasClass(\"dropdown-menu\")) {\n              var uncleId = $uncleTabset.attr(\"data-tabsetid\");\n              return {\n                $tabset: $uncleTabset,\n                id: uncleId\n              };\n            }\n          }\n\n          return null;\n        }\n      }); // If the given tabset has no active tabs, select the first one\n\n      function ensureTabsetHasVisibleTab($tabset) {\n        var inputBinding = $tabset.data(\"shiny-input-binding\"); // Use the getValue() method to avoid duplicating the CSS selector\n        // for querying the DOM for the currently active tab\n\n        if (!inputBinding.getValue($tabset)) {\n          // Note: destTabValue may be null. We still want to proceed\n          // through the below logic and setValue so that the input\n          // value for the tabset gets updated (i.e. input$tabsetId\n          // should be null if there are no tabs).\n          var destTabValue = getFirstTab($tabset);\n          var evt = jQuery.Event(\"shiny:updateinput\");\n          evt.binding = inputBinding;\n          $tabset.trigger(evt);\n          inputBinding.setValue($tabset[0], destTabValue);\n        }\n      } // Given a tabset ul jquery object, return the value of the first tab\n      // (in document order) that's visible and able to be selected.\n\n\n      function getFirstTab($ul) {\n        return $ul.find(\"li:visible a[data-toggle='tab']\").first().attr(\"data-value\") || null;\n      }\n\n      function tabApplyFunction(target, func) {\n        var liTags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n        $.each(target, function (key, el) {\n          if (key === \"$liTag\") {\n            // $liTag is always just one jQuery element\n            func(el);\n          } else if (key === \"$divTags\") {\n            // $divTags is always an array (even if length = 1)\n            $.each(el, function (i, div) {\n              func(div);\n            });\n          } else if (liTags && key === \"$liTags\") {\n            // $liTags is always an array (even if length = 0)\n            $.each(el, function (i, div) {\n              func(div);\n            });\n          }\n        });\n      }\n\n      addMessageHandler(\"shiny-remove-tab\", function (message) {\n        var $tabset = getTabset(message.inputId);\n        var $tabContent = getTabContent($tabset);\n        var target = getTargetTabs($tabset, $tabContent, message.target);\n        tabApplyFunction(target, removeEl);\n        ensureTabsetHasVisibleTab($tabset);\n\n        function removeEl($el) {\n          shinyUnbindAll($el, true);\n          $el.remove();\n        }\n      });\n      addMessageHandler(\"shiny-change-tab-visibility\", function (message) {\n        var $tabset = getTabset(message.inputId);\n        var $tabContent = getTabContent($tabset);\n        var target = getTargetTabs($tabset, $tabContent, message.target);\n        tabApplyFunction(target, changeVisibility, true);\n        ensureTabsetHasVisibleTab($tabset);\n\n        function changeVisibility($el) {\n          if (message.type === \"show\") $el.css(\"display\", \"\");else if (message.type === \"hide\") {\n            $el.hide();\n            $el.removeClass(\"active\");\n          }\n        }\n      });\n      addMessageHandler(\"updateQueryString\", function (message) {\n        // leave the bookmarking code intact\n        if (message.mode === \"replace\") {\n          window.history.replaceState(null, null, message.queryString);\n          return;\n        }\n\n        var what = null;\n        if (message.queryString.charAt(0) === \"#\") what = \"hash\";else if (message.queryString.charAt(0) === \"?\") what = \"query\";else throw \"The 'query' string must start with either '?' \" + \"(to update the query string) or with '#' (to \" + \"update the hash).\";\n        var path = window.location.pathname;\n        var oldQS = window.location.search;\n        var oldHash = window.location.hash;\n        /* Barbara -- December 2016\n        Note: we could check if the new QS and/or hash are different\n        from the old one(s) and, if not, we could choose not to push\n        a new state (whether or not we would replace it is moot/\n        inconsequential). However, I think that it is better to\n        interpret each call to `updateQueryString` as representing\n        new state (even if the message.queryString is the same), so\n        that check isn't even performed as of right now.\n        */\n\n        var relURL = path;\n        if (what === \"query\") relURL += message.queryString;else relURL += oldQS + message.queryString; // leave old QS if it exists\n\n        window.history.pushState(null, null, relURL); // for the case when message.queryString has both a query string\n        // and a hash (`what = \"hash\"` allows us to trigger the\n        // hashchange event)\n\n        if (message.queryString.indexOf(\"#\") !== -1) what = \"hash\"; // for the case when there was a hash before, but there isn't\n        // any hash now (e.g. for when only the query string is updated)\n\n        if (window.location.hash !== oldHash) what = \"hash\"; // This event needs to be triggered manually because pushState() never\n        // causes a hashchange event to be fired,\n\n        if (what === \"hash\") $(document).trigger(\"hashchange\");\n      });\n      addMessageHandler(\"resetBrush\", function (message) {\n        resetBrush(message.brushId);\n      });\n    } // Progress reporting ====================================================\n\n  }, {\n    key: \"getTestSnapshotBaseUrl\",\n    value: //// 2021/03: TypeScript Conversion\n    // Added in `./shiny/init.ts` as there are no instances of progressHandlers being used right away on GitHub\n    // Shiny.progressHandlers = this.progressHandlers;\n    // Returns a URL which can be queried to get values from inside the server\n    // function. This is enabled with `options(shiny.testmode=TRUE)`.\n    function getTestSnapshotBaseUrl() {\n      var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n          _ref2$fullUrl = _ref2.fullUrl,\n          fullUrl = _ref2$fullUrl === void 0 ? true : _ref2$fullUrl;\n\n      var loc = window.location;\n      var url = \"\";\n\n      if (fullUrl) {\n        // Strip off everything after last slash in path, like dirname() in R\n        url = loc.origin + loc.pathname.replace(/\\/[^/]*$/, \"\");\n      }\n\n      url += \"/session/\" + encodeURIComponent(this.config.sessionId) + \"/dataobj/shinytest?w=\" + encodeURIComponent(this.config.workerId) + \"&nonce=\" + randomId();\n      return url;\n    }\n  }]);\n\n  return ShinyApp;\n}();\n\nexport { ShinyApp, addCustomMessageHandler };", "function windowBlobBuilder() {\n  var blob = // @ts-expect-error; Using legacy definitions of Blob builders\n  window.BlobBuilder || // @ts-expect-error; Using legacy definitions of Blob builders\n  window.WebKitBlobBuilder || // @ts-expect-error; Using legacy definitions of Blob builders\n  window.MozBlobBuilder || window.MSBlobBuilder;\n  return blob;\n}\n\nexport { windowBlobBuilder };", "function windowUserAgent() {\n  return window.navigator.userAgent;\n}\n\nexport { windowUserAgent };", "import $ from \"jquery\";\nimport { shinyShinyApp } from \"./initedMethods\";\nimport { showNotification } from \"./notifications\";\n\nfunction initReactlog() {\n  $(document).on(\"keydown\", function (e) {\n    if (e.which !== 114 || !e.ctrlKey && !e.metaKey || e.shiftKey || e.altKey) return;\n    var url = \"reactlog?w=\" + window.escape(shinyShinyApp().config.workerId) + \"&s=\" + window.escape(shinyShinyApp().config.sessionId);\n    window.open(url);\n    e.preventDefault();\n  });\n  $(document).on(\"keydown\", function (e) {\n    if ( // if not one of the key combos below\n    !( // cmd/ctrl + fn + f4\n    e.which === 115 && (e.ctrlKey || e.metaKey) && !e.shiftKey && !e.altKey || // cmd/ctrl + shift + fn + f3\n    e.which === 114 && (e.ctrlKey || e.metaKey) && e.shiftKey && !e.altKey)) {\n      return;\n    }\n\n    var url = \"reactlog/mark?w=\" + window.escape(shinyShinyApp().config.workerId) + \"&s=\" + window.escape(shinyShinyApp().config.sessionId); // send notification\n\n    $.get(url, function (result) {\n      if (result !== \"marked\") return;\n      var html = '<span id=\"shiny-reactlog-mark-text\">Marked time point in reactlog</span>';\n      showNotification({\n        html: html,\n        closeButton: true\n      });\n    }).fail(function () {\n      // found returned error while marking, should open webpage\n      window.open(url);\n    });\n    e.preventDefault();\n  });\n}\n\nexport { initReactlog };", "import { disableFormSubmission } from \"./disableForm\";\nimport { trackHistory } from \"./history\";\nimport { determineBrowserInfo } from \"./browser\";\nimport { windowShiny } from \"../window/libraries\";\nimport { setShiny } from \"../shiny\";\nimport { setBlobBuilder } from \"../utils/blob\";\nimport { windowBlobBuilder } from \"../window/blobBuilder\";\nimport { setUserAgent } from \"../utils/userAgent\";\nimport { windowUserAgent } from \"../window/userAgent\";\nimport { initReactlog } from \"../shiny/reactlog\";\n\nfunction init() {\n  setShiny(windowShiny());\n  setUserAgent(windowUserAgent()); // before determineBrowserInfo()\n\n  determineBrowserInfo();\n  trackHistory();\n  disableFormSubmission();\n  setBlobBuilder(windowBlobBuilder());\n  initReactlog();\n}\n\nexport { init };", "import { init } from \"./initialize\";\ninit();"],
  "mappings": "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",
  "names": []
}

shiny/www/shared/shiny.min.js METASEP
/*! shiny 1.7.1.9001 | (c) 2012-2021 RStudio, PBC. | License: GPL-3 | file LICENSE */
(function(){var Oy=Object.create;var to=Object.defineProperty;var Sy=Object.getOwnPropertyDescriptor;var Iy=Object.getOwnPropertyNames;var Ry=Object.getPrototypeOf,Py=Object.prototype.hasOwnProperty;var qy=function(e){return to(e,"__esModule",{value:!0})};var v=function(e,t){return function(){return t||e((t={exports:{}}).exports,t),t.exports}};var Ty=function(e,t,r){if(t&&typeof t=="object"||typeof t=="function")for(var n=Iy(t),i=0,o=n.length,a;i<o;i++)a=n[i],!Py.call(e,a)&&a!=="default"&&to(e,a,{get:function(u){return t[u]}.bind(null,a),enumerable:!(r=Sy(t,a))||r.enumerable});return e},b=function(e){return Ty(qy(to(e!=null?Oy(Ry(e)):{},"default",e&&e.__esModule&&"default"in e?{get:function(){return e.default},enumerable:!0}:{value:e,enumerable:!0})),e)};var T=v(function(iq,Yu){Yu.exports=window.jQuery});var z=v(function(uq,es){var en=function(e){return e&&e.Math==Math&&e};es.exports=en(typeof globalThis=="object"&&globalThis)||en(typeof window=="object"&&window)||en(typeof self=="object"&&self)||en(typeof global=="object"&&global)||function(){return this}()||Function("return this")()});var M=v(function(sq,ts){ts.exports=function(e){try{return!!e()}catch(t){return!0}}});var pe=v(function(lq,rs){var Ey=M();rs.exports=!Ey(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!=7})});var tn=v(function(os){"use strict";var ns={}.propertyIsEnumerable,is=Object.getOwnPropertyDescriptor,ky=is&&!ns.call({1:2},1);os.f=ky?function(t){var r=is(this,t);return!!r&&r.enumerable}:ns});var At=v(function(cq,as){as.exports=function(e,t){return{enumerable:!(e&1),configurable:!(e&2),writable:!(e&4),value:t}}});var Ge=v(function(pq,us){var By={}.toString;us.exports=function(e){return By.call(e).slice(8,-1)}});var ur=v(function(dq,ss){var Dy=M(),Cy=Ge(),Ny="".split;ss.exports=Dy(function(){return!Object("z").propertyIsEnumerable(0)})?function(e){return Cy(e)=="String"?Ny.call(e,""):Object(e)}:Object});var Ke=v(function(mq,ls){ls.exports=function(e){if(e==null)throw TypeError("Can't call method on "+e);return e}});var qe=v(function(vq,fs){var Ay=ur(),$y=Ke();fs.exports=function(e){return Ay($y(e))}});var te=v(function(yq,cs){cs.exports=function(e){return typeof e=="object"?e!==null:typeof e=="function"}});var $t=v(function(hq,ps){var rn=te();ps.exports=function(e,t){if(!rn(e))return e;var r,n;if(t&&typeof(r=e.toString)=="function"&&!rn(n=r.call(e))||typeof(r=e.valueOf)=="function"&&!rn(n=r.call(e))||!t&&typeof(r=e.toString)=="function"&&!rn(n=r.call(e)))return n;throw TypeError("Can't convert object to primitive value")}});var be=v(function(gq,ds){var My=Ke();ds.exports=function(e){return Object(My(e))}});var se=v(function(bq,ms){var Vy=be(),Fy={}.hasOwnProperty;ms.exports=Object.hasOwn||function(t,r){return Fy.call(Vy(t),r)}});var no=v(function(jq,ys){var Ly=z(),vs=te(),ro=Ly.document,zy=vs(ro)&&vs(ro.createElement);ys.exports=function(e){return zy?ro.createElement(e):{}}});var io=v(function(wq,hs){var Uy=pe(),Hy=M(),Gy=no();hs.exports=!Uy&&!Hy(function(){return Object.defineProperty(Gy("div"),"a",{get:function(){return 7}}).a!=7})});var xt=v(function(bs){var Ky=pe(),Wy=tn(),Yy=At(),Xy=qe(),Qy=$t(),Jy=se(),Zy=io(),gs=Object.getOwnPropertyDescriptor;bs.f=Ky?gs:function(t,r){if(t=Xy(t),r=Qy(r,!0),Zy)try{return gs(t,r)}catch(n){}if(Jy(t,r))return Yy(!Wy.f.call(t,r),t[r])}});var Y=v(function(xq,js){var eh=te();js.exports=function(e){if(!eh(e))throw TypeError(String(e)+" is not an object");return e}});var de=v(function(xs){var th=pe(),rh=io(),ws=Y(),nh=$t(),_s=Object.defineProperty;xs.f=th?_s:function(t,r,n){if(ws(t),r=nh(r,!0),ws(n),rh)try{return _s(t,r,n)}catch(i){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(t[r]=n.value),t}});var Oe=v(function(Sq,Os){var ih=pe(),oh=de(),ah=At();Os.exports=ih?function(e,t,r){return oh.f(e,t,ah(1,r))}:function(e,t,r){return e[t]=r,e}});var nn=v(function(Iq,Is){var Ss=z(),uh=Oe();Is.exports=function(e,t){try{uh(Ss,e,t)}catch(r){Ss[e]=t}return t}});var on=v(function(Rq,Ps){var sh=z(),lh=nn(),Rs="__core-js_shared__",fh=sh[Rs]||lh(Rs,{});Ps.exports=fh});var ao=v(function(Pq,qs){var oo=on(),ch=Function.toString;typeof oo.inspectSource!="function"&&(oo.inspectSource=function(e){return ch.call(e)});qs.exports=oo.inspectSource});var ks=v(function(qq,Es){var ph=z(),dh=ao(),Ts=ph.WeakMap;Es.exports=typeof Ts=="function"&&/native code/.test(dh(Ts))});var sr=v(function(Tq,Bs){Bs.exports=!1});var lr=v(function(Eq,Cs){var mh=sr(),Ds=on();(Cs.exports=function(e,t){return Ds[e]||(Ds[e]=t!==void 0?t:{})})("versions",[]).push({version:"3.14.0",mode:mh?"pure":"global",copyright:"\xA9 2021 Denis Pushkarev (zloirock.ru)"})});var an=v(function(kq,Ns){var vh=0,yh=Math.random();Ns.exports=function(e){return"Symbol("+String(e===void 0?"":e)+")_"+(++vh+yh).toString(36)}});var fr=v(function(Bq,$s){var hh=lr(),gh=an(),As=hh("keys");$s.exports=function(e){return As[e]||(As[e]=gh(e))}});var cr=v(function(Dq,Ms){Ms.exports={}});var Mt=v(function(Cq,zs){var bh=ks(),jh=z(),wh=te(),_h=Oe(),uo=se(),so=on(),xh=fr(),Oh=cr(),Vs="Object already initialized",Sh=jh.WeakMap,un,pr,sn,Ih=function(e){return sn(e)?pr(e):un(e,{})},Rh=function(e){return function(t){var r;if(!wh(t)||(r=pr(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return r}};bh||so.state?(at=so.state||(so.state=new Sh),Fs=at.get,lo=at.has,Ls=at.set,un=function(e,t){if(lo.call(at,e))throw new TypeError(Vs);return t.facade=e,Ls.call(at,e,t),t},pr=function(e){return Fs.call(at,e)||{}},sn=function(e){return lo.call(at,e)}):(Ot=xh("state"),Oh[Ot]=!0,un=function(e,t){if(uo(e,Ot))throw new TypeError(Vs);return t.facade=e,_h(e,Ot,t),t},pr=function(e){return uo(e,Ot)?e[Ot]:{}},sn=function(e){return uo(e,Ot)});var at,Fs,lo,Ls,Ot;zs.exports={set:un,get:pr,has:sn,enforce:Ih,getterFor:Rh}});var We=v(function(Nq,Gs){var Ph=z(),Us=Oe(),qh=se(),Th=nn(),Eh=ao(),Hs=Mt(),kh=Hs.get,Bh=Hs.enforce,Dh=String(String).split("String");(Gs.exports=function(e,t,r,n){var i=n?!!n.unsafe:!1,o=n?!!n.enumerable:!1,a=n?!!n.noTargetGet:!1,u;if(typeof r=="function"&&(typeof t=="string"&&!qh(r,"name")&&Us(r,"name",t),u=Bh(r),u.source||(u.source=Dh.join(typeof t=="string"?t:""))),e===Ph){o?e[t]=r:Th(t,r);return}else i?!a&&e[t]&&(o=!0):delete e[t];o?e[t]=r:Us(e,t,r)})(Function.prototype,"toString",function(){return typeof this=="function"&&kh(this).source||Eh(this)})});var fo=v(function(Aq,Ks){var Ch=z();Ks.exports=Ch});var St=v(function($q,Ys){var co=fo(),po=z(),Ws=function(e){return typeof e=="function"?e:void 0};Ys.exports=function(e,t){return arguments.length<2?Ws(co[e])||Ws(po[e]):co[e]&&co[e][t]||po[e]&&po[e][t]}});var ut=v(function(Mq,Xs){var Nh=Math.ceil,Ah=Math.floor;Xs.exports=function(e){return isNaN(e=+e)?0:(e>0?Ah:Nh)(e)}});var le=v(function(Vq,Qs){var $h=ut(),Mh=Math.min;Qs.exports=function(e){return e>0?Mh($h(e),9007199254740991):0}});var Vt=v(function(Fq,Js){var Vh=ut(),Fh=Math.max,Lh=Math.min;Js.exports=function(e,t){var r=Vh(e);return r<0?Fh(r+t,0):Lh(r,t)}});var mo=v(function(Lq,el){var zh=qe(),Uh=le(),Hh=Vt(),Zs=function(e){return function(t,r,n){var i=zh(t),o=Uh(i.length),a=Hh(n,o),u;if(e&&r!=r){for(;o>a;)if(u=i[a++],u!=u)return!0}else for(;o>a;a++)if((e||a in i)&&i[a]===r)return e||a||0;return!e&&-1}};el.exports={includes:Zs(!0),indexOf:Zs(!1)}});var yo=v(function(zq,tl){var vo=se(),Gh=qe(),Kh=mo().indexOf,Wh=cr();tl.exports=function(e,t){var r=Gh(e),n=0,i=[],o;for(o in r)!vo(Wh,o)&&vo(r,o)&&i.push(o);for(;t.length>n;)vo(r,o=t[n++])&&(~Kh(i,o)||i.push(o));return i}});var ln=v(function(Uq,rl){rl.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]});var Ft=v(function(nl){var Yh=yo(),Xh=ln(),Qh=Xh.concat("length","prototype");nl.f=Object.getOwnPropertyNames||function(t){return Yh(t,Qh)}});var ho=v(function(il){il.f=Object.getOwnPropertySymbols});var al=v(function(Kq,ol){var Jh=St(),Zh=Ft(),eg=ho(),tg=Y();ol.exports=Jh("Reflect","ownKeys")||function(t){var r=Zh.f(tg(t)),n=eg.f;return n?r.concat(n(t)):r}});var go=v(function(Wq,ul){var rg=se(),ng=al(),ig=xt(),og=de();ul.exports=function(e,t){for(var r=ng(t),n=og.f,i=ig.f,o=0;o<r.length;o++){var a=r[o];rg(e,a)||n(e,a,i(t,a))}}});var bo=v(function(Yq,sl){var ag=M(),ug=/#|\.prototype\./,dr=function(e,t){var r=lg[sg(e)];return r==cg?!0:r==fg?!1:typeof t=="function"?ag(t):!!t},sg=dr.normalize=function(e){return String(e).replace(ug,".").toLowerCase()},lg=dr.data={},fg=dr.NATIVE="N",cg=dr.POLYFILL="P";sl.exports=dr});var A=v(function(Xq,ll){var jo=z(),pg=xt().f,dg=Oe(),mg=We(),vg=nn(),yg=go(),hg=bo();ll.exports=function(e,t){var r=e.target,n=e.global,i=e.stat,o,a,u,l,s,f;if(n?a=jo:i?a=jo[r]||vg(r,{}):a=(jo[r]||{}).prototype,a)for(u in t){if(s=t[u],e.noTargetGet?(f=pg(a,u),l=f&&f.value):l=a[u],o=hg(n?u:r+(i?".":"#")+u,e.forced),!o&&l!==void 0){if(typeof s==typeof l)continue;yg(s,l)}(e.sham||l&&l.sham)&&dg(s,"sham",!0),mg(a,u,s,e)}}});var mr=v(function(Qq,fl){"use strict";var gg=M();fl.exports=function(e,t){var r=[][e];return!!r&&gg(function(){r.call(null,t||function(){throw 1},1)})}});var vr=v(function(Zq,dl){dl.exports="	\n\v\f\r \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF"});var yr=v(function(eT,ml){var xg=Ke(),Og=vr(),fn="["+Og+"]",Sg=RegExp("^"+fn+fn+"*"),Ig=RegExp(fn+fn+"*$"),wo=function(e){return function(t){var r=String(xg(t));return e&1&&(r=r.replace(Sg,"")),e&2&&(r=r.replace(Ig,"")),r}};ml.exports={start:wo(1),end:wo(2),trim:wo(3)}});var hl=v(function(tT,yl){var Rg=z(),Pg=yr().trim,vl=vr(),cn=Rg.parseInt,qg=/^[+-]?0[Xx]/,Tg=cn(vl+"08")!==8||cn(vl+"0x16")!==22;yl.exports=Tg?function(t,r){var n=Pg(String(t));return cn(n,r>>>0||(qg.test(n)?16:10))}:cn});var Oo=v(function(pT,Tl){"use strict";var Ag=Y();Tl.exports=function(){var e=Ag(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}});var Io=v(function(So){"use strict";var El=M();function kl(e,t){return RegExp(e,t)}So.UNSUPPORTED_Y=El(function(){var e=kl("a","y");return e.lastIndex=2,e.exec("abcd")!=null});So.BROKEN_CARET=El(function(){var e=kl("^r","gy");return e.lastIndex=2,e.exec("str")!=null})});var hr=v(function(mT,Nl){"use strict";var $g=Oo(),Bl=Io(),Mg=lr(),dn=RegExp.prototype.exec,Vg=Mg("native-string-replace",String.prototype.replace),Dl=dn,Ro=function(){var e=/a/,t=/b*/g;return dn.call(e,"a"),dn.call(t,"a"),e.lastIndex!==0||t.lastIndex!==0}(),Cl=Bl.UNSUPPORTED_Y||Bl.BROKEN_CARET,Po=/()??/.exec("")[1]!==void 0,Fg=Ro||Po||Cl;Fg&&(Dl=function(t){var r=this,n,i,o,a,u=Cl&&r.sticky,l=$g.call(r),s=r.source,f=0,c=t;return u&&(l=l.replace("y",""),l.indexOf("g")===-1&&(l+="g"),c=String(t).slice(r.lastIndex),r.lastIndex>0&&(!r.multiline||r.multiline&&t[r.lastIndex-1]!=="\n")&&(s="(?: "+s+")",c=" "+c,f++),i=new RegExp("^(?:"+s+")",l)),Po&&(i=new RegExp("^"+s+"$(?!\\s)",l)),Ro&&(n=r.lastIndex),o=dn.call(u?i:r,c),u?o?(o.input=o.input.slice(f),o[0]=o[0].slice(f),o.index=r.lastIndex,r.lastIndex+=o[0].length):r.lastIndex=0:Ro&&o&&(r.lastIndex=r.global?o.index+o[0].length:n),Po&&o&&o.length>1&&Vg.call(o[0],i,function(){for(a=1;a<arguments.length-2;a++)arguments[a]===void 0&&(o[a]=void 0)}),o});Nl.exports=Dl});var Se=v(function(){"use strict";var Lg=A(),Al=hr();Lg({target:"RegExp",proto:!0,forced:/./.exec!==Al},{exec:Al})});var Ml=v(function(hT,$l){var zg=St();$l.exports=zg("navigator","userAgent")||""});var gr=v(function(gT,zl){var Ug=z(),qo=Ml(),Vl=Ug.process,Fl=Vl&&Vl.versions,Ll=Fl&&Fl.v8,Ve,mn;Ll?(Ve=Ll.split("."),mn=Ve[0]<4?1:Ve[0]+Ve[1]):qo&&(Ve=qo.match(/Edge\/(\d+)/),(!Ve||Ve[1]>=74)&&(Ve=qo.match(/Chrome\/(\d+)/),Ve&&(mn=Ve[1])));zl.exports=mn&&+mn});var vn=v(function(bT,Hl){var Ul=gr(),Hg=M();Hl.exports=!!Object.getOwnPropertySymbols&&!Hg(function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&Ul&&Ul<41})});var To=v(function(jT,Gl){var Gg=vn();Gl.exports=Gg&&!Symbol.sham&&typeof Symbol.iterator=="symbol"});var G=v(function(wT,Yl){var Kg=z(),Wg=lr(),Kl=se(),Yg=an(),Wl=vn(),Xg=To(),br=Wg("wks"),jr=Kg.Symbol,Qg=Xg?jr:jr&&jr.withoutSetter||Yg;Yl.exports=function(e){return(!Kl(br,e)||!(Wl||typeof br[e]=="string"))&&(Wl&&Kl(jr,e)?br[e]=jr[e]:br[e]=Qg("Symbol."+e)),br[e]}});var wr=v(function(_T,ef){"use strict";Se();var Xl=We(),Jg=hr(),yn=M(),Eo=G(),Zg=Oe(),eb=Eo("species"),ko=RegExp.prototype,tb=!yn(function(){var e=/./;return e.exec=function(){var t=[];return t.groups={a:"7"},t},"".replace(e,"$<a>")!=="7"}),Ql=function(){return"a".replace(/./,"$0")==="$0"}(),Jl=Eo("replace"),Zl=function(){return/./[Jl]?/./[Jl]("a","$0")==="":!1}(),rb=!yn(function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var r="ab".split(e);return r.length!==2||r[0]!=="a"||r[1]!=="b"});ef.exports=function(e,t,r,n){var i=Eo(e),o=!yn(function(){var c={};return c[i]=function(){return 7},""[e](c)!=7}),a=o&&!yn(function(){var c=!1,p=/a/;return e==="split"&&(p={},p.constructor={},p.constructor[eb]=function(){return p},p.flags="",p[i]=/./[i]),p.exec=function(){return c=!0,null},p[i](""),!c});if(!o||!a||e==="replace"&&!(tb&&Ql&&!Zl)||e==="split"&&!rb){var u=/./[i],l=r(i,""[e],function(c,p,m,d,y){var h=p.exec;return h===Jg||h===ko.exec?o&&!y?{done:!0,value:u.call(p,m,d)}:{done:!0,value:c.call(m,p,d)}:{done:!1}},{REPLACE_KEEPS_$0:Ql,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:Zl}),s=l[0],f=l[1];Xl(String.prototype,e,s),Xl(ko,i,t==2?function(c,p){return f.call(c,this,p)}:function(c){return f.call(c,this)})}n&&Zg(ko[i],"sham",!0)}});var Bo=v(function(xT,rf){var nb=ut(),ib=Ke(),tf=function(e){return function(t,r){var n=String(ib(t)),i=nb(r),o=n.length,a,u;return i<0||i>=o?e?"":void 0:(a=n.charCodeAt(i),a<55296||a>56319||i+1===o||(u=n.charCodeAt(i+1))<56320||u>57343?e?n.charAt(i):a:e?n.slice(i,i+2):(a-55296<<10)+(u-56320)+65536)}};rf.exports={codeAt:tf(!1),charAt:tf(!0)}});var hn=v(function(OT,nf){"use strict";var ob=Bo().charAt;nf.exports=function(e,t,r){return t+(r?ob(e,t).length:1)}});var af=v(function(ST,of){var ab=be(),ub=Math.floor,sb="".replace,lb=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,fb=/\$([$&'`]|\d{1,2})/g;of.exports=function(e,t,r,n,i,o){var a=r+e.length,u=n.length,l=fb;return i!==void 0&&(i=ab(i),l=lb),sb.call(o,l,function(s,f){var c;switch(f.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,r);case"'":return t.slice(a);case"<":c=i[f.slice(1,-1)];break;default:var p=+f;if(p===0)return s;if(p>u){var m=ub(p/10);return m===0?s:m<=u?n[m-1]===void 0?f.charAt(1):n[m-1]+f.charAt(1):s}c=n[p-1]}return c===void 0?"":c})}});var _r=v(function(IT,uf){var cb=Ge(),pb=hr();uf.exports=function(e,t){var r=e.exec;if(typeof r=="function"){var n=r.call(e,t);if(typeof n!="object")throw TypeError("RegExp exec method returned something other than an Object or null");return n}if(cb(e)!=="RegExp")throw TypeError("RegExp#exec called on incompatible receiver");return pb.call(e,t)}});var gn=v(function(PT,lf){var Ob=G(),Sb=Ob("toStringTag"),sf={};sf[Sb]="z";lf.exports=String(sf)==="[object z]"});var Do=v(function(qT,ff){var Ib=gn(),bn=Ge(),Rb=G(),Pb=Rb("toStringTag"),qb=bn(function(){return arguments}())=="Arguments",Tb=function(e,t){try{return e[t]}catch(r){}};ff.exports=Ib?bn:function(e){var t,r,n;return e===void 0?"Undefined":e===null?"Null":typeof(r=Tb(t=Object(e),Pb))=="string"?r:qb?bn(t):(n=bn(t))=="Object"&&typeof t.callee=="function"?"Arguments":n}});var pf=v(function(TT,cf){"use strict";var Eb=gn(),kb=Do();cf.exports=Eb?{}.toString:function(){return"[object "+kb(this)+"]"}});var yf=v(function(BT,vf){var Lb=z(),zb=yr().trim,Ub=vr(),No=Lb.parseFloat,Hb=1/No(Ub+"-0")!=-Infinity;vf.exports=Hb?function(t){var r=zb(String(t)),n=No(r);return n===0&&r.charAt(0)=="-"?-0:n}:No});var bf=v(function(CT,gf){var Kb=Ge();gf.exports=function(e){if(typeof e!="number"&&Kb(e)!="Number")throw TypeError("Incorrect invocation");return+e}});var xr=v(function(AT,_f){var Xb=Ge();_f.exports=Array.isArray||function(t){return Xb(t)=="Array"}});var Or=v(function($T,xf){"use strict";var Qb=$t(),Jb=de(),Zb=At();xf.exports=function(e,t,r){var n=Qb(t);n in e?Jb.f(e,n,Zb(0,r)):e[n]=r}});var wn=v(function(MT,Sf){var ej=te(),Of=xr(),tj=G(),rj=tj("species");Sf.exports=function(e,t){var r;return Of(e)&&(r=e.constructor,typeof r=="function"&&(r===Array||Of(r.prototype))?r=void 0:ej(r)&&(r=r[rj],r===null&&(r=void 0))),new(r===void 0?Array:r)(t===0?0:t)}});var Lt=v(function(VT,If){var nj=M(),ij=G(),oj=gr(),aj=ij("species");If.exports=function(e){return oj>=51||!nj(function(){var t=[],r=t.constructor={};return r[aj]=function(){return{foo:1}},t[e](Boolean).foo!==1})}});var Sr=v(function(UT,Bf){var Hj=yo(),Gj=ln();Bf.exports=Object.keys||function(t){return Hj(t,Gj)}});var Nf=v(function(GT,Cf){var Qj=te(),Jj=Ge(),Zj=G(),ew=Zj("match");Cf.exports=function(e){var t;return Qj(e)&&((t=e[ew])!==void 0?!!t:Jj(e)=="RegExp")}});var zt=v(function(KT,Af){Af.exports=function(e){if(typeof e!="function")throw TypeError(String(e)+" is not a function");return e}});var Ao=v(function(WT,Mf){var $f=Y(),tw=zt(),rw=G(),nw=rw("species");Mf.exports=function(e,t){var r=$f(e).constructor,n;return r===void 0||(n=$f(r)[nw])==null?t:tw(n)}});var Ho=v(function(bE,nc){var bw=zt();nc.exports=function(e,t,r){if(bw(e),t===void 0)return e;switch(r){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,i){return e.call(t,n,i)};case 3:return function(n,i,o){return e.call(t,n,i,o)}}return function(){return e.apply(t,arguments)}}});var Ht=v(function(jE,oc){var jw=Ho(),ww=ur(),_w=be(),xw=le(),Ow=wn(),ic=[].push,st=function(e){var t=e==1,r=e==2,n=e==3,i=e==4,o=e==6,a=e==7,u=e==5||o;return function(l,s,f,c){for(var p=_w(l),m=ww(p),d=jw(s,f,3),y=xw(m.length),h=0,j=c||Ow,O=t?j(l,y):r||a?j(l,0):void 0,P,w;y>h;h++)if((u||h in m)&&(P=m[h],w=d(P,h,p),e))if(t)O[h]=w;else if(w)switch(e){case 3:return!0;case 5:return P;case 6:return h;case 2:ic.call(O,P)}else switch(e){case 4:return!1;case 7:ic.call(O,P)}return o?-1:n||i?i:O}};oc.exports={forEach:st(0),map:st(1),filter:st(2),some:st(3),every:st(4),find:st(5),findIndex:st(6),filterOut:st(7)}});var uc=v(function(wE,ac){var Sw=pe(),Iw=de(),Rw=Y(),Pw=Sr();ac.exports=Sw?Object.defineProperties:function(t,r){Rw(t);for(var n=Pw(r),i=n.length,o=0,a;i>o;)Iw.f(t,a=n[o++],r[a]);return t}});var lc=v(function(_E,sc){var qw=St();sc.exports=qw("document","documentElement")});var Gt=v(function(xE,vc){var Tw=Y(),Ew=uc(),fc=ln(),kw=cr(),Bw=lc(),Dw=no(),Cw=fr(),cc=">",pc="<",Go="prototype",Ko="script",dc=Cw("IE_PROTO"),Wo=function(){},mc=function(e){return pc+Ko+cc+e+pc+"/"+Ko+cc},Nw=function(e){e.write(mc("")),e.close();var t=e.parentWindow.Object;return e=null,t},Aw=function(){var e=Dw("iframe"),t="java"+Ko+":",r;return e.style.display="none",Bw.appendChild(e),e.src=String(t),r=e.contentWindow.document,r.open(),r.write(mc("document.F=Object")),r.close(),r.F},Yo,Sn=function(){try{Yo=document.domain&&new ActiveXObject("htmlfile")}catch(t){}Sn=Yo?Nw(Yo):Aw();for(var e=fc.length;e--;)delete Sn[Go][fc[e]];return Sn()};kw[dc]=!0;vc.exports=Object.create||function(t,r){var n;return t!==null?(Wo[Go]=Tw(t),n=new Wo,Wo[Go]=null,n[dc]=t):n=Sn(),r===void 0?n:Ew(n,r)}});var Jo=v(function(OE,yc){var $w=G(),Mw=Gt(),Vw=de(),Xo=$w("unscopables"),Qo=Array.prototype;Qo[Xo]==null&&Vw.f(Qo,Xo,{configurable:!0,value:Mw(null)});yc.exports=function(e){Qo[Xo][e]=!0}});var bc=v(function(IE,gc){var Uw=te();gc.exports=function(e){if(!Uw(e)&&e!==null)throw TypeError("Can't set "+String(e)+" as a prototype");return e}});var qr=v(function(RE,jc){var Hw=Y(),Gw=bc();jc.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e=!1,t={},r;try{r=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,r.call(t,[]),e=t instanceof Array}catch(n){}return function(i,o){return Hw(i),Gw(o),e?r.call(i,o):i.__proto__=o,i}}():void 0)});var ea=v(function(qE,wc){var Yw=M();wc.exports=!Yw(function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})});var Kt=v(function(TE,xc){var Xw=se(),Qw=be(),Jw=fr(),Zw=ea(),_c=Jw("IE_PROTO"),e_=Object.prototype;xc.exports=Zw?Object.getPrototypeOf:function(e){return e=Qw(e),Xw(e,_c)?e[_c]:typeof e.constructor=="function"&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?e_:null}});var Rc=v(function(kE,Ic){"use strict";var a_=zt(),u_=te(),Sc=[].slice,ta={},s_=function(e,t,r){if(!(t in ta)){for(var n=[],i=0;i<t;i++)n[i]="a["+i+"]";ta[t]=Function("C,a","return new C("+n.join(",")+")")}return ta[t](e,r)};Ic.exports=Function.bind||function(t){var r=a_(this),n=Sc.call(arguments,1),i=function(){var a=n.concat(Sc.call(arguments));return this instanceof i?s_(r,a.length,a):r.apply(t,a)};return u_(r.prototype)&&(i.prototype=r.prototype),i}});var Ac=v(function(DE,Nc){var m_=qe(),Dc=Ft().f,v_={}.toString,Cc=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],y_=function(e){try{return Dc(e)}catch(t){return Cc.slice()}};Nc.exports.f=function(t){return Cc&&v_.call(t)=="[object Window]"?y_(t):Dc(m_(t))}});var na=v(function($c){var h_=G();$c.f=h_});var ia=v(function(NE,Vc){var Mc=fo(),g_=se(),b_=na(),j_=de().f;Vc.exports=function(e){var t=Mc.Symbol||(Mc.Symbol={});g_(t,e)||j_(t,e,{value:b_.f(e)})}});var Tr=v(function(AE,Lc){var w_=de().f,__=se(),x_=G(),Fc=x_("toStringTag");Lc.exports=function(e,t,r){e&&!__(e=r?e:e.prototype,Fc)&&w_(e,Fc,{configurable:!0,value:t})}});var Qt=v(function(FE,fp){fp.exports={}});var Oa=v(function(LE,mp){"use strict";var W_=M(),cp=Kt(),Y_=Oe(),X_=se(),Q_=G(),J_=sr(),wa=Q_("iterator"),pp=!1,Z_=function(){return this},qt,_a,xa;[].keys&&(xa=[].keys(),"next"in xa?(_a=cp(cp(xa)),_a!==Object.prototype&&(qt=_a)):pp=!0);var dp=qt==null||W_(function(){var e={};return qt[wa].call(e)!==e});dp&&(qt={});(!J_||dp)&&!X_(qt,wa)&&Y_(qt,wa,Z_);mp.exports={IteratorPrototype:qt,BUGGY_SAFARI_ITERATORS:pp}});var yp=v(function(zE,vp){"use strict";var ex=Oa().IteratorPrototype,tx=Gt(),rx=At(),nx=Tr(),ix=Qt(),ox=function(){return this};vp.exports=function(e,t,r){var n=t+" Iterator";return e.prototype=tx(ex,{next:rx(1,r)}),nx(e,n,!1,!0),ix[n]=ox,e}});var Ra=v(function(UE,Sp){"use strict";var ax=A(),ux=yp(),hp=Kt(),gp=qr(),sx=Tr(),bp=Oe(),lx=We(),fx=G(),Sa=sr(),jp=Qt(),wp=Oa(),Ia=wp.IteratorPrototype,En=wp.BUGGY_SAFARI_ITERATORS,Cr=fx("iterator"),_p="keys",kn="values",xp="entries",Op=function(){return this};Sp.exports=function(e,t,r,n,i,o,a){ux(r,t,n);var u=function(j){if(j===i&&p)return p;if(!En&&j in f)return f[j];switch(j){case _p:return function(){return new r(this,j)};case kn:return function(){return new r(this,j)};case xp:return function(){return new r(this,j)}}return function(){return new r(this)}},l=t+" Iterator",s=!1,f=e.prototype,c=f[Cr]||f["@@iterator"]||i&&f[i],p=!En&&c||u(i),m=t=="Array"&&f.entries||c,d,y,h;if(m&&(d=hp(m.call(new e)),Ia!==Object.prototype&&d.next&&(!Sa&&hp(d)!==Ia&&(gp?gp(d,Ia):typeof d[Cr]!="function"&&bp(d,Cr,Op)),sx(d,l,!0,!0),Sa&&(jp[l]=Op))),i==kn&&c&&c.name!==kn&&(s=!0,p=function(){return c.call(this)}),(!Sa||a)&&f[Cr]!==p&&bp(f,Cr,p),jp[t]=p,i)if(y={values:u(kn),keys:o?p:u(_p),entries:u(xp)},a)for(h in y)(En||s||!(h in f))&&lx(f,h,y[h]);else ax({target:t,proto:!0,forced:En||s},y);return y}});var $=v(function(HE,qp){"use strict";var cx=qe(),Pa=Jo(),Ip=Qt(),Rp=Mt(),px=Ra(),Pp="Array Iterator",dx=Rp.set,mx=Rp.getterFor(Pp);qp.exports=px(Array,"Array",function(e,t){dx(this,{type:Pp,target:cx(e),index:0,kind:t})},function(){var e=mx(this),t=e.target,r=e.kind,n=e.index++;return!t||n>=t.length?(e.target=void 0,{value:void 0,done:!0}):r=="keys"?{value:n,done:!1}:r=="values"?{value:t[n],done:!1}:{value:[n,t[n]],done:!1}},"values");Ip.Arguments=Ip.Array;Pa("keys");Pa("values");Pa("entries")});var qa=v(function(KE,kp){kp.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}});var Fp=v(function(lk,Vp){var Rx=M(),$p=vr(),Mp="\u200B\x85\u180E";Vp.exports=function(e){return Rx(function(){return!!$p[e]()||Mp[e]()!=Mp||$p[e].name!==e})}});var Kp=v(function(Ik,Gp){var Mx=te(),Hp=qr();Gp.exports=function(e,t,r){var n,i;return Hp&&typeof(n=t.constructor)=="function"&&n!==r&&Mx(i=n.prototype)&&i!==r.prototype&&Hp(e,i),e}});var dm=v(function(pN,pm){pm.exports=Object.is||function(t,r){return t===r?t!==0||1/t==1/r:t!=t&&r!=r}});var lu=v(function(HN,wm){"use strict";var AI=Ht().forEach,$I=mr(),MI=$I("forEach");wm.exports=MI?[].forEach:function(t){return AI(this,t,arguments.length>1?arguments[1]:void 0)}});var Sm=v(function(WN,Om){var HI=pe(),GI=Sr(),KI=qe(),WI=tn().f,xm=function(e){return function(t){for(var r=KI(t),n=GI(r),i=n.length,o=0,a=[],u;i>o;)u=n[o++],(!HI||WI.call(r,u))&&a.push(e?[u,r[u]]:r[u]);return a}};Om.exports={entries:xm(!0),values:xm(!1)}});var Rm=v(function(XN,Im){var QI=Y();Im.exports=function(e){var t=e.return;if(t!==void 0)return QI(t.call(e)).value}});var qm=v(function(QN,Pm){var JI=Y(),ZI=Rm();Pm.exports=function(e,t,r,n){try{return n?t(JI(r)[0],r[1]):t(r)}catch(i){throw ZI(e),i}}});var Em=v(function(JN,Tm){var e0=G(),t0=Qt(),r0=e0("iterator"),n0=Array.prototype;Tm.exports=function(e){return e!==void 0&&(t0.Array===e||n0[r0]===e)}});var Bm=v(function(ZN,km){var i0=Do(),o0=Qt(),a0=G(),u0=a0("iterator");km.exports=function(e){if(e!=null)return e[u0]||e["@@iterator"]||o0[i0(e)]}});var Nm=v(function(eA,Cm){"use strict";var s0=Ho(),l0=be(),f0=qm(),c0=Em(),p0=le(),Dm=Or(),d0=Bm();Cm.exports=function(t){var r=l0(t),n=typeof this=="function"?this:Array,i=arguments.length,o=i>1?arguments[1]:void 0,a=o!==void 0,u=d0(r),l=0,s,f,c,p,m,d;if(a&&(o=s0(o,i>2?arguments[2]:void 0,2)),u!=null&&!(n==Array&&c0(u)))for(p=u.call(r),m=p.next,f=new n;!(c=m.call(p)).done;l++)d=a?f0(p,o,[c.value,l],!0):c.value,Dm(f,l,d);else for(s=p0(r.length),f=new n(s);s>l;l++)d=a?o(r[l],l):r[l],Dm(f,l,d);return f.length=l,f}});var Fm=v(function(tA,Vm){var m0=G(),Am=m0("iterator"),$m=!1;try{Mm=0,pu={next:function(){return{done:!!Mm++}},return:function(){$m=!0}},pu[Am]=function(){return this},Array.from(pu,function(){throw 2})}catch(e){}var Mm,pu;Vm.exports=function(e,t){if(!t&&!$m)return!1;var r=!1;try{var n={};n[Am]=function(){return{next:function(){return{done:r=!0}}}},e(n)}catch(i){}return r}});var Mu=v(function(cF,xv){xv.exports=typeof ArrayBuffer!="undefined"&&typeof DataView!="undefined"});var Sv=v(function(pF,Ov){var iP=We();Ov.exports=function(e,t,r){for(var n in t)iP(e,n,t[n],r);return e}});var Rv=v(function(dF,Iv){Iv.exports=function(e,t,r){if(!(e instanceof t))throw TypeError("Incorrect "+(r?r+" ":"")+"invocation");return e}});var qv=v(function(mF,Pv){var oP=ut(),aP=le();Pv.exports=function(e){if(e===void 0)return 0;var t=oP(e),r=aP(t);if(t!==r)throw RangeError("Wrong length or index");return r}});var Ev=v(function(vF,Tv){var uP=Math.abs,rt=Math.pow,sP=Math.floor,lP=Math.log,fP=Math.LN2,cP=function(e,t,r){var n=new Array(r),i=r*8-t-1,o=(1<<i)-1,a=o>>1,u=t===23?rt(2,-24)-rt(2,-77):0,l=e<0||e===0&&1/e<0?1:0,s=0,f,c,p;for(e=uP(e),e!=e||e===Infinity?(c=e!=e?1:0,f=o):(f=sP(lP(e)/fP),e*(p=rt(2,-f))<1&&(f--,p*=2),f+a>=1?e+=u/p:e+=u*rt(2,1-a),e*p>=2&&(f++,p/=2),f+a>=o?(c=0,f=o):f+a>=1?(c=(e*p-1)*rt(2,t),f=f+a):(c=e*rt(2,a-1)*rt(2,t),f=0));t>=8;n[s++]=c&255,c/=256,t-=8);for(f=f<<t|c,i+=t;i>0;n[s++]=f&255,f/=256,i-=8);return n[--s]|=l*128,n},pP=function(e,t){var r=e.length,n=r*8-t-1,i=(1<<n)-1,o=i>>1,a=n-7,u=r-1,l=e[u--],s=l&127,f;for(l>>=7;a>0;s=s*256+e[u],u--,a-=8);for(f=s&(1<<-a)-1,s>>=-a,a+=t;a>0;f=f*256+e[u],u--,a-=8);if(s===0)s=1-o;else{if(s===i)return f?NaN:l?-Infinity:Infinity;f=f+rt(2,t),s=s-o}return(l?-1:1)*f*rt(2,s-t)};Tv.exports={pack:cP,unpack:pP}});var Dv=v(function(yF,Bv){"use strict";var dP=be(),kv=Vt(),mP=le();Bv.exports=function(t){for(var r=dP(this),n=mP(r.length),i=arguments.length,o=kv(i>1?arguments[1]:void 0,n),a=i>2?arguments[2]:void 0,u=a===void 0?n:kv(a,n);u>o;)r[o++]=t;return r}});var Qi=v(function(hF,Xv){"use strict";var Vu=z(),Fu=pe(),vP=Mu(),yP=Oe(),Cv=Sv(),Lu=M(),zi=Rv(),hP=ut(),gP=le(),Ui=qv(),Nv=Ev(),bP=Kt(),Av=qr(),jP=Ft().f,wP=de().f,_P=Dv(),$v=Tr(),Mv=Mt(),ar=Mv.get,Vv=Mv.set,Hi="ArrayBuffer",Gi="DataView",Jr="prototype",xP="Wrong length",Fv="Wrong index",$e=Vu[Hi],xe=$e,Me=Vu[Gi],Ki=Me&&Me[Jr],Lv=Object.prototype,Wi=Vu.RangeError,zv=Nv.pack,Uv=Nv.unpack,Hv=function(e){return[e&255]},Gv=function(e){return[e&255,e>>8&255]},Kv=function(e){return[e&255,e>>8&255,e>>16&255,e>>24&255]},Wv=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},OP=function(e){return zv(e,23,4)},SP=function(e){return zv(e,52,8)},Yi=function(e,t){wP(e[Jr],t,{get:function(){return ar(this)[t]}})},jt=function(e,t,r,n){var i=Ui(r),o=ar(e);if(i+t>o.byteLength)throw Wi(Fv);var a=ar(o.buffer).bytes,u=i+o.byteOffset,l=a.slice(u,u+t);return n?l:l.reverse()},wt=function(e,t,r,n,i,o){var a=Ui(r),u=ar(e);if(a+t>u.byteLength)throw Wi(Fv);for(var l=ar(u.buffer).bytes,s=a+u.byteOffset,f=n(+i),c=0;c<t;c++)l[s+c]=f[o?c:t-c-1]};if(!vP)xe=function(t){zi(this,xe,Hi);var r=Ui(t);Vv(this,{bytes:_P.call(new Array(r),0),byteLength:r}),Fu||(this.byteLength=r)},Me=function(t,r,n){zi(this,Me,Gi),zi(t,xe,Gi);var i=ar(t).byteLength,o=hP(r);if(o<0||o>i)throw Wi("Wrong offset");if(n=n===void 0?i-o:gP(n),o+n>i)throw Wi(xP);Vv(this,{buffer:t,byteLength:n,byteOffset:o}),Fu||(this.buffer=t,this.byteLength=n,this.byteOffset=o)},Fu&&(Yi(xe,"byteLength"),Yi(Me,"buffer"),Yi(Me,"byteLength"),Yi(Me,"byteOffset")),Cv(Me[Jr],{getInt8:function(t){return jt(this,1,t)[0]<<24>>24},getUint8:function(t){return jt(this,1,t)[0]},getInt16:function(t){var r=jt(this,2,t,arguments.length>1?arguments[1]:void 0);return(r[1]<<8|r[0])<<16>>16},getUint16:function(t){var r=jt(this,2,t,arguments.length>1?arguments[1]:void 0);return r[1]<<8|r[0]},getInt32:function(t){return Wv(jt(this,4,t,arguments.length>1?arguments[1]:void 0))},getUint32:function(t){return Wv(jt(this,4,t,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(t){return Uv(jt(this,4,t,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(t){return Uv(jt(this,8,t,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(t,r){wt(this,1,t,Hv,r)},setUint8:function(t,r){wt(this,1,t,Hv,r)},setInt16:function(t,r){wt(this,2,t,Gv,r,arguments.length>2?arguments[2]:void 0)},setUint16:function(t,r){wt(this,2,t,Gv,r,arguments.length>2?arguments[2]:void 0)},setInt32:function(t,r){wt(this,4,t,Kv,r,arguments.length>2?arguments[2]:void 0)},setUint32:function(t,r){wt(this,4,t,Kv,r,arguments.length>2?arguments[2]:void 0)},setFloat32:function(t,r){wt(this,4,t,OP,r,arguments.length>2?arguments[2]:void 0)},setFloat64:function(t,r){wt(this,8,t,SP,r,arguments.length>2?arguments[2]:void 0)}});else{if(!Lu(function(){$e(1)})||!Lu(function(){new $e(-1)})||Lu(function(){return new $e,new $e(1.5),new $e(NaN),$e.name!=Hi})){for(xe=function(t){return zi(this,xe),new $e(Ui(t))},Yv=xe[Jr]=$e[Jr],zu=jP($e),Uu=0;zu.length>Uu;)(Xi=zu[Uu++])in xe||yP(xe,Xi,$e[Xi]);Yv.constructor=xe}Av&&bP(Ki)!==Lv&&Av(Ki,Lv),Zr=new Me(new xe(2)),Hu=Ki.setInt8,Zr.setInt8(0,2147483648),Zr.setInt8(1,2147483649),(Zr.getInt8(0)||!Zr.getInt8(1))&&Cv(Ki,{setInt8:function(t,r){Hu.call(this,t,r<<24>>24)},setUint8:function(t,r){Hu.call(this,t,r<<24>>24)}},{unsafe:!0})}var Yv,zu,Uu,Xi,Zr,Hu;$v(xe,Hi);$v(Me,Gi);Xv.exports={ArrayBuffer:xe,DataView:Me}});var Zv=v(function(gF,Jv){"use strict";var IP=St(),RP=de(),PP=G(),qP=pe(),Qv=PP("species");Jv.exports=function(e){var t=IP(e),r=RP.f;qP&&t&&!t[Qv]&&r(t,Qv,{configurable:!0,get:function(){return this}})}});var sy=v(function(_F,uy){var zP=zt(),UP=be(),HP=ur(),GP=le(),ay=function(e){return function(t,r,n,i){zP(r);var o=UP(t),a=HP(o),u=GP(o.length),l=e?u-1:0,s=e?-1:1;if(n<2)for(;;){if(l in a){i=a[l],l+=s;break}if(l+=s,e?l<0:u<=l)throw TypeError("Reduce of empty array with no initial value")}for(;e?l>=0:u>l;l+=s)l in a&&(i=r(i,a[l],l,o));return i}};uy.exports={left:ay(!1),right:ay(!0)}});var fy=v(function(xF,ly){var KP=Ge(),WP=z();ly.exports=KP(WP.process)=="process"});var Xu=b(T());function Qu(){(0,Xu.default)(document).on("submit","form:not([action])",function(e){e.preventDefault()})}var Ju=b(T());function Zu(){var e=window.history.pushState;window.history.pushState=function(){for(var t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];var i=e.apply(this,r);return(0,Ju.default)(document).trigger("pushstate"),i}}"use strict";var bg=A(),jg=mo().indexOf,wg=mr(),cl=[].indexOf,pl=!!cl&&1/[1].indexOf(1,-0)<0,_g=wg("indexOf");bg({target:"Array",proto:!0,forced:pl||!_g},{indexOf:function(t){return pl?cl.apply(this,arguments)||0:jg(this,t,arguments.length>1?arguments[1]:void 0)}});var Eg=A(),gl=hl();Eg({global:!0,forced:parseInt!=gl},{parseInt:gl});var pn=b(T());var bl=!1,jl=!1,wl=-1;function _o(e){bl=e}function _l(e){jl=e}function xl(e){wl=e}function Ol(){return bl}function It(){return jl}function Sl(){return wl}var fe;function Il(e){fe=e}function kg(){var e=fe.indexOf("MSIE ");if(It()&&e>0)return parseInt(fe.substring(e+5,fe.indexOf(".",e)),10);var t=fe.indexOf("Trident/");if(t>0){var r=fe.indexOf("rv:");return parseInt(fe.substring(r+3,fe.indexOf(".",r)),10)}return-1}function Rl(){/\bQt\//.test(fe)?((0,pn.default)(document.documentElement).addClass("qt"),_o(!0)):_o(!1),/\bQt/.test(fe)&&/\bMacintosh/.test(fe)&&(0,pn.default)(document.documentElement).addClass("qtmac"),/\bQt\/5/.test(fe)&&/Linux/.test(fe)&&(0,pn.default)(document.documentElement).addClass("qt5"),_l(/MSIE|Trident|Edge/.test(fe)),xl(kg())}function Pl(){return window.Shiny||(window.Shiny={}),window.Shiny}var gy=b(T());var Bg=pe(),Dg=de().f,xo=Function.prototype,Cg=xo.toString,Ng=/^\s*function ([^ (]*)/,ql="name";Bg&&!(ql in xo)&&Dg(xo,ql,{configurable:!0,get:function(){try{return Cg.call(this).match(Ng)[1]}catch(e){return""}}});var ZT=b(Se());"use strict";var db=wr(),mb=Y(),vb=le(),yb=ut(),hb=Ke(),gb=hn(),bb=af(),jb=_r(),wb=Math.max,_b=Math.min,xb=function(e){return e===void 0?e:String(e)};db("replace",2,function(e,t,r,n){var i=n.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,o=n.REPLACE_KEEPS_$0,a=i?"$":"$0";return[function(l,s){var f=hb(this),c=l==null?void 0:l[e];return c!==void 0?c.call(l,f,s):t.call(String(f),l,s)},function(u,l){if(!i&&o||typeof l=="string"&&l.indexOf(a)===-1){var s=r(t,u,this,l);if(s.done)return s.value}var f=mb(u),c=String(this),p=typeof l=="function";p||(l=String(l));var m=f.global;if(m){var d=f.unicode;f.lastIndex=0}for(var y=[];;){var h=jb(f,c);if(h===null||(y.push(h),!m))break;var j=String(h[0]);j===""&&(f.lastIndex=gb(c,vb(f.lastIndex),d))}for(var O="",P=0,w=0;w<y.length;w++){h=y[w];for(var E=String(h[0]),D=wb(_b(yb(h.index),c.length),0),W=[],H=1;H<h.length;H++)W.push(xb(h[H]));var ue=h.groups;if(p){var he=[E].concat(W,D,c);ue!==void 0&&he.push(ue);var ge=String(l.apply(void 0,he))}else ge=bb(E,c,D,W,ue,l);D>=P&&(O+=c.slice(P,D)+ge,P=D+E.length)}return O+c.slice(P)}]});var Bb=gn(),Db=We(),Cb=pf();Bb||Db(Object.prototype,"toString",Cb,{unsafe:!0});"use strict";var Nb=We(),Ab=Y(),$b=M(),Mb=Oo(),Co="toString",df=RegExp.prototype,mf=df[Co],Vb=$b(function(){return mf.call({source:"a",flags:"b"})!="/a/b"}),Fb=mf.name!=Co;(Vb||Fb)&&Nb(RegExp.prototype,Co,function(){var t=Ab(this),r=String(t.source),n=t.flags,i=String(n===void 0&&t instanceof RegExp&&!("flags"in df)?Mb.call(t):n);return"/"+r+"/"+i},{unsafe:!0});var Gb=A(),hf=yf();Gb({global:!0,forced:parseFloat!=hf},{parseFloat:hf});"use strict";var Wb=A(),jf=M(),wf=bf(),jn=1 .toPrecision,Yb=jf(function(){return jn.call(1,void 0)!=="1"})||!jf(function(){jn.call({})});Wb({target:"Number",proto:!0,forced:Yb},{toPrecision:function(t){return t===void 0?jn.call(wf(this)):jn.call(wf(this),t)}});"use strict";var uj=A(),sj=M(),lj=xr(),fj=te(),cj=be(),pj=le(),Rf=Or(),dj=wn(),mj=Lt(),vj=G(),yj=gr(),Pf=vj("isConcatSpreadable"),qf=9007199254740991,Tf="Maximum allowed index exceeded",hj=yj>=51||!sj(function(){var e=[];return e[Pf]=!1,e.concat()[0]!==e}),gj=mj("concat"),bj=function(e){if(!fj(e))return!1;var t=e[Pf];return t!==void 0?!!t:lj(e)},jj=!hj||!gj;uj({target:"Array",proto:!0,forced:jj},{concat:function(t){var r=cj(this),n=dj(r,0),i=0,o,a,u,l,s;for(o=-1,u=arguments.length;o<u;o++)if(s=o===-1?r:arguments[o],bj(s)){if(l=pj(s.length),i+l>qf)throw TypeError(Tf);for(a=0;a<l;a++,i++)a in s&&Rf(n,i,s[a])}else{if(i>=qf)throw TypeError(Tf);Rf(n,i++,s)}return n.length=i,n}});"use strict";var wj=A(),_j=te(),Ef=xr(),kf=Vt(),xj=le(),Oj=qe(),Sj=Or(),Ij=G(),Rj=Lt(),Pj=Rj("slice"),qj=Ij("species"),Tj=[].slice,Ej=Math.max;wj({target:"Array",proto:!0,forced:!Pj},{slice:function(t,r){var n=Oj(this),i=xj(n.length),o=kf(t,i),a=kf(r===void 0?i:r,i),u,l,s;if(Ef(n)&&(u=n.constructor,typeof u=="function"&&(u===Array||Ef(u.prototype))?u=void 0:_j(u)&&(u=u[qj],u===null&&(u=void 0)),u===Array||u===void 0))return Tj.call(n,o,a);for(l=new(u===void 0?Array:u)(Ej(a-o,0)),s=0;o<a;o++,s++)o in n&&Sj(l,s,n[o]);return l.length=s,l}});"use strict";var kj=A(),Bj=Vt(),Dj=ut(),Cj=le(),Nj=be(),Aj=wn(),$j=Or(),Mj=Lt(),Vj=Mj("splice"),Fj=Math.max,Lj=Math.min,zj=9007199254740991,Uj="Maximum allowed length exceeded";kj({target:"Array",proto:!0,forced:!Vj},{splice:function(t,r){var n=Nj(this),i=Cj(n.length),o=Bj(t,i),a=arguments.length,u,l,s,f,c,p;if(a===0?u=l=0:a===1?(u=0,l=i-o):(u=a-2,l=Lj(Fj(Dj(r),0),i-o)),i+u-l>zj)throw TypeError(Uj);for(s=Aj(n,l),f=0;f<l;f++)c=o+f,c in n&&$j(s,f,n[c]);if(s.length=l,u<l){for(f=o;f<i-l;f++)c=f+l,p=f+u,c in n?n[p]=n[c]:delete n[p];for(f=i;f>i-l+u;f--)delete n[f-1]}else if(u>l)for(f=i-l;f>o;f--)c=f+l-1,p=f+u-1,c in n?n[p]=n[c]:delete n[p];for(f=0;f<u;f++)n[f+o]=arguments[f+2];return n.length=i-l+u,s}});var Kj=A(),Wj=be(),Df=Sr(),Yj=M(),Xj=Yj(function(){Df(1)});Kj({target:"Object",stat:!0,forced:Xj},{keys:function(t){return Df(Wj(t))}});"use strict";var iw=wr(),ow=Nf(),aw=Y(),Vf=Ke(),uw=Ao(),sw=hn(),lw=le(),Ff=_r(),fw=hr(),cw=Io(),Ut=cw.UNSUPPORTED_Y,pw=[].push,dw=Math.min,Lf=4294967295;iw("split",2,function(e,t,r){var n;return"abbc".split(/(b)*/)[1]=="c"||"test".split(/(?:)/,-1).length!=4||"ab".split(/(?:ab)*/).length!=2||".".split(/(.?)(.?)/).length!=4||".".split(/()()/).length>1||"".split(/.?/).length?n=function(i,o){var a=String(Vf(this)),u=o===void 0?Lf:o>>>0;if(u===0)return[];if(i===void 0)return[a];if(!ow(i))return t.call(a,i,u);for(var l=[],s=(i.ignoreCase?"i":"")+(i.multiline?"m":"")+(i.unicode?"u":"")+(i.sticky?"y":""),f=0,c=new RegExp(i.source,s+"g"),p,m,d;(p=fw.call(c,a))&&(m=c.lastIndex,!(m>f&&(l.push(a.slice(f,p.index)),p.length>1&&p.index<a.length&&pw.apply(l,p.slice(1)),d=p[0].length,f=m,l.length>=u)));)c.lastIndex===p.index&&c.lastIndex++;return f===a.length?(d||!c.test(""))&&l.push(""):l.push(a.slice(f)),l.length>u?l.slice(0,u):l}:"0".split(void 0,0).length?n=function(i,o){return i===void 0&&o===0?[]:t.call(this,i,o)}:n=t,[function(o,a){var u=Vf(this),l=o==null?void 0:o[e];return l!==void 0?l.call(o,u,a):n.call(String(u),o,a)},function(i,o){var a=r(n,i,this,o,n!==t);if(a.done)return a.value;var u=aw(i),l=String(this),s=uw(u,RegExp),f=u.unicode,c=(u.ignoreCase?"i":"")+(u.multiline?"m":"")+(u.unicode?"u":"")+(Ut?"g":"y"),p=new s(Ut?"^(?:"+u.source+")":u,c),m=o===void 0?Lf:o>>>0;if(m===0)return[];if(l.length===0)return Ff(p,l)===null?[l]:[];for(var d=0,y=0,h=[];y<l.length;){p.lastIndex=Ut?0:y;var j=Ff(p,Ut?l.slice(y):l),O;if(j===null||(O=dw(lw(p.lastIndex+(Ut?y:0)),l.length))===d)y=sw(l,y,f);else{if(h.push(l.slice(d,y)),h.length===m)return h;for(var P=1;P<=j.length-1;P++)if(h.push(j[P]),h.length===m)return h;y=d=O}}return h.push(l.slice(d)),h}]},Ut);var Ir=b(T());function $o(){return window.devicePixelRatio}var zf=b(T()),Uf;function Hf(e){Uf=e}function _n(e){try{return new Blob(e)}catch(r){var t=new Uf;return zf.default.each(e,function(n,i){t.append(i)}),t.getBlob()}}function x(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Gf(e){var t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;","/":"&#x2F;"};return e.replace(/[&<>'"/]/g,function(r){return t[r]})}function xn(){return Math.floor(4294967296+Math.random()*64424509440).toString(16)}function Rt(e){if(!(!e||!e.toLowerCase))switch(e.toLowerCase()){case"true":return!0;case"false":return!1;default:return}}function Fe(e,t){var r=void 0;if(e.currentStyle)r=e.currentStyle[t];else if(window.getComputedStyle){var n=document.defaultView.getComputedStyle(e,null);n&&(r=n.getPropertyValue(t))}return r}function Kf(e,t){for(var r=e.toString();r.length<t;)r="0"+r;return r}function Mo(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;if(t<1)throw"Significant digits must be at least 1.";return parseFloat(e.toPrecision(t))}function Wf(e){var t=new Date(e);return t.toString()==="Invalid Date"&&(t=new Date(e.replace(/-/g,"/"))),t}function Te(e){return e instanceof Date?e.getUTCFullYear()+"-"+Kf(e.getUTCMonth()+1,2)+"-"+Kf(e.getUTCDate(),2):null}function Yf(e,t){var r={};return function(){var n={w:e.offsetWidth,h:e.offsetHeight};n.w===0&&n.h===0||n.w===r.w&&n.h===r.h||(r=n,t(n.w,n.h))}}function Vo(){return $o()?Math.round($o()*100)/100:1}function Xf(e){var t=e.replace(/[\\"']/g,"\\$&").replace(/\u0000/g,"\\0").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\b]/g,"\\b"),r;try{r=new Function("with (this) {\n        try {\n          return (".concat(e,");\n        } catch (e) {\n          console.error('Error evaluating expression: ").concat(t,"');\n          throw e;\n        }\n      }"))}catch(n){throw console.error("Error parsing expression: "+e),n}return function(n){return r.call(n)}}function Rr(e){return e==null?[]:Array.isArray(e)?e:[e]}function Qf(e,t){function r(s,f,c){for(var p=0,m=0,d=[];p<f.length&&m<c.length;)s(f[p],c[m])<=0?d.push(f[p++]):d.push(c[m++]);for(;p<f.length;)d.push(f[p++]);for(;m<c.length;)d.push(c[m++]);return d}e=e.slice(0);for(var n=1;n<e.length;n*=2)for(var i=0;i<e.length;i+=n*2){var o=e.slice(i,i+n),a=e.slice(i+n,i+n*2),u=r(t,o,a),l=[i,u.length];Array.prototype.push.apply(l,u),Array.prototype.splice.apply(e,l)}return e}var R=function(t){return t.replace(/([!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~])/g,"\\$1")};function Ee(e,t){var r={};for(var n in e)x(e,n)&&(r[n]=t(e[n],n,e));return r}function Jf(e){return typeof e=="number"&&isNaN(e)}function Fo(e,t){if(Ir.default.type(e)==="object"&&Ir.default.type(t)==="object"){var r=e,n=t;if(Object.keys(r).length!==Object.keys(n).length)return!1;for(var i in r)if(!x(n,i)||!Fo(r[i],n[i]))return!1;return!0}else if(Ir.default.type(e)==="array"&&Ir.default.type(t)==="array"){var o=e,a=t;if(o.length!==a.length)return!1;for(var u=0;u<o.length;u++)if(!Fo(o[u],a[u]))return!1;return!0}else return e===t}function Lo(){if(arguments.length<2)throw new Error("equal requires at least two arguments.");for(var e=0;e<arguments.length-1;e++)if(!Fo(e<0||arguments.length<=e?void 0:arguments[e],e+1<0||arguments.length<=e+1?void 0:arguments[e+1]))return!1;return!0}var Zf=function(t,r,n){function i(u){return(u+"").replace(/-/,".").replace(/(\.0)+[^.]*$/,"").split(".")}function o(u,l){u=i(u),l=i(l);for(var s=Math.min(u.length,l.length),f,c=0;c<s;c++)if(f=parseInt(u[c],10)-parseInt(l[c],10),f!==0)return f;return u.length-l.length}var a=o(t,n);if(r==="==")return a===0;if(r===">=")return a>=0;if(r===">")return a>0;if(r==="<=")return a<=0;if(r==="<")return a<0;throw"Unknown operator: ".concat(r)};function re(e,t){if(typeof e!="undefined"){if(t.length!==1)throw new Error("labelNode must be of length 1");var r=Array.isArray(e)&&e.length===0;r?t.addClass("shiny-label-null"):(t.text(e),t.removeClass("shiny-label-null"))}}function Pr(e){var t=document.createElement("a");t.href="/";var r=document.createElement("div");r.style.setProperty("position","absolute","important"),r.style.setProperty("top","-1000px","important"),r.style.setProperty("left","0","important"),r.style.setProperty("width","30px","important"),r.style.setProperty("height","10px","important"),r.appendChild(t),e.appendChild(r);var n=window.getComputedStyle(t).getPropertyValue("color");return e.removeChild(r),n}function zo(){return!window.bootstrap}function ec(e){return e.toLowerCase()}function mw(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function tc(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function vw(e,t,r){return t&&tc(e.prototype,t),r&&tc(e,r),e}function Uo(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var On=function(){function e(){mw(this,e),Uo(this,"name",void 0),Uo(this,"bindings",[]),Uo(this,"bindingNames",{})}return vw(e,[{key:"register",value:function(r,n){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,o={binding:r,priority:i};this.bindings.unshift(o),n&&(this.bindingNames[n]=o,r.name=n)}},{key:"setPriority",value:function(r,n){var i=this.bindingNames[r];if(!i)throw"Tried to set priority on unknown binding "+r;i.priority=n||0}},{key:"getPriority",value:function(r){var n=this.bindingNames[r];return n?n.priority:!1}},{key:"getBindings",value:function(){return Qf(this.bindings,function(r,n){return n.priority-r.priority})}}]),e}();function yw(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function rc(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function hw(e,t,r){return t&&rc(e.prototype,t),r&&rc(e,r),e}function gw(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var V=function(){function e(){yw(this,e),gw(this,"name",void 0)}return hw(e,[{key:"find",value:function(r){throw"Not implemented"}},{key:"getId",value:function(r){return r.getAttribute("data-input-id")||r.id}},{key:"getType",value:function(r){return!1}},{key:"getValue",value:function(r){throw"Not implemented"}},{key:"subscribe",value:function(r,n){}},{key:"unsubscribe",value:function(r){}},{key:"receiveMessage",value:function(r,n){throw"Not implemented"}},{key:"getState",value:function(r){throw"Not implemented"}},{key:"getRatePolicy",value:function(r){return null}},{key:"initialize",value:function(r){}},{key:"dispose",value:function(r){}}]),e}();"use strict";var Fw=A(),Lw=Ht().find,zw=Jo(),Zo="find",hc=!0;Zo in[]&&Array(1)[Zo](function(){hc=!1});Fw({target:"Array",proto:!0,forced:hc},{find:function(t){return Lw(this,t,arguments.length>1?arguments[1]:void 0)}});zw(Zo);var Kw=A(),Ww=qr();Kw({target:"Object",stat:!0},{setPrototypeOf:Ww});var t_=A(),r_=M(),n_=be(),Oc=Kt(),i_=ea(),o_=r_(function(){Oc(1)});t_({target:"Object",stat:!0,forced:o_,sham:!i_},{getPrototypeOf:function(t){return Oc(n_(t))}});var l_=A(),f_=St(),Pc=zt(),c_=Y(),qc=te(),p_=Gt(),d_=Rc(),Tc=M(),ra=f_("Reflect","construct"),Ec=Tc(function(){function e(){}return!(ra(function(){},[],e)instanceof e)}),kc=!Tc(function(){ra(function(){})}),Bc=Ec||kc;l_({target:"Reflect",stat:!0,forced:Bc,sham:Bc},{construct:function(t,r){Pc(t),c_(r);var n=arguments.length<3?t:Pc(arguments[2]);if(kc&&!Ec)return ra(t,r,n);if(t==n){switch(r.length){case 0:return new t;case 1:return new t(r[0]);case 2:return new t(r[0],r[1]);case 3:return new t(r[0],r[1],r[2]);case 4:return new t(r[0],r[1],r[2],r[3])}var i=[null];return i.push.apply(i,r),new(d_.apply(t,i))}var o=n.prototype,a=p_(qc(o)?o:Object.prototype),u=Function.apply.call(t,a,r);return qc(u)?u:a}});"use strict";var Wt=A(),zc=z(),O_=St(),S_=sr(),Yt=pe(),Pt=vn(),I_=To(),oa=M(),K=se(),R_=xr(),P_=te(),aa=Y(),q_=be(),In=qe(),ua=$t(),sa=At(),Er=Gt(),Uc=Sr(),T_=Ft(),Hc=Ac(),la=ho(),Gc=xt(),Kc=de(),Wc=tn(),E_=Oe(),fa=We(),kr=lr(),k_=fr(),Yc=cr(),Xc=an(),Qc=G(),B_=na(),D_=ia(),C_=Tr(),Jc=Mt(),Rn=Ht().forEach,me=k_("hidden"),Pn="Symbol",Ye="prototype",Zc=Qc("toPrimitive"),N_=Jc.set,ep=Jc.getterFor(Pn),Ie=Object[Ye],ve=zc.Symbol,Br=O_("JSON","stringify"),tp=Gc.f,lt=Kc.f,rp=Hc.f,A_=Wc.f,Xe=kr("symbols"),Dr=kr("op-symbols"),ca=kr("string-to-symbol-registry"),pa=kr("symbol-to-string-registry"),$_=kr("wks"),da=zc.QObject,ma=!da||!da[Ye]||!da[Ye].findChild,va=Yt&&oa(function(){return Er(lt({},"a",{get:function(){return lt(this,"a",{value:7}).a}})).a!=7})?function(e,t,r){var n=tp(Ie,t);n&&delete Ie[t],lt(e,t,r),n&&e!==Ie&&lt(Ie,t,n)}:lt,ya=function(e,t){var r=Xe[e]=Er(ve[Ye]);return N_(r,{type:Pn,tag:e,description:t}),Yt||(r.description=t),r},ha=I_?function(e){return typeof e=="symbol"}:function(e){return Object(e)instanceof ve},qn=function(t,r,n){t===Ie&&qn(Dr,r,n),aa(t);var i=ua(r,!0);return aa(n),K(Xe,i)?(n.enumerable?(K(t,me)&&t[me][i]&&(t[me][i]=!1),n=Er(n,{enumerable:sa(0,!1)})):(K(t,me)||lt(t,me,sa(1,{})),t[me][i]=!0),va(t,i,n)):lt(t,i,n)},np=function(t,r){aa(t);var n=In(r),i=Uc(n).concat(ba(n));return Rn(i,function(o){(!Yt||ga.call(n,o))&&qn(t,o,n[o])}),t},M_=function(t,r){return r===void 0?Er(t):np(Er(t),r)},ga=function(t){var r=ua(t,!0),n=A_.call(this,r);return this===Ie&&K(Xe,r)&&!K(Dr,r)?!1:n||!K(this,r)||!K(Xe,r)||K(this,me)&&this[me][r]?n:!0},ip=function(t,r){var n=In(t),i=ua(r,!0);if(!(n===Ie&&K(Xe,i)&&!K(Dr,i))){var o=tp(n,i);return o&&K(Xe,i)&&!(K(n,me)&&n[me][i])&&(o.enumerable=!0),o}},op=function(t){var r=rp(In(t)),n=[];return Rn(r,function(i){!K(Xe,i)&&!K(Yc,i)&&n.push(i)}),n},ba=function(t){var r=t===Ie,n=rp(r?Dr:In(t)),i=[];return Rn(n,function(o){K(Xe,o)&&(!r||K(Ie,o))&&i.push(Xe[o])}),i};Pt||(ve=function(){if(this instanceof ve)throw TypeError("Symbol is not a constructor");var t=!arguments.length||arguments[0]===void 0?void 0:String(arguments[0]),r=Xc(t),n=function(i){this===Ie&&n.call(Dr,i),K(this,me)&&K(this[me],r)&&(this[me][r]=!1),va(this,r,sa(1,i))};return Yt&&ma&&va(Ie,r,{configurable:!0,set:n}),ya(r,t)},fa(ve[Ye],"toString",function(){return ep(this).tag}),fa(ve,"withoutSetter",function(e){return ya(Xc(e),e)}),Wc.f=ga,Kc.f=qn,Gc.f=ip,T_.f=Hc.f=op,la.f=ba,B_.f=function(e){return ya(Qc(e),e)},Yt&&(lt(ve[Ye],"description",{configurable:!0,get:function(){return ep(this).description}}),S_||fa(Ie,"propertyIsEnumerable",ga,{unsafe:!0})));Wt({global:!0,wrap:!0,forced:!Pt,sham:!Pt},{Symbol:ve});Rn(Uc($_),function(e){D_(e)});Wt({target:Pn,stat:!0,forced:!Pt},{for:function(e){var t=String(e);if(K(ca,t))return ca[t];var r=ve(t);return ca[t]=r,pa[r]=t,r},keyFor:function(t){if(!ha(t))throw TypeError(t+" is not a symbol");if(K(pa,t))return pa[t]},useSetter:function(){ma=!0},useSimple:function(){ma=!1}});Wt({target:"Object",stat:!0,forced:!Pt,sham:!Yt},{create:M_,defineProperty:qn,defineProperties:np,getOwnPropertyDescriptor:ip});Wt({target:"Object",stat:!0,forced:!Pt},{getOwnPropertyNames:op,getOwnPropertySymbols:ba});Wt({target:"Object",stat:!0,forced:oa(function(){la.f(1)})},{getOwnPropertySymbols:function(t){return la.f(q_(t))}});Br&&(ap=!Pt||oa(function(){var e=ve();return Br([e])!="[null]"||Br({a:e})!="{}"||Br(Object(e))!="{}"}),Wt({target:"JSON",stat:!0,forced:ap},{stringify:function(t,r,n){for(var i=[t],o=1,a;arguments.length>o;)i.push(arguments[o++]);if(a=r,!(!P_(r)&&t===void 0||ha(t)))return R_(r)||(r=function(u,l){if(typeof a=="function"&&(l=a.call(this,u,l)),!ha(l))return l}),i[1]=r,Br.apply(null,i)}}));var ap;ve[Ye][Zc]||E_(ve[Ye],Zc,ve[Ye].valueOf);C_(ve,Pn);Yc[me]=!0;"use strict";var V_=A(),F_=pe(),L_=z(),z_=se(),U_=te(),H_=de().f,G_=go(),Qe=L_.Symbol;F_&&typeof Qe=="function"&&(!("description"in Qe.prototype)||Qe().description!==void 0)&&(ja={},Xt=function(){var t=arguments.length<1||arguments[0]===void 0?void 0:String(arguments[0]),r=this instanceof Xt?new Qe(t):t===void 0?Qe():Qe(t);return t===""&&(ja[r]=!0),r},G_(Xt,Qe),Tn=Xt.prototype=Qe.prototype,Tn.constructor=Xt,up=Tn.toString,sp=String(Qe("test"))=="Symbol(test)",lp=/^Symbol\((.*)\)[^)]+$/,H_(Tn,"description",{configurable:!0,get:function(){var t=U_(this)?this.valueOf():this,r=up.call(t);if(z_(ja,t))return"";var n=sp?r.slice(7,-1):r.replace(lp,"$1");return n===""?void 0:n}}),V_({global:!0,forced:!0},{Symbol:Xt}));var ja,Xt,Tn,up,sp,lp;var K_=ia();K_("iterator");var nk=b($());"use strict";var vx=Bo().charAt,Tp=Mt(),yx=Ra(),Ep="String Iterator",hx=Tp.set,gx=Tp.getterFor(Ep);yx(String,"String",function(e){hx(this,{type:Ep,string:String(e),index:0})},function(){var t=gx(this),r=t.string,n=t.index,i;return n>=r.length?{value:void 0,done:!0}:(i=vx(r,n),t.index+=i.length,{value:i,done:!1})});var bx=z(),Bp=qa(),Nr=$(),Ta=Oe(),Dp=G(),Ea=Dp("iterator"),Cp=Dp("toStringTag"),ka=Nr.values;for(var Ba in Bp)if(Da=bx[Ba],Le=Da&&Da.prototype,Le){if(Le[Ea]!==ka)try{Ta(Le,Ea,ka)}catch(e){Le[Ea]=ka}if(Le[Cp]||Ta(Le,Cp,Ba),Bp[Ba]){for(Tt in Nr)if(Le[Tt]!==Nr[Tt])try{Ta(Le,Tt,Nr[Tt])}catch(e){Le[Tt]=Nr[Tt]}}}var Da,Le,Tt;var Et=b(T());function Bn(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Bn=function(r){return typeof r}:Bn=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},Bn(e)}function jx(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Np(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function wx(e,t,r){return t&&Np(e.prototype,t),r&&Np(e,r),e}function _x(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Ca(e,t)}function Ca(e,t){return Ca=Object.setPrototypeOf||function(n,i){return n.__proto__=i,n},Ca(e,t)}function xx(e){var t=Ix();return function(){var n=Dn(e),i;if(t){var o=Dn(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return Ox(this,i)}}function Ox(e,t){return t&&(Bn(t)==="object"||typeof t=="function")?t:Sx(e)}function Sx(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Ix(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function Dn(e){return Dn=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},Dn(e)}var Ap=function(e){_x(r,e);var t=xx(r);function r(){return jx(this,r),t.apply(this,arguments)}return wx(r,[{key:"find",value:function(i){return(0,Et.default)(i).find('input[type="checkbox"]')}},{key:"getValue",value:function(i){return i.checked}},{key:"setValue",value:function(i,o){i.checked=o}},{key:"subscribe",value:function(i,o){(0,Et.default)(i).on("change.checkboxInputBinding",function(){o(!0)})}},{key:"unsubscribe",value:function(i){(0,Et.default)(i).off(".checkboxInputBinding")}},{key:"getState",value:function(i){return{label:(0,Et.default)(i).parent().find("span").text(),value:i.checked}}},{key:"receiveMessage",value:function(i,o){x(o,"value")&&(i.checked=o.value),x(o,"label")&&(0,Et.default)(i).parent().find("span").text(o.label),(0,Et.default)(i).trigger("change")}}]),r}(V);"use strict";var Px=A(),qx=yr().trim,Tx=Fp();Px({target:"String",proto:!0,forced:Tx("trim")},{trim:function(){return qx(this)}});var jk=b($());var je=b(T());function Cn(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Cn=function(r){return typeof r}:Cn=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},Cn(e)}function Ex(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Lp(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function kx(e,t,r){return t&&Lp(e.prototype,t),r&&Lp(e,r),e}function Bx(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Na(e,t)}function Na(e,t){return Na=Object.setPrototypeOf||function(n,i){return n.__proto__=i,n},Na(e,t)}function Dx(e){var t=Ax();return function(){var n=Nn(e),i;if(t){var o=Nn(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return Cx(this,i)}}function Cx(e,t){return t&&(Cn(t)==="object"||typeof t=="function")?t:Nx(e)}function Nx(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Ax(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function Nn(e){return Nn=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},Nn(e)}function zp(e){return(0,je.default)(e).find('label[for="'+R(e.id)+'"]')}function $x(e){return e.parentNode.tagName==="LABEL"?(0,je.default)(e.parentNode).find("span").text().trim():null}var Up=function(e){Bx(r,e);var t=Dx(r);function r(){return Ex(this,r),t.apply(this,arguments)}return kx(r,[{key:"find",value:function(i){return(0,je.default)(i).find(".shiny-input-checkboxgroup")}},{key:"getValue",value:function(i){for(var o=(0,je.default)('input:checkbox[name="'+R(i.id)+'"]:checked'),a=new Array(o.length),u=0;u<o.length;u++)a[u]=o[u].value;return a}},{key:"setValue",value:function(i,o){if((0,je.default)('input:checkbox[name="'+R(i.id)+'"]').prop("checked",!1),o instanceof Array)for(var a=0;a<o.length;a++)(0,je.default)('input:checkbox[name="'+R(i.id)+'"][value="'+R(o[a])+'"]').prop("checked",!0);else(0,je.default)('input:checkbox[name="'+R(i.id)+'"][value="'+R(o)+'"]').prop("checked",!0)}},{key:"getState",value:function(i){for(var o=(0,je.default)('input:checkbox[name="'+R(i.id)+'"]'),a=new Array(o.length),u=0;u<a.length;u++)a[u]={value:o[u].value,label:$x(o[u])};return{label:zp(i).text(),value:this.getValue(i),options:a}}},{key:"receiveMessage",value:function(i,o){var a=(0,je.default)(i);x(o,"options")&&(a.find("div.shiny-options-group").remove(),a.find("label.checkbox").remove(),a.append(o.options)),x(o,"value")&&this.setValue(i,o.value),re(o.label,zp(i)),(0,je.default)(i).trigger("change")}},{key:"subscribe",value:function(i,o){(0,je.default)(i).on("change.checkboxGroupInputBinding",function(){o(!1)})}},{key:"unsubscribe",value:function(i){(0,je.default)(i).off(".checkboxGroupInputBinding")}}]),r}(V);"use strict";var Vx=pe(),Wp=z(),Fx=bo(),Lx=We(),Yp=se(),Xp=Ge(),zx=Kp(),Ux=$t(),Hx=M(),Gx=Gt(),Kx=Ft().f,Wx=xt().f,Yx=de().f,Xx=yr().trim,Ar="Number",ft=Wp[Ar],An=ft.prototype,Qx=Xp(Gx(An))==Ar,Qp=function(e){var t=Ux(e,!1),r,n,i,o,a,u,l,s;if(typeof t=="string"&&t.length>2){if(t=Xx(t),r=t.charCodeAt(0),r===43||r===45){if(n=t.charCodeAt(2),n===88||n===120)return NaN}else if(r===48){switch(t.charCodeAt(1)){case 66:case 98:i=2,o=49;break;case 79:case 111:i=8,o=55;break;default:return+t}for(a=t.slice(2),u=a.length,l=0;l<u;l++)if(s=a.charCodeAt(l),s<48||s>o)return NaN;return parseInt(a,i)}}return+t};if(Fx(Ar,!ft(" 0o1")||!ft("0b1")||ft("+0x1"))){for(ct=function(t){var r=arguments.length<1?0:t,n=this;return n instanceof ct&&(Qx?Hx(function(){An.valueOf.call(n)}):Xp(n)!=Ar)?zx(new ft(Qp(r)),n,ct):Qp(r)},Aa=Vx?Kx(ft):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,fromString,range".split(","),$n=0;Aa.length>$n;$n++)Yp(ft,$r=Aa[$n])&&!Yp(ct,$r)&&Yx(ct,$r,Wx(ft,$r));ct.prototype=An,An.constructor=ct,Lx(Wp,Ar,ct)}var ct,Aa,$n,$r;var rB=b($());var Vr=b(T());var Jx=A(),Zx=te(),eO=Y(),tO=se(),rO=xt(),nO=Kt();function Jp(e,t){var r=arguments.length<3?e:arguments[2],n,i;if(eO(e)===r)return e[t];if(n=rO.f(e,t))return tO(n,"value")?n.value:n.get===void 0?void 0:n.get.call(r);if(Zx(i=nO(e)))return Jp(i,t,r)}Jx({target:"Reflect",stat:!0},{get:Jp});var iO=A(),oO=M(),aO=qe(),Zp=xt().f,ed=pe(),uO=oO(function(){Zp(1)}),sO=!ed||uO;iO({target:"Object",stat:!0,forced:sO,sham:!ed},{getOwnPropertyDescriptor:function(t,r){return Zp(aO(t),r)}});var Fk=b($());var kt=b(T());function Mn(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Mn=function(r){return typeof r}:Mn=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},Mn(e)}function td(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function rd(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function nd(e,t,r){return t&&rd(e.prototype,t),r&&rd(e,r),e}function Vn(e,t,r){return typeof Reflect!="undefined"&&Reflect.get?Vn=Reflect.get:Vn=function(i,o,a){var u=lO(i,o);if(!!u){var l=Object.getOwnPropertyDescriptor(u,o);return l.get?l.get.call(a):l.value}},Vn(e,t,r||e)}function lO(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&(e=Jt(e),e!==null););return e}function id(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&$a(e,t)}function $a(e,t){return $a=Object.setPrototypeOf||function(n,i){return n.__proto__=i,n},$a(e,t)}function od(e){var t=pO();return function(){var n=Jt(e),i;if(t){var o=Jt(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return fO(this,i)}}function fO(e,t){return t&&(Mn(t)==="object"||typeof t=="function")?t:cO(e)}function cO(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function pO(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function Jt(e){return Jt=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},Jt(e)}function ad(e){return(0,kt.default)(e).parent().find('label[for="'+R(e.id)+'"]')}var Mr=function(e){id(r,e);var t=od(r);function r(){return td(this,r),t.apply(this,arguments)}return nd(r,[{key:"find",value:function(i){var o=(0,kt.default)(i).find('input[type="text"], input[type="search"], input[type="url"], input[type="email"]');return o.not('input[type="text"][id$="-selectized"]')}},{key:"getId",value:function(i){return Vn(Jt(r.prototype),"getId",this).call(this,i)||i.name}},{key:"getValue",value:function(i){throw"not implemented"}},{key:"setValue",value:function(i,o){throw"not implemented"}},{key:"subscribe",value:function(i,o){(0,kt.default)(i).on("keyup.textInputBinding input.textInputBinding",function(){o(!0)}),(0,kt.default)(i).on("change.textInputBinding",function(){o(!1)})}},{key:"unsubscribe",value:function(i){(0,kt.default)(i).off(".textInputBinding")}},{key:"receiveMessage",value:function(i,o){throw"not implemented"}},{key:"getState",value:function(i){throw"not implemented"}},{key:"getRatePolicy",value:function(i){return{policy:"debounce",delay:250}}}]),r}(V),Zt=function(e){id(r,e);var t=od(r);function r(){return td(this,r),t.apply(this,arguments)}return nd(r,[{key:"setValue",value:function(i,o){i.value=o}},{key:"getValue",value:function(i){return i.value}},{key:"getState",value:function(i){return{label:ad(i).text(),value:i.value,placeholder:i.placeholder}}},{key:"receiveMessage",value:function(i,o){x(o,"value")&&this.setValue(i,o.value),re(o.label,ad(i)),x(o,"placeholder")&&(i.placeholder=o.placeholder),(0,kt.default)(i).trigger("change")}}]),r}(Mr);function Fn(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Fn=function(r){return typeof r}:Fn=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},Fn(e)}function dO(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ud(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function mO(e,t,r){return t&&ud(e.prototype,t),r&&ud(e,r),e}function vO(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Ma(e,t)}function Ma(e,t){return Ma=Object.setPrototypeOf||function(n,i){return n.__proto__=i,n},Ma(e,t)}function yO(e){var t=bO();return function(){var n=Ln(e),i;if(t){var o=Ln(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return hO(this,i)}}function hO(e,t){return t&&(Fn(t)==="object"||typeof t=="function")?t:gO(e)}function gO(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function bO(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function Ln(e){return Ln=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},Ln(e)}function sd(e){return(0,Vr.default)(e).parent().find('label[for="'+R(e.id)+'"]')}var ld=function(e){vO(r,e);var t=yO(r);function r(){return dO(this,r),t.apply(this,arguments)}return mO(r,[{key:"find",value:function(i){return(0,Vr.default)(i).find('input[type="number"]')}},{key:"getValue",value:function(i){var o=(0,Vr.default)(i).val();if(typeof o=="string"&&/^\s*$/.test(o))return null;var a=Number(o);return isNaN(a)?o:a}},{key:"setValue",value:function(i,o){i.value=""+o}},{key:"getType",value:function(i){return"shiny.number"}},{key:"receiveMessage",value:function(i,o){x(o,"value")&&(i.value=o.value),x(o,"min")&&(i.min=o.min),x(o,"max")&&(i.max=o.max),x(o,"step")&&(i.step=o.step),re(o.label,sd(i)),(0,Vr.default)(i).trigger("change")}},{key:"getState",value:function(i){return{label:sd(i).text(),value:this.getValue(i),min:Number(i.min),max:Number(i.max),step:Number(i.step)}}}]),r}(Mr);var yB=b($());var cd=b(T());function zn(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?zn=function(r){return typeof r}:zn=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},zn(e)}function jO(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function fd(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function wO(e,t,r){return t&&fd(e.prototype,t),r&&fd(e,r),e}function _O(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Va(e,t)}function Va(e,t){return Va=Object.setPrototypeOf||function(n,i){return n.__proto__=i,n},Va(e,t)}function xO(e){var t=IO();return function(){var n=Un(e),i;if(t){var o=Un(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return OO(this,i)}}function OO(e,t){return t&&(zn(t)==="object"||typeof t=="function")?t:SO(e)}function SO(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function IO(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function Un(e){return Un=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},Un(e)}var pd=function(e){_O(r,e);var t=xO(r);function r(){return jO(this,r),t.apply(this,arguments)}return wO(r,[{key:"find",value:function(i){return(0,cd.default)(i).find('input[type="password"]')}},{key:"getType",value:function(i){return"shiny.password"}}]),r}(Zt);var qB=b($());var md=b(T());function Hn(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Hn=function(r){return typeof r}:Hn=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},Hn(e)}function RO(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function dd(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function PO(e,t,r){return t&&dd(e.prototype,t),r&&dd(e,r),e}function qO(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Fa(e,t)}function Fa(e,t){return Fa=Object.setPrototypeOf||function(n,i){return n.__proto__=i,n},Fa(e,t)}function TO(e){var t=BO();return function(){var n=Gn(e),i;if(t){var o=Gn(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return EO(this,i)}}function EO(e,t){return t&&(Hn(t)==="object"||typeof t=="function")?t:kO(e)}function kO(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function BO(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function Gn(e){return Gn=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},Gn(e)}var vd=function(e){qO(r,e);var t=TO(r);function r(){return RO(this,r),t.apply(this,arguments)}return PO(r,[{key:"find",value:function(i){return(0,md.default)(i).find("textarea")}}]),r}(Zt);var zB=b($());var we=b(T());function Kn(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Kn=function(r){return typeof r}:Kn=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},Kn(e)}function DO(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function yd(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function CO(e,t,r){return t&&yd(e.prototype,t),r&&yd(e,r),e}function NO(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&La(e,t)}function La(e,t){return La=Object.setPrototypeOf||function(n,i){return n.__proto__=i,n},La(e,t)}function AO(e){var t=VO();return function(){var n=Wn(e),i;if(t){var o=Wn(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return $O(this,i)}}function $O(e,t){return t&&(Kn(t)==="object"||typeof t=="function")?t:MO(e)}function MO(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function VO(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function Wn(e){return Wn=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},Wn(e)}function hd(e){return(0,we.default)(e).parent().find('label[for="'+R(e.id)+'"]')}function FO(e){return e.parentNode.tagName==="LABEL"?(0,we.default)(e.parentNode).find("span").text().trim():null}var gd=function(e){NO(r,e);var t=AO(r);function r(){return DO(this,r),t.apply(this,arguments)}return CO(r,[{key:"find",value:function(i){return(0,we.default)(i).find(".shiny-input-radiogroup")}},{key:"getValue",value:function(i){var o=(0,we.default)('input:radio[name="'+R(i.id)+'"]:checked');return o.length===0?null:o.val()}},{key:"setValue",value:function(i,o){we.default.isArray(o)&&o.length===0?(0,we.default)('input:radio[name="'+R(i.id)+'"]').prop("checked",!1):(0,we.default)('input:radio[name="'+R(i.id)+'"][value="'+R(o)+'"]').prop("checked",!0)}},{key:"getState",value:function(i){for(var o=(0,we.default)('input:radio[name="'+R(i.id)+'"]'),a=new Array(o.length),u=0;u<a.length;u++)a[u]={value:o[u].value,label:FO(o[u])};return{label:hd(i).text(),value:this.getValue(i),options:a}}},{key:"receiveMessage",value:function(i,o){var a=(0,we.default)(i);x(o,"options")&&(a.find("div.shiny-options-group").remove(),a.find("label.radio").remove(),a.append(o.options)),x(o,"value")&&this.setValue(i,o.value),re(o.label,hd(i)),(0,we.default)(i).trigger("change")}},{key:"subscribe",value:function(i,o){(0,we.default)(i).on("change.radioInputBinding",function(){o(!1)})}},{key:"unsubscribe",value:function(i){(0,we.default)(i).off(".radioInputBinding")}}]),r}(V);var nD=b($());var F=b(T());function Yn(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Yn=function(r){return typeof r}:Yn=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},Yn(e)}function bd(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function jd(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function wd(e,t,r){return t&&jd(e.prototype,t),r&&jd(e,r),e}function _d(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&za(e,t)}function za(e,t){return za=Object.setPrototypeOf||function(n,i){return n.__proto__=i,n},za(e,t)}function xd(e){var t=UO();return function(){var n=Xn(e),i;if(t){var o=Xn(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return LO(this,i)}}function LO(e,t){return t&&(Yn(t)==="object"||typeof t=="function")?t:zO(e)}function zO(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function UO(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function Xn(e){return Xn=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},Xn(e)}var Ua=function(e){_d(r,e);var t=xd(r);function r(){return bd(this,r),t.apply(this,arguments)}return wd(r,[{key:"find",value:function(i){return(0,F.default)(i).find(".shiny-date-input")}},{key:"getType",value:function(i){return"shiny.date"}},{key:"subscribe",value:function(i,o){(0,F.default)(i).on("keyup.dateInputBinding input.dateInputBinding",function(){o(!0)}),(0,F.default)(i).on("changeDate.dateInputBinding change.dateInputBinding",function(){o(!1)})}},{key:"unsubscribe",value:function(i){(0,F.default)(i).off(".dateInputBinding")}},{key:"getRatePolicy",value:function(){return{policy:"debounce",delay:250}}},{key:"setValue",value:function(i,o){throw"not implemented"}},{key:"initialize",value:function(i){var o=(0,F.default)(i).find("input"),a=o.data("initial-date");a==null&&(a=this._floorDateTime(this._dateAsUTC(new Date))),this.setValue(i,a),o.data("min-date")!==void 0&&this._setMin(o[0],o.data("min-date")),o.data("max-date")!==void 0&&this._setMax(o[0],o.data("max-date"))}},{key:"_getLabelNode",value:function(i){return(0,F.default)(i).find('label[for="'+R(i.id)+'"]')}},{key:"_formatToString",value:function(i){var o="",a;for(a=0;a<i.parts.length;a++)o+=i.separators[a]+i.parts[a];return o+=i.separators[a],o}},{key:"_setMin",value:function(i,o){if(o!==void 0){if(o===null){(0,F.default)(i).bsDatepicker("setStartDate",null);return}var a=this._newDate(o);if(a!==null&&(o=a,!isNaN(o.valueOf()))){var u=(0,F.default)(i).bsDatepicker("getUTCDate");(0,F.default)(i).bsDatepicker("setStartDate",this._utcDateAsLocal(o)),o&&u&&o.getTime()>u.getTime()?(0,F.default)(i).bsDatepicker("clearDates"):(0,F.default)(i).bsDatepicker("setUTCDate",u)}}}},{key:"_setMax",value:function(i,o){if(o!==void 0){if(o===null){(0,F.default)(i).bsDatepicker("setEndDate",null);return}var a=this._newDate(o);if(a!==null&&(o=a,!isNaN(o.valueOf()))){var u=(0,F.default)(i).bsDatepicker("getUTCDate");(0,F.default)(i).bsDatepicker("setEndDate",this._utcDateAsLocal(o)),o&&u&&o.getTime()<u.getTime()?(0,F.default)(i).bsDatepicker("clearDates"):(0,F.default)(i).bsDatepicker("setUTCDate",u)}}}},{key:"_newDate",value:function(i){if(i instanceof Date)return i;if(!i)return null;var o=Wf(i);return isNaN(o.valueOf())?null:o}},{key:"_floorDateTime",value:function(i){return i=new Date(i.getTime()),i.setUTCHours(0,0,0,0),i}},{key:"_dateAsUTC",value:function(i){return new Date(i.getTime()-i.getTimezoneOffset()*6e4)}},{key:"_utcDateAsLocal",value:function(i){return new Date(i.getTime()+i.getTimezoneOffset()*6e4)}}]),r}(V),Od=function(e){_d(r,e);var t=xd(r);function r(){return bd(this,r),t.apply(this,arguments)}return wd(r,[{key:"getValue",value:function(i){var o=(0,F.default)(i).find("input").bsDatepicker("getUTCDate");return Te(o)}},{key:"setValue",value:function(i,o){if(o===null){(0,F.default)(i).find("input").val("").bsDatepicker("update");return}var a=this._newDate(o);a!==null&&(isNaN(a.valueOf())||(0,F.default)(i).find("input").bsDatepicker("setUTCDate",a))}},{key:"getState",value:function(i){var o=(0,F.default)(i),a=o.find("input"),u=a.data("datepicker").startDate,l=a.data("datepicker").endDate;u=u===-Infinity?null:Te(u),l=l===Infinity?null:Te(l);var s=a.data("datepicker").startViewMode;return s===2?s="decade":s===1?s="year":s===0&&(s="month"),{label:this._getLabelNode(i).text(),value:this.getValue(i),valueString:a.val(),min:u,max:l,language:a.data("datepicker").language,weekstart:a.data("datepicker").weekStart,format:this._formatToString(a.data("datepicker").format),startview:s}}},{key:"receiveMessage",value:function(i,o){var a=(0,F.default)(i).find("input");re(o.label,this._getLabelNode(i)),x(o,"min")&&this._setMin(a[0],o.min),x(o,"max")&&this._setMax(a[0],o.max),x(o,"value")&&this.setValue(i,o.value),(0,F.default)(i).trigger("change")}}]),r}(Ua);var cD=b(Se());var _D=b($());var X=b(T());function Qn(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Qn=function(r){return typeof r}:Qn=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},Qn(e)}function HO(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Sd(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function GO(e,t,r){return t&&Sd(e.prototype,t),r&&Sd(e,r),e}function KO(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Ha(e,t)}function Ha(e,t){return Ha=Object.setPrototypeOf||function(n,i){return n.__proto__=i,n},Ha(e,t)}function WO(e){var t=QO();return function(){var n=Jn(e),i;if(t){var o=Jn(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return YO(this,i)}}function YO(e,t){return t&&(Qn(t)==="object"||typeof t=="function")?t:XO(e)}function XO(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function QO(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function Jn(e){return Jn=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},Jn(e)}function Zn(e){e.$cache&&e.$cache.input?e.$cache.input.trigger("change"):console.log("Couldn't force ion slider to update")}function Id(e,t,r){var n,i;return e==="date"?(n=window.strftime.utc(),i=function(a){return n(t,new Date(a))}):e==="datetime"?(r?n=window.strftime.timezone(r):n=window.strftime,i=function(a){return n(t,new Date(a))}):i=function(a){return ZO(a,this.prettify_separator)},i}function JO(e){return(0,X.default)(e).parent().find('label[for="'+R(e.id)+'"]')}function Ga(e){return(0,X.default)(e).data("ionRangeSlider").options.type==="double"?2:1}var Rd=function(e){KO(r,e);var t=WO(r);function r(){return HO(this,r),t.apply(this,arguments)}return GO(r,[{key:"find",value:function(i){return X.default.fn.ionRangeSlider?(0,X.default)(i).find("input.js-range-slider"):(0,X.default)()}},{key:"getType",value:function(i){var o=(0,X.default)(i).data("data-type");return o==="date"?"shiny.date":o==="datetime"?"shiny.datetime":!1}},{key:"getValue",value:function(i){var o=(0,X.default)(i),a=(0,X.default)(i).data("ionRangeSlider").result,u,l=o.data("data-type");return l==="date"?u=function(f){return Te(new Date(Number(f)))}:l==="datetime"?u=function(f){return Number(f)/1e3}:u=function(f){return Number(f)},Ga(i)===2?[u(a.from),u(a.to)]:u(a.from)}},{key:"setValue",value:function(i,o){var a=(0,X.default)(i),u=a.data("ionRangeSlider");a.data("immediate",!0);try{Ga(i)===2&&o instanceof Array?u.update({from:o[0],to:o[1]}):u.update({from:o}),Zn(u)}finally{a.data("immediate",!1)}}},{key:"subscribe",value:function(i,o){(0,X.default)(i).on("change.sliderInputBinding",function(){o(!(0,X.default)(i).data("immediate")&&!(0,X.default)(i).data("animating"))})}},{key:"unsubscribe",value:function(i){(0,X.default)(i).off(".sliderInputBinding")}},{key:"receiveMessage",value:function(i,o){var a=(0,X.default)(i),u=a.data("ionRangeSlider"),l={};x(o,"value")&&(Ga(i)===2&&o.value instanceof Array?(l.from=o.value[0],l.to=o.value[1]):l.from=o.value);for(var s=["min","max","step"],f=0;f<s.length;f++){var c=s[f];x(o,c)&&(l[c]=o[c])}re(o.label,JO(i));for(var p=["data-type","time-format","timezone"],m=0;m<p.length;m++){var d=p[m];x(o,d)&&a.data(d,o[d])}var y=a.data("data-type"),h=a.data("time-format"),j=a.data("timezone");l.prettify=Id(y,h,j),a.data("immediate",!0);try{u.update(l),Zn(u)}finally{a.data("immediate",!1)}}},{key:"getRatePolicy",value:function(i){return{policy:"debounce",delay:250}}},{key:"getState",value:function(i){}},{key:"initialize",value:function(i){var o=(0,X.default)(i),a=o.data("data-type"),u=o.data("time-format"),l=o.data("timezone"),s={prettify:Id(a,u,l)};o.ionRangeSlider(s)}}]),r}(Mr);function ZO(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:",",r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:".",n=e.toString().split(".");return n[0]=n[0].replace(/(\d{1,3}(?=(?:\d\d\d)+(?!\d)))/g,"$1"+t),n.length===1?n[0]:n.length===2?n[0]+r+n[1]:""}(0,X.default)(document).on("click",".slider-animate-button",function(e){e.preventDefault();var t=(0,X.default)(this),r=(0,X.default)("#"+R(t.attr("data-target-id"))),n="Play",i="Pause",o=t.attr("data-loop")!==void 0&&!/^\s*false\s*$/i.test(t.attr("data-loop")),a=t.attr("data-interval");if(isNaN(a)?a=1500:a=Number(a),r.data("animTimer"))clearTimeout(r.data("animTimer")),r.removeData("animTimer"),t.attr("title",n),t.removeClass("playing"),r.removeData("animating");else{var u;if(r.hasClass("jslider")){var l=r.slider();l.canStepNext()||l.resetToStart(),u=setInterval(function(){o&&!l.canStepNext()?l.resetToStart():(l.stepNext(),!o&&!l.canStepNext()&&t.click())},a)}else{var s=r.data("ionRangeSlider"),f=function(){return s.options.type==="double"?s.result.to<s.result.max:s.result.from<s.result.max},c=function(){var d={from:s.result.min};s.options.type==="double"&&(d.to=d.from+(s.result.to-s.result.from)),s.update(d),Zn(s)},p=function(){var d={from:Math.min(s.result.max,s.result.from+s.options.step)};s.options.type==="double"&&(d.to=Math.min(s.result.max,s.result.to+s.options.step)),s.update(d),Zn(s)};f()||c(),u=setInterval(function(){o&&!f()?c():(p(),!o&&!f()&&t.click())},a)}r.data("animTimer",u),t.attr("title",i),t.addClass("playing"),r.data("animating",!0)}});var ND=b($());var ke=b(T());function ei(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?ei=function(r){return typeof r}:ei=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},ei(e)}function eS(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Pd(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function tS(e,t,r){return t&&Pd(e.prototype,t),r&&Pd(e,r),e}function rS(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Ka(e,t)}function Ka(e,t){return Ka=Object.setPrototypeOf||function(n,i){return n.__proto__=i,n},Ka(e,t)}function nS(e){var t=aS();return function(){var n=ti(e),i;if(t){var o=ti(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return iS(this,i)}}function iS(e,t){return t&&(ei(t)==="object"||typeof t=="function")?t:oS(e)}function oS(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function aS(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function ti(e){return ti=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},ti(e)}function qd(e){return(0,ke.default)(e).find('label[for="'+R(e.id)+'"]')}var Td=function(e){rS(r,e);var t=nS(r);function r(){return eS(this,r),t.apply(this,arguments)}return tS(r,[{key:"find",value:function(i){return(0,ke.default)(i).find(".shiny-date-range-input")}},{key:"getValue",value:function(i){var o=(0,ke.default)(i).find("input"),a=o.eq(0).bsDatepicker("getUTCDate"),u=o.eq(1).bsDatepicker("getUTCDate");return[Te(a),Te(u)]}},{key:"setValue",value:function(i,o){if(o instanceof Object){var a=(0,ke.default)(i).find("input");if(o.start!==void 0)if(o.start===null)a.eq(0).val("").bsDatepicker("update");else{var u=this._newDate(o.start);a.eq(0).bsDatepicker("setUTCDate",u)}if(o.end!==void 0)if(o.end===null)a.eq(1).val("").bsDatepicker("update");else{var l=this._newDate(o.end);a.eq(1).bsDatepicker("setUTCDate",l)}}}},{key:"getState",value:function(i){var o=(0,ke.default)(i),a=o.find("input"),u=a.eq(0),l=a.eq(1),s=u.bsDatepicker("getStartDate"),f=u.bsDatepicker("getEndDate"),c=s===-Infinity?null:Te(s),p=f===Infinity?null:Te(f),m=u.data("datepicker").startView;return m===2?m="decade":m===1?m="year":m===0&&(m="month"),{label:qd(i).text(),value:this.getValue(i),valueString:[u.val(),l.val()],min:c,max:p,weekstart:u.data("datepicker").weekStart,format:this._formatToString(u.data("datepicker").format),language:u.data("datepicker").language,startview:m}}},{key:"receiveMessage",value:function(i,o){var a=(0,ke.default)(i),u=a.find("input"),l=u.eq(0),s=u.eq(1);re(o.label,qd(i)),x(o,"min")&&(this._setMin(l[0],o.min),this._setMin(s[0],o.min)),x(o,"max")&&(this._setMax(l[0],o.max),this._setMax(s[0],o.max)),x(o,"value")&&this.setValue(i,o.value),a.trigger("change")}},{key:"initialize",value:function(i){var o=(0,ke.default)(i),a=o.find("input"),u=a.eq(0),l=a.eq(1),s=u.data("initial-date"),f=l.data("initial-date");s==null&&(s=this._dateAsUTC(new Date)),f==null&&(f=this._dateAsUTC(new Date)),this.setValue(i,{start:s,end:f}),this._setMin(u[0],u.data("min-date")),this._setMin(l[0],u.data("min-date")),this._setMax(u[0],l.data("max-date")),this._setMax(l[0],l.data("max-date"))}},{key:"subscribe",value:function(i,o){(0,ke.default)(i).on("keyup.dateRangeInputBinding input.dateRangeInputBinding",function(){o(!0)}),(0,ke.default)(i).on("changeDate.dateRangeInputBinding change.dateRangeInputBinding",function(){o(!1)})}},{key:"unsubscribe",value:function(i){(0,ke.default)(i).off(".dateRangeInputBinding")}}]),r}(Ua);var JD=b($());var U=b(T());var Bt=eval;function ri(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?ri=function(r){return typeof r}:ri=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},ri(e)}function uS(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Ed(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function sS(e,t,r){return t&&Ed(e.prototype,t),r&&Ed(e,r),e}function lS(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Wa(e,t)}function Wa(e,t){return Wa=Object.setPrototypeOf||function(n,i){return n.__proto__=i,n},Wa(e,t)}function fS(e){var t=dS();return function(){var n=ni(e),i;if(t){var o=ni(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return cS(this,i)}}function cS(e,t){return t&&(ri(t)==="object"||typeof t=="function")?t:pS(e)}function pS(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function dS(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function ni(e){return ni=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},ni(e)}function kd(e){var t=R(e.id);return Bd(e)&&(t+="-selectized"),(0,U.default)(e).parent().parent().find('label[for="'+t+'"]')}function Bd(e){var t=(0,U.default)(e).parent().find('script[data-for="'+R(e.id)+'"]');return t.length>0}var Dd=function(e){lS(r,e);var t=fS(r);function r(){return uS(this,r),t.apply(this,arguments)}return sS(r,[{key:"find",value:function(i){return(0,U.default)(i).find("select")}},{key:"getType",value:function(i){var o=(0,U.default)(i);return o.hasClass("symbol")?o.attr("multiple")==="multiple"?"shiny.symbolList":"shiny.symbol":null}},{key:"getId",value:function(i){return V.prototype.getId.call(this,i)||i.name}},{key:"getValue",value:function(i){return(0,U.default)(i).val()}},{key:"setValue",value:function(i,o){if(!Bd(i))(0,U.default)(i).val(o);else{var a=this._selectize(i);a&&a.setValue(o)}}},{key:"getState",value:function(i){for(var o=new Array(i.length),a=0;a<i.length;a++)o[a]={value:i[a].value,label:i[a].label};return{label:kd(i),value:this.getValue(i),options:o}}},{key:"receiveMessage",value:function(i,o){var a=(0,U.default)(i),u;if(x(o,"options")&&(u=this._selectize(i),u&&u.destroy(),a.empty().append(o.options),this._selectize(i)),x(o,"config")&&(a.parent().find('script[data-for="'+R(i.id)+'"]').replaceWith(o.config),this._selectize(i,!0)),x(o,"url")){u=this._selectize(i),u.clearOptions();var l=!1;u.settings.load=function(s,f){var c=u.settings;U.default.ajax({url:o.url,data:{query:s,field:JSON.stringify([c.searchField]),value:c.valueField,conju:c.searchConjunction,maxop:c.maxOptions},type:"GET",error:function(){f()},success:function(m){U.default.each(m,function(d,y){var h=y[c.optgroupField||"optgroup"],j={};j[c.optgroupLabelField||"label"]=h,j[c.optgroupValueField||"value"]=h,u.addOptionGroup(h,j)}),f(m),l||(x(o,"value")?u.setValue(o.value):c.maxItems===1&&u.setValue(m[0].value)),l=!0}})},u.load(function(s){u.settings.load.apply(u,["",s])})}else x(o,"value")&&this.setValue(i,o.value);re(o.label,kd(i)),(0,U.default)(i).trigger("change")}},{key:"subscribe",value:function(i,o){var a=this;(0,U.default)(i).on("change.selectInputBinding",function(){i.nonempty&&a.getValue(i)===""||o(!1)})}},{key:"unsubscribe",value:function(i){(0,U.default)(i).off(".selectInputBinding")}},{key:"initialize",value:function(i){this._selectize(i)}},{key:"_selectize",value:function(i){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(!!U.default.fn.selectize){var a=(0,U.default)(i),u=a.parent().find('script[data-for="'+R(i.id)+'"]');if(u.length!==0){var l=U.default.extend({labelField:"label",valueField:"value",searchField:["label"]},JSON.parse(u.html()));typeof u.data("nonempty")!="undefined"?(i.nonempty=!0,l=U.default.extend(l,{onItemRemove:function(p){this.getValue()===""&&(0,U.default)("select#"+R(i.id)).empty().append((0,U.default)("<option/>",{value:p,selected:!0})).trigger("change")},onDropdownClose:function(){this.getValue()===""&&this.setValue((0,U.default)("select#"+R(i.id)).val())}})):i.nonempty=!1,u.data("eval")instanceof Array&&U.default.each(u.data("eval"),function(c,p){l[p]=Bt("("+l[p]+")")});var s=a.selectize(l)[0].selectize;if(o){var f=U.default.extend(s.settings,l);s.destroy(),s=a.selectize(f)[0].selectize}return s}}}}]),r}(V);var d1=b($());var ze=b(T());function ii(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?ii=function(r){return typeof r}:ii=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},ii(e)}function mS(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Cd(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function vS(e,t,r){return t&&Cd(e.prototype,t),r&&Cd(e,r),e}function yS(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Ya(e,t)}function Ya(e,t){return Ya=Object.setPrototypeOf||function(n,i){return n.__proto__=i,n},Ya(e,t)}function hS(e){var t=jS();return function(){var n=oi(e),i;if(t){var o=oi(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return gS(this,i)}}function gS(e,t){return t&&(ii(t)==="object"||typeof t=="function")?t:bS(e)}function bS(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function jS(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function oi(e){return oi=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},oi(e)}var Nd=function(e){yS(r,e);var t=hS(r);function r(){return mS(this,r),t.apply(this,arguments)}return vS(r,[{key:"find",value:function(i){return(0,ze.default)(i).find(".action-button")}},{key:"getValue",value:function(i){return(0,ze.default)(i).data("val")||0}},{key:"setValue",value:function(i,o){(0,ze.default)(i).data("val",o)}},{key:"getType",value:function(i){return"shiny.action"}},{key:"subscribe",value:function(i,o){(0,ze.default)(i).on("click.actionButtonInputBinding",function(){var a=(0,ze.default)(this),u=a.data("val")||0;a.data("val",u+1),o(!1)})}},{key:"getState",value:function(i){return{value:this.getValue(i)}}},{key:"receiveMessage",value:function(i,o){var a=(0,ze.default)(i),u=a.text(),l="";if(a.find("i[class]").length>0){var s=a.find("i[class]")[0];s===a.children()[0]&&(l=(0,ze.default)(s).prop("outerHTML"))}x(o,"label")&&(u=o.label),x(o,"icon")&&(l=o.icon,l.length===0&&(l="")),a.html(l+" "+u)}},{key:"unsubscribe",value:function(i){(0,ze.default)(i).off(".actionButtonInputBinding")}}]),r}(V);(0,ze.default)(document).on("click","a.action-button",function(e){e.preventDefault()});var R1=b($());var Re=b(T());function ai(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?ai=function(r){return typeof r}:ai=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},ai(e)}function wS(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Ad(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function _S(e,t,r){return t&&Ad(e.prototype,t),r&&Ad(e,r),e}function xS(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Xa(e,t)}function Xa(e,t){return Xa=Object.setPrototypeOf||function(n,i){return n.__proto__=i,n},Xa(e,t)}function OS(e){var t=RS();return function(){var n=ui(e),i;if(t){var o=ui(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return SS(this,i)}}function SS(e,t){return t&&(ai(t)==="object"||typeof t=="function")?t:IS(e)}function IS(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function RS(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function ui(e){return ui=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},ui(e)}function $d(e){return e.attr("data-value")||e.text()}var Md=function(e){xS(r,e);var t=OS(r);function r(){return wS(this,r),t.apply(this,arguments)}return _S(r,[{key:"find",value:function(i){return(0,Re.default)(i).find("ul.nav.shiny-tab-input")}},{key:"getValue",value:function(i){var o=zo()?(0,Re.default)(i).find("li:not(.dropdown).active > a"):(0,Re.default)(i).find(".nav-link:not(.dropdown-toggle).active, .dropdown-menu .dropdown-item.active");return o.length===1?$d(o):null}},{key:"setValue",value:function(i,o){var a=!1;if(o){var u=zo()?(0,Re.default)(i).find("li:not(.dropdown) > a"):(0,Re.default)(i).find(".nav-link:not(.dropdown-toggle), .dropdown-menu .dropdown-item");u.each(function(){if($d((0,Re.default)(this))===o)return(0,Re.default)(this).tab("show"),a=!0,!1})}a||(0,Re.default)(i).trigger("change")}},{key:"getState",value:function(i){return{value:this.getValue(i)}}},{key:"receiveMessage",value:function(i,o){x(o,"value")&&this.setValue(i,o.value),(0,Re.default)(i).trigger("change")}},{key:"subscribe",value:function(i,o){(0,Re.default)(i).on("change shown.bootstrapTabInputBinding shown.bs.tab.bootstrapTabInputBinding",function(){o(!1)})}},{key:"unsubscribe",value:function(i){(0,Re.default)(i).off(".bootstrapTabInputBinding")}}]),r}(V);var sC=b($());var ne=b(T());"use strict";var PS=A(),qS=Ht().map,TS=Lt(),ES=TS("map");PS({target:"Array",proto:!0,forced:!ES},{map:function(t){return qS(this,t,arguments.length>1?arguments[1]:void 0)}});var G1=b($());var Je=b(T());var Qa=b(T());function Vd(e,t,r,n,i,o){var a=Qa.default.Event("shiny:inputchanged");return a.name=e,a.value=t,a.binding=r,a.el=n,a.inputType=i,(0,Qa.default)(o).trigger(a),a}var Pe=null;function Fd(e){Pe=e}function Ue(e,t,r){Pe.setInputValue(e,t,r)}function pt(){return Pe.shinyapp}function Ld(e){Pe.user=e}function zd(e){Pe.forgetLastInputValue(e)}function Ja(e){Pe.bindAll(e)}function ye(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;Pe.unbindAll(e,t)}function Za(e){Pe.initializeInputs(e)}function Ud(e,t){Pe.shinyapp.bindOutput(e,t)}function Hd(e,t){return Pe.shinyapp.unbindOutput(e,t)}function Gd(){return Pe.oncustommessage}var Kd;function Wd(){return Kd}function Yd(e){Kd=e}function Xd(){return Pe.createSocket}function si(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?si=function(r){return typeof r}:si=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},si(e)}function kS(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&eu(e,t)}function eu(e,t){return eu=Object.setPrototypeOf||function(n,i){return n.__proto__=i,n},eu(e,t)}function BS(e){var t=CS();return function(){var n=li(e),i;if(t){var o=li(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return DS(this,i)}}function DS(e,t){return t&&(si(t)==="object"||typeof t=="function")?t:dt(e)}function dt(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function CS(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function li(e){return li=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},li(e)}function Qd(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Jd(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function Zd(e,t,r){return t&&Jd(e.prototype,t),r&&Jd(e,r),e}function Be(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var NS=function(){function e(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;Qd(this,e),Be(this,"files",void 0),Be(this,"fileIndex",-1),Be(this,"aborted",!1),Be(this,"completed",!1),this.files=t,r&&this.$run()}return Zd(e,[{key:"onBegin",value:function(r,n){setTimeout(n,0)}},{key:"onFile",value:function(r,n){setTimeout(n,0)}},{key:"onComplete",value:function(){}},{key:"onAbort",value:function(){}},{key:"abort",value:function(){this.completed||this.aborted||(this.aborted=!0,this.onAbort())}},{key:"$getRun",value:function(){var r=this,n=!1;return function(){n||(n=!0,r.$run())}}},{key:"$run",value:function(){if(!(this.aborted||this.completed)){if(this.fileIndex<0){this.fileIndex=0,this.onBegin(this.files,this.$getRun());return}if(this.fileIndex===this.files.length){this.completed=!0,this.onComplete();return}var r=this.files[this.fileIndex++];this.onFile(r,this.$getRun())}}}]),e}(),tu=function(e){kS(r,e);var t=BS(r);function r(n,i,o,a){var u;return Qd(this,r),u=t.call(this,o,!1),Be(dt(u),"shinyapp",void 0),Be(dt(u),"id",void 0),Be(dt(u),"el",void 0),Be(dt(u),"jobId",void 0),Be(dt(u),"uploadUrl",void 0),Be(dt(u),"progressBytes",void 0),Be(dt(u),"totalBytes",void 0),u.shinyapp=n,u.id=i,u.el=a,u.$run(),u}return Zd(r,[{key:"makeRequest",value:function(i,o,a,u,l){this.shinyapp.makeRequest(i,o,a,u,l)}},{key:"onBegin",value:function(i,o){var a=this;this.$setError(null),this.$setActive(!0),this.$setVisible(!0),this.onProgress(null,0),this.totalBytes=0,this.progressBytes=0,Je.default.each(i,function(l,s){a.totalBytes+=s.size});var u=Je.default.map(i,function(l,s){return{name:l.name,size:l.size,type:l.type}});this.makeRequest("uploadInit",[u],function(l){a.jobId=l.jobId,a.uploadUrl=l.uploadUrl,o()},function(l){a.onError(l)},void 0)}},{key:"onFile",value:function(i,o){var a=this;this.onProgress(i,0),Je.default.ajax(this.uploadUrl,{type:"POST",cache:!1,xhr:function(){var l=Je.default.ajaxSettings.xhr();return l.upload&&(l.upload.onprogress=function(s){s.lengthComputable&&a.onProgress(i,(a.progressBytes+s.loaded)/a.totalBytes)}),l},data:i,contentType:"application/octet-stream",processData:!1,success:function(){a.progressBytes+=i.size,o()},error:function(l,s,f){a.onError(l.responseText||s)}})}},{key:"onComplete",value:function(){var i=this,o=Je.default.map(this.files,function(u,l){return{name:u.name,size:u.size,type:u.type}}),a=Vd(this.id,o,Wd(),this.el,"shiny.fileupload",document);this.makeRequest("uploadEnd",[this.jobId,this.id],function(){i.$setActive(!1),i.onProgress(null,1),i.$bar().text("Upload complete"),(0,Je.default)(a.el).val("")},function(u){i.onError(u)},void 0),this.$bar().text("Finishing upload")}},{key:"onError",value:function(i){this.$setError(i||""),this.$setActive(!1)}},{key:"onAbort",value:function(){this.$setVisible(!1)}},{key:"onProgress",value:function(i,o){this.$bar().width(Math.round(o*100)+"%"),this.$bar().text(i?i.name:"")}},{key:"$container",value:function(){return(0,Je.default)("#"+R(this.id)+"_progress.shiny-file-input-progress")}},{key:"$bar",value:function(){return(0,Je.default)("#"+R(this.id)+"_progress.shiny-file-input-progress .progress-bar")}},{key:"$setVisible",value:function(i){this.$container().css("visibility",i?"visible":"hidden")}},{key:"$setError",value:function(i){this.$bar().toggleClass("progress-bar-danger",i!==null),i!==null&&(this.onProgress(null,1),this.$bar().text(i))}},{key:"$setActive",value:function(i){this.$container().toggleClass("active",!!i)}}]),r}(NS);function fi(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?fi=function(r){return typeof r}:fi=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},fi(e)}function AS(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function em(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function $S(e,t,r){return t&&em(e.prototype,t),r&&em(e,r),e}function MS(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&ru(e,t)}function ru(e,t){return ru=Object.setPrototypeOf||function(n,i){return n.__proto__=i,n},ru(e,t)}function VS(e){var t=zS();return function(){var n=ci(e),i;if(t){var o=ci(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return FS(this,i)}}function FS(e,t){return t&&(fi(t)==="object"||typeof t=="function")?t:LS(e)}function LS(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function zS(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function ci(e){return ci=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},ci(e)}var pi="shiny-file-input-active",di="shiny-file-input-over";function Fr(e){return(0,ne.default)(e).closest("div.input-group")}function tm(e){var t=(0,ne.default)(e),r=0;return t.on({"dragenter.draghover":function(i){r++==0&&t.trigger("draghover:enter",i)},"dragleave.draghover":function(i){--r==0&&t.trigger("draghover:leave",i),r<0&&console.error("draghover childCounter is negative somehow")},"dragover.draghover":function(i){i.preventDefault()},"drop.draghover":function(i){r=0,t.trigger("draghover:drop",i),i.preventDefault()}}),t}function rm(e){return(0,ne.default)(e).off(".draghover")}function US(){var e=(0,ne.default)("html");tm(e).on({"draghover:enter.draghover":function(){Fr(Ze).addClass(pi)},"draghover:leave.draghover":function(){Fr(Ze).removeClass(pi)},"draghover:drop.draghover":function(){Fr(Ze).removeClass(di).removeClass(pi)}})}function HS(){var e=(0,ne.default)("html");e.off(".draghover"),rm(e)}function GS(e){var t=document.createElement("input");t.type="file";try{t.files=e}catch(r){return!1}return!0}function KS(e,t){var r=e.originalEvent.dataTransfer.files,n=(0,ne.default)(t);r==null?console.log("Dropping files is not supported on this browser. (no FileList)"):GS(r)?(n.val(""),t.files=e.originalEvent.dataTransfer.files,n.trigger("change")):(n.val(""),WS(t,r))}function nm(e,t){var r=e.closest("div.input-group").find("input[type=text]");t.length===1?r.val(t[0].name):r.val(t.length+" files")}function im(e){var t=e.data("currentUploader");t&&t.abort(),e.removeAttr("data-restore")}function WS(e,t){var r=(0,ne.default)(e);im(r),nm(r,t),r.data("currentUploader",new tu(pt(),nu(e),t,e))}function YS(e){var t=(0,ne.default)(e.target);im(t);var r=e.target.files,n=nu(e.target);r.length!==0&&(nm(t,r),t.data("currentUploader",new tu(pt(),n,r,e.target)))}var Ze=(0,ne.default)();function nu(e){return V.prototype.getId.call(this,e)||e.name}var om=function(e){MS(r,e);var t=VS(r);function r(){return AS(this,r),t.apply(this,arguments)}return $S(r,[{key:"find",value:function(i){return(0,ne.default)(i).find('input[type="file"]')}},{key:"getId",value:function(i){return nu(i)}},{key:"getValue",value:function(i){var o=(0,ne.default)(i).attr("data-restore");if(o){var a=JSON.parse(o),u=(0,ne.default)(i).closest("div.input-group").find("input[type=text]");a.name.length===1?u.val(a.name[0]):u.val(a.name.length+" files");var l=(0,ne.default)(i).closest("div.form-group").find(".progress"),s=l.find(".progress-bar");return l.removeClass("active"),s.width("100%"),s.css("visibility","visible"),a}else return null}},{key:"setValue",value:function(i,o){}},{key:"getType",value:function(i){return"shiny.file"}},{key:"subscribe",value:function(i,o){(0,ne.default)(i).on("change.fileInputBinding",YS),Ze.length===0&&US(),Ze=Ze.add(i);var a=Fr(i);tm(a).on({"draghover:enter.draghover":function(l){a.addClass(di)},"draghover:leave.draghover":function(l){a.removeClass(di),l.stopPropagation()},"draghover:drop.draghover":function(l,s){KS(s,i)}})}},{key:"unsubscribe",value:function(i){var o=(0,ne.default)(i),a=Fr(i);a.removeClass(di).removeClass(pi),rm(a),o.off(".fileInputBinding"),a.off(".draghover"),Ze=Ze.not(i),Ze.length===0&&HS()}}]),r}(V);function am(){var e=new On;e.register(new Zt,"shiny.textInput"),e.register(new vd,"shiny.textareaInput"),e.register(new pd,"shiny.passwordInput"),e.register(new ld,"shiny.numberInput"),e.register(new Ap,"shiny.checkboxInput"),e.register(new Up,"shiny.checkboxGroupInput"),e.register(new gd,"shiny.radioInput"),e.register(new Rd,"shiny.sliderInput"),e.register(new Od,"shiny.dateInput"),e.register(new Td,"shiny.dateRangeInput"),e.register(new Dd,"shiny.selectInput"),e.register(new Nd,"shiny.actionButtonInput"),e.register(new Md,"shiny.bootstrapTabInput");var t=new om;return e.register(t,"shiny.fileInputBinding"),{inputBindings:e,fileInputBinding:t}}var KC=b($());var ou=b(T());"use strict";var XS=A(),QS=ur(),JS=qe(),ZS=mr(),eI=[].join,tI=QS!=Object,rI=ZS("join",",");XS({target:"Array",proto:!0,forced:tI||!rI},{join:function(t){return eI.call(JS(this),t===void 0?",":t)}});var CC=b(Se());var Dt=b(T());function nI(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function um(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function iI(e,t,r){return t&&um(e.prototype,t),r&&um(e,r),e}function oI(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var ie=function(){function e(){nI(this,e),oI(this,"name",void 0)}return iI(e,[{key:"find",value:function(r){throw"Not implemented"}},{key:"renderValue",value:function(r,n){throw"Not implemented"}},{key:"getId",value:function(r){return r.getAttribute("data-input-id")||r.id}},{key:"onValueChange",value:function(r,n){this.clearError(r),this.renderValue(r,n)}},{key:"onValueError",value:function(r,n){this.renderError(r,n)}},{key:"renderError",value:function(r,n){if(this.clearError(r),n.message===""){(0,Dt.default)(r).empty();return}var i="shiny-output-error";n.type!==null&&(i=i+" "+Dt.default.map(Rr(n.type),function(o){return i+"-"+o}).join(" ")),(0,Dt.default)(r).addClass(i).text(n.message)}},{key:"clearError",value:function(r){(0,Dt.default)(r).attr("class",function(n,i){return i.replace(/(^|\s)shiny-output-error\S*/g,"")})}},{key:"showProgress",value:function(r,n){var i="recalculating";n?(0,Dt.default)(r).addClass(i):(0,Dt.default)(r).removeClass(i)}}]),e}();function mi(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?mi=function(r){return typeof r}:mi=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},mi(e)}function aI(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function sm(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function uI(e,t,r){return t&&sm(e.prototype,t),r&&sm(e,r),e}function sI(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&iu(e,t)}function iu(e,t){return iu=Object.setPrototypeOf||function(n,i){return n.__proto__=i,n},iu(e,t)}function lI(e){var t=pI();return function(){var n=vi(e),i;if(t){var o=vi(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return fI(this,i)}}function fI(e,t){return t&&(mi(t)==="object"||typeof t=="function")?t:cI(e)}function cI(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function pI(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function vi(e){return vi=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},vi(e)}var lm=function(e){sI(r,e);var t=lI(r);function r(){return aI(this,r),t.apply(this,arguments)}return uI(r,[{key:"find",value:function(i){return(0,ou.default)(i).find(".shiny-text-output")}},{key:"renderValue",value:function(i,o){(0,ou.default)(i).text(o)}}]),r}(ie);var uN=b($());var Lr=b(T());function yi(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?yi=function(r){return typeof r}:yi=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},yi(e)}function dI(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function fm(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function mI(e,t,r){return t&&fm(e.prototype,t),r&&fm(e,r),e}function vI(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&au(e,t)}function au(e,t){return au=Object.setPrototypeOf||function(n,i){return n.__proto__=i,n},au(e,t)}function yI(e){var t=bI();return function(){var n=hi(e),i;if(t){var o=hi(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return hI(this,i)}}function hI(e,t){return t&&(yi(t)==="object"||typeof t=="function")?t:gI(e)}function gI(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function bI(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function hi(e){return hi=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},hi(e)}var cm=function(e){vI(r,e);var t=yI(r);function r(){return dI(this,r),t.apply(this,arguments)}return mI(r,[{key:"find",value:function(i){return(0,Lr.default)(i).find("a.shiny-download-link")}},{key:"renderValue",value:function(i,o){(0,Lr.default)(i).attr("href",o)}}]),r}(ie);(0,Lr.default)(document).on("click.shinyDownloadLink","a.shiny-download-link",function(e){var t=jQuery.Event("shiny:filedownload");t.name=this.id,t.href=this.href,(0,Lr.default)(document).trigger(t)});var IN=b(Se());"use strict";var jI=wr(),wI=Y(),_I=Ke(),mm=dm(),xI=_r();jI("search",1,function(e,t,r){return[function(i){var o=_I(this),a=i==null?void 0:i[e];return a!==void 0?a.call(i,o):new RegExp(i)[e](String(o))},function(n){var i=r(t,n,this);if(i.done)return i.value;var o=wI(n),a=String(this),u=o.lastIndex;mm(u,0)||(o.lastIndex=0);var l=xI(o,a);return mm(o.lastIndex,u)||(o.lastIndex=u),l===null?-1:l.index}]});var NN=b($());var He=b(T());function OI(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function vm(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function SI(e,t,r){return t&&vm(e.prototype,t),r&&vm(e,r),e}function zr(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var De=function(){function e(t,r,n){OI(this,e),zr(this,"target",void 0),zr(this,"func",void 0),zr(this,"delayMs",void 0),zr(this,"timerId",void 0),zr(this,"args",void 0),this.target=t,this.func=r,this.delayMs=n,this.timerId=null,this.args=null}return SI(e,[{key:"normalCall",value:function(){var r=this;this.$clearTimer();for(var n=arguments.length,i=new Array(n),o=0;o<n;o++)i[o]=arguments[o];this.args=i,this.timerId=setTimeout(function(){r.timerId!==null&&(r.$clearTimer(),r.$invoke())},this.delayMs)}},{key:"immediateCall",value:function(){this.$clearTimer();for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];this.args=n,this.$invoke()}},{key:"isPending",value:function(){return this.timerId!==null}},{key:"$clearTimer",value:function(){this.timerId!==null&&(clearTimeout(this.timerId),this.timerId=null)}},{key:"$invoke",value:function(){this.func.apply(this.target,this.args),this.args=null}}]),e}();function mt(e,t){var r=null;return function(){for(var n=this,i=arguments.length,o=new Array(i),a=0;a<i;a++)o[a]=arguments[a];r!==null&&(clearTimeout(r),r=null),r=setTimeout(function(){r!==null&&(r=null,t.apply(n,o))},e)}}function II(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ym(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function RI(e,t,r){return t&&ym(e.prototype,t),r&&ym(e,r),e}function hm(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var uu=function(){function e(t,r){II(this,e),hm(this,"target",void 0),hm(this,"func",void 0),this.target=t,this.func=r}return RI(e,[{key:"normalCall",value:function(){for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];this.func.apply(this.target,n)}},{key:"immediateCall",value:function(){for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];this.func.apply(this.target,n)}}]),e}();function PI(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function gm(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function qI(e,t,r){return t&&gm(e.prototype,t),r&&gm(e,r),e}function Ur(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var er=function(){function e(t,r,n){PI(this,e),Ur(this,"target",void 0),Ur(this,"func",void 0),Ur(this,"delayMs",void 0),Ur(this,"timerId",void 0),Ur(this,"args",void 0),this.target=t,this.func=r,this.delayMs=n,this.timerId=null,this.args=null}return qI(e,[{key:"normalCall",value:function(){for(var r=this,n=arguments.length,i=new Array(n),o=0;o<n;o++)i[o]=arguments[o];this.args=i,this.timerId===null&&(this.$invoke(),this.timerId=setTimeout(function(){var a;r.timerId!==null&&(r.$clearTimer(),i.length>0&&(a=r.normalCall).apply.apply(a,[r].concat(i)))},this.delayMs))}},{key:"immediateCall",value:function(){this.$clearTimer();for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];this.args=n,this.$invoke()}},{key:"isPending",value:function(){return this.timerId!==null}},{key:"$clearTimer",value:function(){this.timerId!==null&&(clearTimeout(this.timerId),this.timerId=null)}},{key:"$invoke",value:function(){this.func.apply(this.target,this.args),this.args=null}}]),e}();function gi(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?gi=function(r){return typeof r}:gi=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},gi(e)}function TI(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function bm(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function EI(e,t,r){return t&&bm(e.prototype,t),r&&bm(e,r),e}function kI(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&su(e,t)}function su(e,t){return su=Object.setPrototypeOf||function(n,i){return n.__proto__=i,n},su(e,t)}function BI(e){var t=NI();return function(){var n=bi(e),i;if(t){var o=bi(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return DI(this,i)}}function DI(e,t){return t&&(gi(t)==="object"||typeof t=="function")?t:CI(e)}function CI(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function NI(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function bi(e){return bi=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},bi(e)}var jm=function(e){kI(r,e);var t=BI(r);function r(){return TI(this,r),t.apply(this,arguments)}return EI(r,[{key:"find",value:function(i){return(0,He.default)(i).find(".shiny-datatable-output")}},{key:"onValueError",value:function(i,o){ye(i),this.renderError(i,o)}},{key:"renderValue",value:function(i,o){var a=(0,He.default)(i).empty();if(!(!o||!o.colnames)){var u=He.default.makeArray(o.colnames),l=He.default.map(u,function(y){return"<th>"+y+"</th>"}).join("");l="<thead><tr>"+l+"</tr></thead>";var s="";(o.options===null||o.options.searching!==!1)&&(s=He.default.map(u,function(y){return'<th><input type="text" placeholder="'+Gf(y.replace(/(<([^>]+)>)/gi,""))+'" /></th>'}).join(""),s="<tfoot>"+s+"</tfoot>");var f='<table class="table table-striped table-hover">'+l+s+"</table>";a.append(f),o.evalOptions&&He.default.each(o.evalOptions,function(y,h){o.options[h]=Bt("("+o.options[h]+")")});var c=o.options===null||typeof o.options.search=="undefined"||o.options.search.caseInsensitive!==!1,p=(0,He.default)(i).children("table").DataTable(He.default.extend({processing:!0,serverSide:!0,order:[],orderClasses:!1,pageLength:25,ajax:{url:o.action,type:"POST",data:function(h){h.search.caseInsensitive=c,h.escape=o.escape}}},o.options));if(typeof o.callback=="string"){var m=Bt("("+o.callback+")");typeof m=="function"&&m(p)}a.find("label input").first().unbind("keyup").keyup(mt(o.searchDelay,function(){p.search(this.value).draw()}));var d=a.find("tfoot input");d.length>0&&(He.default.each(p.settings()[0].aoColumns,function(y,h){h.bSearchable||d.eq(y).hide()}),d.keyup(mt(o.searchDelay,function(){p.column(d.index(this)).search(this.value).draw()}))),a.parents(".tab-content").css("overflow","visible")}}}]),r}(ie);var HA=b($());var Wm=b(T());"use strict";var VI=A(),_m=lu();VI({target:"Array",proto:!0,forced:[].forEach!=_m},{forEach:_m});var FI=z(),LI=qa(),fu=lu(),zI=Oe();for(var UI in LI)if(cu=FI[UI],Hr=cu&&cu.prototype,Hr&&Hr.forEach!==fu)try{zI(Hr,"forEach",fu)}catch(e){Hr.forEach=fu}var cu,Hr;var YI=A(),XI=Sm().entries;YI({target:"Object",stat:!0},{entries:function(t){return XI(t)}});var hA=b(Se());var IA=b($());var v0=A(),y0=Nm(),h0=Fm(),g0=!h0(function(e){Array.from(e)});v0({target:"Array",stat:!0,forced:g0},{from:y0});var Ne=b(T());function b0(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Lm(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function j0(e,t,r){return t&&Lm(e.prototype,t),r&&Lm(e,r),e}function zm(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var w0=function(){function e(){b0(this,e),zm(this,"regular",void 0),zm(this,"transitioned",void 0)}return j0(e,[{key:"setImageSend",value:function(r,n){var i=new De(null,n,0);return this.regular=function(){i.normalCall()},r.lastChanceCallback.push(function(){i.isPending()&&i.immediateCall()}),this.transitioned=mt(200,this.regular),i}}]),e}(),Ce=new w0;var oA=b(Se());var tr=b(T());var _0=/<!--(SHINY.SINGLETON\[([\w]+)\])-->([\s\S]*?)<!--\/\1-->/,x0=/<head(?:\s[^>]*)?>([\s\S]*?)<\/head>/,ji={};function Um(e,t,r){var n=I0(e);if(S0(n.head),O0(n.singletons),r==="replace")(0,tr.default)(t).html(n.html);else{var i;t instanceof HTMLElement?i=[t]:i=t.toArray(),tr.default.each(i,function(o,a){a.insertAdjacentHTML(ec(r),n.html)})}return n}function O0(e){tr.default.extend(ji,e)}function Hm(e){if(typeof e=="string")ji[e]=!0;else if(e instanceof Array)for(var t=0;t<e.length;t++)ji[e[t]]=!0}function S0(e){if(e.length>0)for(var t=(0,tr.default)("<div>"+e+"</div>").get(0),r=(0,tr.default)("head");t.hasChildNodes();)r.append(t.firstChild)}function I0(e){for(var t={},r,n=function(u,l,s,f){return ji[s]||t[s]?"":(t[s]=!0,f)};r=e.replace(_0,n),e.length!==r.length;)e=r;for(var i=[],o=function(u,l){return i.push(l),""};r=e.replace(x0,o),e.length!==r.length;)e=r;return{html:e,head:i.join("\n"),singletons:t}}function Gr(e,t){return T0(e)||q0(e,t)||P0(e,t)||R0()}function R0(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function P0(e,t){if(!!e){if(typeof e=="string")return Gm(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Gm(e,t)}}function Gm(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function q0(e,t){var r=e&&(typeof Symbol!="undefined"&&e[Symbol.iterator]||e["@@iterator"]);if(r!=null){var n=[],i=!0,o=!1,a,u;try{for(r=r.call(e);!(i=(a=r.next()).done)&&(n.push(a.value),!(t&&n.length===t));i=!0);}catch(l){o=!0,u=l}finally{try{!i&&r.return!=null&&r.return()}finally{if(o)throw u}}return n}}function T0(e){if(Array.isArray(e))return e}function wi(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?wi=function(r){return typeof r}:wi=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},wi(e)}function du(e){e&&e.forEach(k0)}function _e(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"replace";r==="replace"&&ye(e);var n="",i=[];t===null?n="":typeof t=="string"?n=t:wi(t)==="object"&&(n=t.html,i=t.deps||[]),Kr(n,e,i,r);var o=e;if(r==="replace")Za(e),Ja(e);else{var a=(0,Ne.default)(e).parent();if(a.length>0&&(o=a,r==="beforeBegin"||r==="afterEnd")){var u=a.parent();u.length>0&&(o=u)}Za(o),Ja(o)}}function Kr(e,t,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"replace";return du(r),Um(e,t,n)}var _i={};function mu(e,t){_i[e]=t}function E0(e){if(!e.restyle)return!1;var t=Object.keys(_i),r=t.indexOf(e.name);return r===-1?!1:_i[t[r]]===e.version}function k0(e){var t=D0(e),r=t.stylesheet.map(function(o){x(o,"rel")||(o.rel="stylesheet"),x(o,"type")||(o.type="text/css");var a=document.createElement("link");return Object.entries(o).forEach(function(u){var l=Gr(u,2),s=l[0],f=l[1];s==="href"&&(f=encodeURI(f)),a.setAttribute(s,f||"")}),a});if(E0(t))return B0(r),!0;if(x(_i,t.name))return!1;mu(t.name,t.version);var n=(0,Ne.default)("head").first();if(t.meta.forEach(function(o){for(var a=document.createElement("meta"),u=0,l=Object.entries(o);u<l.length;u++){var s=Gr(l[u],2),f=s[0],c=s[1];a.setAttribute(f,c)}n.append(a)}),r.length!==0&&n.append(r),t.script.forEach(function(o){var a=document.createElement("script");Object.entries(o).forEach(function(u){var l=Gr(u,2),s=l[0],f=l[1];s==="src"&&(f=encodeURI(f)),a.setAttribute(s,f||"")}),n.append(a)}),t.attachment.forEach(function(o){var a=(0,Ne.default)("<link rel='attachment'>").attr("id",t.name+"-"+o.key+"-attachment").attr("href",encodeURI(o.href));n.append(a)}),t.head){var i=(0,Ne.default)("<head></head>");i.html(t.head),n.append(i.children())}return!0}function B0(e){var t=(0,Ne.default)("head").first(),r=function(a,u){var l=new XMLHttpRequest;l.open("GET",a),l.onload=function(){var s="shiny_restyle_"+a.split("?restyle")[0].replace(/\W/g,"_"),f=t.find("style#"+s),c=(0,Ne.default)("<style>").attr("id",s).html(l.responseText);t.append(c),f.remove(),i(u),Ce.transitioned()},l.send()},n=function(a){if(!a)return null;for(var u=0;u<document.styleSheets.length;u++){var l=document.styleSheets[u];if(typeof l.href=="string"&&l.href.indexOf(a)>-1)return l}return null},i=function(a){!a||(a.disabled=!0,It()&&(a.cssText=""),a.ownerNode instanceof Element&&(0,Ne.default)(a.ownerNode).remove())};e.map(function(o){var a=(0,Ne.default)(o),u=n(a.attr("href")),l=a.attr("href")+"?restyle="+new Date().getTime();It()?r(l,u):(a.attr("href",l),a.attr("onload",function(){var s=(0,Ne.default)("<div>").css("transition","0.1s all").css("position","absolute").css("top","-1000px").css("left","0");s.one("transitionend",function(){s.remove(),i(u),Ce.transitioned()}),(0,Ne.default)(document.body).append(s);var f="#"+Math.floor(Math.random()*16777215).toString(16);setTimeout(function(){return s.css("color",f)},10)}),t.append(o))})}function D0(e){var t,r=(t=e.src)===null||t===void 0?void 0:t.href,n={name:e.name,version:e.version,restyle:e.restyle,meta:[],stylesheet:[],script:[],attachment:[],head:e.head};e.meta&&(Array.isArray(e.meta)?n.meta=e.meta:n.meta=Object.entries(e.meta).map(function(a){var u=Gr(a,2),l=u[0],s=u[1];return{name:l,content:s}})),n.stylesheet=Rr(e.stylesheet).map(function(a){return typeof a=="string"&&(a={href:a}),r&&(a.href=r+"/"+a.href),a}),n.script=Rr(e.script).map(function(a){return typeof a=="string"&&(a={src:a}),r&&(a.src=r+"/"+a.src),a});var i=e.attachment;if(i||(i=[]),typeof i=="string"&&(i=[i]),Array.isArray(i)){var o=i;i=o.map(function(a,u){return typeof a=="string"?{key:(u+1).toString(),href:a}:a})}else i=Object.entries(i).map(function(a){var u=Gr(a,2),l=u[0],s=u[1];return{key:l,href:s}});return n.attachment=i.map(function(a){return r&&(a.href=r+"/"+a.href),a}),n}function xi(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?xi=function(r){return typeof r}:xi=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},xi(e)}function C0(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Km(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function N0(e,t,r){return t&&Km(e.prototype,t),r&&Km(e,r),e}function A0(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&vu(e,t)}function vu(e,t){return vu=Object.setPrototypeOf||function(n,i){return n.__proto__=i,n},vu(e,t)}function $0(e){var t=F0();return function(){var n=Oi(e),i;if(t){var o=Oi(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return M0(this,i)}}function M0(e,t){return t&&(xi(t)==="object"||typeof t=="function")?t:V0(e)}function V0(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function F0(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function Oi(e){return Oi=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},Oi(e)}var Ym=function(e){A0(r,e);var t=$0(r);function r(){return C0(this,r),t.apply(this,arguments)}return N0(r,[{key:"find",value:function(i){return(0,Wm.default)(i).find(".shiny-html-output")}},{key:"onValueError",value:function(i,o){ye(i),this.renderError(i,o)}},{key:"renderValue",value:function(i,o){_e(i,o)}}]),r}(ie);"use strict";var L0=A(),z0=Ht().filter,U0=Lt(),H0=U0("filter");L0({target:"Array",proto:!0,forced:!H0},{filter:function(t){return z0(this,t,arguments.length>1?arguments[1]:void 0)}});var L$=b($());var ht=b(T());var nr=b(T());var Jm=b(T());function Xm(e,t,r,n,i){var o=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0;o=o||!0;var a=(i-n)/(r-t),u=e-t,l=u*a+n;if(o){var s=Math.max(i,n),f=Math.min(i,n);l>s?l=s:l<f&&(l=f)}return l}function Qm(e,t,r,n,i){return{scale:function(a,u){return i&&(a=Math.log(a)/Math.log(i)),Xm(a,e,t,r,n,u)},scaleInv:function(a,u){var l=Xm(a,r,n,e,t,u);return i&&(l=Math.pow(i,l)),l}}}function G0(e){var t=e.domain,r=e.range,n=e.log&&e.log.x?e.log.x:null,i=e.log&&e.log.y?e.log.y:null,o=Qm(t.left,t.right,r.left,r.right,n),a=Qm(t.bottom,t.top,r.bottom,r.top,i);e.scaleDataToImg=function(l,s){return Ee(l,function(f,c){var p=c.substring(0,1);return p==="x"?o.scale(f,s):p==="y"?a.scale(f,s):null})};function u(l,s){return Ee(l,function(f,c){var p=c.substring(0,1);return p==="x"?o.scaleInv(f,s):p==="y"?a.scaleInv(f,s):null})}e.scaleImgToData=u,e.clipImg=function(l){var s={x:l.x,y:l.y},f=e.range;return l.x>f.right?s.x=f.right:l.x<f.left&&(s.x=f.left),l.y>f.bottom?s.y=f.bottom:l.y<f.top&&(s.y=f.top),s}}function yu(e){for(var t=0;t<e.length;t++){var r=e[t];G0(r)}}function K0(e){var t=e[0].getBoundingClientRect();return{x:t.width/e.outerWidth(),y:t.height/e.outerHeight()}}function hu(e){var t=e.offset(),r=K0(e),n={left:parseInt(e.css("border-left-width"))+parseInt(e.css("padding-left")),top:parseInt(e.css("border-top-width"))+parseInt(e.css("padding-top"))};return{x:t.left+r.x*n.left,y:t.top+r.y*n.top}}function W0(e){var t={x:e.width()/e.outerWidth(),y:e.height()/e.outerHeight()},r=e[0].getBoundingClientRect();return{x:t.x*r.width,y:t.y*r.height}}function gu(e,t){var r=t,n=e.find("img"),i=n[0];if(r.panels.length===0){var o={top:0,left:0,right:i.clientWidth-1,bottom:i.clientHeight-1};r.panels[0]={domain:o,range:o,mapping:{}}}r.dims.height=r.dims.height||i.naturalHeight,r.dims.width=r.dims.width||i.naturalWidth,yu(r.panels),r.mouseOffsetCss=function(l){var s=hu(n);return{x:l.pageX-s.x,y:l.pageY-s.y}};function a(l){var s=r.imgToCssScalingRatio(),f=Ee(l,function(c,p){var m=p.substring(0,1);return m==="x"?l[p]/s.x:m==="y"?l[p]/s.y:null});return f}r.scaleCssToImg=a;function u(l){var s=r.imgToCssScalingRatio(),f=Ee(l,function(c,p){var m=p.substring(0,1);return m==="x"?l[p]*s.x:m==="y"?l[p]*s.y:null});return f}return r.scaleImgToCss=u,r.imgToCssScalingRatio=function(){var l=W0(n);return{x:l.x/r.dims.width,y:l.y/r.dims.height}},r.cssToImgScalingRatio=function(){var l=r.imgToCssScalingRatio();return{x:1/l.x,y:1/l.y}},r.getPanelCss=function(l){var s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,f=r.scaleCssToImg(l),c=f.x,p=f.y,m=r.cssToImgScalingRatio(),d={x:s*m.x,y:s*m.y},y=[],h=[],j,O;for(O=0;O<r.panels.length;O++)if(j=r.panels[O].range,c<=j.right+d.x&&c>=j.left-d.x&&p<=j.bottom+d.y&&p>=j.top-d.y){y.push(r.panels[O]);var P=0,w=0;c>j.right&&c<=j.right+d.x?P=c-j.right:c<j.left&&c>=j.left-d.x&&(P=c-j.left),p>j.bottom&&p<=j.bottom+d.y?w=p-j.bottom:p<j.top&&p>=j.top-d.y&&(w=p-j.top),h.push(Math.sqrt(Math.pow(P,2)+Math.pow(w,2)))}if(y.length){var E=Math.min.apply(null,h);for(O=0;O<y.length;O++)if(h[O]===E)return y[O]}return null},r.isInPanelCss=function(l){var s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return!!r.getPanelCss(l,s)},r.mouseCoordinateSender=function(l){var s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,f=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return function(c){if(c===null){Ue(l,null);return}var p=r.mouseOffsetCss(c);if(!r.isInPanelCss(p)){if(f){Ue(l,null);return}if(s)return;var m={coords_css:p,coords_img:r.scaleCssToImg(p)};Ue(l,m,{priority:"event"});return}var d=r.getPanelCss(p),y=r.scaleCssToImg(p),h=d.scaleImgToData(y),j={x:h.x,y:h.y,coords_css:p,coords_img:y,img_css_ratio:r.cssToImgScalingRatio()};Jm.default.extend(j,d.panel_vars),j.mapping=d.mapping,j.domain=d.domain,j.range=d.range,j.log=d.log,Ue(l,j,{priority:"event"})}},r}function rr(e,t){return{xmin:Math.min(e.x,t.x),xmax:Math.max(e.x,t.x),ymin:Math.min(e.y,t.y),ymax:Math.max(e.y,t.y)}}function vt(e,t,r){e instanceof Array||(e=[e]);var n=Math.max.apply(null,e),i=Math.min.apply(null,e),o=0;n>r?o=r-n:i<t&&(o=t-i);for(var a=[],u=0;u<e.length;u++)a[u]=e[u]+o;return a}function bu(e,t,r,n){var i=10,o=e[0],a=null,u={},l=r.scaleCssToImg,s=r.scaleImgToCss;f();function f(){u.brushing=!1,u.dragging=!1,u.resizing=!1,u.down={x:NaN,y:NaN},u.up={x:NaN,y:NaN},u.resizeSides={left:!1,right:!1,top:!1,bottom:!1},u.boundsCss={xmin:NaN,xmax:NaN,ymin:NaN,ymax:NaN},u.boundsData={xmin:NaN,xmax:NaN,ymin:NaN,ymax:NaN},u.panel=null,u.changeStartBounds={xmin:NaN,xmax:NaN,ymin:NaN,ymax:NaN},a&&a.remove()}function c(){var _=e.find("#"+o.id+"_brush");if(_.length!==0){var S=_.data("bounds-data"),N=_.data("panel");if(!(!S||!N)){for(var k=0;k<r.panels.length;k++){var ee=r.panels[k];if(Lo(N.mapping,ee.mapping)&&Lo(N.panel_vars,ee.panel_vars)){u.panel=r.panels[k];break}}if(u.panel===null){_.remove();return}a=_,j(S),w()}}}function p(){var _=j();for(var S in _)if(Jf(_[S]))return;j(_),w()}function m(_){var S=u.boundsCss;return _.x<=S.xmax&&_.x>=S.xmin&&_.y<=S.ymax&&_.y>=S.ymin}function d(_){var S=y(_);return S.left||S.right||S.top||S.bottom}function y(_){var S=u.boundsCss,N={xmin:S.xmin-i,xmax:S.xmax+i,ymin:S.ymin-i,ymax:S.ymax+i},k={left:!1,right:!1,top:!1,bottom:!1};return(t.brushDirection==="xy"||t.brushDirection==="x")&&_.y<=N.ymax&&_.y>=N.ymin&&(_.x<S.xmin&&_.x>=N.xmin?k.left=!0:_.x>S.xmax&&_.x<=N.xmax&&(k.right=!0)),(t.brushDirection==="xy"||t.brushDirection==="y")&&_.x<=N.xmax&&_.x>=N.xmin&&(_.y<S.ymin&&_.y>=N.ymin?k.top=!0:_.y>S.ymax&&_.y<=N.ymax&&(k.bottom=!0)),k}function h(_){if(_===void 0)return nr.default.extend({},u.boundsCss);var S={x:_.xmin,y:_.ymin},N={x:_.xmax,y:_.ymax},k=u.panel,ee=k.range;t.brushClip&&(S=s(k.clipImg(l(S))),N=s(k.clipImg(l(N)))),t.brushDirection==="xy"||(t.brushDirection==="x"?(S.y=s({y:ee.top}).y,N.y=s({y:ee.bottom}).y):t.brushDirection==="y"&&(S.x=s({x:ee.left}).x,N.x=s({x:ee.right}).x)),u.boundsCss={xmin:S.x,xmax:N.x,ymin:S.y,ymax:N.y};var nt=u.panel.scaleImgToData(l(S)),it=u.panel.scaleImgToData(l(N));u.boundsData=rr(nt,it),u.boundsData=Ee(u.boundsData,function(ot){return Mo(ot,14)}),a.data("bounds-data",u.boundsData),a.data("panel",u.panel)}function j(_){if(_===void 0)return nr.default.extend({},u.boundsData);var S=s(u.panel.scaleDataToImg(_));S=Ee(S,function(N){return Mo(N,13)}),h({xmin:Math.min(S.xmin,S.xmax),xmax:Math.max(S.xmin,S.xmax),ymin:Math.min(S.ymin,S.ymax),ymax:Math.max(S.ymin,S.ymax)})}function O(){return u.panel}function P(){a&&a.remove(),a=(0,nr.default)(document.createElement("div")).attr("id",o.id+"_brush").css({"background-color":t.brushFill,opacity:t.brushOpacity,"pointer-events":"none",position:"absolute"}).hide();var _="1px solid "+t.brushStroke;t.brushDirection==="xy"?a.css({border:_}):t.brushDirection==="x"?a.css({"border-left":_,"border-right":_}):t.brushDirection==="y"&&a.css({"border-top":_,"border-bottom":_}),e.append(a),a.offset({x:0,y:0}).width(0).outerHeight(0)}function w(){var _=hu(e.find("img")),S=u.boundsCss;a.offset({top:_.y+S.ymin,left:_.x+S.xmin}).outerWidth(S.xmax-S.xmin+1).outerHeight(S.ymax-S.ymin+1)}function E(_){if(_===void 0)return u.down;u.down=_}function D(_){if(_===void 0)return u.up;u.up=_}function W(){return u.brushing}function H(){u.brushing=!0,P(),u.panel=r.getPanelCss(u.down,n),h(rr(u.down,u.down)),w()}function ue(_){h(rr(u.down,_)),a.show(),w()}function he(){u.brushing=!1,h(rr(u.down,u.up))}function ge(){return u.dragging}function _t(){u.dragging=!0,u.changeStartBounds=nr.default.extend({},u.boundsCss)}function g(_){var S=_.x-u.down.x,N=_.y-u.down.y,k=u.changeStartBounds,ee={xmin:k.xmin+S,xmax:k.xmax+S,ymin:k.ymin+N,ymax:k.ymax+N};if(t.brushClip){var nt=u.panel.range,it=l(ee),ot=[it.xmin,it.xmax],Nt=[it.ymin,it.ymax];ot=vt(ot,nt.left,nt.right),Nt=vt(Nt,nt.top,nt.bottom),ee=s({xmin:ot[0],xmax:ot[1],ymin:Nt[0],ymax:Nt[1]})}h(ee),w()}function q(){u.dragging=!1}function C(){return u.resizing}function Q(){u.resizing=!0,u.changeStartBounds=nr.default.extend({},u.boundsCss),u.resizeSides=y(u.down)}function Z(_){var S={x:_.x-u.down.x,y:_.y-u.down.y},N=l(S),k=l(u.changeStartBounds),ee=u.panel.range;if(u.resizeSides.left){var nt=vt(k.xmin+N.x,ee.left,k.xmax)[0];k.xmin=nt}else if(u.resizeSides.right){var it=vt(k.xmax+N.x,k.xmin,ee.right)[0];k.xmax=it}if(u.resizeSides.top){var ot=vt(k.ymin+N.y,ee.top,k.ymax)[0];k.ymin=ot}else if(u.resizeSides.bottom){var Nt=vt(k.ymax+N.y,k.ymin,ee.bottom)[0];k.ymax=Nt}h(s(k)),w()}function ce(){u.resizing=!1}return{reset:f,importOldBrush:c,isInsideBrush:m,isInResizeArea:d,whichResizeSides:y,onResize:p,boundsCss:h,boundsData:j,getPanel:O,down:E,up:D,isBrushing:W,startBrushing:H,brushTo:ue,stopBrushing:he,isDragging:ge,startDragging:_t,dragTo:g,stopDragging:q,isResizing:C,startResizing:Q,resizeTo:Z,stopResizing:ce}}var Zm=b(T());function ju(e,t,r){var n=null,i=null;function o(f,c){var p=Zm.default.Event(f,{which:c.which,pageX:c.pageX,pageY:c.pageY});e.trigger(p)}function a(){i&&(o("mousedown2",i),i=null)}function u(f){i=f,n=setTimeout(function(){a()},r)}function l(f){if(f.which===1){if(!t){o("mousedown2",f);return}i===null?u(f):(clearTimeout(n),i&&Math.abs(i.pageX-f.pageX)>2||Math.abs(i.pageY-f.pageY)>2?(a(),u(f)):(i=null,o("dblclick2",f)))}}function s(f){f.which=1,o("dblclick2",f)}return{mousedown:l,dblclickIE8:s}}var yt=b(T());function Si(e,t,r){var n=r.mouseCoordinateSender(e,t);return{mousedown:function(o){o.which===1&&n(o)},onResetImg:function(){n(null)},onResize:null}}function wu(e,t,r,n,i,o){var a=o.mouseCoordinateSender(e,n,i),u;r==="throttle"?u=new er(null,a,t):u=new De(null,a,t);var l;return i?l=function(){u.normalCall(null)}:l=function(){},{mousemove:function(f){u.normalCall(f)},mouseout:l,onResetImg:function(){u.immediateCall(null)},onResize:null}}function _u(e,t,r,n,i){var o=20,a=bu(t,r,n,o);t.on("shiny-internal:brushed.image_output",function(w,E){E.brushId===e&&E.outputId!==i&&(t.data("mostRecentBrush",!1),a.reset())});function u(w){t.removeClass("crosshair grabbable grabbing ns-resize ew-resize nesw-resize nwse-resize"),w&&t.addClass(w)}function l(){var w=a.boundsData();if(isNaN(w.xmin)){Ue(e,null),Ct.find(document.documentElement).trigger("shiny-internal:brushed",{brushId:e,outputId:null});return}var E=a.getPanel();yt.default.extend(w,E.panel_vars),w.coords_css=a.boundsCss(),w.coords_img=n.scaleCssToImg(w.coords_css),w.img_css_ratio=n.cssToImgScalingRatio(),w.mapping=E.mapping,w.domain=E.domain,w.range=E.range,w.log=E.log,w.direction=r.brushDirection,w.brushId=e,w.outputId=i,Ue(e,w),t.data("mostRecentBrush",!0),Ct.find(document.documentElement).trigger("shiny-internal:brushed",w)}var s;r.brushDelayType==="throttle"?s=new er(null,l,r.brushDelay):s=new De(null,l,r.brushDelay);function f(w){if(!(a.isBrushing()||a.isDragging()||a.isResizing())&&w.which===1){var E=n.mouseOffsetCss(w);if(!(r.brushClip&&!n.isInPanelCss(E,o)))if(a.up({x:NaN,y:NaN}),a.down(E),a.isInResizeArea(E))a.startResizing(E),(0,yt.default)(document).on("mousemove.image_brush",d).on("mouseup.image_brush",j);else if(a.isInsideBrush(E))a.startDragging(E),u("grabbing"),(0,yt.default)(document).on("mousemove.image_brush",m).on("mouseup.image_brush",h);else{var D=n.getPanelCss(E,o);a.startBrushing(D.clipImg(n.scaleCssToImg(E))),(0,yt.default)(document).on("mousemove.image_brush",p).on("mouseup.image_brush",y)}}}function c(w){var E=n.mouseOffsetCss(w);if(!(a.isBrushing()||a.isDragging()||a.isResizing()))if(a.isInResizeArea(E)){var D=a.whichResizeSides(E);D.left&&D.top||D.right&&D.bottom?u("nwse-resize"):D.left&&D.bottom||D.right&&D.top?u("nesw-resize"):D.left||D.right?u("ew-resize"):(D.top||D.bottom)&&u("ns-resize")}else a.isInsideBrush(E)?u("grabbable"):n.isInPanelCss(E,o)?u("crosshair"):u(null)}function p(w){a.brushTo(n.mouseOffsetCss(w)),s.normalCall()}function m(w){a.dragTo(n.mouseOffsetCss(w)),s.normalCall()}function d(w){a.resizeTo(n.mouseOffsetCss(w)),s.normalCall()}function y(w){if(w.which===1){if((0,yt.default)(document).off("mousemove.image_brush").off("mouseup.image_brush"),a.up(n.mouseOffsetCss(w)),a.stopBrushing(),u("crosshair"),a.down().x===a.up().x&&a.down().y===a.up().y){a.reset(),s.immediateCall();return}s.isPending()&&s.immediateCall()}}function h(w){w.which===1&&((0,yt.default)(document).off("mousemove.image_brush").off("mouseup.image_brush"),a.up(n.mouseOffsetCss(w)),a.stopDragging(),u("grabbable"),s.isPending()&&s.immediateCall())}function j(w){w.which===1&&((0,yt.default)(document).off("mousemove.image_brush").off("mouseup.image_brush"),a.up(n.mouseOffsetCss(w)),a.stopResizing(),s.isPending()&&s.immediateCall())}function O(){r.brushResetOnNew&&t.data("mostRecentBrush")&&(a.reset(),s.immediateCall())}r.brushResetOnNew||t.data("mostRecentBrush")&&(a.importOldBrush(),s.immediateCall());function P(){a.onResize(),s.immediateCall()}return{mousedown:f,mousemove:c,onResetImg:O,onResize:P}}function ir(e,t){t.css("-webkit-user-drag","none"),t.off("dragstart.image_output"),t.on("dragstart.image_output",function(){return!1}),e.off("selectstart.image_output"),e.on("selectstart.image_output",function(){return!1})}function Ii(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Ii=function(r){return typeof r}:Ii=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},Ii(e)}function Y0(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ev(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function X0(e,t,r){return t&&ev(e.prototype,t),r&&ev(e,r),e}function Q0(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&xu(e,t)}function xu(e,t){return xu=Object.setPrototypeOf||function(n,i){return n.__proto__=i,n},xu(e,t)}function J0(e){var t=tR();return function(){var n=Ri(e),i;if(t){var o=Ri(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return Z0(this,i)}}function Z0(e,t){return t&&(Ii(t)==="object"||typeof t=="function")?t:eR(e)}function eR(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function tR(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function Ri(e){return Ri=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},Ri(e)}var rR=function(e){Q0(r,e);var t=J0(r);function r(){return Y0(this,r),t.apply(this,arguments)}return X0(r,[{key:"find",value:function(i){return(0,ht.default)(i).find(".shiny-image-output, .shiny-plot-output")}},{key:"renderValue",value:function(i,o){var a=this.getId(i),u=(0,ht.default)(i),l,s=u.find("img");if(s.length===0?(l=document.createElement("img"),u.append(l),s=(0,ht.default)(l)):(l=s[0],s.trigger("reset")),!o){u.empty();return}function f(d,y){return d===void 0?y:d}var c={clickId:u.data("click-id"),clickClip:f(Rt(u.data("click-clip")),!0),dblclickId:u.data("dblclick-id"),dblclickClip:f(Rt(u.data("dblclick-clip")),!0),dblclickDelay:f(u.data("dblclick-delay"),400),hoverId:u.data("hover-id"),hoverClip:f(Rt(u.data("hover-clip")),!0),hoverDelayType:f(u.data("hover-delay-type"),"debounce"),hoverDelay:f(u.data("hover-delay"),300),hoverNullOutside:f(Rt(u.data("hover-null-outside")),!1),brushId:u.data("brush-id"),brushClip:f(Rt(u.data("brush-clip")),!0),brushDelayType:f(u.data("brush-delay-type"),"debounce"),brushDelay:f(u.data("brush-delay"),300),brushFill:f(u.data("brush-fill"),"#666"),brushStroke:f(u.data("brush-stroke"),"#000"),brushOpacity:f(u.data("brush-opacity"),.3),brushDirection:f(u.data("brush-direction"),"xy"),brushResetOnNew:f(Rt(u.data("brush-reset-on-new")),!1),coordmap:o.coordmap};c.brushFill==="auto"&&(c.brushFill=Pr(u[0])),c.brushStroke==="auto"&&(c.brushStroke=Fe(u[0],"color")),ht.default.each(o,function(d,y){y===null||d==="coordmap"||(d==="src"&&y===l.getAttribute("src")&&l.removeAttribute("src"),l.setAttribute(d,y))});for(var p=0;p<l.attributes.length;p++){var m=l.attributes[p];m.specified&&!x(o,m.name)&&l.removeAttribute(m.name)}c.coordmap||(c.coordmap={panels:[],dims:{height:null,width:null}}),u.off(".image_output"),s.off(".image_output"),s.off("load.shiny_image_interaction"),s.one("load.shiny_image_interaction",function(){var d=c.coordmap=gu(u,c.coordmap),y=ju(u,c.dblclickId,c.dblclickDelay);if(u.on("mousedown.image_output",y.mousedown),It()&&Sl()===8&&u.on("dblclick.image_output",y.dblclickIE8),c.clickId){ir(u,s);var h=Si(c.clickId,c.clickClip,d);u.on("mousedown2.image_output",h.mousedown),u.on("resize.image_output",h.onResize),s.on("reset.image_output",h.onResetImg)}if(c.dblclickId){ir(u,s);var j=Si(c.dblclickId,c.clickClip,d);u.on("dblclick2.image_output",j.mousedown),u.on("resize.image_output",j.onResize),s.on("reset.image_output",j.onResetImg)}if(c.hoverId){ir(u,s);var O=wu(c.hoverId,c.hoverDelay,c.hoverDelayType,c.hoverClip,c.hoverNullOutside,d);u.on("mousemove.image_output",O.mousemove),u.on("mouseout.image_output",O.mouseout),u.on("resize.image_output",O.onResize),s.on("reset.image_output",O.onResetImg)}if(c.brushId){ir(u,s);var P=_u(c.brushId,u,c,d,a);u.on("mousedown.image_output",P.mousedown),u.on("mousemove.image_output",P.mousemove),u.on("resize.image_output",P.onResize),s.on("reset.image_output",P.onResetImg)}(c.clickId||c.dblclickId||c.hoverId||c.brushId)&&u.addClass("crosshair"),o.error&&console.log("Error on server extracting coordmap: "+o.error)})}},{key:"renderError",value:function(i,o){(0,ht.default)(i).find("img").trigger("reset"),ie.prototype.renderError.call(this,i,o)}},{key:"clearError",value:function(i){(0,ht.default)(i).contents().filter(function(){return!(this instanceof HTMLElement&&(this.tagName==="IMG"||this.id===i.id+"_brush"))}).remove(),ie.prototype.clearError.call(this,i)}},{key:"resize",value:function(i,o,a){(0,ht.default)(i).find("img").trigger("resize")}}]),r}(ie),Ct=new rR;function tv(){var e=new On;return e.register(new lm,"shiny.textOutput"),e.register(new cm,"shiny.downloadLink"),e.register(new jm,"shiny.datatableOutput"),e.register(new Ym,"shiny.htmlOutput"),e.register(Ct,"shiny.imageOutput"),{outputBindings:e}}function Pi(e){Ue(e,null),Ct.find(document.documentElement).trigger("shiny-internal:brushed",{brushId:e,outputId:null})}var vM=b(Se());"use strict";var nR=wr(),iR=Y(),oR=le(),aR=Ke(),uR=hn(),rv=_r();nR("match",1,function(e,t,r){return[function(i){var o=aR(this),a=i==null?void 0:i[e];return a!==void 0?a.call(i,o):new RegExp(i)[e](String(o))},function(n){var i=r(t,n,this);if(i.done)return i.value;var o=iR(n),a=String(this);if(!o.global)return rv(o,a);var u=o.unicode;o.lastIndex=0;for(var l=[],s=0,f;(f=rv(o,a))!==null;){var c=String(f[0]);l[s]=c,c===""&&(o.lastIndex=uR(a,oR(o.lastIndex),u)),s++}return s===0?null:l}]});var Wr=b(T());var sR=250;function et(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=e.html,r=t===void 0?"":t,n=e.action,i=n===void 0?"":n,o=e.deps,a=o===void 0?[]:o,u=e.duration,l=u===void 0?5e3:u,s=e.id,f=s===void 0?null:s,c=e.closeButton,p=c===void 0?!0:c,m=e.type,d=m===void 0?null:m;f||(f=xn()),fR();var y=Yr(f);y.length===0&&(y=cR(f));var h='<div class="shiny-notification-content-text">'.concat(r,"</div>")+'<div class="shiny-notification-content-action">'.concat(i,"</div>"),j=y.find(".shiny-notification-content");_e(j,{html:h,deps:a});var O=y.attr("class").split(/\s+/).filter(function(w){return w.match(/^shiny-notification-/)}).join(" ");y.removeClass(O),d&&d!=="default"&&y.addClass("shiny-notification-"+d);var P=y.find(".shiny-notification-close");return p&&P.length===0?y.append('<div class="shiny-notification-close">&times;</div>'):!p&&P.length!==0&&P.remove(),l?pR(f,l):nv(f),f}function tt(e){Yr(e).fadeOut(sR,function(){ye(this),(0,Wr.default)(this).remove(),lR().length===0&&Xr().remove()})}function Yr(e){return e?Xr().find("#shiny-notification-"+R(e)):null}function lR(){return Xr().find(".shiny-notification").map(function(){return this.id.replace(/shiny-notification-/,"")}).get()}function Xr(){return(0,Wr.default)("#shiny-notification-panel")}function fR(){var e=Xr();return e.length>0||(0,Wr.default)(document.body).append('<div id="shiny-notification-panel">'),e}function cR(e){var t=Yr(e);return t.length===0&&(t=(0,Wr.default)('<div id="shiny-notification-'.concat(e,'" class="shiny-notification">')+'<div class="shiny-notification-close">&times;</div><div class="shiny-notification-content"></div></div>'),t.find(".shiny-notification-close").on("click",function(r){r.preventDefault(),r.stopPropagation(),tt(e)}),Xr().append(t)),t}function pR(e,t){nv(e);var r=setTimeout(function(){tt(e)},t);Yr(e).data("removalCallback",r)}function nv(e){var t=Yr(e),r=t.data("removalCallback");r&&clearTimeout(r)}var gt=b(T());function qi(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=e.html,r=t===void 0?"":t,n=e.deps,i=n===void 0?[]:n;(0,gt.default)(".modal-backdrop").remove();var o=(0,gt.default)("#shiny-modal-wrapper");o.length===0&&(o=(0,gt.default)('<div id="shiny-modal-wrapper"></div>'),(0,gt.default)(document.body).append(o),o.on("hidden.bs.modal",function(a){a.target===(0,gt.default)("#shiny-modal")[0]&&(ye(o),o.remove())})),o.on("keydown.shinymodal",function(a){(0,gt.default)("#shiny-modal").data("keyboard")!==!1&&a.keyCode===27&&(a.stopPropagation(),a.preventDefault())}),_e(o,{html:r,deps:i})}function Ti(){var e=(0,gt.default)("#shiny-modal-wrapper");e.off("keydown.shinymodal"),e.find(".modal").length>0?e.find(".modal").modal("hide"):(ye(e),e.remove())}var Ou=b(T());function iv(e){var t=(0,Ou.default)("#shiny-reconnect-time");if(t.length!==0){var r=Math.floor((e-new Date().getTime())/1e3);r>0?t.text(" in "+r+"s"):t.text("..."),setTimeout(function(){iv(e)},1e3)}}function Ei(e){var t=new Date().getTime()+e;if(!((0,Ou.default)("#shiny-reconnect-text").length>0)){var r='<span id="shiny-reconnect-text">Attempting to reconnect</span><span id="shiny-reconnect-time"></span>',n='<a id="shiny-reconnect-now" href="#" onclick="Shiny.shinyapp.reconnect();">Try now</a>';et({id:"reconnect",html:r,action:n,duration:null,closeButton:!1,type:"warning"}),iv(t)}}function ki(){tt("reconnect")}var r2=b(Se());var B=b(T());var $M=b($());var uv=b(T());function dR(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ov(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function mR(e,t,r){return t&&ov(e.prototype,t),r&&ov(e,r),e}function vR(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Ae=function(){function e(){dR(this,e),vR(this,"target",void 0)}return mR(e,[{key:"setInput",value:function(r,n,i){throw"not implemented"}}]),e}();function Bi(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Bi=function(r){return typeof r}:Bi=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},Bi(e)}function yR(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function av(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function hR(e,t,r){return t&&av(e.prototype,t),r&&av(e,r),e}function gR(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Su(e,t)}function Su(e,t){return Su=Object.setPrototypeOf||function(n,i){return n.__proto__=i,n},Su(e,t)}function bR(e){var t=wR();return function(){var n=Di(e),i;if(t){var o=Di(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return jR(this,i)}}function jR(e,t){return t&&(Bi(t)==="object"||typeof t=="function")?t:or(e)}function or(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function wR(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function Di(e){return Di=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},Di(e)}function Qr(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Iu=function(e){gR(r,e);var t=bR(r);function r(n){var i;return yR(this,r),i=t.call(this),Qr(or(i),"shinyapp",void 0),Qr(or(i),"timerId",null),Qr(or(i),"pendingData",{}),Qr(or(i),"reentrant",!1),Qr(or(i),"lastChanceCallback",[]),i.shinyapp=n,i}return hR(r,[{key:"setInput",value:function(i,o,a){this.pendingData[i]=o,this.reentrant||(a.priority==="event"?this._sendNow():this.timerId||(this.timerId=setTimeout(this._sendNow.bind(this),0)))}},{key:"_sendNow",value:function(){this.reentrant&&console.trace("Unexpected reentrancy in InputBatchSender!"),this.reentrant=!0;try{this.timerId=null,uv.default.each(this.lastChanceCallback,function(o,a){a()});var i=this.pendingData;this.pendingData={},this.shinyapp.sendInput(i)}finally{this.reentrant=!1}}}]),r}(Ae);var eV=b($());var zM=b(Se());function bt(e){var t=e.split(":");return{name:t[0],inputType:t.length>1?t[1]:""}}function Ci(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Ci=function(r){return typeof r}:Ci=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},Ci(e)}function _R(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function sv(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function xR(e,t,r){return t&&sv(e.prototype,t),r&&sv(e,r),e}function OR(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Ru(e,t)}function Ru(e,t){return Ru=Object.setPrototypeOf||function(n,i){return n.__proto__=i,n},Ru(e,t)}function SR(e){var t=RR();return function(){var n=Ni(e),i;if(t){var o=Ni(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return IR(this,i)}}function IR(e,t){return t&&(Ci(t)==="object"||typeof t=="function")?t:lv(e)}function lv(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function RR(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function Ni(e){return Ni=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},Ni(e)}function PR(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Pu=function(e){OR(r,e);var t=SR(r);function r(n){var i,o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return _R(this,r),i=t.call(this),PR(lv(i),"lastSentValues",void 0),i.target=n,i.reset(o),i}return xR(r,[{key:"setInput",value:function(i,o,a){var u=bt(i),l=u.name,s=u.inputType,f=JSON.stringify(o);a.priority!=="event"&&this.lastSentValues[l]&&this.lastSentValues[l].jsonValue===f&&this.lastSentValues[l].inputType===s||(this.lastSentValues[l]={jsonValue:f,inputType:s},this.target.setInput(i,o,a))}},{key:"reset",value:function(){var i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},o={};for(var a in i)if(x(i,a)){var u=bt(a),l=u.name,s=u.inputType;o[l]={jsonValue:JSON.stringify(i[a]),inputType:s}}this.lastSentValues=o}},{key:"forget",value:function(i){delete this.lastSentValues[i]}}]),r}(Ae);var vV=b($());var cv=b(T());function Ai(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Ai=function(r){return typeof r}:Ai=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},Ai(e)}function qR(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function fv(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function TR(e,t,r){return t&&fv(e.prototype,t),r&&fv(e,r),e}function ER(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&qu(e,t)}function qu(e,t){return qu=Object.setPrototypeOf||function(n,i){return n.__proto__=i,n},qu(e,t)}function kR(e){var t=CR();return function(){var n=$i(e),i;if(t){var o=$i(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return BR(this,i)}}function BR(e,t){return t&&(Ai(t)==="object"||typeof t=="function")?t:DR(e)}function DR(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function CR(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function $i(e){return $i=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},$i(e)}var Tu=function(e){ER(r,e);var t=kR(r);function r(n){var i;return qR(this,r),i=t.call(this),i.target=n,i}return TR(r,[{key:"setInput",value:function(i,o,a){var u=jQuery.Event("shiny:inputchanged"),l=bt(i);if(u.name=l.name,u.inputType=l.inputType,u.value=o,u.binding=a.binding,u.el=a.el,u.priority=a.priority,(0,cv.default)(a.el).trigger(u),!u.isDefaultPrevented()){var s=u.name;u.inputType!==""&&(s+=":"+u.inputType),this.target.setInput(s,u.value,{priority:a.priority})}}}]),r}(Ae);var qV=b($());function Mi(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Mi=function(r){return typeof r}:Mi=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},Mi(e)}function NR(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function pv(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function AR(e,t,r){return t&&pv(e.prototype,t),r&&pv(e,r),e}function $R(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Eu(e,t)}function Eu(e,t){return Eu=Object.setPrototypeOf||function(n,i){return n.__proto__=i,n},Eu(e,t)}function MR(e){var t=FR();return function(){var n=Vi(e),i;if(t){var o=Vi(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return VR(this,i)}}function VR(e,t){return t&&(Mi(t)==="object"||typeof t=="function")?t:dv(e)}function dv(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function FR(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function Vi(e){return Vi=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},Vi(e)}function LR(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var ku=function(e){$R(r,e);var t=MR(r);function r(n){var i;return NR(this,r),i=t.call(this),LR(dv(i),"inputRatePolicies",{}),i.target=n,i}return AR(r,[{key:"setInput",value:function(i,o,a){var u=bt(i),l=u.name;this._ensureInit(l),a.priority!=="deferred"?this.inputRatePolicies[l].immediateCall(i,o,a):this.inputRatePolicies[l].normalCall(i,o,a)}},{key:"setRatePolicy",value:function(i,o,a){var u=bt(i),l=u.name;o==="direct"?this.inputRatePolicies[l]=new uu(this,this._doSetInput):o==="debounce"?this.inputRatePolicies[l]=new De(this,this._doSetInput,a):o==="throttle"&&(this.inputRatePolicies[l]=new er(this,this._doSetInput,a))}},{key:"_ensureInit",value:function(i){i in this.inputRatePolicies||this.setRatePolicy(i,"direct")}},{key:"_doSetInput",value:function(i,o,a){this.target.setInput(i,o,a)}}]),r}(Ae);var zV=b($());function Fi(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Fi=function(r){return typeof r}:Fi=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},Fi(e)}function zR(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function mv(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function UR(e,t,r){return t&&mv(e.prototype,t),r&&mv(e,r),e}function HR(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Bu(e,t)}function Bu(e,t){return Bu=Object.setPrototypeOf||function(n,i){return n.__proto__=i,n},Bu(e,t)}function GR(e){var t=WR();return function(){var n=Li(e),i;if(t){var o=Li(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return KR(this,i)}}function KR(e,t){return t&&(Fi(t)==="object"||typeof t=="function")?t:vv(e)}function vv(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function WR(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function Li(e){return Li=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},Li(e)}function YR(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Du=function(e){HR(r,e);var t=GR(r);function r(n){var i;return zR(this,r),i=t.call(this),YR(vv(i),"pendingInput",{}),i.target=n,i}return UR(r,[{key:"setInput",value:function(i,o,a){/^\./.test(i)?this.target.setInput(i,o,a):this.pendingInput[i]={value:o,opts:a}}},{key:"submit",value:function(){for(var i in this.pendingInput)if(x(this.pendingInput,i)){var o=this.pendingInput[i],a=o.value,u=o.opts;this.target.setInput(i,a,u)}}}]),r}(Ae);var hv=b(T());function XR(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function yv(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Cu(e){var t=hv.default.extend({priority:"immediate",binding:null,el:null},e);if(t&&typeof t.priority!="undefined")switch(t.priority){case"deferred":case"immediate":case"event":break;default:throw new Error("Unexpected input value mode: '"+t.priority+"'")}return t}var Nu=function e(t){XR(this,e),yv(this,"target",void 0),yv(this,"setInput",function(r,n,i){if(!r)throw"Can't set input with empty name.";var o=Cu(i);this.target.setInput(r,n,o)}),this.target=t};var oe=b(T());function QR(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function gv(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function JR(e,t,r){return t&&gv(e.prototype,t),r&&gv(e,r),e}function bv(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var jv=function(){function e(t,r){QR(this,e),bv(this,"el",void 0),bv(this,"binding",void 0),this.el=t,this.binding=r,r.resize&&(this.onResize=Yf(t,function(n,i){r.resize(t,n,i)}))}return JR(e,[{key:"getId",value:function(){return this.binding.getId(this.el)}},{key:"onValueChange",value:function(r){this.binding.onValueChange(this.el,r)}},{key:"onValueError",value:function(r){this.binding.onValueError(this.el,r)}},{key:"showProgress",value:function(r){this.binding.showProgress(this.el,r)}},{key:"onResize",value:function(){}}]),e}();var Au={};function ZR(e,t,r,n){var i=t.getId(r);if(i){var o=t.getValue(r),a=t.getType(r);a&&(i=i+":"+a);var u={priority:n?"deferred":"immediate",binding:t,el:r};e.setInput(i,o,u)}}function eP(e){for(var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:document.documentElement,r=e.inputs,n=e.inputsRate,i=e.inputBindings,o=i.getBindings(),a={},u=function(f){for(var c=o[f].binding,p=c.find(t)||[],m=function(j){var O=p[j],P=c.getId(O);if(!P||Au[P])return"continue";var w=c.getType(O),E=w?P+":"+w:P;a[E]={value:c.getValue(O),opts:{immediate:!0,binding:c,el:O}};var D=function(){var H=c,ue=O;return function(he){ZR(r,H,ue,he)}}();c.subscribe(O,D),(0,oe.default)(O).data("shiny-input-binding",c),(0,oe.default)(O).addClass("shiny-bound-input");var W=c.getRatePolicy(O);W!==null&&n.setRatePolicy(E,W.policy,W.delay),Au[P]={binding:c,node:O},(0,oe.default)(O).trigger({type:"shiny:bound",binding:c,bindingType:"input"})},d=0;d<p.length;d++)var y=m(d)},l=0;l<o.length;l++)u(l);return a}function tP(e){for(var t=e.sendOutputHiddenState,r=e.maybeAddThemeObserver,n=e.outputBindings,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:document.documentElement,o=(0,oe.default)(i),a=n.getBindings(),u=0;u<a.length;u++)for(var l=a[u].binding,s=l.find(o)||[],f=0;f<s.length;f++){var c=s[f],p=l.getId(c);if(!!p&&!!oe.default.contains(document.documentElement,c)){var m=(0,oe.default)(c);if(!m.hasClass("shiny-bound-output")){r(c);var d=new jv(c,l);Ud(p,d),m.data("shiny-output-binding",d),m.addClass("shiny-bound-output"),m.attr("aria-live")||m.attr("aria-live","polite"),m.trigger({type:"shiny:bound",binding:l,bindingType:"output"})}}}setTimeout(Ce.regular,0),setTimeout(t,0)}function rP(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:document.documentElement,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,r=(0,oe.default)(e).find(".shiny-bound-input").toArray();t&&(0,oe.default)(e).hasClass("shiny-bound-input")&&r.push(e);for(var n=0;n<r.length;n++){var i=r[n],o=(0,oe.default)(i).data("shiny-input-binding");if(!!o){var a=o.getId(i);(0,oe.default)(i).removeClass("shiny-bound-input"),delete Au[a],o.unsubscribe(i),(0,oe.default)(i).trigger({type:"shiny:unbound",binding:o,bindingType:"input"})}}}function nP(e){var t=e.sendOutputHiddenState,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:document.documentElement,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,i=(0,oe.default)(r).find(".shiny-bound-output").toArray();n&&(0,oe.default)(r).hasClass("shiny-bound-output")&&i.push(r);for(var o=0;o<i.length;o++){var a=(0,oe.default)(i[o]),u=a.data("shiny-output-binding");if(!!u){var l=u.binding.getId(i[o]);Hd(l,u),a.removeClass("shiny-bound-output"),a.removeData("shiny-output-binding"),a.trigger({type:"shiny:unbound",binding:u.binding,bindingType:"output"})}}setTimeout(Ce.regular,0),setTimeout(t,0)}function $u(e,t){return tP(e,t),eP(e,t)}function wv(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;rP(t,r),nP(e,t,r)}function _v(e,t){var r=$u(e,t),n=e.inputs;oe.default.each(r,function(i,o){n.setInput(i,o.value,o.opts)}),e.initDeferredIframes()}"use strict";var TP=A(),EP=z(),kP=Qi(),BP=Zv(),Gu="ArrayBuffer",ey=kP[Gu],DP=EP[Gu];TP({global:!0,forced:DP!==ey},{ArrayBuffer:ey});BP(Gu);"use strict";var CP=A(),NP=M(),ty=Qi(),ry=Y(),ny=Vt(),AP=le(),$P=Ao(),Ku=ty.ArrayBuffer,iy=ty.DataView,oy=Ku.prototype.slice,MP=NP(function(){return!new Ku(2).slice(1,void 0).byteLength});CP({target:"ArrayBuffer",proto:!0,unsafe:!0,forced:MP},{slice:function(t,r){if(oy!==void 0&&r===void 0)return oy.call(ry(this),t);for(var n=ry(this).byteLength,i=ny(t,n),o=ny(r===void 0?n:r,n),a=new($P(this,Ku))(AP(o-i)),u=new iy(this),l=new iy(a),s=0;i<o;)l.setUint8(s++,u.getUint8(i++));return a}});var VP=A(),FP=Qi(),LP=Mu();VP({global:!0,forced:!LP},{DataView:FP.DataView});"use strict";var YP=A(),XP=sy().left,QP=mr(),cy=gr(),JP=fy(),ZP=QP("reduce"),eq=!JP&&cy>79&&cy<83;YP({target:"Array",proto:!0,forced:!ZP||eq},{reduce:function(t){return XP(this,t,arguments.length,arguments.length>1?arguments[1]:void 0)}});var AF=b(Se());var I=b(T());function tq(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function py(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function rq(e,t,r){return t&&py(e.prototype,t),r&&py(e,r),e}function ae(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var dy=[],Wu={},Ji=[],Zi={};function L(e,t){if(Wu[e])throw'handler for message of type "'+e+'" already added.';if(typeof t!="function")throw"handler must be a function.";if(t.length!==1)throw"handler must be a function that takes one argument.";dy.push(e),Wu[e]=t}function my(e,t){if(Zi[e]){var r=Ji.indexOf(e);r!==-1&&(Ji.splice(r,1),delete Zi[e])}if(typeof t!="function")throw"handler must be a function.";if(t.length!==1)throw"handler must be a function that takes one argument.";Ji.push(e),Zi[e]=t}var vy=function(){function e(){tq(this,e),ae(this,"$socket",null),ae(this,"config",null),ae(this,"$inputValues",{}),ae(this,"$initialInput",void 0),ae(this,"$bindings",{}),ae(this,"$values",{}),ae(this,"$errors",{}),ae(this,"$conditionals",{}),ae(this,"$pendingMessages",[]),ae(this,"$activeRequests",{}),ae(this,"$nextRequestId",0),ae(this,"$allowReconnect",!1),ae(this,"scheduledReconnect",null),ae(this,"reconnectDelay",function(){var t=0,r=[1500,1500,2500,2500,5500,5500,10500];return{next:function(){var i=t;return i>=r.length&&(i=r.length-1),t++,r[i]},reset:function(){t=0}}}()),ae(this,"progressHandlers",{binding:function(r){var n=r.id,i=this.$bindings[n];i&&((0,I.default)(i.el).trigger({type:"shiny:outputinvalidated",binding:i,name:n}),i.showProgress&&i.showProgress(!0))},open:function(r){if(r.style==="notification")et({html:'<div id="shiny-progress-'.concat(r.id,'" class="shiny-progress-notification">')+'<div class="progress active" style="display: none;"><div class="progress-bar"></div></div><div class="progress-text"><span class="progress-message">message</span> <span class="progress-detail"></span></div></div>',id:r.id,duration:null});else if(r.style==="old"){var n=(0,I.default)(".shiny-progress-container");n.length===0&&(n=(0,I.default)('<div class="shiny-progress-container"></div>'),(0,I.default)(document.body).append(n));var i=(0,I.default)(".shiny-progress.open").length,o=(0,I.default)('<div class="shiny-progress open"><div class="progress active"><div class="progress-bar bar"></div></div><div class="progress-text"><span class="progress-message">message</span><span class="progress-detail"></span></div></div>');o.attr("id",r.id),n.append(o);var a=o.find(".progress");a.css("top",i*a.height()+"px");var u=o.find(".progress-text");u.css("top",3*a.height()+i*u.outerHeight()+"px"),o.hide()}},update:function(r){if(r.style==="notification"){var n=(0,I.default)("#shiny-progress-"+r.id);if(n.length===0)return;typeof r.message!="undefined"&&n.find(".progress-message").text(r.message),typeof r.detail!="undefined"&&n.find(".progress-detail").text(r.detail),typeof r.value!="undefined"&&r.value!==null&&(n.find(".progress").show(),n.find(".progress-bar").width(r.value*100+"%"))}else if(r.style==="old"){var i=(0,I.default)("#"+r.id+".shiny-progress");typeof r.message!="undefined"&&i.find(".progress-message").text(r.message),typeof r.detail!="undefined"&&i.find(".progress-detail").text(r.detail),typeof r.value!="undefined"&&r.value!==null&&(i.find(".progress").show(),i.find(".bar").width(r.value*100+"%")),i.fadeIn()}},close:function(r){if(r.style==="notification")tt(r.id);else if(r.style==="old"){var n=(0,I.default)("#"+r.id+".shiny-progress");n.removeClass("open"),n.fadeOut({complete:function(){n.remove(),(0,I.default)(".shiny-progress").length===0&&(0,I.default)(".shiny-progress-container").remove()}})}}}),this._init()}return rq(e,[{key:"connect",value:function(r){if(this.$socket)throw"Connect was already called on this application object";this.$socket=this.createSocket(),this.$initialInput=r,I.default.extend(this.$inputValues,r),this.$updateConditionals()}},{key:"isConnected",value:function(){return!!this.$socket}},{key:"reconnect",value:function(){if(clearTimeout(this.scheduledReconnect),this.isConnected())throw"Attempted to reconnect, but already connected.";this.$socket=this.createSocket(),this.$initialInput=I.default.extend({},this.$inputValues),this.$updateConditionals()}},{key:"createSocket",value:function(){var r=this,n=Xd()||function(){var a="ws:";window.location.protocol==="https:"&&(a="wss:");var u=window.location.pathname;/^([$#!&-;=?-[\]_a-z~]|%[0-9a-fA-F]{2})+$/.test(u)||(u=encodeURI(u),Ol()&&(u=encodeURI(u))),/\/$/.test(u)||(u+="/"),u+="websocket/";var l=new WebSocket(a+"//"+window.location.host+u);return l.binaryType="arraybuffer",l},i=n(),o=!1;return i.onopen=function(){for(o=!0,(0,I.default)(document).trigger({type:"shiny:connected",socket:i}),r.onConnected(),i.send(JSON.stringify({method:"init",data:r.$initialInput}));r.$pendingMessages.length;){var a=r.$pendingMessages.shift();i.send(a)}},i.onmessage=function(a){r.dispatchMessage(a.data)},i.onclose=function(){o&&((0,I.default)(document).trigger({type:"shiny:disconnected",socket:i}),r.$notifyDisconnected()),r.onDisconnected(),r.$removeSocket()},i}},{key:"sendInput",value:function(r){var n=JSON.stringify({method:"update",data:r});this.$sendMsg(n),I.default.extend(this.$inputValues,r),this.$updateConditionals()}},{key:"$notifyDisconnected",value:function(){window.parent&&window.parent.postMessage("disconnected","*")}},{key:"$removeSocket",value:function(){this.$socket=null}},{key:"$scheduleReconnect",value:function(r){var n=this;this.scheduledReconnect=setTimeout(function(){n.reconnect()},r)}},{key:"onDisconnected",value:function(){var r=(0,I.default)("#shiny-disconnected-overlay");if(r.length===0&&(0,I.default)(document.body).append('<div id="shiny-disconnected-overlay"></div>'),this.$allowReconnect===!0&&this.$socket.allowReconnect===!0||this.$allowReconnect==="force"){var n=this.reconnectDelay.next();Ei(n),this.$scheduleReconnect(n)}}},{key:"onConnected",value:function(){(0,I.default)("#shiny-disconnected-overlay").remove(),ki(),this.reconnectDelay.reset()}},{key:"makeRequest",value:function(r,n,i,o,a){for(var u=this.$nextRequestId;this.$activeRequests[u];)u=(u+1)%1e9;this.$nextRequestId=u+1,this.$activeRequests[u]={onSuccess:i,onError:o};var l=JSON.stringify({method:r,args:n,tag:u});if(a){var s=function(h){var j=new ArrayBuffer(4),O=new DataView(j);return O.setUint32(0,h,!0),j},f=[];f.push(s(16908802));var c=_n([l]);f.push(s(c.size)),f.push(c);for(var p=0;p<a.length;p++){var m=a[p];f.push(s(m.byteLength||m.size||0)),f.push(m)}var d=_n(f);l=d}this.$sendMsg(l)}},{key:"$sendMsg",value:function(r){this.$socket.readyState?this.$socket.send(r):this.$pendingMessages.push(r)}},{key:"receiveError",value:function(r,n){if(this.$errors[r]!==n){this.$errors[r]=n,delete this.$values[r];var i=this.$bindings[r],o=jQuery.Event("shiny:error");o.name=r,o.error=n,o.binding=i,(0,I.default)(i?i.el:document).trigger(o),!o.isDefaultPrevented()&&i&&i.onValueError&&i.onValueError(o.error)}}},{key:"receiveOutput",value:function(r,n){var i=this.$bindings[r],o=jQuery.Event("shiny:value");if(o.name=r,o.value=n,o.binding=i,this.$values[r]===n){(0,I.default)(i?i.el:document).trigger(o);return}return this.$values[r]=n,delete this.$errors[r],(0,I.default)(i?i.el:document).trigger(o),!o.isDefaultPrevented()&&i&&i.onValueChange(o.value),n}},{key:"bindOutput",value:function(r,n){if(!r)throw"Can't bind an element with no ID";if(this.$bindings[r])throw"Duplicate binding for ID "+r;return this.$bindings[r]=n,this.$values[r]!==void 0?n.onValueChange(this.$values[r]):this.$errors[r]!==void 0&&n.onValueError(this.$errors[r]),n}},{key:"unbindOutput",value:function(r,n){return this.$bindings[r]===n?(delete this.$bindings[r],!0):!1}},{key:"_narrowScopeComponent",value:function(r,n){return Object.keys(r).filter(function(i){return i.indexOf(n)===0}).map(function(i){return ae({},i.substring(n.length),r[i])}).reduce(function(i,o){return I.default.extend(i,o)},{})}},{key:"_narrowScope",value:function(r,n){return n?{input:this._narrowScopeComponent(r.input,n),output:this._narrowScopeComponent(r.output,n)}:r}},{key:"$updateConditionals",value:function(){(0,I.default)(document).trigger({type:"shiny:conditional"});var r={};for(var n in this.$inputValues)if(x(this.$inputValues,n)){var i=n.replace(/:.*/,"");r[i]=this.$inputValues[n]}for(var o={input:r,output:this.$values},a=(0,I.default)(document).find("[data-display-if]"),u=0;u<a.length;u++){var l=(0,I.default)(a[u]),s=l.data("data-display-if-func");if(!s){var f=l.attr("data-display-if");s=Xf(f),l.data("data-display-if-func",s)}var c=l.attr("data-ns-prefix"),p=this._narrowScope(o,c),m=s(p),d=l.css("display")!=="none";m!==d&&(m?(l.trigger("show"),l.show(),l.trigger("shown")):(l.trigger("hide"),l.hide(),l.trigger("hidden")))}}},{key:"dispatchMessage",value:function(r){var n={};if(typeof r=="string")n=JSON.parse(r);else{for(var i=new DataView(r,0,1).getUint8(0),o=new DataView(r,1,i),a=[],u=0;u<i;u++)a.push(String.fromCharCode(o.getUint8(u)));var l=a.join("");r=r.slice(i+1),n.custom={},n.custom[l]=r}var s=jQuery.Event("shiny:message");s.message=n,(0,I.default)(document).trigger(s),!s.isDefaultPrevented()&&(this._sendMessagesToHandlers(s.message,Wu,dy),this.$updateConditionals())}},{key:"_sendMessagesToHandlers",value:function(r,n,i){for(var o=0;o<i.length;o++){var a=i[o];x(r,a)&&n[a].call(this,r[a])}}},{key:"_init",value:function(){var r=this;L("values",function(s){for(var f in r.$bindings)x(r.$bindings,f)&&r.$bindings[f].showProgress(!1);for(var c in s)x(s,c)&&r.receiveOutput(c,s[c])}),L("errors",function(s){for(var f in s)x(s,f)&&this.receiveError(f,s[f])}),L("inputMessages",function(s){for(var f=0;f<s.length;f++){var c=(0,I.default)(".shiny-bound-input#"+R(s[f].id)),p=c.data("shiny-input-binding");if(c.length>0){c.attr("aria-live")||c.attr("aria-live","polite");var m=c[0],d=jQuery.Event("shiny:updateinput");d.message=s[f].message,d.binding=p,(0,I.default)(m).trigger(d),d.isDefaultPrevented()||p.receiveMessage(m,d.message)}}}),L("javascript",function(s){Bt(s)}),L("console",function(s){for(var f=0;f<s.length;f++)console.log&&console.log(s[f])}),L("progress",function(s){if(s.type&&s.message){var f=r.progressHandlers[s.type];f&&f.call(r,s.message)}}),L("notification",function(s){if(s.type==="show")et(s.message);else if(s.type==="remove")tt(s.message);else throw"Unkown notification type: "+s.type}),L("modal",function(s){if(s.type==="show")qi(s.message);else if(s.type==="remove")Ti();else throw"Unkown modal type: "+s.type}),L("response",function(s){var f=s.tag,c=r.$activeRequests[f];c&&(delete r.$activeRequests[f],"value"in s?c.onSuccess(s.value):c.onError(s.error))}),L("allowReconnect",function(s){switch(s){case!0:case!1:case"force":r.$allowReconnect=s;break;default:throw"Invalid value for allowReconnect: "+s}}),L("custom",function(s){var f=Gd();f&&f(s),r._sendMessagesToHandlers(s,Zi,Ji)}),L("config",function(s){r.config={workerId:s.workerId,sessionId:s.sessionId},s.user&&Ld(s.user),(0,I.default)(document).trigger("shiny:sessioninitialized")}),L("busy",function(s){s==="busy"?((0,I.default)(document.documentElement).addClass("shiny-busy"),(0,I.default)(document).trigger("shiny:busy")):s==="idle"&&((0,I.default)(document.documentElement).removeClass("shiny-busy"),(0,I.default)(document).trigger("shiny:idle"))}),L("recalculating",function(s){if(x(s,"name")&&x(s,"status")){var f=r.$bindings[s.name];(0,I.default)(f?f.el:null).trigger({type:"shiny:"+s.status})}}),L("reload",function(s){window.location.reload()}),L("shiny-insert-ui",function(s){var f=(0,I.default)(s.selector);f.length===0?(console.warn('The selector you chose ("'+s.selector+'") could not be found in the DOM.'),Kr(s.content.html,(0,I.default)([]).get(0),s.content.deps)):f.each(function(c,p){return _e(p,s.content,s.where),s.multiple})}),L("shiny-remove-ui",function(s){var f=(0,I.default)(s.selector);f.each(function(c,p){return ye(p,!0),(0,I.default)(p).remove(),s.multiple})}),L("frozen",function(s){for(var f=0;f<s.ids.length;f++)zd(s.ids[f])});function n(s){var f=(0,I.default)("#"+R(s));if(f.length===0)throw"There is no tabsetPanel (or navbarPage or navlistPanel) with id equal to '"+s+"'";return f}function i(s){var f=s.attr("data-tabsetid"),c=(0,I.default)("div.tab-content[data-tabsetid='"+R(f)+"']");return c}function o(s,f,c){var p="[data-value='"+R(c)+"']",m=s.find("a"+p),d=m.parent();if(d.length===0)throw"There is no tabPanel (or navbarMenu) with value (or menuName) equal to '"+c+"'";var y=[],h=[];if(m.attr("data-toggle")==="dropdown"){var j=m.find("+ ul.dropdown-menu"),O=j.attr("data-tabsetid"),P=j.find("a[data-toggle='tab']").parent("li");P.each(function(D,W){y.push((0,I.default)(W))});var w="div.tab-pane[id^='tab-"+R(O)+"']",E=f.find(w);E.each(function(D,W){h.push((0,I.default)(W))})}else h.push(f.find("div"+p));return{$liTag:d,$liTags:y,$divTags:h}}L("shiny-insert-tab",function(s){var f=n(s.inputId),c=f,p=i(c),m=f.attr("data-tabsetid"),d=(0,I.default)(s.divTag.html),y=(0,I.default)(s.liTag.html),h=y.find("> a"),j=null,O=null;s.target!==null&&(j=o(c,p,s.target),O=j.$liTag);var P=W();if(P!==null){if(h.attr("data-toggle")==="dropdown")throw"Cannot insert a navbarMenu inside another one";c=P.$tabset,m=P.id,y.removeClass("nav-item").find(".nav-link").removeClass("nav-link").addClass("dropdown-item")}if(h.attr("data-toggle")==="tab"){var w=D(c,m),E="tab-"+m+"-"+w;y.find("> a").attr("href","#"+E),d.attr("id",E)}s.position==="before"?O?O.before(y):c.prepend(y):s.position==="after"&&(O?O.after(y):c.append(y)),_e(y[0],{html:y.html(),deps:s.liTag.deps}),_e(p[0],{html:"",deps:s.divTag.deps},"beforeend"),d.get().forEach(function(H){p[0].appendChild(H),_e(H,H.innerHTML||H.textContent)}),s.select&&y.find("a").tab("show");function D(H,ue){var he=[0];return H.find("> li").each(function(){var ge=(0,I.default)(this).find("> a[data-toggle='tab']");if(ge.length>0){var _t=ge.attr("href").replace(/.*(?=#[^\s]+$)/,""),g=_t.replace("#tab-"+ue+"-","");he.push(Number(g))}}),Math.max.apply(null,he)+1}function W(){if(s.menuName!==null){var H=(0,I.default)("a.dropdown-toggle[data-value='"+R(s.menuName)+"']");if(H.length===0)throw"There is no navbarMenu with menuName equal to '"+s.menuName+"'";var ue=H.find("+ ul.dropdown-menu"),he=ue.attr("data-tabsetid");return{$tabset:ue,id:he}}else if(s.target!==null){var ge=O.parent("ul");if(ge.hasClass("dropdown-menu")){var _t=ge.attr("data-tabsetid");return{$tabset:ge,id:_t}}}return null}});function a(s){var f=s.data("shiny-input-binding");if(!f.getValue(s)){var c=u(s),p=jQuery.Event("shiny:updateinput");p.binding=f,s.trigger(p),f.setValue(s[0],c)}}function u(s){return s.find("li:visible a[data-toggle='tab']").first().attr("data-value")||null}function l(s,f){var c=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;I.default.each(s,function(p,m){p==="$liTag"?f(m):p==="$divTags"?I.default.each(m,function(d,y){f(y)}):c&&p==="$liTags"&&I.default.each(m,function(d,y){f(y)})})}L("shiny-remove-tab",function(s){var f=n(s.inputId),c=i(f),p=o(f,c,s.target);l(p,m),a(f);function m(d){ye(d,!0),d.remove()}}),L("shiny-change-tab-visibility",function(s){var f=n(s.inputId),c=i(f),p=o(f,c,s.target);l(p,m,!0),a(f);function m(d){s.type==="show"?d.css("display",""):s.type==="hide"&&(d.hide(),d.removeClass("active"))}}),L("updateQueryString",function(s){if(s.mode==="replace"){window.history.replaceState(null,null,s.queryString);return}var f=null;if(s.queryString.charAt(0)==="#")f="hash";else if(s.queryString.charAt(0)==="?")f="query";else throw"The 'query' string must start with either '?' (to update the query string) or with '#' (to update the hash).";var c=window.location.pathname,p=window.location.search,m=window.location.hash,d=c;f==="query"?d+=s.queryString:d+=p+s.queryString,window.history.pushState(null,null,d),s.queryString.indexOf("#")!==-1&&(f="hash"),window.location.hash!==m&&(f="hash"),f==="hash"&&(0,I.default)(document).trigger("hashchange")}),L("resetBrush",function(s){Pi(s.brushId)})}},{key:"getTestSnapshotBaseUrl",value:function(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=r.fullUrl,i=n===void 0?!0:n,o=window.location,a="";return i&&(a=o.origin+o.pathname.replace(/\/[^/]*$/,"")),a+="/session/"+encodeURIComponent(this.config.sessionId)+"/dataobj/shinytest?w="+encodeURIComponent(this.config.workerId)+"&nonce="+xn(),a}}]),e}();function yy(e){Fd(e);var t=e.shinyapp=new vy;e.progressHandlers=t.progressHandlers;var r=new Iu(t),n=new Pu(r),i=new Tu(n),o=new ku(i),a=new Du(i),u;(0,B.default)('input[type="submit"], button[type="submit"]').length>0?(u=a,(0,B.default)('input[type="submit"], button[type="submit"]').each(function(){(0,B.default)(this).click(function(g){g.preventDefault(),a.submit()})})):u=o;var l=new Nu(u);e.setInputValue=e.onInputChange=function(g,q,C){var Q=Cu(C);l.setInput(g,q,Q)},e.forgetLastInputValue=function(g){n.forget(g)};var s=e.inputBindings,f=e.outputBindings;function c(){return{inputs:l,inputsRate:o,sendOutputHiddenState:H,maybeAddThemeObserver:j,inputBindings:s,outputBindings:f,initDeferredIframes:hy}}e.bindAll=function(g){_v(c(),g)},e.unbindAll=function(g){var q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;wv(c(),g,q)};function p(){for(var g=arguments.length>0&&arguments[0]!==void 0?arguments[0]:document.documentElement,q=s.getBindings(),C=0;C<q.length;C++){var Q=q[C].binding,Z=Q.find(g);if(Z)for(var ce=0;ce<Z.length;ce++){var _=(0,B.default)(Z[ce]);_.data("_shiny_initialized")||(_.data("_shiny_initialized",!0),Q.initialize(Z[ce]))}}}e.initializeInputs=p;function m(g){var q=(0,B.default)(g),C=q.data("shiny-output-binding");return C?C.getId():null}p(document.documentElement);var d=Ee($u(c(),document.documentElement),function(g){return g.value});(0,B.default)(".shiny-image-output, .shiny-plot-output, .shiny-report-size").each(function(){var g=m(this);(this.offsetWidth!==0||this.offsetHeight!==0)&&(d[".clientdata_output_"+g+"_width"]=this.offsetWidth,d[".clientdata_output_"+g+"_height"]=this.offsetHeight)});function y(g){if(!g)return null;var q=Fe(g,"background-color"),C=q.match(/^rgba\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*\)$/);if(q==="transparent"||C&&parseFloat(C[4])===0){var Q=Fe(g,"background-image");return Q&&Q!=="none"?null:y(g.parentElement)}return q}function h(g){var q=Fe(g,"font-family"),C=Fe(g,"font-size");return{families:q.replace(/"/g,"").split(", "),size:C}}(0,B.default)(".shiny-image-output, .shiny-plot-output, .shiny-report-theme").each(function(){var g=this,q=m(g);d[".clientdata_output_"+q+"_bg"]=y(g),d[".clientdata_output_"+q+"_fg"]=Fe(g,"color"),d[".clientdata_output_"+q+"_accent"]=Pr(g),d[".clientdata_output_"+q+"_font"]=h(g),j(g)});function j(g){if(!!window.MutationObserver){var q=g.classList,C=q.contains("shiny-image-output")||q.contains("shiny-plot-output")||q.contains("shiny-report-theme");if(!!C){var Q=(0,B.default)(g);if(!Q.data("shiny-theme-observer")){var Z=new De(null,function(){return O(g)},100),ce=new MutationObserver(function(){return Z.normalCall()}),_={attributes:!0,attributeFilter:["style","class"]};ce.observe(g,_),Q.data("shiny-theme-observer",ce)}}}}function O(g){if(!g.classList.contains("shiny-output-error")){var q=m(g);l.setInput(".clientdata_output_"+q+"_bg",y(g)),l.setInput(".clientdata_output_"+q+"_fg",Fe(g,"color")),l.setInput(".clientdata_output_"+q+"_accent",Pr(g)),l.setInput(".clientdata_output_"+q+"_font",h(g))}}function P(){(0,B.default)(".shiny-image-output, .shiny-plot-output, .shiny-report-size").each(function(){var g=m(this);(this.offsetWidth!==0||this.offsetHeight!==0)&&(l.setInput(".clientdata_output_"+g+"_width",this.offsetWidth),l.setInput(".clientdata_output_"+g+"_height",this.offsetHeight))}),(0,B.default)(".shiny-image-output, .shiny-plot-output, .shiny-report-theme").each(function(){O(this)}),(0,B.default)(".shiny-bound-output").each(function(){var g=(0,B.default)(this),q=g.data("shiny-output-binding");g.trigger({type:"shiny:visualchange",visible:!w(this),binding:q}),q.onResize()})}Ce.setImageSend(r,P);function w(g){return g===null||g.offsetWidth!==0||g.offsetHeight!==0?!1:Fe(g,"display")==="none"?!0:w(g.parentNode)}var E={};(0,B.default)(".shiny-bound-output").each(function(){var g=m(this);w(this)?d[".clientdata_output_"+g+"_hidden"]=!0:(E[g]=!0,d[".clientdata_output_"+g+"_hidden"]=!1)});function D(){var g={};(0,B.default)(".shiny-bound-output").each(function(){var C=m(this);delete E[C];var Q=w(this),Z={type:"shiny:visualchange",visible:!Q};Q?l.setInput(".clientdata_output_"+C+"_hidden",!0):(g[C]=!0,l.setInput(".clientdata_output_"+C+"_hidden",!1));var ce=(0,B.default)(this);Z.binding=ce.data("shiny-output-binding"),ce.trigger(Z)});for(var q in E)x(E,q)&&l.setInput(".clientdata_output_"+q+"_hidden",!0);E=g}var W=new De(null,D,0);function H(){W.normalCall()}r.lastChanceCallback.push(function(){W.isPending()&&W.immediateCall()});function ue(g,q){for(var C=arguments.length,Q=new Array(C>2?C-2:0),Z=2;Z<C;Z++)Q[Z-2]=arguments[Z];return g=g.split("."),function(ce){for(var _=ce.namespace.split("."),S=0;S<g.length;S++)if(_.indexOf(g[S])===-1)return;q.apply(this,[g,q].concat(Q))}}(0,B.default)(window).resize(mt(500,Ce.regular));var he=["modal","dropdown","tab","tooltip","popover","collapse"];B.default.each(he,function(g,q){(0,B.default)(document.body).on("shown.bs."+q+".sendImageSize","*",ue("bs",Ce.regular)),(0,B.default)(document.body).on("shown.bs."+q+".sendOutputHiddenState hidden.bs."+q+".sendOutputHiddenState","*",ue("bs",H))}),(0,B.default)(document.body).on("shown.sendImageSize","*",Ce.regular),(0,B.default)(document.body).on("shown.sendOutputHiddenState hidden.sendOutputHiddenState","*",H),d[".clientdata_pixelratio"]=Vo(),(0,B.default)(window).resize(function(){l.setInput(".clientdata_pixelratio",Vo())}),d[".clientdata_url_protocol"]=window.location.protocol,d[".clientdata_url_hostname"]=window.location.hostname,d[".clientdata_url_port"]=window.location.port,d[".clientdata_url_pathname"]=window.location.pathname,d[".clientdata_url_search"]=window.location.search,(0,B.default)(window).on("pushstate",function(g){l.setInput(".clientdata_url_search",window.location.search)}),(0,B.default)(window).on("popstate",function(g){l.setInput(".clientdata_url_search",window.location.search)}),d[".clientdata_url_hash_initial"]=window.location.hash,d[".clientdata_url_hash"]=window.location.hash,(0,B.default)(window).on("hashchange",function(g){l.setInput(".clientdata_url_hash",window.location.hash)});var ge=d[".clientdata_singletons"]=(0,B.default)('script[type="application/shiny-singletons"]').text();Hm(ge.split(/,/));var _t=(0,B.default)('script[type="application/html-dependencies"]').text();B.default.each(_t.split(/;/),function(g,q){var C=/\s*^(.+)\[(.+)\]\s*$/.exec(q);C&&mu(C[1],C[2])}),n.reset(d),t.connect(d),(0,B.default)(document).one("shiny:connected",function(){hy()})}function hy(){!window.Shiny||!window.Shiny.shinyapp||!window.Shiny.shinyapp.isConnected()||(0,B.default)(".shiny-frame-deferred").each(function(e,t){var r=(0,B.default)(t);r.removeClass("shiny-frame-deferred"),r.attr("src",r.attr("data-deferred-src")),r.attr("data-deferred-src",null)})}var J;function by(e){J=e,J.version="1.7.1.9001";var t=am(),r=t.inputBindings,n=t.fileInputBinding,i=tv(),o=i.outputBindings;Yd(n),J.$escape=R,J.compareVersion=Zf,J.inputBindings=r,J.InputBinding=V,J.outputBindings=o,J.OutputBinding=ie,J.resetBrush=Pi,J.notifications={show:et,remove:tt},J.modal={show:qi,remove:Ti},J.addCustomMessageHandler=my,J.showReconnectDialog=Ei,J.hideReconnectDialog=ki,J.renderDependencies=du,J.renderContent=_e,J.renderHtml=Kr,(0,gy.default)(function(){setTimeout(function(){yy(J)},1)})}function jy(){var e=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder;return e}function wy(){return window.navigator.userAgent}var eo=b(T());function _y(){(0,eo.default)(document).on("keydown",function(e){if(!(e.which!==114||!e.ctrlKey&&!e.metaKey||e.shiftKey||e.altKey)){var t="reactlog?w="+window.escape(pt().config.workerId)+"&s="+window.escape(pt().config.sessionId);window.open(t),e.preventDefault()}}),(0,eo.default)(document).on("keydown",function(e){if(!!(e.which===115&&(e.ctrlKey||e.metaKey)&&!e.shiftKey&&!e.altKey||e.which===114&&(e.ctrlKey||e.metaKey)&&e.shiftKey&&!e.altKey)){var t="reactlog/mark?w="+window.escape(pt().config.workerId)+"&s="+window.escape(pt().config.sessionId);eo.default.get(t,function(r){if(r==="marked"){var n='<span id="shiny-reactlog-mark-text">Marked time point in reactlog</span>';et({html:n,closeButton:!0})}}).fail(function(){window.open(t)}),e.preventDefault()}})}function xy(){by(Pl()),Il(wy()),Rl(),Zu(),Qu(),Hf(jy()),_y()}xy();})();
//# sourceMappingURL=shiny.min.js.map

shiny/www/shared/shiny.min.css METASEP
/*! shiny 1.7.1.9001 | (c) 2012-2021 RStudio, PBC. | License: GPL-3 | file LICENSE */
pre.shiny-text-output:empty:before{content:" "}pre.shiny-text-output.noplaceholder:empty{margin:0;padding:0;border-width:0;height:0}pre.shiny-text-output{word-wrap:normal}.shiny-image-output img.shiny-scalable,.shiny-plot-output img.shiny-scalable{max-width:100%;max-height:100%}#shiny-disconnected-overlay{position:fixed;top:0;bottom:0;left:0;right:0;background-color:#999;opacity:.5;overflow:hidden;z-index:99998;pointer-events:none}.table.shiny-table>thead>tr>th,.table.shiny-table>thead>tr>td,.table.shiny-table>tbody>tr>th,.table.shiny-table>tbody>tr>td,.table.shiny-table>tfoot>tr>th,.table.shiny-table>tfoot>tr>td{padding-right:12px;padding-left:12px}.shiny-table.spacing-xs>thead>tr>th,.shiny-table.spacing-xs>thead>tr>td,.shiny-table.spacing-xs>tbody>tr>th,.shiny-table.spacing-xs>tbody>tr>td,.shiny-table.spacing-xs>tfoot>tr>th,.shiny-table.spacing-xs>tfoot>tr>td{padding-top:3px;padding-bottom:3px}.shiny-table.spacing-s>thead>tr>th,.shiny-table.spacing-s>thead>tr>td,.shiny-table.spacing-s>tbody>tr>th,.shiny-table.spacing-s>tbody>tr>td,.shiny-table.spacing-s>tfoot>tr>th,.shiny-table.spacing-s>tfoot>tr>td{padding-top:5px;padding-bottom:5px}.shiny-table.spacing-m>thead>tr>th,.shiny-table.spacing-m>thead>tr>td,.shiny-table.spacing-m>tbody>tr>th,.shiny-table.spacing-m>tbody>tr>td,.shiny-table.spacing-m>tfoot>tr>th,.shiny-table.spacing-m>tfoot>tr>td{padding-top:8px;padding-bottom:8px}.shiny-table.spacing-l>thead>tr>th,.shiny-table.spacing-l>thead>tr>td,.shiny-table.spacing-l>tbody>tr>th,.shiny-table.spacing-l>tbody>tr>td,.shiny-table.spacing-l>tfoot>tr>th,.shiny-table.spacing-l>tfoot>tr>td{padding-top:10px;padding-bottom:10px}.shiny-table .NA{color:#909090}.shiny-output-error{color:red;white-space:pre-wrap}.shiny-output-error:before{content:"Error: ";font-weight:bold}.shiny-output-error-validation{color:#888}.shiny-output-error-validation:before{content:"";font-weight:inherit}@supports (-ms-ime-align:auto){.shiny-bound-output{transition:0}}.recalculating{opacity:.3;transition:opacity .25s ease .5s}.slider-animate-container{text-align:right;margin-top:-9px}.slider-animate-button{opacity:.5}.slider-animate-button .pause{display:none}.slider-animate-button.playing .pause{display:inline}.slider-animate-button .play{display:inline}.slider-animate-button.playing .play{display:none}.progress.shiny-file-input-progress{visibility:hidden}.progress.shiny-file-input-progress .progress-bar.bar-danger{transition:none}.shiny-input-container input[type=file]{overflow:hidden;max-width:100%}.shiny-progress-container{position:fixed;top:0px;width:100%;z-index:2000}.shiny-progress .progress{position:absolute;width:100%;top:0px;height:3px;margin:0}.shiny-progress .bar{opacity:.6;transition-duration:.25s}.shiny-progress .progress-text{position:absolute;right:10px;width:240px;background-color:#eef8ff;margin:0;padding:2px 3px;opacity:.85}.shiny-progress .progress-text .progress-message{padding:0 3px;font-weight:bold;font-size:90%}.shiny-progress .progress-text .progress-detail{padding:0 3px;font-size:80%}.shiny-progress-notification .progress{margin-bottom:5px;height:10px}.shiny-progress-notification .progress-text .progress-message{font-weight:bold;font-size:90%}.shiny-progress-notification .progress-text .progress-detail{font-size:80%}.shiny-label-null{display:none}.crosshair{cursor:crosshair}.grabbable{cursor:grab;cursor:-moz-grab;cursor:-webkit-grab}.grabbing{cursor:grabbing;cursor:-moz-grabbing;cursor:-webkit-grabbing}.ns-resize{cursor:ns-resize}.ew-resize{cursor:ew-resize}.nesw-resize{cursor:nesw-resize}.nwse-resize{cursor:nwse-resize}.qt pre,.qt code{font-family:monospace!important}.qt5 .radio input[type=radio],.qt5 .checkbox input[type=checkbox]{margin-top:0}.qtmac input[type=radio],.qtmac input[type=checkbox]{zoom:1.0000001}.selectize-control{margin-bottom:10px}.shiny-frame{border:none}.shiny-flow-layout>div{display:inline-block;vertical-align:top;padding-right:12px;width:220px}.shiny-split-layout{width:100%;white-space:nowrap}.shiny-split-layout>div{display:inline-block;vertical-align:top;box-sizing:border-box;overflow:auto}.shiny-input-panel{padding:6px 8px;margin-top:6px;margin-bottom:6px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:2px}.shiny-input-checkboxgroup label~.shiny-options-group,.shiny-input-radiogroup label~.shiny-options-group{margin-top:-10px}.shiny-input-checkboxgroup.shiny-input-container-inline label~.shiny-options-group,.shiny-input-radiogroup.shiny-input-container-inline label~.shiny-options-group{margin-top:-1px}.shiny-input-container:not(.shiny-input-container-inline){width:300px;max-width:100%}.well .shiny-input-container{width:auto}.shiny-input-container>div>select:not(.selectized){width:100%}#shiny-notification-panel{position:fixed;bottom:0;right:0;background-color:#0000;padding:2px;width:250px;z-index:99999}.shiny-notification{background-color:#e8e8e8;color:#333;border:1px solid #ccc;border-radius:3px;opacity:.85;padding:10px 8px 10px 10px;margin:2px}.shiny-notification-message{color:#31708f;background-color:#d9edf7;border:1px solid #bce8f1}.shiny-notification-warning{color:#8a6d3b;background-color:#fcf8e3;border:1px solid #faebcc}.shiny-notification-error{color:#a94442;background-color:#f2dede;border:1px solid #ebccd1}.shiny-notification-close{float:right;font-weight:bold;font-size:18px;bottom:9px;position:relative;padding-left:4px;color:#444;cursor:default}.shiny-notification-close:hover{color:#000}.shiny-notification-content-action a{color:#337ab7;text-decoration:underline;font-weight:bold}.shiny-file-input-active{box-shadow:inset 0 1px 1px #00000013,0 0 8px #66afe999}.shiny-file-input-over{box-shadow:inset 0 1px 1px #00000013,0 0 8px #4cae4c99}.datepicker table tbody tr td.disabled,.datepicker table tbody tr td.disabled:hover,.datepicker table tbody tr td span.disabled,.datepicker table tbody tr td span.disabled:hover{color:#aaa;cursor:not-allowed}.nav-hidden{display:none!important}

shiny/www/shared/shiny.js.map METASEP
{
  "version": 3,
  "sources": ["globals:jquery", "../../../node_modules/core-js/internals/global.js", "../../../node_modules/core-js/internals/fails.js", "../../../node_modules/core-js/internals/descriptors.js", "../../../node_modules/core-js/internals/object-property-is-enumerable.js", "../../../node_modules/core-js/internals/create-property-descriptor.js", "../../../node_modules/core-js/internals/classof-raw.js", "../../../node_modules/core-js/internals/indexed-object.js", "../../../node_modules/core-js/internals/require-object-coercible.js", "../../../node_modules/core-js/internals/to-indexed-object.js", "../../../node_modules/core-js/internals/is-object.js", "../../../node_modules/core-js/internals/to-primitive.js", "../../../node_modules/core-js/internals/to-object.js", "../../../node_modules/core-js/internals/has.js", "../../../node_modules/core-js/internals/document-create-element.js", "../../../node_modules/core-js/internals/ie8-dom-define.js", "../../../node_modules/core-js/internals/object-get-own-property-descriptor.js", "../../../node_modules/core-js/internals/an-object.js", "../../../node_modules/core-js/internals/object-define-property.js", "../../../node_modules/core-js/internals/create-non-enumerable-property.js", "../../../node_modules/core-js/internals/set-global.js", "../../../node_modules/core-js/internals/shared-store.js", "../../../node_modules/core-js/internals/inspect-source.js", "../../../node_modules/core-js/internals/native-weak-map.js", "../../../node_modules/core-js/internals/is-pure.js", "../../../node_modules/core-js/internals/shared.js", "../../../node_modules/core-js/internals/uid.js", "../../../node_modules/core-js/internals/shared-key.js", "../../../node_modules/core-js/internals/hidden-keys.js", "../../../node_modules/core-js/internals/internal-state.js", "../../../node_modules/core-js/internals/redefine.js", "../../../node_modules/core-js/internals/path.js", "../../../node_modules/core-js/internals/get-built-in.js", "../../../node_modules/core-js/internals/to-integer.js", "../../../node_modules/core-js/internals/to-length.js", "../../../node_modules/core-js/internals/to-absolute-index.js", "../../../node_modules/core-js/internals/array-includes.js", "../../../node_modules/core-js/internals/object-keys-internal.js", "../../../node_modules/core-js/internals/enum-bug-keys.js", "../../../node_modules/core-js/internals/object-get-own-property-names.js", "../../../node_modules/core-js/internals/object-get-own-property-symbols.js", "../../../node_modules/core-js/internals/own-keys.js", "../../../node_modules/core-js/internals/copy-constructor-properties.js", "../../../node_modules/core-js/internals/is-forced.js", "../../../node_modules/core-js/internals/export.js", "../../../node_modules/core-js/internals/array-method-is-strict.js", "../../../node_modules/core-js/internals/whitespaces.js", "../../../node_modules/core-js/internals/string-trim.js", "../../../node_modules/core-js/internals/number-parse-int.js", "../../../node_modules/core-js/internals/regexp-flags.js", "../../../node_modules/core-js/internals/regexp-sticky-helpers.js", "../../../node_modules/core-js/internals/regexp-exec.js", "../../../node_modules/core-js/modules/es.regexp.exec.js", "../../../node_modules/core-js/internals/engine-user-agent.js", "../../../node_modules/core-js/internals/engine-v8-version.js", "../../../node_modules/core-js/internals/native-symbol.js", "../../../node_modules/core-js/internals/use-symbol-as-uid.js", "../../../node_modules/core-js/internals/well-known-symbol.js", "../../../node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js", "../../../node_modules/core-js/internals/string-multibyte.js", "../../../node_modules/core-js/internals/advance-string-index.js", "../../../node_modules/core-js/internals/get-substitution.js", "../../../node_modules/core-js/internals/regexp-exec-abstract.js", "../../../node_modules/core-js/internals/to-string-tag-support.js", "../../../node_modules/core-js/internals/classof.js", "../../../node_modules/core-js/internals/object-to-string.js", "../../../node_modules/core-js/internals/number-parse-float.js", "../../../node_modules/core-js/internals/this-number-value.js", "../../../node_modules/core-js/internals/is-array.js", "../../../node_modules/core-js/internals/create-property.js", "../../../node_modules/core-js/internals/array-species-create.js", "../../../node_modules/core-js/internals/array-method-has-species-support.js", "../../../node_modules/core-js/internals/object-keys.js", "../../../node_modules/core-js/internals/is-regexp.js", "../../../node_modules/core-js/internals/a-function.js", "../../../node_modules/core-js/internals/species-constructor.js", "../../../node_modules/core-js/internals/function-bind-context.js", "../../../node_modules/core-js/internals/array-iteration.js", "../../../node_modules/core-js/internals/object-define-properties.js", "../../../node_modules/core-js/internals/html.js", "../../../node_modules/core-js/internals/object-create.js", "../../../node_modules/core-js/internals/add-to-unscopables.js", "../../../node_modules/core-js/internals/a-possible-prototype.js", "../../../node_modules/core-js/internals/object-set-prototype-of.js", "../../../node_modules/core-js/internals/correct-prototype-getter.js", "../../../node_modules/core-js/internals/object-get-prototype-of.js", "../../../node_modules/core-js/internals/function-bind.js", "../../../node_modules/core-js/internals/object-get-own-property-names-external.js", "../../../node_modules/core-js/internals/well-known-symbol-wrapped.js", "../../../node_modules/core-js/internals/define-well-known-symbol.js", "../../../node_modules/core-js/internals/set-to-string-tag.js", "../../../node_modules/core-js/internals/iterators.js", "../../../node_modules/core-js/internals/iterators-core.js", "../../../node_modules/core-js/internals/create-iterator-constructor.js", "../../../node_modules/core-js/internals/define-iterator.js", "../../../node_modules/core-js/modules/es.array.iterator.js", "../../../node_modules/core-js/internals/dom-iterables.js", "../../../node_modules/core-js/internals/string-trim-forced.js", "../../../node_modules/core-js/internals/inherit-if-required.js", "../../../node_modules/core-js/internals/same-value.js", "../../../node_modules/core-js/internals/array-for-each.js", "../../../node_modules/core-js/internals/object-to-array.js", "../../../node_modules/core-js/internals/iterator-close.js", "../../../node_modules/core-js/internals/call-with-safe-iteration-closing.js", "../../../node_modules/core-js/internals/is-array-iterator-method.js", "../../../node_modules/core-js/internals/get-iterator-method.js", "../../../node_modules/core-js/internals/array-from.js", "../../../node_modules/core-js/internals/check-correctness-of-iteration.js", "../../../node_modules/core-js/internals/array-buffer-native.js", "../../../node_modules/core-js/internals/redefine-all.js", "../../../node_modules/core-js/internals/an-instance.js", "../../../node_modules/core-js/internals/to-index.js", "../../../node_modules/core-js/internals/ieee754.js", "../../../node_modules/core-js/internals/array-fill.js", "../../../node_modules/core-js/internals/array-buffer.js", "../../../node_modules/core-js/internals/set-species.js", "../../../node_modules/core-js/internals/array-reduce.js", "../../../node_modules/core-js/internals/engine-is-node.js", "../../../srcts/src/initialize/disableForm.ts", "../../../srcts/src/initialize/history.ts", "../../../node_modules/core-js/modules/es.array.index-of.js", "../../../node_modules/core-js/modules/es.parse-int.js", "../../../srcts/src/initialize/browser.ts", "../../../srcts/src/utils/browser.ts", "../../../srcts/src/utils/userAgent.ts", "../../../srcts/src/window/libraries.ts", "../../../srcts/src/shiny/index.ts", "../../../node_modules/core-js/modules/es.function.name.js", "../../../srcts/src/utils/index.ts", "../../../node_modules/core-js/modules/es.string.replace.js", "../../../node_modules/core-js/modules/es.object.to-string.js", "../../../node_modules/core-js/modules/es.regexp.to-string.js", "../../../node_modules/core-js/modules/es.parse-float.js", "../../../node_modules/core-js/modules/es.number.to-precision.js", "../../../node_modules/core-js/modules/es.array.concat.js", "../../../node_modules/core-js/modules/es.array.slice.js", "../../../node_modules/core-js/modules/es.array.splice.js", "../../../node_modules/core-js/modules/es.object.keys.js", "../../../node_modules/core-js/modules/es.string.split.js", "../../../srcts/src/window/pixelRatio.ts", "../../../srcts/src/utils/blob.ts", "../../../srcts/src/utils/object.ts", "../../../srcts/src/bindings/registry.ts", "../../../srcts/src/bindings/input/inputBinding.ts", "../../../node_modules/core-js/modules/es.array.find.js", "../../../node_modules/core-js/modules/es.object.set-prototype-of.js", "../../../node_modules/core-js/modules/es.object.get-prototype-of.js", "../../../node_modules/core-js/modules/es.reflect.construct.js", "../../../node_modules/core-js/modules/es.symbol.js", "../../../node_modules/core-js/modules/es.symbol.description.js", "../../../node_modules/core-js/modules/es.symbol.iterator.js", "../../../srcts/src/bindings/input/checkbox.ts", "../../../node_modules/core-js/modules/es.string.iterator.js", "../../../node_modules/core-js/modules/web.dom-collections.iterator.js", "../../../node_modules/core-js/modules/es.string.trim.js", "../../../srcts/src/bindings/input/checkboxgroup.ts", "../../../node_modules/core-js/modules/es.number.constructor.js", "../../../srcts/src/bindings/input/number.ts", "../../../node_modules/core-js/modules/es.reflect.get.js", "../../../node_modules/core-js/modules/es.object.get-own-property-descriptor.js", "../../../srcts/src/bindings/input/text.ts", "../../../srcts/src/bindings/input/password.ts", "../../../srcts/src/bindings/input/textarea.ts", "../../../srcts/src/bindings/input/radio.ts", "../../../srcts/src/bindings/input/date.ts", "../../../srcts/src/bindings/input/slider.ts", "../../../srcts/src/bindings/input/daterange.ts", "../../../srcts/src/bindings/input/selectInput.ts", "../../../srcts/src/utils/eval.ts", "../../../srcts/src/bindings/input/actionbutton.ts", "../../../srcts/src/bindings/input/tabinput.ts", "../../../srcts/src/bindings/input/fileinput.ts", "../../../node_modules/core-js/modules/es.array.map.js", "../../../srcts/src/file/fileProcessor.ts", "../../../srcts/src/events/inputChanged.ts", "../../../srcts/src/shiny/initedMethods.ts", "../../../srcts/src/bindings/input/index.ts", "../../../srcts/src/bindings/output/text.ts", "../../../node_modules/core-js/modules/es.array.join.js", "../../../srcts/src/bindings/output/outputBinding.ts", "../../../srcts/src/bindings/output/downloadlink.ts", "../../../srcts/src/bindings/output/datatable.ts", "../../../node_modules/core-js/modules/es.string.search.js", "../../../srcts/src/time/debounce.ts", "../../../srcts/src/time/invoke.ts", "../../../srcts/src/time/throttle.ts", "../../../srcts/src/bindings/output/html.ts", "../../../node_modules/core-js/modules/es.array.for-each.js", "../../../node_modules/core-js/modules/web.dom-collections.for-each.js", "../../../node_modules/core-js/modules/es.object.entries.js", "../../../srcts/src/shiny/render.ts", "../../../node_modules/core-js/modules/es.array.from.js", "../../../srcts/src/shiny/sendImageSize.ts", "../../../srcts/src/shiny/singletons.ts", "../../../node_modules/core-js/modules/es.array.filter.js", "../../../srcts/src/bindings/output/image.ts", "../../../srcts/src/imageutils/createBrush.ts", "../../../srcts/src/imageutils/initCoordmap.ts", "../../../srcts/src/imageutils/initPanelScales.ts", "../../../srcts/src/imageutils/findbox.ts", "../../../srcts/src/imageutils/shiftToRange.ts", "../../../srcts/src/imageutils/createClickInfo.ts", "../../../srcts/src/imageutils/createHandlers.ts", "../../../srcts/src/imageutils/disableDrag.ts", "../../../srcts/src/bindings/output/index.ts", "../../../srcts/src/imageutils/resetBrush.ts", "../../../srcts/src/shiny/notifications.ts", "../../../node_modules/core-js/modules/es.string.match.js", "../../../srcts/src/shiny/modal.ts", "../../../srcts/src/shiny/reconnectDialog.ts", "../../../srcts/src/shiny/init.ts", "../../../srcts/src/inputPolicies/inputBatchSender.ts", "../../../srcts/src/inputPolicies/inputPolicy.ts", "../../../srcts/src/inputPolicies/inputNoResendDecorator.ts", "../../../srcts/src/inputPolicies/splitInputNameType.ts", "../../../srcts/src/inputPolicies/inputEventDecorator.ts", "../../../srcts/src/inputPolicies/inputRateDecorator.ts", "../../../srcts/src/inputPolicies/inputDeferDecorator.ts", "../../../srcts/src/inputPolicies/inputValidateDecorator.ts", "../../../srcts/src/shiny/bind.ts", "../../../srcts/src/bindings/outputAdapter.ts", "../../../node_modules/core-js/modules/es.array-buffer.constructor.js", "../../../node_modules/core-js/modules/es.array-buffer.slice.js", "../../../node_modules/core-js/modules/es.data-view.js", "../../../node_modules/core-js/modules/es.array.reduce.js", "../../../srcts/src/shiny/shinyapp.ts", "../../../srcts/src/window/blobBuilder.ts", "../../../srcts/src/window/userAgent.ts", "../../../srcts/src/shiny/reactlog.ts", "../../../srcts/src/initialize/index.ts", "../../../srcts/src/index.ts"],
  "sourcesContent": ["module.exports = window.jQuery", "var check = function (it) {\n  return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line es/no-global-this -- safe\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  // eslint-disable-next-line no-restricted-globals -- safe\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || Function('return this')();\n", "module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n", "var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n", "'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n", "module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n", "var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n", "var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n", "// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n  return it;\n};\n", "// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n", "module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n", "var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n  if (!isObject(input)) return input;\n  var fn, val;\n  if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n  if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n  if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n", "var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return Object(requireObjectCoercible(argument));\n};\n", "var toObject = require('../internals/to-object');\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty.call(toObject(it), key);\n};\n", "var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n", "var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a != 7;\n});\n", "var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return $getOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n", "var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n  if (!isObject(it)) {\n    throw TypeError(String(it) + ' is not an object');\n  } return it;\n};\n", "var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return $defineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n", "var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n", "var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n  try {\n    createNonEnumerableProperty(global, key, value);\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n", "var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n", "var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n  store.inspectSource = function (it) {\n    return functionToString.call(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n", "var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n", "module.exports = false;\n", "var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.14.0',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '\u00A9 2021 Denis Pushkarev (zloirock.ru)'\n});\n", "var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n  return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n", "var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n", "module.exports = {};\n", "var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n  var store = shared.state || (shared.state = new WeakMap());\n  var wmget = store.get;\n  var wmhas = store.has;\n  var wmset = store.set;\n  set = function (it, metadata) {\n    if (wmhas.call(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    wmset.call(store, it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return wmget.call(store, it) || {};\n  };\n  has = function (it) {\n    return wmhas.call(store, it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    if (objectHas(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return objectHas(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return objectHas(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n", "var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n  var unsafe = options ? !!options.unsafe : false;\n  var simple = options ? !!options.enumerable : false;\n  var noTargetGet = options ? !!options.noTargetGet : false;\n  var state;\n  if (typeof value == 'function') {\n    if (typeof key == 'string' && !has(value, 'name')) {\n      createNonEnumerableProperty(value, 'name', key);\n    }\n    state = enforceInternalState(value);\n    if (!state.source) {\n      state.source = TEMPLATE.join(typeof key == 'string' ? key : '');\n    }\n  }\n  if (O === global) {\n    if (simple) O[key] = value;\n    else setGlobal(key, value);\n    return;\n  } else if (!unsafe) {\n    delete O[key];\n  } else if (!noTargetGet && O[key]) {\n    simple = true;\n  }\n  if (simple) O[key] = value;\n  else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n  return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n", "var global = require('../internals/global');\n\nmodule.exports = global;\n", "var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n  return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n    : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n", "var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.es/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n  return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n", "var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n", "var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toInteger(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n", "var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare -- NaN check\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.es/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.es/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n", "var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~indexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n", "// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n", "var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n", "// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n", "var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n", "var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n  var keys = ownKeys(source);\n  var defineProperty = definePropertyModule.f;\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n  }\n};\n", "var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value == POLYFILL ? true\n    : value == NATIVE ? false\n    : typeof detection == 'function' ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n", "var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n  options.target      - name of the target object\n  options.global      - target is the global object\n  options.stat        - export as static methods of target\n  options.proto       - export as prototype methods of target\n  options.real        - real prototype method for the `pure` version\n  options.forced      - export even if the native feature is available\n  options.bind        - bind methods to the target, required for the `pure` version\n  options.wrap        - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe      - use the simple assignment of property instead of delete + defineProperty\n  options.sham        - add a flag to not completely full polyfills\n  options.enumerable  - export as enumerable property\n  options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = global;\n  } else if (STATIC) {\n    target = global[TARGET] || setGlobal(TARGET, {});\n  } else {\n    target = (global[TARGET] || {}).prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.noTargetGet) {\n      descriptor = getOwnPropertyDescriptor(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty === typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    // extend global\n    redefine(target, key, sourceProperty, options);\n  }\n};\n", "'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n  var method = [][METHOD_NAME];\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing\n    method.call(null, argument || function () { throw 1; }, 1);\n  });\n};\n", "// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n  '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n", "var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n  return function ($this) {\n    var string = String(requireObjectCoercible($this));\n    if (TYPE & 1) string = string.replace(ltrim, '');\n    if (TYPE & 2) string = string.replace(rtrim, '');\n    return string;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.{ trimLeft, trimStart }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n  start: createMethod(1),\n  // `String.prototype.{ trimRight, trimEnd }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimend\n  end: createMethod(2),\n  // `String.prototype.trim` method\n  // https://tc39.es/ecma262/#sec-string.prototype.trim\n  trim: createMethod(3)\n};\n", "var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseInt = global.parseInt;\nvar hex = /^[+-]?0[Xx]/;\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22;\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n  var S = trim(String(string));\n  return $parseInt(S, (radix >>> 0) || (hex.test(S) ? 16 : 10));\n} : $parseInt;\n", "'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.dotAll) result += 's';\n  if (that.unicode) result += 'u';\n  if (that.sticky) result += 'y';\n  return result;\n};\n", "'use strict';\n\nvar fails = require('./fails');\n\n// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,\n// so we use an intermediate function.\nfunction RE(s, f) {\n  return RegExp(s, f);\n}\n\nexports.UNSUPPORTED_Y = fails(function () {\n  // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\n  var re = RE('a', 'y');\n  re.lastIndex = 2;\n  return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n  // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n  var re = RE('^r', 'gy');\n  re.lastIndex = 2;\n  return re.exec('str') != null;\n});\n", "'use strict';\n/* eslint-disable regexp/no-assertion-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar regexpFlags = require('./regexp-flags');\nvar stickyHelpers = require('./regexp-sticky-helpers');\nvar shared = require('./shared');\n\nvar nativeExec = RegExp.prototype.exec;\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/;\n  var re2 = /b*/g;\n  nativeExec.call(re1, 'a');\n  nativeExec.call(re2, 'a');\n  return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y;\n\nif (PATCH) {\n  patchedExec = function exec(str) {\n    var re = this;\n    var lastIndex, reCopy, match, i;\n    var sticky = UNSUPPORTED_Y && re.sticky;\n    var flags = regexpFlags.call(re);\n    var source = re.source;\n    var charsAdded = 0;\n    var strCopy = str;\n\n    if (sticky) {\n      flags = flags.replace('y', '');\n      if (flags.indexOf('g') === -1) {\n        flags += 'g';\n      }\n\n      strCopy = String(str).slice(re.lastIndex);\n      // Support anchored sticky behavior.\n      if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n        source = '(?: ' + source + ')';\n        strCopy = ' ' + strCopy;\n        charsAdded++;\n      }\n      // ^(? + rx + ) is needed, in combination with some str slicing, to\n      // simulate the 'y' flag.\n      reCopy = new RegExp('^(?:' + source + ')', flags);\n    }\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n    match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n    if (sticky) {\n      if (match) {\n        match.input = match.input.slice(charsAdded);\n        match[0] = match[0].slice(charsAdded);\n        match.index = re.lastIndex;\n        re.lastIndex += match[0].length;\n      } else re.lastIndex = 0;\n    } else if (UPDATES_LAST_INDEX_WRONG && match) {\n      re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n      nativeReplace.call(match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n", "'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n  exec: exec\n});\n", "var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n", "var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  version = match[0] < 4 ? 1 : match[0] + match[1];\n} else if (userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = match[1];\n  }\n}\n\nmodule.exports = version && +version;\n", "/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  var symbol = Symbol();\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n  return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n    !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n", "/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n  && !Symbol.sham\n  && typeof Symbol.iterator == 'symbol';\n", "var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!has(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n    if (NATIVE_SYMBOL && has(Symbol, name)) {\n      WellKnownSymbolsStore[name] = Symbol[name];\n    } else {\n      WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n    }\n  } return WellKnownSymbolsStore[name];\n};\n", "'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar redefine = require('../internals/redefine');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  // #replace needs built-in support for named groups.\n  // #match works fine because it just return the exec results, even if it has\n  // a \"grops\" property.\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  return ''.replace(re, '$<a>') !== '7';\n});\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n  // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n  return 'a'.replace(/./, '$0') === '$0';\n})();\n\nvar REPLACE = wellKnownSymbol('replace');\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n  if (/./[REPLACE]) {\n    return /./[REPLACE]('a', '$0') === '';\n  }\n  return false;\n})();\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n  // eslint-disable-next-line regexp/no-empty-group -- required for testing\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n  var SYMBOL = wellKnownSymbol(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegEp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) != 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n\n    if (KEY === 'split') {\n      // We can't use real regex here since it causes deoptimization\n      // and serious performance degradation in V8\n      // https://github.com/zloirock/core-js/issues/306\n      re = {};\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n      re.flags = '';\n      re[SYMBOL] = /./[SYMBOL];\n    }\n\n    re.exec = function () { execCalled = true; return null; };\n\n    re[SYMBOL]('');\n    return !execCalled;\n  });\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    (KEY === 'replace' && !(\n      REPLACE_SUPPORTS_NAMED_GROUPS &&\n      REPLACE_KEEPS_$0 &&\n      !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n    )) ||\n    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n  ) {\n    var nativeRegExpMethod = /./[SYMBOL];\n    var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n      var $exec = regexp.exec;\n      if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n        if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n          // The native String method already delegates to @@method (this\n          // polyfilled function), leasing to infinite recursion.\n          // We avoid it by directly calling the native @@method method.\n          return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n        }\n        return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n      }\n      return { done: false };\n    }, {\n      REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,\n      REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n    });\n    var stringMethod = methods[0];\n    var regexMethod = methods[1];\n\n    redefine(String.prototype, KEY, stringMethod);\n    redefine(RegExpPrototype, SYMBOL, length == 2\n      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n      // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n      ? function (string, arg) { return regexMethod.call(string, this, arg); }\n      // 21.2.5.6 RegExp.prototype[@@match](string)\n      // 21.2.5.9 RegExp.prototype[@@search](string)\n      : function (string) { return regexMethod.call(string, this); }\n    );\n  }\n\n  if (sham) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n", "var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n  return function ($this, pos) {\n    var S = String(requireObjectCoercible($this));\n    var position = toInteger(pos);\n    var size = S.length;\n    var first, second;\n    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n    first = S.charCodeAt(position);\n    return first < 0xD800 || first > 0xDBFF || position + 1 === size\n      || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n        ? CONVERT_TO_STRING ? S.charAt(position) : first\n        : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.codePointAt` method\n  // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n  codeAt: createMethod(false),\n  // `String.prototype.at` method\n  // https://github.com/mathiasbynens/String.prototype.at\n  charAt: createMethod(true)\n};\n", "'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? charAt(S, index).length : 1);\n};\n", "var toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar replace = ''.replace;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n  var tailPos = position + matched.length;\n  var m = captures.length;\n  var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n  if (namedCaptures !== undefined) {\n    namedCaptures = toObject(namedCaptures);\n    symbols = SUBSTITUTION_SYMBOLS;\n  }\n  return replace.call(replacement, symbols, function (match, ch) {\n    var capture;\n    switch (ch.charAt(0)) {\n      case '$': return '$';\n      case '&': return matched;\n      case '`': return str.slice(0, position);\n      case \"'\": return str.slice(tailPos);\n      case '<':\n        capture = namedCaptures[ch.slice(1, -1)];\n        break;\n      default: // \\d\\d?\n        var n = +ch;\n        if (n === 0) return match;\n        if (n > m) {\n          var f = floor(n / 10);\n          if (f === 0) return match;\n          if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n          return match;\n        }\n        capture = captures[n - 1];\n    }\n    return capture === undefined ? '' : capture;\n  });\n};\n", "var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (typeof exec === 'function') {\n    var result = exec.call(R, S);\n    if (typeof result !== 'object') {\n      throw TypeError('RegExp exec method returned something other than an Object or null');\n    }\n    return result;\n  }\n\n  if (classof(R) !== 'RegExp') {\n    throw TypeError('RegExp#exec called on incompatible receiver');\n  }\n\n  return regexpExec.call(R, S);\n};\n\n", "var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n", "var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n  var O, tag, result;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n    // builtinTag case\n    : CORRECT_ARGUMENTS ? classofRaw(O)\n    // ES3 arguments fallback\n    : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n", "'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n  return '[object ' + classof(this) + ']';\n};\n", "var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseFloat = global.parseFloat;\nvar FORCED = 1 / $parseFloat(whitespaces + '-0') !== -Infinity;\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n  var trimmedString = trim(String(string));\n  var result = $parseFloat(trimmedString);\n  return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n", "var classof = require('../internals/classof-raw');\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = function (value) {\n  if (typeof value != 'number' && classof(value) != 'Number') {\n    throw TypeError('Incorrect invocation');\n  }\n  return +value;\n};\n", "var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(arg) {\n  return classof(arg) == 'Array';\n};\n", "'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n  var propertyKey = toPrimitive(key);\n  if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n  else object[propertyKey] = value;\n};\n", "var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n  var C;\n  if (isArray(originalArray)) {\n    C = originalArray.constructor;\n    // cross-realm fallback\n    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n    else if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n", "var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n  // We can't use this feature detection in V8 since it causes\n  // deoptimization and serious performance degradation\n  // https://github.com/zloirock/core-js/issues/677\n  return V8_VERSION >= 51 || !fails(function () {\n    var array = [];\n    var constructor = array.constructor = {};\n    constructor[SPECIES] = function () {\n      return { foo: 1 };\n    };\n    return array[METHOD_NAME](Boolean).foo !== 1;\n  });\n};\n", "var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n", "var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n", "module.exports = function (it) {\n  if (typeof it != 'function') {\n    throw TypeError(String(it) + ' is not a function');\n  } return it;\n};\n", "var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n", "var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 0: return function () {\n      return fn.call(that);\n    };\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n", "var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterOut }` methods implementation\nvar createMethod = function (TYPE) {\n  var IS_MAP = TYPE == 1;\n  var IS_FILTER = TYPE == 2;\n  var IS_SOME = TYPE == 3;\n  var IS_EVERY = TYPE == 4;\n  var IS_FIND_INDEX = TYPE == 6;\n  var IS_FILTER_OUT = TYPE == 7;\n  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n  return function ($this, callbackfn, that, specificCreate) {\n    var O = toObject($this);\n    var self = IndexedObject(O);\n    var boundFunction = bind(callbackfn, that, 3);\n    var length = toLength(self.length);\n    var index = 0;\n    var create = specificCreate || arraySpeciesCreate;\n    var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_OUT ? create($this, 0) : undefined;\n    var value, result;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      value = self[index];\n      result = boundFunction(value, index, O);\n      if (TYPE) {\n        if (IS_MAP) target[index] = result; // map\n        else if (result) switch (TYPE) {\n          case 3: return true;              // some\n          case 5: return value;             // find\n          case 6: return index;             // findIndex\n          case 2: push.call(target, value); // filter\n        } else switch (TYPE) {\n          case 4: return false;             // every\n          case 7: push.call(target, value); // filterOut\n        }\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.forEach` method\n  // https://tc39.es/ecma262/#sec-array.prototype.foreach\n  forEach: createMethod(0),\n  // `Array.prototype.map` method\n  // https://tc39.es/ecma262/#sec-array.prototype.map\n  map: createMethod(1),\n  // `Array.prototype.filter` method\n  // https://tc39.es/ecma262/#sec-array.prototype.filter\n  filter: createMethod(2),\n  // `Array.prototype.some` method\n  // https://tc39.es/ecma262/#sec-array.prototype.some\n  some: createMethod(3),\n  // `Array.prototype.every` method\n  // https://tc39.es/ecma262/#sec-array.prototype.every\n  every: createMethod(4),\n  // `Array.prototype.find` method\n  // https://tc39.es/ecma262/#sec-array.prototype.find\n  find: createMethod(5),\n  // `Array.prototype.findIndex` method\n  // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n  findIndex: createMethod(6),\n  // `Array.prototype.filterOut` method\n  // https://github.com/tc39/proposal-array-filtering\n  filterOut: createMethod(7)\n};\n", "var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = objectKeys(Properties);\n  var length = keys.length;\n  var index = 0;\n  var key;\n  while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n  return O;\n};\n", "var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n", "var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n  activeXDocument.write(scriptTag(''));\n  activeXDocument.close();\n  var temp = activeXDocument.parentWindow.Object;\n  activeXDocument = null; // avoid memory leak\n  return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = documentCreateElement('iframe');\n  var JS = 'java' + SCRIPT + ':';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  html.appendChild(iframe);\n  // https://github.com/zloirock/core-js/issues/475\n  iframe.src = String(JS);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(scriptTag('document.F=Object'));\n  iframeDocument.close();\n  return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n  try {\n    /* global ActiveXObject -- old IE */\n    activeXDocument = document.domain && new ActiveXObject('htmlfile');\n  } catch (error) { /* ignore */ }\n  NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n  var length = enumBugKeys.length;\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n  return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    EmptyConstructor[PROTOTYPE] = anObject(O);\n    result = new EmptyConstructor();\n    EmptyConstructor[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = NullProtoObject();\n  return Properties === undefined ? result : defineProperties(result, Properties);\n};\n", "var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n  definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n    configurable: true,\n    value: create(null)\n  });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n  ArrayPrototype[UNSCOPABLES][key] = true;\n};\n", "var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n  if (!isObject(it) && it !== null) {\n    throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n  } return it;\n};\n", "/* eslint-disable no-proto -- safe */\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n  var CORRECT_SETTER = false;\n  var test = {};\n  var setter;\n  try {\n    // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n    setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n    setter.call(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    anObject(O);\n    aPossiblePrototype(proto);\n    if (CORRECT_SETTER) setter.call(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n", "var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n", "var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectPrototype : null;\n};\n", "'use strict';\nvar aFunction = require('../internals/a-function');\nvar isObject = require('../internals/is-object');\n\nvar slice = [].slice;\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n  if (!(argsLength in factories)) {\n    for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n    // eslint-disable-next-line no-new-func -- we have no proper alternatives, IE8- only\n    factories[argsLength] = Function('C,a', 'return new C(' + list.join(',') + ')');\n  } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n  var fn = aFunction(this);\n  var partArgs = slice.call(arguments, 1);\n  var boundFunction = function bound(/* args... */) {\n    var args = partArgs.concat(slice.call(arguments));\n    return this instanceof boundFunction ? construct(fn, args.length, args) : fn.apply(that, args);\n  };\n  if (isObject(fn.prototype)) boundFunction.prototype = fn.prototype;\n  return boundFunction;\n};\n", "/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n  ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n  try {\n    return $getOwnPropertyNames(it);\n  } catch (error) {\n    return windowNames.slice();\n  }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && toString.call(it) == '[object Window]'\n    ? getWindowNames(it)\n    : $getOwnPropertyNames(toIndexedObject(it));\n};\n", "var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n", "var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n  var Symbol = path.Symbol || (path.Symbol = {});\n  if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n    value: wrappedWellKnownSymbolModule.f(NAME)\n  });\n};\n", "var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n  if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n    defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n  }\n};\n", "module.exports = {};\n", "'use strict';\nvar fails = require('../internals/fails');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n  arrayIterator = [].keys();\n  // Safari 8 has buggy iterators w/o `next`\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n  else {\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n  }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n  var test = {};\n  // FF44- legacy iterators case\n  return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif ((!IS_PURE || NEW_ITERATOR_PROTOTYPE) && !has(IteratorPrototype, ITERATOR)) {\n  createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n", "'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n  var TO_STRING_TAG = NAME + ' Iterator';\n  IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n  setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n  Iterators[TO_STRING_TAG] = returnThis;\n  return IteratorConstructor;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n  createIteratorConstructor(IteratorConstructor, NAME, next);\n\n  var getIterationMethod = function (KIND) {\n    if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n    if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n    switch (KIND) {\n      case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n      case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n      case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n    } return function () { return new IteratorConstructor(this); };\n  };\n\n  var TO_STRING_TAG = NAME + ' Iterator';\n  var INCORRECT_VALUES_NAME = false;\n  var IterablePrototype = Iterable.prototype;\n  var nativeIterator = IterablePrototype[ITERATOR]\n    || IterablePrototype['@@iterator']\n    || DEFAULT && IterablePrototype[DEFAULT];\n  var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n  var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n  var CurrentIteratorPrototype, methods, KEY;\n\n  // fix native\n  if (anyNativeIterator) {\n    CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n    if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n      if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n        if (setPrototypeOf) {\n          setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n        } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n          createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n        }\n      }\n      // Set @@toStringTag to native iterators\n      setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n      if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n    }\n  }\n\n  // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n  if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n    INCORRECT_VALUES_NAME = true;\n    defaultIterator = function values() { return nativeIterator.call(this); };\n  }\n\n  // define iterator\n  if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n    createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n  }\n  Iterators[NAME] = defaultIterator;\n\n  // export additional methods\n  if (DEFAULT) {\n    methods = {\n      values: getIterationMethod(VALUES),\n      keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n      entries: getIterationMethod(ENTRIES)\n    };\n    if (FORCED) for (KEY in methods) {\n      if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n        redefine(IterablePrototype, KEY, methods[KEY]);\n      }\n    } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n  }\n\n  return methods;\n};\n", "'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n  setInternalState(this, {\n    type: ARRAY_ITERATOR,\n    target: toIndexedObject(iterated), // target\n    index: 0,                          // next index\n    kind: kind                         // kind\n  });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n  var state = getInternalState(this);\n  var target = state.target;\n  var kind = state.kind;\n  var index = state.index++;\n  if (!target || index >= target.length) {\n    state.target = undefined;\n    return { value: undefined, done: true };\n  }\n  if (kind == 'keys') return { value: index, done: false };\n  if (kind == 'values') return { value: target[index], done: false };\n  return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n", "// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n  CSSRuleList: 0,\n  CSSStyleDeclaration: 0,\n  CSSValueList: 0,\n  ClientRectList: 0,\n  DOMRectList: 0,\n  DOMStringList: 0,\n  DOMTokenList: 1,\n  DataTransferItemList: 0,\n  FileList: 0,\n  HTMLAllCollection: 0,\n  HTMLCollection: 0,\n  HTMLFormElement: 0,\n  HTMLSelectElement: 0,\n  MediaList: 0,\n  MimeTypeArray: 0,\n  NamedNodeMap: 0,\n  NodeList: 1,\n  PaintRequestList: 0,\n  Plugin: 0,\n  PluginArray: 0,\n  SVGLengthList: 0,\n  SVGNumberList: 0,\n  SVGPathSegList: 0,\n  SVGPointList: 0,\n  SVGStringList: 0,\n  SVGTransformList: 0,\n  SourceBufferList: 0,\n  StyleSheetList: 0,\n  TextTrackCueList: 0,\n  TextTrackList: 0,\n  TouchList: 0\n};\n", "var fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n  return fails(function () {\n    return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n  });\n};\n", "var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n  var NewTarget, NewTargetPrototype;\n  if (\n    // it can work only with native `setPrototypeOf`\n    setPrototypeOf &&\n    // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n    typeof (NewTarget = dummy.constructor) == 'function' &&\n    NewTarget !== Wrapper &&\n    isObject(NewTargetPrototype = NewTarget.prototype) &&\n    NewTargetPrototype !== Wrapper.prototype\n  ) setPrototypeOf($this, NewTargetPrototype);\n  return $this;\n};\n", "// `SameValue` abstract operation\n// https://tc39.es/ecma262/#sec-samevalue\n// eslint-disable-next-line es/no-object-is -- safe\nmodule.exports = Object.is || function is(x, y) {\n  // eslint-disable-next-line no-self-compare -- NaN check\n  return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n", "'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n  return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n", "var DESCRIPTORS = require('../internals/descriptors');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n  return function (it) {\n    var O = toIndexedObject(it);\n    var keys = objectKeys(O);\n    var length = keys.length;\n    var i = 0;\n    var result = [];\n    var key;\n    while (length > i) {\n      key = keys[i++];\n      if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {\n        result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n      }\n    }\n    return result;\n  };\n};\n\nmodule.exports = {\n  // `Object.entries` method\n  // https://tc39.es/ecma262/#sec-object.entries\n  entries: createMethod(true),\n  // `Object.values` method\n  // https://tc39.es/ecma262/#sec-object.values\n  values: createMethod(false)\n};\n", "var anObject = require('../internals/an-object');\n\nmodule.exports = function (iterator) {\n  var returnMethod = iterator['return'];\n  if (returnMethod !== undefined) {\n    return anObject(returnMethod.call(iterator)).value;\n  }\n};\n", "var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n  try {\n    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n  } catch (error) {\n    iteratorClose(iterator);\n    throw error;\n  }\n};\n", "var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n", "var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n  if (it != undefined) return it[ITERATOR]\n    || it['@@iterator']\n    || Iterators[classof(it)];\n};\n", "'use strict';\nvar bind = require('../internals/function-bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n  var O = toObject(arrayLike);\n  var C = typeof this == 'function' ? this : Array;\n  var argumentsLength = arguments.length;\n  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n  var mapping = mapfn !== undefined;\n  var iteratorMethod = getIteratorMethod(O);\n  var index = 0;\n  var length, result, step, iterator, next, value;\n  if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n  // if the target is not iterable or it's an array with the default iterator - use a simple case\n  if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n    iterator = iteratorMethod.call(O);\n    next = iterator.next;\n    result = new C();\n    for (;!(step = next.call(iterator)).done; index++) {\n      value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n      createProperty(result, index, value);\n    }\n  } else {\n    length = toLength(O.length);\n    result = new C(length);\n    for (;length > index; index++) {\n      value = mapping ? mapfn(O[index], index) : O[index];\n      createProperty(result, index, value);\n    }\n  }\n  result.length = index;\n  return result;\n};\n", "var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var called = 0;\n  var iteratorWithReturn = {\n    next: function () {\n      return { done: !!called++ };\n    },\n    'return': function () {\n      SAFE_CLOSING = true;\n    }\n  };\n  iteratorWithReturn[ITERATOR] = function () {\n    return this;\n  };\n  // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n  Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n  if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n  var ITERATION_SUPPORT = false;\n  try {\n    var object = {};\n    object[ITERATOR] = function () {\n      return {\n        next: function () {\n          return { done: ITERATION_SUPPORT = true };\n        }\n      };\n    };\n    exec(object);\n  } catch (error) { /* empty */ }\n  return ITERATION_SUPPORT;\n};\n", "// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined';\n", "var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n  for (var key in src) redefine(target, key, src[key], options);\n  return target;\n};\n", "module.exports = function (it, Constructor, name) {\n  if (!(it instanceof Constructor)) {\n    throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n  } return it;\n};\n", "var toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n  if (it === undefined) return 0;\n  var number = toInteger(it);\n  var length = toLength(number);\n  if (number !== length) throw RangeError('Wrong length or index');\n  return length;\n};\n", "// IEEE754 conversions based on https://github.com/feross/ieee754\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nvar pack = function (number, mantissaLength, bytes) {\n  var buffer = new Array(bytes);\n  var exponentLength = bytes * 8 - mantissaLength - 1;\n  var eMax = (1 << exponentLength) - 1;\n  var eBias = eMax >> 1;\n  var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n  var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n  var index = 0;\n  var exponent, mantissa, c;\n  number = abs(number);\n  // eslint-disable-next-line no-self-compare -- NaN check\n  if (number != number || number === Infinity) {\n    // eslint-disable-next-line no-self-compare -- NaN check\n    mantissa = number != number ? 1 : 0;\n    exponent = eMax;\n  } else {\n    exponent = floor(log(number) / LN2);\n    if (number * (c = pow(2, -exponent)) < 1) {\n      exponent--;\n      c *= 2;\n    }\n    if (exponent + eBias >= 1) {\n      number += rt / c;\n    } else {\n      number += rt * pow(2, 1 - eBias);\n    }\n    if (number * c >= 2) {\n      exponent++;\n      c /= 2;\n    }\n    if (exponent + eBias >= eMax) {\n      mantissa = 0;\n      exponent = eMax;\n    } else if (exponent + eBias >= 1) {\n      mantissa = (number * c - 1) * pow(2, mantissaLength);\n      exponent = exponent + eBias;\n    } else {\n      mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n      exponent = 0;\n    }\n  }\n  for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);\n  exponent = exponent << mantissaLength | mantissa;\n  exponentLength += mantissaLength;\n  for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);\n  buffer[--index] |= sign * 128;\n  return buffer;\n};\n\nvar unpack = function (buffer, mantissaLength) {\n  var bytes = buffer.length;\n  var exponentLength = bytes * 8 - mantissaLength - 1;\n  var eMax = (1 << exponentLength) - 1;\n  var eBias = eMax >> 1;\n  var nBits = exponentLength - 7;\n  var index = bytes - 1;\n  var sign = buffer[index--];\n  var exponent = sign & 127;\n  var mantissa;\n  sign >>= 7;\n  for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);\n  mantissa = exponent & (1 << -nBits) - 1;\n  exponent >>= -nBits;\n  nBits += mantissaLength;\n  for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);\n  if (exponent === 0) {\n    exponent = 1 - eBias;\n  } else if (exponent === eMax) {\n    return mantissa ? NaN : sign ? -Infinity : Infinity;\n  } else {\n    mantissa = mantissa + pow(2, mantissaLength);\n    exponent = exponent - eBias;\n  } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nmodule.exports = {\n  pack: pack,\n  unpack: unpack\n};\n", "'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n  var O = toObject(this);\n  var length = toLength(O.length);\n  var argumentsLength = arguments.length;\n  var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n  var end = argumentsLength > 2 ? arguments[2] : undefined;\n  var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n  while (endPos > index) O[index++] = value;\n  return O;\n};\n", "'use strict';\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefineAll = require('../internals/redefine-all');\nvar fails = require('../internals/fails');\nvar anInstance = require('../internals/an-instance');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar IEEE754 = require('../internals/ieee754');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar arrayFill = require('../internals/array-fill');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar $DataView = global[DATA_VIEW];\nvar $DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar RangeError = global.RangeError;\n\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\n\nvar packInt8 = function (number) {\n  return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n  return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n  return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar unpackInt32 = function (buffer) {\n  return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packFloat32 = function (number) {\n  return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n  return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key) {\n  defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n  var intIndex = toIndex(index);\n  var store = getInternalState(view);\n  if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n  var bytes = getInternalState(store.buffer).bytes;\n  var start = intIndex + store.byteOffset;\n  var pack = bytes.slice(start, start + count);\n  return isLittleEndian ? pack : pack.reverse();\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n  var intIndex = toIndex(index);\n  var store = getInternalState(view);\n  if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n  var bytes = getInternalState(store.buffer).bytes;\n  var start = intIndex + store.byteOffset;\n  var pack = conversion(+value);\n  for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n  $ArrayBuffer = function ArrayBuffer(length) {\n    anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n    var byteLength = toIndex(length);\n    setInternalState(this, {\n      bytes: arrayFill.call(new Array(byteLength), 0),\n      byteLength: byteLength\n    });\n    if (!DESCRIPTORS) this.byteLength = byteLength;\n  };\n\n  $DataView = function DataView(buffer, byteOffset, byteLength) {\n    anInstance(this, $DataView, DATA_VIEW);\n    anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n    var bufferLength = getInternalState(buffer).byteLength;\n    var offset = toInteger(byteOffset);\n    if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n    byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n    if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n    setInternalState(this, {\n      buffer: buffer,\n      byteLength: byteLength,\n      byteOffset: offset\n    });\n    if (!DESCRIPTORS) {\n      this.buffer = buffer;\n      this.byteLength = byteLength;\n      this.byteOffset = offset;\n    }\n  };\n\n  if (DESCRIPTORS) {\n    addGetter($ArrayBuffer, 'byteLength');\n    addGetter($DataView, 'buffer');\n    addGetter($DataView, 'byteLength');\n    addGetter($DataView, 'byteOffset');\n  }\n\n  redefineAll($DataView[PROTOTYPE], {\n    getInt8: function getInt8(byteOffset) {\n      return get(this, 1, byteOffset)[0] << 24 >> 24;\n    },\n    getUint8: function getUint8(byteOffset) {\n      return get(this, 1, byteOffset)[0];\n    },\n    getInt16: function getInt16(byteOffset /* , littleEndian */) {\n      var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n      return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n    },\n    getUint16: function getUint16(byteOffset /* , littleEndian */) {\n      var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n      return bytes[1] << 8 | bytes[0];\n    },\n    getInt32: function getInt32(byteOffset /* , littleEndian */) {\n      return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n    },\n    getUint32: function getUint32(byteOffset /* , littleEndian */) {\n      return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n    },\n    getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n      return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n    },\n    getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n      return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n    },\n    setInt8: function setInt8(byteOffset, value) {\n      set(this, 1, byteOffset, packInt8, value);\n    },\n    setUint8: function setUint8(byteOffset, value) {\n      set(this, 1, byteOffset, packInt8, value);\n    },\n    setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n      set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n      set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n      set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n    }\n  });\n} else {\n  /* eslint-disable no-new -- required for testing */\n  if (!fails(function () {\n    NativeArrayBuffer(1);\n  }) || !fails(function () {\n    new NativeArrayBuffer(-1);\n  }) || fails(function () {\n    new NativeArrayBuffer();\n    new NativeArrayBuffer(1.5);\n    new NativeArrayBuffer(NaN);\n    return NativeArrayBuffer.name != ARRAY_BUFFER;\n  })) {\n  /* eslint-enable no-new -- required for testing */\n    $ArrayBuffer = function ArrayBuffer(length) {\n      anInstance(this, $ArrayBuffer);\n      return new NativeArrayBuffer(toIndex(length));\n    };\n    var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE] = NativeArrayBuffer[PROTOTYPE];\n    for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n      if (!((key = keys[j++]) in $ArrayBuffer)) {\n        createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n      }\n    }\n    ArrayBufferPrototype.constructor = $ArrayBuffer;\n  }\n\n  // WebKit bug - the same parent prototype for typed arrays and data view\n  if (setPrototypeOf && getPrototypeOf($DataViewPrototype) !== ObjectPrototype) {\n    setPrototypeOf($DataViewPrototype, ObjectPrototype);\n  }\n\n  // iOS Safari 7.x bug\n  var testView = new $DataView(new $ArrayBuffer(2));\n  var $setInt8 = $DataViewPrototype.setInt8;\n  testView.setInt8(0, 2147483648);\n  testView.setInt8(1, 2147483649);\n  if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataViewPrototype, {\n    setInt8: function setInt8(byteOffset, value) {\n      $setInt8.call(this, byteOffset, value << 24 >> 24);\n    },\n    setUint8: function setUint8(byteOffset, value) {\n      $setInt8.call(this, byteOffset, value << 24 >> 24);\n    }\n  }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n  ArrayBuffer: $ArrayBuffer,\n  DataView: $DataView\n};\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n  var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n  var defineProperty = definePropertyModule.f;\n\n  if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n    defineProperty(Constructor, SPECIES, {\n      configurable: true,\n      get: function () { return this; }\n    });\n  }\n};\n", "var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n  return function (that, callbackfn, argumentsLength, memo) {\n    aFunction(callbackfn);\n    var O = toObject(that);\n    var self = IndexedObject(O);\n    var length = toLength(O.length);\n    var index = IS_RIGHT ? length - 1 : 0;\n    var i = IS_RIGHT ? -1 : 1;\n    if (argumentsLength < 2) while (true) {\n      if (index in self) {\n        memo = self[index];\n        index += i;\n        break;\n      }\n      index += i;\n      if (IS_RIGHT ? index < 0 : length <= index) {\n        throw TypeError('Reduce of empty array with no initial value');\n      }\n    }\n    for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n      memo = callbackfn(memo, self[index], index, O);\n    }\n    return memo;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.reduce` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduce\n  left: createMethod(false),\n  // `Array.prototype.reduceRight` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n  right: createMethod(true)\n};\n", "var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n", "import $ from \"jquery\";\n\nfunction disableFormSubmission() {\n  // disable form submissions\n  $(document).on(\"submit\", \"form:not([action])\", function (e) {\n    e.preventDefault();\n  });\n}\n\nexport { disableFormSubmission };", "import $ from \"jquery\";\n\nfunction trackHistory() {\n  var origPushState = window.history.pushState;\n\n  window.history.pushState = function () {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    var result = origPushState.apply(this, args);\n    $(document).trigger(\"pushstate\");\n    return result;\n  };\n}\n\nexport { trackHistory };", "'use strict';\n/* eslint-disable es/no-array-prototype-indexof -- required for testing */\nvar $ = require('../internals/export');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD }, {\n  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n    return NEGATIVE_ZERO\n      // convert -0 to +0\n      ? nativeIndexOf.apply(this, arguments) || 0\n      : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n", "var $ = require('../internals/export');\nvar parseIntImplementation = require('../internals/number-parse-int');\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != parseIntImplementation }, {\n  parseInt: parseIntImplementation\n});\n", "import \"core-js/modules/es.array.index-of.js\";\nimport \"core-js/modules/es.parse-int.js\";\nimport $ from \"jquery\";\nimport { isIE, setIsQt, setIsIE, setIEVersion } from \"../utils/browser\";\nimport { userAgent } from \"../utils/userAgent\";\n\nfunction getIEVersion() {\n  var msie = userAgent.indexOf(\"MSIE \");\n\n  if (isIE() && msie > 0) {\n    // IE 10 or older => return version number\n    return parseInt(userAgent.substring(msie + 5, userAgent.indexOf(\".\", msie)), 10);\n  }\n\n  var trident = userAgent.indexOf(\"Trident/\");\n\n  if (trident > 0) {\n    // IE 11 => return version number\n    var rv = userAgent.indexOf(\"rv:\");\n    return parseInt(userAgent.substring(rv + 3, userAgent.indexOf(\".\", rv)), 10);\n  }\n\n  return -1;\n}\n\nfunction determineBrowserInfo() {\n  // For easy handling of Qt quirks using CSS\n  if (/\\bQt\\//.test(userAgent)) {\n    $(document.documentElement).addClass(\"qt\");\n    setIsQt(true);\n  } else {\n    setIsQt(false);\n  } // For Qt on Mac. Note that the target string as of RStudio 1.4.173\n  // is \"QtWebEngine\" and does not have a trailing slash.\n\n\n  if (/\\bQt/.test(userAgent) && /\\bMacintosh/.test(userAgent)) {\n    $(document.documentElement).addClass(\"qtmac\");\n  } // Enable special treatment for Qt 5 quirks on Linux\n\n\n  if (/\\bQt\\/5/.test(userAgent) && /Linux/.test(userAgent)) {\n    $(document.documentElement).addClass(\"qt5\");\n  } // Detect IE and older (pre-Chromium) Edge\n\n\n  setIsIE(/MSIE|Trident|Edge/.test(userAgent));\n  setIEVersion(getIEVersion());\n}\n\nexport { determineBrowserInfo };", "var isQtVal = false;\nvar isIEVal = false;\nvar versionIE = -1;\n\nfunction setIsQt(isQt) {\n  isQtVal = isQt;\n}\n\nfunction setIsIE(isIE) {\n  isIEVal = isIE;\n}\n\nfunction setIEVersion(versionIE_) {\n  versionIE = versionIE_;\n}\n\nfunction isQt() {\n  return isQtVal;\n}\n\nfunction isIE() {\n  return isIEVal;\n} // (Name existed before TS conversion)\n// eslint-disable-next-line @typescript-eslint/naming-convention\n\n\nfunction IEVersion() {\n  return versionIE;\n}\n\nexport { isQt, isIE, IEVersion, setIsQt, setIsIE, setIEVersion };", "var userAgent;\n\nfunction setUserAgent(userAgent_) {\n  userAgent = userAgent_;\n}\n\nexport { userAgent, setUserAgent };", "function windowShiny() {\n  // Use `unknown` type as we know what we are doing is _dangerous_\n  // Immediately init shiny on the window\n  if (!window[\"Shiny\"]) {\n    window[\"Shiny\"] = {};\n  }\n\n  return window[\"Shiny\"];\n}\n\nexport { windowShiny };", "import $ from \"jquery\";\nimport { InputBinding, OutputBinding } from \"../bindings\";\nimport { resetBrush } from \"../imageutils/resetBrush\";\nimport { $escape, compareVersion } from \"../utils\";\nimport { showNotification, removeNotification } from \"./notifications\";\nimport { showModal, removeModal } from \"./modal\";\nimport { showReconnectDialog, hideReconnectDialog } from \"./reconnectDialog\";\nimport { renderContent, renderDependencies, renderHtml } from \"./render\";\nimport { initShiny } from \"./init\";\nimport { setFileInputBinding } from \"./initedMethods\";\nimport { addCustomMessageHandler } from \"./shinyapp\";\nimport { initInputBindings } from \"../bindings/input\";\nimport { initOutputBindings } from \"../bindings/output\";\nvar windowShiny;\n\nfunction setShiny(windowShiny_) {\n  windowShiny = windowShiny_; // `process.env.SHINY_VERSION` is overwritten to the Shiny version at build time.\n  // During testing, the `Shiny.version` will be `\"development\"`\n\n  windowShiny.version = process.env.SHINY_VERSION || \"development\";\n\n  var _initInputBindings = initInputBindings(),\n      inputBindings = _initInputBindings.inputBindings,\n      fileInputBinding = _initInputBindings.fileInputBinding;\n\n  var _initOutputBindings = initOutputBindings(),\n      outputBindings = _initOutputBindings.outputBindings; // set variable to be retrieved later\n\n\n  setFileInputBinding(fileInputBinding);\n  windowShiny.$escape = $escape;\n  windowShiny.compareVersion = compareVersion;\n  windowShiny.inputBindings = inputBindings;\n  windowShiny.InputBinding = InputBinding;\n  windowShiny.outputBindings = outputBindings;\n  windowShiny.OutputBinding = OutputBinding;\n  windowShiny.resetBrush = resetBrush;\n  windowShiny.notifications = {\n    show: showNotification,\n    remove: removeNotification\n  };\n  windowShiny.modal = {\n    show: showModal,\n    remove: removeModal\n  };\n  windowShiny.addCustomMessageHandler = addCustomMessageHandler;\n  windowShiny.showReconnectDialog = showReconnectDialog;\n  windowShiny.hideReconnectDialog = hideReconnectDialog;\n  windowShiny.renderDependencies = renderDependencies;\n  windowShiny.renderContent = renderContent;\n  windowShiny.renderHtml = renderHtml;\n  $(function () {\n    // Init Shiny a little later than document ready, so user code can\n    // run first (i.e. to register bindings)\n    setTimeout(function () {\n      initShiny(windowShiny);\n    }, 1);\n  });\n}\n\nexport { windowShiny, setShiny };", "var DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n  defineProperty(FunctionPrototype, NAME, {\n    configurable: true,\n    get: function () {\n      try {\n        return FunctionPrototypeToString.call(this).match(nameRE)[1];\n      } catch (error) {\n        return '';\n      }\n    }\n  });\n}\n", "import \"core-js/modules/es.regexp.exec.js\";\nimport \"core-js/modules/es.string.replace.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.regexp.to-string.js\";\nimport \"core-js/modules/es.parse-float.js\";\nimport \"core-js/modules/es.number.to-precision.js\";\nimport \"core-js/modules/es.array.concat.js\";\nimport \"core-js/modules/es.array.slice.js\";\nimport \"core-js/modules/es.array.splice.js\";\nimport \"core-js/modules/es.object.keys.js\";\nimport \"core-js/modules/es.string.split.js\";\nimport \"core-js/modules/es.parse-int.js\";\nimport $ from \"jquery\";\nimport { windowDevicePixelRatio } from \"../window/pixelRatio\";\nimport { makeBlob } from \"./blob\";\nimport { hasOwnProperty } from \"./object\";\n\nfunction escapeHTML(str) {\n  var escaped = {\n    \"&\": \"&amp;\",\n    \"<\": \"&lt;\",\n    \">\": \"&gt;\",\n    // eslint-disable-next-line prettier/prettier\n    \"\\\"\": \"&quot;\",\n    \"'\": \"&#039;\",\n    \"/\": \"&#x2F;\"\n  };\n  return str.replace(/[&<>'\"/]/g, function (m) {\n    return escaped[m];\n  });\n}\n\nfunction randomId() {\n  return Math.floor(0x100000000 + Math.random() * 0xf00000000).toString(16);\n}\n\nfunction strToBool(str) {\n  if (!str || !str.toLowerCase) return undefined;\n\n  switch (str.toLowerCase()) {\n    case \"true\":\n      return true;\n\n    case \"false\":\n      return false;\n\n    default:\n      return undefined;\n  }\n} // A wrapper for getComputedStyle that is compatible with older browsers.\n// This is significantly faster than jQuery's .css() function.\n\n\nfunction getStyle(el, styleProp) {\n  var x = undefined; // @ts-expect-error; Old, IE 5+ attribute only - https://developer.mozilla.org/en-US/docs/Web/API/Element/currentStyle\n\n  if (el.currentStyle) x = el.currentStyle[styleProp];else if (window.getComputedStyle) {\n    // getComputedStyle can return null when we're inside a hidden iframe on\n    // Firefox; don't attempt to retrieve style props in this case.\n    // https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n    var style = document.defaultView.getComputedStyle(el, null);\n    if (style) x = style.getPropertyValue(styleProp);\n  }\n  return x;\n} // Convert a number to a string with leading zeros\n\n\nfunction padZeros(n, digits) {\n  var str = n.toString();\n\n  while (str.length < digits) {\n    str = \"0\" + str;\n  }\n\n  return str;\n} // Round to a specified number of significant digits.\n\n\nfunction roundSignif(x) {\n  var digits = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n  if (digits < 1) throw \"Significant digits must be at least 1.\"; // This converts to a string and back to a number, which is inelegant, but\n  // is less prone to FP rounding error than an alternate method which used\n  // Math.round().\n\n  return parseFloat(x.toPrecision(digits));\n} // Take a string with format \"YYYY-MM-DD\" and return a Date object.\n// IE8 and QTWebKit don't support YYYY-MM-DD, but they support YYYY/MM/DD\n\n\nfunction parseDate(dateString) {\n  var date = new Date(dateString);\n\n  if (date.toString() === \"Invalid Date\") {\n    date = new Date(dateString.replace(/-/g, \"/\"));\n  }\n\n  return date;\n} // Given a Date object, return a string in yyyy-mm-dd format, using the\n// UTC date. This may be a day off from the date in the local time zone.\n\n\nfunction formatDateUTC(date) {\n  if (date instanceof Date) {\n    return date.getUTCFullYear() + \"-\" + padZeros(date.getUTCMonth() + 1, 2) + \"-\" + padZeros(date.getUTCDate(), 2);\n  } else {\n    return null;\n  }\n} // Given an element and a function(width, height), returns a function(). When\n// the output function is called, it calls the input function with the offset\n// width and height of the input element--but only if the size of the element\n// is non-zero and the size is different than the last time the output\n// function was called.\n//\n// Basically we are trying to filter out extraneous calls to func, so that\n// when the window size changes or whatever, we don't run resize logic for\n// elements that haven't actually changed size or aren't visible anyway.\n\n\nfunction makeResizeFilter(el, func) {\n  var lastSize = {};\n  return function () {\n    var size = {\n      w: el.offsetWidth,\n      h: el.offsetHeight\n    };\n    if (size.w === 0 && size.h === 0) return;\n    if (size.w === lastSize.w && size.h === lastSize.h) return;\n    lastSize = size;\n    func(size.w, size.h);\n  };\n}\n\nfunction pixelRatio() {\n  if (windowDevicePixelRatio()) {\n    return Math.round(windowDevicePixelRatio() * 100) / 100;\n  } else {\n    return 1;\n  }\n} // Takes a string expression and returns a function that takes an argument.\n//\n// When the function is executed, it will evaluate that expression using\n// \"with\" on the argument value, and return the result.\n\n\nfunction scopeExprToFunc(expr) {\n  /*jshint evil: true */\n  var exprEscaped = expr.replace(/[\\\\\"']/g, \"\\\\$&\") // eslint-disable-next-line no-control-regex\n  .replace(/\\u0000/g, \"\\\\0\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\") // \\b has a special meaning; need [\\b] to match backspace char.\n  .replace(/[\\b]/g, \"\\\\b\");\n  var func;\n\n  try {\n    // @ts-expect-error; Do not know how to type this _dangerous_ situation\n    func = new Function(\"with (this) {\\n        try {\\n          return (\".concat(expr, \");\\n        } catch (e) {\\n          console.error('Error evaluating expression: \").concat(exprEscaped, \"');\\n          throw e;\\n        }\\n      }\"));\n  } catch (e) {\n    console.error(\"Error parsing expression: \" + expr);\n    throw e;\n  }\n\n  return function (scope) {\n    return func.call(scope);\n  };\n}\n\nfunction asArray(value) {\n  if (value === null || value === undefined) return [];\n  if (Array.isArray(value)) return value;\n  return [value];\n} // We need a stable sorting algorithm for ordering\n// bindings by priority and insertion order.\n\n\nfunction mergeSort(list, sortfunc) {\n  function merge(sortfunc, a, b) {\n    var ia = 0;\n    var ib = 0;\n    var sorted = [];\n\n    while (ia < a.length && ib < b.length) {\n      if (sortfunc(a[ia], b[ib]) <= 0) {\n        sorted.push(a[ia++]);\n      } else {\n        sorted.push(b[ib++]);\n      }\n    }\n\n    while (ia < a.length) {\n      sorted.push(a[ia++]);\n    }\n\n    while (ib < b.length) {\n      sorted.push(b[ib++]);\n    }\n\n    return sorted;\n  } // Don't mutate list argument\n\n\n  list = list.slice(0);\n\n  for (var chunkSize = 1; chunkSize < list.length; chunkSize *= 2) {\n    for (var i = 0; i < list.length; i += chunkSize * 2) {\n      var listA = list.slice(i, i + chunkSize);\n      var listB = list.slice(i + chunkSize, i + chunkSize * 2);\n      var merged = merge(sortfunc, listA, listB);\n      var args = [i, merged.length];\n      Array.prototype.push.apply(args, merged);\n      Array.prototype.splice.apply(list, args);\n    }\n  }\n\n  return list;\n} // Escape jQuery selector metacharacters: !\"#$%&'()*+,./:;<=>?@[\\]^`{|}~\n\n\nvar $escape = function $escape(val) {\n  return val.replace(/([!\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~])/g, \"\\\\$1\");\n}; // Maps a function over an object, preserving keys. Like the mapValues\n// function from lodash.\n\n\nfunction mapValues(obj, f) {\n  var newObj = {};\n\n  for (var _key in obj) {\n    if (hasOwnProperty(obj, _key)) newObj[_key] = f(obj[_key], _key, obj);\n  }\n\n  return newObj;\n} // This is does the same as Number.isNaN, but that function unfortunately does\n// not exist in any version of IE.\n\n\nfunction isnan(x) {\n  return typeof x === \"number\" && isNaN(x);\n} // Binary equality function used by the equal function.\n// (Name existed before TS conversion)\n// eslint-disable-next-line @typescript-eslint/naming-convention\n\n\nfunction _equal(x, y) {\n  if ($.type(x) === \"object\" && $.type(y) === \"object\") {\n    var xo = x;\n    var yo = y;\n    if (Object.keys(xo).length !== Object.keys(yo).length) return false;\n\n    for (var prop in xo) {\n      if (!hasOwnProperty(yo, prop) || !_equal(xo[prop], yo[prop])) return false;\n    }\n\n    return true;\n  } else if ($.type(x) === \"array\" && $.type(y) === \"array\") {\n    var xa = x;\n    var ya = y;\n    if (xa.length !== ya.length) return false;\n\n    for (var i = 0; i < xa.length; i++) {\n      if (!_equal(xa[i], ya[i])) return false;\n    }\n\n    return true;\n  } else {\n    return x === y;\n  }\n} // Structural or \"deep\" equality predicate. Tests two or more arguments for\n// equality, traversing arrays and objects (as determined by $.type) as\n// necessary.\n//\n// Objects other than objects and arrays are tested for equality using ===.\n\n\nfunction equal() {\n  if (arguments.length < 2) throw new Error(\"equal requires at least two arguments.\");\n\n  for (var i = 0; i < arguments.length - 1; i++) {\n    if (!_equal(i < 0 || arguments.length <= i ? undefined : arguments[i], i + 1 < 0 || arguments.length <= i + 1 ? undefined : arguments[i + 1])) return false;\n  }\n\n  return true;\n} // Compare version strings like \"1.0.1\", \"1.4-2\". `op` must be a string like\n// \"==\" or \"<\".\n\n\nvar compareVersion = function compareVersion(a, op, b) {\n  function versionParts(ver) {\n    return (ver + \"\").replace(/-/, \".\").replace(/(\\.0)+[^.]*$/, \"\").split(\".\");\n  }\n\n  function cmpVersion(a, b) {\n    a = versionParts(a);\n    b = versionParts(b);\n    var len = Math.min(a.length, b.length);\n    var cmp;\n\n    for (var i = 0; i < len; i++) {\n      cmp = parseInt(a[i], 10) - parseInt(b[i], 10);\n\n      if (cmp !== 0) {\n        return cmp;\n      }\n    }\n\n    return a.length - b.length;\n  }\n\n  var diff = cmpVersion(a, b);\n  if (op === \"==\") return diff === 0;else if (op === \">=\") return diff >= 0;else if (op === \">\") return diff > 0;else if (op === \"<=\") return diff <= 0;else if (op === \"<\") return diff < 0;else throw \"Unknown operator: \".concat(op);\n};\n\nfunction updateLabel(labelTxt, labelNode) {\n  // Only update if label was specified in the update method\n  if (typeof labelTxt === \"undefined\") return;\n\n  if (labelNode.length !== 1) {\n    throw new Error(\"labelNode must be of length 1\");\n  } // Should the label be empty?\n\n\n  var emptyLabel = Array.isArray(labelTxt) && labelTxt.length === 0;\n\n  if (emptyLabel) {\n    labelNode.addClass(\"shiny-label-null\");\n  } else {\n    labelNode.text(labelTxt);\n    labelNode.removeClass(\"shiny-label-null\");\n  }\n} // Compute the color property of an a tag, scoped within the element\n\n\nfunction getComputedLinkColor(el) {\n  var a = document.createElement(\"a\");\n  a.href = \"/\";\n  var div = document.createElement(\"div\");\n  div.style.setProperty(\"position\", \"absolute\", \"important\");\n  div.style.setProperty(\"top\", \"-1000px\", \"important\");\n  div.style.setProperty(\"left\", \"0\", \"important\");\n  div.style.setProperty(\"width\", \"30px\", \"important\");\n  div.style.setProperty(\"height\", \"10px\", \"important\");\n  div.appendChild(a);\n  el.appendChild(div);\n  var linkColor = window.getComputedStyle(a).getPropertyValue(\"color\");\n  el.removeChild(div);\n  return linkColor;\n}\n\nfunction isBS3() {\n  // @ts-expect-error; Check if `window.bootstrap` exists\n  return !window.bootstrap;\n}\n\nfunction toLowerCase(str) {\n  return str.toLowerCase();\n}\n\nexport { escapeHTML, randomId, strToBool, getStyle, padZeros, roundSignif, parseDate, formatDateUTC, makeResizeFilter, pixelRatio, scopeExprToFunc, asArray, mergeSort, $escape, mapValues, isnan, _equal, equal, compareVersion, updateLabel, getComputedLinkColor, makeBlob, hasOwnProperty, isBS3, toLowerCase };", "'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n  var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n  var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n  var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.es/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = requireObjectCoercible(this);\n      var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n      return replacer !== undefined\n        ? replacer.call(searchValue, O, replaceValue)\n        : nativeReplace.call(String(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n    function (regexp, replaceValue) {\n      if (\n        (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n        (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n      ) {\n        var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n        if (res.done) return res.value;\n      }\n\n      var rx = anObject(regexp);\n      var S = String(this);\n\n      var functionalReplace = typeof replaceValue === 'function';\n      if (!functionalReplace) replaceValue = String(replaceValue);\n\n      var global = rx.global;\n      if (global) {\n        var fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n      var results = [];\n      while (true) {\n        var result = regExpExec(rx, S);\n        if (result === null) break;\n\n        results.push(result);\n        if (!global) break;\n\n        var matchStr = String(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n\n        var matched = String(result[0]);\n        var position = max(min(toInteger(result.index), S.length), 0);\n        var captures = [];\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = [matched].concat(captures, position, S);\n          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n          var replacement = String(replaceValue.apply(undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n      return accumulatedResult + S.slice(nextSourcePosition);\n    }\n  ];\n});\n", "var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n  redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n", "'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n  redefine(RegExp.prototype, TO_STRING, function toString() {\n    var R = anObject(this);\n    var p = String(R.source);\n    var rf = R.flags;\n    var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n    return '/' + p + '/' + f;\n  }, { unsafe: true });\n}\n", "var $ = require('../internals/export');\nvar parseFloatImplementation = require('../internals/number-parse-float');\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat != parseFloatImplementation }, {\n  parseFloat: parseFloatImplementation\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar thisNumberValue = require('../internals/this-number-value');\n\nvar nativeToPrecision = 1.0.toPrecision;\n\nvar FORCED = fails(function () {\n  // IE7-\n  return nativeToPrecision.call(1, undefined) !== '1';\n}) || !fails(function () {\n  // V8 ~ Android 4.3-\n  nativeToPrecision.call({});\n});\n\n// `Number.prototype.toPrecision` method\n// https://tc39.es/ecma262/#sec-number.prototype.toprecision\n$({ target: 'Number', proto: true, forced: FORCED }, {\n  toPrecision: function toPrecision(precision) {\n    return precision === undefined\n      ? nativeToPrecision.call(thisNumberValue(this))\n      : nativeToPrecision.call(thisNumberValue(this), precision);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n  var array = [];\n  array[IS_CONCAT_SPREADABLE] = false;\n  return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n  if (!isObject(O)) return false;\n  var spreadable = O[IS_CONCAT_SPREADABLE];\n  return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  concat: function concat(arg) {\n    var O = toObject(this);\n    var A = arraySpeciesCreate(O, 0);\n    var n = 0;\n    var i, k, length, len, E;\n    for (i = -1, length = arguments.length; i < length; i++) {\n      E = i === -1 ? O : arguments[i];\n      if (isConcatSpreadable(E)) {\n        len = toLength(E.length);\n        if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n      } else {\n        if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        createProperty(A, n++, E);\n      }\n    }\n    A.length = n;\n    return A;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  slice: function slice(start, end) {\n    var O = toIndexedObject(this);\n    var length = toLength(O.length);\n    var k = toAbsoluteIndex(start, length);\n    var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n    // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n    var Constructor, result, n;\n    if (isArray(O)) {\n      Constructor = O.constructor;\n      // cross-realm fallback\n      if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n        Constructor = undefined;\n      } else if (isObject(Constructor)) {\n        Constructor = Constructor[SPECIES];\n        if (Constructor === null) Constructor = undefined;\n      }\n      if (Constructor === Array || Constructor === undefined) {\n        return nativeSlice.call(O, k, fin);\n      }\n    }\n    result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n    for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n    result.length = n;\n    return result;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  splice: function splice(start, deleteCount /* , ...items */) {\n    var O = toObject(this);\n    var len = toLength(O.length);\n    var actualStart = toAbsoluteIndex(start, len);\n    var argumentsLength = arguments.length;\n    var insertCount, actualDeleteCount, A, k, from, to;\n    if (argumentsLength === 0) {\n      insertCount = actualDeleteCount = 0;\n    } else if (argumentsLength === 1) {\n      insertCount = 0;\n      actualDeleteCount = len - actualStart;\n    } else {\n      insertCount = argumentsLength - 2;\n      actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n    }\n    if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n      throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n    }\n    A = arraySpeciesCreate(O, actualDeleteCount);\n    for (k = 0; k < actualDeleteCount; k++) {\n      from = actualStart + k;\n      if (from in O) createProperty(A, k, O[from]);\n    }\n    A.length = actualDeleteCount;\n    if (insertCount < actualDeleteCount) {\n      for (k = actualStart; k < len - actualDeleteCount; k++) {\n        from = k + actualDeleteCount;\n        to = k + insertCount;\n        if (from in O) O[to] = O[from];\n        else delete O[to];\n      }\n      for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n    } else if (insertCount > actualDeleteCount) {\n      for (k = len - actualDeleteCount; k > actualStart; k--) {\n        from = k + actualDeleteCount - 1;\n        to = k + insertCount - 1;\n        if (from in O) O[to] = O[from];\n        else delete O[to];\n      }\n    }\n    for (k = 0; k < insertCount; k++) {\n      O[k + actualStart] = arguments[k + 2];\n    }\n    O.length = len - actualDeleteCount + insertCount;\n    return A;\n  }\n});\n", "var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n  keys: function keys(it) {\n    return nativeKeys(toObject(it));\n  }\n});\n", "'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n  var internalSplit;\n  if (\n    'abbc'.split(/(b)*/)[1] == 'c' ||\n    // eslint-disable-next-line regexp/no-empty-group -- required for testing\n    'test'.split(/(?:)/, -1).length != 4 ||\n    'ab'.split(/(?:ab)*/).length != 2 ||\n    '.'.split(/(.?)(.?)/).length != 4 ||\n    // eslint-disable-next-line regexp/no-assertion-capturing-group, regexp/no-empty-group -- required for testing\n    '.'.split(/()()/).length > 1 ||\n    ''.split(/.?/).length\n  ) {\n    // based on es5-shim implementation, need to rework it\n    internalSplit = function (separator, limit) {\n      var string = String(requireObjectCoercible(this));\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (separator === undefined) return [string];\n      // If `separator` is not a regex, use native split\n      if (!isRegExp(separator)) {\n        return nativeSplit.call(string, separator, lim);\n      }\n      var output = [];\n      var flags = (separator.ignoreCase ? 'i' : '') +\n                  (separator.multiline ? 'm' : '') +\n                  (separator.unicode ? 'u' : '') +\n                  (separator.sticky ? 'y' : '');\n      var lastLastIndex = 0;\n      // Make `global` and avoid `lastIndex` issues by working with a copy\n      var separatorCopy = new RegExp(separator.source, flags + 'g');\n      var match, lastIndex, lastLength;\n      while (match = regexpExec.call(separatorCopy, string)) {\n        lastIndex = separatorCopy.lastIndex;\n        if (lastIndex > lastLastIndex) {\n          output.push(string.slice(lastLastIndex, match.index));\n          if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n          lastLength = match[0].length;\n          lastLastIndex = lastIndex;\n          if (output.length >= lim) break;\n        }\n        if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n      }\n      if (lastLastIndex === string.length) {\n        if (lastLength || !separatorCopy.test('')) output.push('');\n      } else output.push(string.slice(lastLastIndex));\n      return output.length > lim ? output.slice(0, lim) : output;\n    };\n  // Chakra, V8\n  } else if ('0'.split(undefined, 0).length) {\n    internalSplit = function (separator, limit) {\n      return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n    };\n  } else internalSplit = nativeSplit;\n\n  return [\n    // `String.prototype.split` method\n    // https://tc39.es/ecma262/#sec-string.prototype.split\n    function split(separator, limit) {\n      var O = requireObjectCoercible(this);\n      var splitter = separator == undefined ? undefined : separator[SPLIT];\n      return splitter !== undefined\n        ? splitter.call(separator, O, limit)\n        : internalSplit.call(String(O), separator, limit);\n    },\n    // `RegExp.prototype[@@split]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n    //\n    // NOTE: This cannot be properly polyfilled in engines that don't support\n    // the 'y' flag.\n    function (regexp, limit) {\n      var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n      var C = speciesConstructor(rx, RegExp);\n\n      var unicodeMatching = rx.unicode;\n      var flags = (rx.ignoreCase ? 'i' : '') +\n                  (rx.multiline ? 'm' : '') +\n                  (rx.unicode ? 'u' : '') +\n                  (UNSUPPORTED_Y ? 'g' : 'y');\n\n      // ^(? + rx + ) is needed, in combination with some S slicing, to\n      // simulate the 'y' flag.\n      var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n      var p = 0;\n      var q = 0;\n      var A = [];\n      while (q < S.length) {\n        splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n        var z = callRegExpExec(splitter, UNSUPPORTED_Y ? S.slice(q) : S);\n        var e;\n        if (\n          z === null ||\n          (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n        ) {\n          q = advanceStringIndex(S, q, unicodeMatching);\n        } else {\n          A.push(S.slice(p, q));\n          if (A.length === lim) return A;\n          for (var i = 1; i <= z.length - 1; i++) {\n            A.push(z[i]);\n            if (A.length === lim) return A;\n          }\n          q = p = e;\n        }\n      }\n      A.push(S.slice(p));\n      return A;\n    }\n  ];\n}, UNSUPPORTED_Y);\n", "function windowDevicePixelRatio() {\n  return window.devicePixelRatio;\n}\n\nexport { windowDevicePixelRatio };", "import $ from \"jquery\";\nvar blobBuilderClass;\n\nfunction setBlobBuilder(blobBuilderClass_) {\n  blobBuilderClass = blobBuilderClass_;\n  return;\n}\n\nfunction makeBlob(parts) {\n  // Browser compatibility is a mess right now. The code as written works in\n  // a variety of modern browsers, but sadly gives a deprecation warning\n  // message on the console in current versions (as of this writing) of\n  // Chrome.\n  // Safari 6.0 (8536.25) on Mac OS X 10.8.1:\n  // Has Blob constructor but it doesn't work with ArrayBufferView args\n  // Google Chrome 21.0.1180.81 on Xubuntu 12.04:\n  // Has Blob constructor, accepts ArrayBufferView args, accepts ArrayBuffer\n  // but with a deprecation warning message\n  // Firefox 15.0 on Xubuntu 12.04:\n  // Has Blob constructor, accepts both ArrayBuffer and ArrayBufferView args\n  // Chromium 18.0.1025.168 (Developer Build 134367 Linux) on Xubuntu 12.04:\n  // No Blob constructor. Has WebKitBlobBuilder.\n  try {\n    return new Blob(parts);\n  } catch (e) {\n    var blobBuilder = new blobBuilderClass();\n    $.each(parts, function (i, part) {\n      blobBuilder.append(part);\n    });\n    return blobBuilder.getBlob();\n  }\n}\n\nexport { makeBlob, setBlobBuilder };", "function hasOwnProperty(x, y) {\n  return Object.prototype.hasOwnProperty.call(x, y);\n}\n\nexport { hasOwnProperty };", "import \"core-js/modules/es.function.name.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { mergeSort } from \"../utils\";\n\nvar BindingRegistry = /*#__PURE__*/function () {\n  function BindingRegistry() {\n    _classCallCheck(this, BindingRegistry);\n\n    _defineProperty(this, \"name\", void 0);\n\n    _defineProperty(this, \"bindings\", []);\n\n    _defineProperty(this, \"bindingNames\", {});\n  }\n\n  _createClass(BindingRegistry, [{\n    key: \"register\",\n    value: function register(binding, bindingName) {\n      var priority = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n      var bindingObj = {\n        binding: binding,\n        priority: priority\n      };\n      this.bindings.unshift(bindingObj);\n\n      if (bindingName) {\n        this.bindingNames[bindingName] = bindingObj;\n        binding.name = bindingName;\n      }\n    }\n  }, {\n    key: \"setPriority\",\n    value: function setPriority(bindingName, priority) {\n      var bindingObj = this.bindingNames[bindingName];\n      if (!bindingObj) throw \"Tried to set priority on unknown binding \" + bindingName;\n      bindingObj.priority = priority || 0;\n    }\n  }, {\n    key: \"getPriority\",\n    value: function getPriority(bindingName) {\n      var bindingObj = this.bindingNames[bindingName];\n      if (!bindingObj) return false;\n      return bindingObj.priority;\n    }\n  }, {\n    key: \"getBindings\",\n    value: function getBindings() {\n      // Sort the bindings. The ones with higher priority are consulted\n      // first; ties are broken by most-recently-registered.\n      return mergeSort(this.bindings, function (a, b) {\n        return b.priority - a.priority;\n      });\n    }\n  }]);\n\n  return BindingRegistry;\n}();\n\nexport { BindingRegistry };", "function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar InputBinding = /*#__PURE__*/function () {\n  function InputBinding() {\n    _classCallCheck(this, InputBinding);\n\n    _defineProperty(this, \"name\", void 0);\n  }\n\n  _createClass(InputBinding, [{\n    key: \"find\",\n    value: // Returns a jQuery object or element array that contains the\n    // descendants of scope that match this binding\n    function find(scope) {\n      throw \"Not implemented\"; // add so that typescript isn't mad about an unused var\n\n      scope;\n    }\n  }, {\n    key: \"getId\",\n    value: function getId(el) {\n      return el.getAttribute(\"data-input-id\") || el.id;\n    } // Gives the input a type in case the server needs to know it\n    // to deserialize the JSON correctly\n\n  }, {\n    key: \"getType\",\n    value: function getType(el) {\n      return false;\n      el;\n    }\n  }, {\n    key: \"getValue\",\n    value: function getValue(el) {\n      throw \"Not implemented\";\n      el; // unused var\n    } // The callback method takes one argument, whose value is boolean. If true,\n    // allow deferred (debounce or throttle) sending depending on the value of\n    // getRatePolicy. If false, send value immediately. Default behavior is `false`\n\n  }, {\n    key: \"subscribe\",\n    value: function subscribe(el, callback) {\n      // empty\n      el;\n      callback;\n    }\n  }, {\n    key: \"unsubscribe\",\n    value: function unsubscribe(el) {\n      // empty\n      el;\n    } // This is used for receiving messages that tell the input object to do\n    // things, such as setting values (including min, max, and others).\n    // 'data' should be an object with elements corresponding to value, min,\n    // max, etc., as appropriate for the type of input object. It also should\n    // trigger a change event.\n\n  }, {\n    key: \"receiveMessage\",\n    value: function receiveMessage(el, data) {\n      throw \"Not implemented\";\n      el;\n      data;\n    }\n  }, {\n    key: \"getState\",\n    value: function getState(el) {\n      throw \"Not implemented\";\n      el;\n    }\n  }, {\n    key: \"getRatePolicy\",\n    value: function getRatePolicy(el) {\n      return null;\n      el;\n    } // Some input objects need initialization before being bound. This is\n    // called when the document is ready (for statically-added input objects),\n    // and when new input objects are added to the document with\n    // htmlOutputBinding.renderValue() (for dynamically-added input objects).\n    // This is called before the input is bound.\n\n  }, {\n    key: \"initialize\",\n    value: function initialize(el) {\n      //empty\n      el;\n    } // This is called after unbinding the output.\n\n  }, {\n    key: \"dispose\",\n    value: function dispose(el) {\n      //empty\n      el;\n    }\n  }]);\n\n  return InputBinding;\n}(); //// NOTES FOR FUTURE DEV\n// Turn register systemin into something that is intialized for every instance.\n// \"Have a new instance for every item, not an instance that does work on every item\"\n//\n// * Keep register as is for historical purposes\n// make a new register function that would take a class\n// these class could be constructed at build time\n// store the constructed obj on the ele and retrieve\n// Then the classes could store their information within their local class, rather than on the element\n// VERY CLEAN!!!\n// to invoke methods, it would be something like `el.shinyClass.METHOD(x,y,z)`\n// * See https://github.com/rstudio/shinyvalidate/blob/c8becd99c01fac1bac03b50e2140f49fca39e7f4/srcjs/shinyvalidate.js#L157-L167\n// these methods would be added using a new method like `inputBindings.registerClass(ClassObj, name)`\n// things to watch out for:\n// * unbind, then rebind. Maybe we stash the local content.\n// Updates:\n// * Feel free to alter method names on classes. (And make them private)\n//// END NOTES FOR FUTURE DEV\n\n\nexport { InputBinding };", "'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n  find: function find(callbackfn /* , that = undefined */) {\n    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n", "var $ = require('../internals/export');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n$({ target: 'Object', stat: true }, {\n  setPrototypeOf: setPrototypeOf\n});\n", "var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar nativeGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n  getPrototypeOf: function getPrototypeOf(it) {\n    return nativeGetPrototypeOf(toObject(it));\n  }\n});\n\n", "var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar aFunction = require('../internals/a-function');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar bind = require('../internals/function-bind');\nvar fails = require('../internals/fails');\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\n\n// `Reflect.construct` method\n// https://tc39.es/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n  function F() { /* empty */ }\n  return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n  nativeConstruct(function () { /* empty */ });\n});\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n  construct: function construct(Target, args /* , newTarget */) {\n    aFunction(Target);\n    anObject(args);\n    var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n    if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n    if (Target == newTarget) {\n      // w/o altered newTarget, optimization for 0-4 arguments\n      switch (args.length) {\n        case 0: return new Target();\n        case 1: return new Target(args[0]);\n        case 2: return new Target(args[0], args[1]);\n        case 3: return new Target(args[0], args[1], args[2]);\n        case 4: return new Target(args[0], args[1], args[2], args[3]);\n      }\n      // w/o altered newTarget, lot of arguments case\n      var $args = [null];\n      $args.push.apply($args, args);\n      return new (bind.apply(Target, $args))();\n    }\n    // with altered newTarget, not support built-in constructors\n    var proto = newTarget.prototype;\n    var instance = create(isObject(proto) ? proto : Object.prototype);\n    var result = Function.apply.call(Target, instance, args);\n    return isObject(result) ? result : instance;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n  return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n    get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n  })).a != 7;\n}) ? function (O, P, Attributes) {\n  var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n  if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n  nativeDefineProperty(O, P, Attributes);\n  if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n    nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n  }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n  var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n  setInternalState(symbol, {\n    type: SYMBOL,\n    tag: tag,\n    description: description\n  });\n  if (!DESCRIPTORS) symbol.description = description;\n  return symbol;\n};\n\nvar isSymbol = USE_SYMBOL_AS_UID ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n  if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n  anObject(O);\n  var key = toPrimitive(P, true);\n  anObject(Attributes);\n  if (has(AllSymbols, key)) {\n    if (!Attributes.enumerable) {\n      if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n      O[HIDDEN][key] = true;\n    } else {\n      if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n      Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n    } return setSymbolDescriptor(O, key, Attributes);\n  } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n  anObject(O);\n  var properties = toIndexedObject(Properties);\n  var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n  $forEach(keys, function (key) {\n    if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n  });\n  return O;\n};\n\nvar $create = function create(O, Properties) {\n  return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n  var P = toPrimitive(V, true);\n  var enumerable = nativePropertyIsEnumerable.call(this, P);\n  if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n  return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n  var it = toIndexedObject(O);\n  var key = toPrimitive(P, true);\n  if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n  var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n  if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n    descriptor.enumerable = true;\n  }\n  return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n  var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n  });\n  return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n  var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n  var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n      result.push(AllSymbols[key]);\n    }\n  });\n  return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n  $Symbol = function Symbol() {\n    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n    var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n    var tag = uid(description);\n    var setter = function (value) {\n      if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n    };\n    if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n    return wrap(tag, description);\n  };\n\n  redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n    return getInternalState(this).tag;\n  });\n\n  redefine($Symbol, 'withoutSetter', function (description) {\n    return wrap(uid(description), description);\n  });\n\n  propertyIsEnumerableModule.f = $propertyIsEnumerable;\n  definePropertyModule.f = $defineProperty;\n  getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n  getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n  getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n  wrappedWellKnownSymbolModule.f = function (name) {\n    return wrap(wellKnownSymbol(name), name);\n  };\n\n  if (DESCRIPTORS) {\n    // https://github.com/tc39/proposal-Symbol-description\n    nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n      configurable: true,\n      get: function description() {\n        return getInternalState(this).description;\n      }\n    });\n    if (!IS_PURE) {\n      redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n    }\n  }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n  Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n  defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n  // `Symbol.for` method\n  // https://tc39.es/ecma262/#sec-symbol.for\n  'for': function (key) {\n    var string = String(key);\n    if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n    var symbol = $Symbol(string);\n    StringToSymbolRegistry[string] = symbol;\n    SymbolToStringRegistry[symbol] = string;\n    return symbol;\n  },\n  // `Symbol.keyFor` method\n  // https://tc39.es/ecma262/#sec-symbol.keyfor\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n    if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n  },\n  useSetter: function () { USE_SETTER = true; },\n  useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n  // `Object.create` method\n  // https://tc39.es/ecma262/#sec-object.create\n  create: $create,\n  // `Object.defineProperty` method\n  // https://tc39.es/ecma262/#sec-object.defineproperty\n  defineProperty: $defineProperty,\n  // `Object.defineProperties` method\n  // https://tc39.es/ecma262/#sec-object.defineproperties\n  defineProperties: $defineProperties,\n  // `Object.getOwnPropertyDescriptor` method\n  // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n  // `Object.getOwnPropertyNames` method\n  // https://tc39.es/ecma262/#sec-object.getownpropertynames\n  getOwnPropertyNames: $getOwnPropertyNames,\n  // `Object.getOwnPropertySymbols` method\n  // https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n  getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n  getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n    return getOwnPropertySymbolsModule.f(toObject(it));\n  }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.es/ecma262/#sec-json.stringify\nif ($stringify) {\n  var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n    var symbol = $Symbol();\n    // MS Edge converts symbol values to JSON as {}\n    return $stringify([symbol]) != '[null]'\n      // WebKit converts symbol values to JSON as null\n      || $stringify({ a: symbol }) != '{}'\n      // V8 throws on boxed symbols\n      || $stringify(Object(symbol)) != '{}';\n  });\n\n  $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n    // eslint-disable-next-line no-unused-vars -- required for `.length`\n    stringify: function stringify(it, replacer, space) {\n      var args = [it];\n      var index = 1;\n      var $replacer;\n      while (arguments.length > index) args.push(arguments[index++]);\n      $replacer = replacer;\n      if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n      if (!isArray(replacer)) replacer = function (key, value) {\n        if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n        if (!isSymbol(value)) return value;\n      };\n      args[1] = replacer;\n      return $stringify.apply(null, args);\n    }\n  });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n  createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n", "// `Symbol.prototype.description` getter\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar has = require('../internals/has');\nvar isObject = require('../internals/is-object');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n  // Safari 12 bug\n  NativeSymbol().description !== undefined\n)) {\n  var EmptyStringDescriptionStore = {};\n  // wrap Symbol constructor for correct work with undefined description\n  var SymbolWrapper = function Symbol() {\n    var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n    var result = this instanceof SymbolWrapper\n      ? new NativeSymbol(description)\n      // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n      : description === undefined ? NativeSymbol() : NativeSymbol(description);\n    if (description === '') EmptyStringDescriptionStore[result] = true;\n    return result;\n  };\n  copyConstructorProperties(SymbolWrapper, NativeSymbol);\n  var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n  symbolPrototype.constructor = SymbolWrapper;\n\n  var symbolToString = symbolPrototype.toString;\n  var native = String(NativeSymbol('test')) == 'Symbol(test)';\n  var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n  defineProperty(symbolPrototype, 'description', {\n    configurable: true,\n    get: function description() {\n      var symbol = isObject(this) ? this.valueOf() : this;\n      var string = symbolToString.call(symbol);\n      if (has(EmptyStringDescriptionStore, symbol)) return '';\n      var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n      return desc === '' ? undefined : desc;\n    }\n  });\n\n  $({ global: true, forced: true }, {\n    Symbol: SymbolWrapper\n  });\n}\n", "var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport $ from \"jquery\";\nimport { InputBinding } from \"./inputBinding\";\nimport { hasOwnProperty } from \"../../utils\";\n\nvar CheckboxInputBinding = /*#__PURE__*/function (_InputBinding) {\n  _inherits(CheckboxInputBinding, _InputBinding);\n\n  var _super = _createSuper(CheckboxInputBinding);\n\n  function CheckboxInputBinding() {\n    _classCallCheck(this, CheckboxInputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(CheckboxInputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find('input[type=\"checkbox\"]');\n    }\n  }, {\n    key: \"getValue\",\n    value: function getValue(el) {\n      return el.checked;\n    }\n  }, {\n    key: \"setValue\",\n    value: function setValue(el, value) {\n      el.checked = value;\n    }\n  }, {\n    key: \"subscribe\",\n    value: function subscribe(el, callback) {\n      $(el).on(\"change.checkboxInputBinding\", function () {\n        callback(true);\n      });\n    }\n  }, {\n    key: \"unsubscribe\",\n    value: function unsubscribe(el) {\n      $(el).off(\".checkboxInputBinding\");\n    }\n  }, {\n    key: \"getState\",\n    value: function getState(el) {\n      return {\n        label: $(el).parent().find(\"span\").text(),\n        value: el.checked\n      };\n    }\n  }, {\n    key: \"receiveMessage\",\n    value: function receiveMessage(el, data) {\n      if (hasOwnProperty(data, \"value\")) el.checked = data.value; // checkboxInput()'s label works different from other\n      // input labels...the label container should always exist\n\n      if (hasOwnProperty(data, \"label\")) $(el).parent().find(\"span\").text(data.label);\n      $(el).trigger(\"change\");\n    }\n  }]);\n\n  return CheckboxInputBinding;\n}(InputBinding);\n\nexport { CheckboxInputBinding };", "'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n  setInternalState(this, {\n    type: STRING_ITERATOR,\n    string: String(iterated),\n    index: 0\n  });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n  var state = getInternalState(this);\n  var string = state.string;\n  var index = state.index;\n  var point;\n  if (index >= string.length) return { value: undefined, done: true };\n  point = charAt(string, index);\n  state.index += point.length;\n  return { value: point, done: false };\n});\n", "var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  var Collection = global[COLLECTION_NAME];\n  var CollectionPrototype = Collection && Collection.prototype;\n  if (CollectionPrototype) {\n    // some Chrome versions have non-configurable methods on DOMTokenList\n    if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n      createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n    } catch (error) {\n      CollectionPrototype[ITERATOR] = ArrayValues;\n    }\n    if (!CollectionPrototype[TO_STRING_TAG]) {\n      createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n    }\n    if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n      // some Chrome versions have non-configurable methods on DOMTokenList\n      if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n        createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n      } catch (error) {\n        CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n      }\n    }\n  }\n}\n", "'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n  trim: function trim() {\n    return $trim(this);\n  }\n});\n", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.string.trim.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\nimport $ from \"jquery\";\nimport { InputBinding } from \"./inputBinding\";\nimport { $escape, hasOwnProperty, updateLabel } from \"../../utils\";\n\n// Get the DOM element that contains the top-level label\nfunction getLabelNode(el) {\n  return $(el).find('label[for=\"' + $escape(el.id) + '\"]');\n} // Given an input DOM object, get the associated label. Handles labels\n// that wrap the input as well as labels associated with 'for' attribute.\n\n\nfunction getLabel(obj) {\n  // If <label><input /><span>label text</span></label>\n  if (obj.parentNode.tagName === \"LABEL\") {\n    return $(obj.parentNode).find(\"span\").text().trim();\n  }\n\n  return null;\n} // Given an input DOM object, set the associated label. Handles labels\n// that wrap the input as well as labels associated with 'for' attribute.\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\n\nfunction setLabel(obj, value) {\n  // If <label><input /><span>label text</span></label>\n  if (obj.parentNode.tagName === \"LABEL\") {\n    $(obj.parentNode).find(\"span\").text(value);\n  }\n\n  return null;\n}\n\nvar CheckboxGroupInputBinding = /*#__PURE__*/function (_InputBinding) {\n  _inherits(CheckboxGroupInputBinding, _InputBinding);\n\n  var _super = _createSuper(CheckboxGroupInputBinding);\n\n  function CheckboxGroupInputBinding() {\n    _classCallCheck(this, CheckboxGroupInputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(CheckboxGroupInputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find(\".shiny-input-checkboxgroup\");\n    }\n  }, {\n    key: \"getValue\",\n    value: function getValue(el) {\n      // Select the checkbox objects that have name equal to the grouping div's id\n      var $objs = $('input:checkbox[name=\"' + $escape(el.id) + '\"]:checked');\n      var values = new Array($objs.length);\n\n      for (var i = 0; i < $objs.length; i++) {\n        values[i] = $objs[i].value;\n      }\n\n      return values;\n    }\n  }, {\n    key: \"setValue\",\n    value: function setValue(el, value) {\n      // Clear all checkboxes\n      $('input:checkbox[name=\"' + $escape(el.id) + '\"]').prop(\"checked\", false); // Accept array\n\n      if (value instanceof Array) {\n        for (var i = 0; i < value.length; i++) {\n          $('input:checkbox[name=\"' + $escape(el.id) + '\"][value=\"' + $escape(value[i]) + '\"]').prop(\"checked\", true);\n        } // Else assume it's a single value\n\n      } else {\n        $('input:checkbox[name=\"' + $escape(el.id) + '\"][value=\"' + $escape(value) + '\"]').prop(\"checked\", true);\n      }\n    }\n  }, {\n    key: \"getState\",\n    value: function getState(el) {\n      var $objs = $('input:checkbox[name=\"' + $escape(el.id) + '\"]'); // Store options in an array of objects, each with with value and label\n\n      var options = new Array($objs.length);\n\n      for (var i = 0; i < options.length; i++) {\n        options[i] = {\n          value: $objs[i].value,\n          label: getLabel($objs[i])\n        };\n      }\n\n      return {\n        label: getLabelNode(el).text(),\n        value: this.getValue(el),\n        options: options\n      };\n    }\n  }, {\n    key: \"receiveMessage\",\n    value: function receiveMessage(el, data) {\n      var $el = $(el); // This will replace all the options\n\n      if (hasOwnProperty(data, \"options\")) {\n        // Clear existing options and add each new one\n        $el.find(\"div.shiny-options-group\").remove(); // Backward compatibility: for HTML generated by shinybootstrap2 package\n\n        $el.find(\"label.checkbox\").remove();\n        $el.append(data.options);\n      }\n\n      if (hasOwnProperty(data, \"value\")) this.setValue(el, data.value);\n      updateLabel(data.label, getLabelNode(el));\n      $(el).trigger(\"change\");\n    }\n  }, {\n    key: \"subscribe\",\n    value: function subscribe(el, callback) {\n      $(el).on(\"change.checkboxGroupInputBinding\", function () {\n        callback(false);\n      });\n    }\n  }, {\n    key: \"unsubscribe\",\n    value: function unsubscribe(el) {\n      $(el).off(\".checkboxGroupInputBinding\");\n    }\n  }]);\n\n  return CheckboxGroupInputBinding;\n}(InputBinding);\n\nexport { CheckboxGroupInputBinding };", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof-raw');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.es/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n  var it = toPrimitive(argument, false);\n  var first, third, radix, maxCode, digits, length, index, code;\n  if (typeof it == 'string' && it.length > 2) {\n    it = trim(it);\n    first = it.charCodeAt(0);\n    if (first === 43 || first === 45) {\n      third = it.charCodeAt(2);\n      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n    } else if (first === 48) {\n      switch (it.charCodeAt(1)) {\n        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n        default: return +it;\n      }\n      digits = it.slice(2);\n      length = digits.length;\n      for (index = 0; index < length; index++) {\n        code = digits.charCodeAt(index);\n        // parseInt parses a string to a first unavailable symbol\n        // but ToNumber should return NaN if a string contains unavailable symbols\n        if (code < 48 || code > maxCode) return NaN;\n      } return parseInt(digits, radix);\n    }\n  } return +it;\n};\n\n// `Number` constructor\n// https://tc39.es/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n  var NumberWrapper = function Number(value) {\n    var it = arguments.length < 1 ? 0 : value;\n    var dummy = this;\n    return dummy instanceof NumberWrapper\n      // check on 1..constructor(foo) case\n      && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n        ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n  };\n  for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n    // ES3:\n    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n    // ES2015 (in case, if modules with ES2015 Number statics required before):\n    'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n    'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,' +\n    // ESNext\n    'fromString,range'\n  ).split(','), j = 0, key; keys.length > j; j++) {\n    if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n      defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n    }\n  }\n  NumberWrapper.prototype = NumberPrototype;\n  NumberPrototype.constructor = NumberWrapper;\n  redefine(global, NUMBER, NumberWrapper);\n}\n", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.number.constructor.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\nimport $ from \"jquery\";\nimport { $escape, hasOwnProperty, updateLabel } from \"../../utils\";\nimport { TextInputBindingBase } from \"./text\";\n\nfunction getLabelNode(el) {\n  return $(el).parent().find('label[for=\"' + $escape(el.id) + '\"]');\n}\n\nvar NumberInputBinding = /*#__PURE__*/function (_TextInputBindingBase) {\n  _inherits(NumberInputBinding, _TextInputBindingBase);\n\n  var _super = _createSuper(NumberInputBinding);\n\n  function NumberInputBinding() {\n    _classCallCheck(this, NumberInputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(NumberInputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find('input[type=\"number\"]');\n    }\n  }, {\n    key: \"getValue\",\n    value: function getValue(el) {\n      var numberVal = $(el).val();\n\n      if (typeof numberVal == \"string\") {\n        if (/^\\s*$/.test(numberVal)) // Return null if all whitespace\n          return null;\n      } // If valid Javascript number string, coerce to number\n\n\n      var numberValue = Number(numberVal);\n\n      if (!isNaN(numberValue)) {\n        return numberValue;\n      }\n\n      return numberVal; // If other string like \"1e6\", send it unchanged\n    }\n  }, {\n    key: \"setValue\",\n    value: function setValue(el, value) {\n      el.value = \"\" + value;\n    }\n  }, {\n    key: \"getType\",\n    value: function getType(el) {\n      return \"shiny.number\";\n      el;\n    }\n  }, {\n    key: \"receiveMessage\",\n    value: function receiveMessage(el, data) {\n      if (hasOwnProperty(data, \"value\")) el.value = data.value;\n      if (hasOwnProperty(data, \"min\")) el.min = data.min;\n      if (hasOwnProperty(data, \"max\")) el.max = data.max;\n      if (hasOwnProperty(data, \"step\")) el.step = data.step;\n      updateLabel(data.label, getLabelNode(el));\n      $(el).trigger(\"change\");\n    }\n  }, {\n    key: \"getState\",\n    value: function getState(el) {\n      return {\n        label: getLabelNode(el).text(),\n        value: this.getValue(el),\n        min: Number(el.min),\n        max: Number(el.max),\n        step: Number(el.step)\n      };\n    }\n  }]);\n\n  return NumberInputBinding;\n}(TextInputBindingBase);\n\nexport { NumberInputBinding };", "var $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar has = require('../internals/has');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\n\n// `Reflect.get` method\n// https://tc39.es/ecma262/#sec-reflect.get\nfunction get(target, propertyKey /* , receiver */) {\n  var receiver = arguments.length < 3 ? target : arguments[2];\n  var descriptor, prototype;\n  if (anObject(target) === receiver) return target[propertyKey];\n  if (descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey)) return has(descriptor, 'value')\n    ? descriptor.value\n    : descriptor.get === undefined\n      ? undefined\n      : descriptor.get.call(receiver);\n  if (isObject(prototype = getPrototypeOf(target))) return get(prototype, propertyKey, receiver);\n}\n\n$({ target: 'Reflect', stat: true }, {\n  get: get\n});\n", "var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n  getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n    return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n  }\n});\n", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.function.name.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.reflect.get.js\";\nimport \"core-js/modules/es.object.get-own-property-descriptor.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\nimport $ from \"jquery\";\nimport { $escape, updateLabel, hasOwnProperty } from \"../../utils\";\nimport { InputBinding } from \"./inputBinding\"; // interface TextHTMLElement extends NameValueHTMLElement {\n//   placeholder: any;\n// }\n\nfunction getLabelNode(el) {\n  return $(el).parent().find('label[for=\"' + $escape(el.id) + '\"]');\n}\n\nvar TextInputBindingBase = /*#__PURE__*/function (_InputBinding) {\n  _inherits(TextInputBindingBase, _InputBinding);\n\n  var _super = _createSuper(TextInputBindingBase);\n\n  function TextInputBindingBase() {\n    _classCallCheck(this, TextInputBindingBase);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(TextInputBindingBase, [{\n    key: \"find\",\n    value: function find(scope) {\n      var $inputs = $(scope).find('input[type=\"text\"], input[type=\"search\"], input[type=\"url\"], input[type=\"email\"]'); // selectize.js 0.12.4 inserts a hidden text input with an\n      // id that ends in '-selectized'. The .not() selector below\n      // is to prevent textInputBinding from accidentally picking up\n      // this hidden element as a shiny input (#2396)\n\n      return $inputs.not('input[type=\"text\"][id$=\"-selectized\"]');\n    }\n  }, {\n    key: \"getId\",\n    value: function getId(el) {\n      return _get(_getPrototypeOf(TextInputBindingBase.prototype), \"getId\", this).call(this, el) || el.name; // return InputBinding.prototype.getId.call(this, el) || el.name;\n    }\n  }, {\n    key: \"getValue\",\n    value: function getValue(el) {\n      throw \"not implemented\";\n      el;\n    }\n  }, {\n    key: \"setValue\",\n    value: function setValue(el, value) {\n      throw \"not implemented\";\n      el;\n      value;\n    }\n  }, {\n    key: \"subscribe\",\n    value: function subscribe(el, callback) {\n      $(el).on(\"keyup.textInputBinding input.textInputBinding\", // event: Event\n      function () {\n        callback(true);\n      });\n      $(el).on(\"change.textInputBinding\", // event: Event\n      function () {\n        callback(false);\n      });\n    }\n  }, {\n    key: \"unsubscribe\",\n    value: function unsubscribe(el) {\n      $(el).off(\".textInputBinding\");\n    }\n  }, {\n    key: \"receiveMessage\",\n    value: function receiveMessage(el, data) {\n      throw \"not implemented\";\n      el;\n      data;\n    }\n  }, {\n    key: \"getState\",\n    value: function getState(el) {\n      throw \"not implemented\";\n      el;\n    }\n  }, {\n    key: \"getRatePolicy\",\n    value: function getRatePolicy(el) {\n      return {\n        policy: \"debounce\",\n        delay: 250\n      };\n      el;\n    }\n  }]);\n\n  return TextInputBindingBase;\n}(InputBinding);\n\nvar TextInputBinding = /*#__PURE__*/function (_TextInputBindingBase) {\n  _inherits(TextInputBinding, _TextInputBindingBase);\n\n  var _super2 = _createSuper(TextInputBinding);\n\n  function TextInputBinding() {\n    _classCallCheck(this, TextInputBinding);\n\n    return _super2.apply(this, arguments);\n  }\n\n  _createClass(TextInputBinding, [{\n    key: \"setValue\",\n    value: function setValue(el, value) {\n      el.value = value;\n    }\n  }, {\n    key: \"getValue\",\n    value: function getValue(el) {\n      return el.value;\n    }\n  }, {\n    key: \"getState\",\n    value: function getState(el) {\n      return {\n        label: getLabelNode(el).text(),\n        value: el.value,\n        placeholder: el.placeholder\n      };\n    }\n  }, {\n    key: \"receiveMessage\",\n    value: function receiveMessage(el, data) {\n      if (hasOwnProperty(data, \"value\")) this.setValue(el, data.value);\n      updateLabel(data.label, getLabelNode(el));\n      if (hasOwnProperty(data, \"placeholder\")) el.placeholder = data.placeholder;\n      $(el).trigger(\"change\");\n    }\n  }]);\n\n  return TextInputBinding;\n}(TextInputBindingBase);\n\nexport { TextInputBinding, TextInputBindingBase };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport $ from \"jquery\";\nimport { TextInputBinding } from \"./text\";\n\nvar PasswordInputBinding = /*#__PURE__*/function (_TextInputBinding) {\n  _inherits(PasswordInputBinding, _TextInputBinding);\n\n  var _super = _createSuper(PasswordInputBinding);\n\n  function PasswordInputBinding() {\n    _classCallCheck(this, PasswordInputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(PasswordInputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find('input[type=\"password\"]');\n    }\n  }, {\n    key: \"getType\",\n    value: function getType(el) {\n      return \"shiny.password\";\n      el;\n    }\n  }]);\n\n  return PasswordInputBinding;\n}(TextInputBinding);\n\nexport { PasswordInputBinding };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport $ from \"jquery\";\nimport { TextInputBinding } from \"./text\";\n\nvar TextareaInputBinding = /*#__PURE__*/function (_TextInputBinding) {\n  _inherits(TextareaInputBinding, _TextInputBinding);\n\n  var _super = _createSuper(TextareaInputBinding);\n\n  function TextareaInputBinding() {\n    _classCallCheck(this, TextareaInputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(TextareaInputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find(\"textarea\");\n    }\n  }]);\n\n  return TextareaInputBinding;\n}(TextInputBinding);\n\nexport { TextareaInputBinding };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.string.trim.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\nimport $ from \"jquery\";\nimport { InputBinding } from \"./inputBinding\";\nimport { $escape, hasOwnProperty, updateLabel } from \"../../utils\";\n\n// Get the DOM element that contains the top-level label\nfunction getLabelNode(el) {\n  return $(el).parent().find('label[for=\"' + $escape(el.id) + '\"]');\n} // Given an input DOM object, get the associated label. Handles labels\n// that wrap the input as well as labels associated with 'for' attribute.\n\n\nfunction getLabel(obj) {\n  // If <label><input /><span>label text</span></label>\n  if (obj.parentNode.tagName === \"LABEL\") {\n    return $(obj.parentNode).find(\"span\").text().trim();\n  }\n\n  return null;\n} // Given an input DOM object, set the associated label. Handles labels\n// that wrap the input as well as labels associated with 'for' attribute.\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\n\nfunction setLabel(obj, value) {\n  // If <label><input /><span>label text</span></label>\n  if (obj.parentNode.tagName === \"LABEL\") {\n    $(obj.parentNode).find(\"span\").text(value);\n  }\n\n  return null;\n}\n\nvar RadioInputBinding = /*#__PURE__*/function (_InputBinding) {\n  _inherits(RadioInputBinding, _InputBinding);\n\n  var _super = _createSuper(RadioInputBinding);\n\n  function RadioInputBinding() {\n    _classCallCheck(this, RadioInputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(RadioInputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find(\".shiny-input-radiogroup\");\n    }\n  }, {\n    key: \"getValue\",\n    value: function getValue(el) {\n      // Select the radio objects that have name equal to the grouping div's id\n      var checkedItems = $('input:radio[name=\"' + $escape(el.id) + '\"]:checked');\n\n      if (checkedItems.length === 0) {\n        // If none are checked, the input will return null (it's the default on load,\n        // but it wasn't emptied when calling updateRadioButtons with character(0)\n        return null;\n      }\n\n      return checkedItems.val();\n    }\n  }, {\n    key: \"setValue\",\n    value: function setValue(el, value) {\n      if ($.isArray(value) && value.length === 0) {\n        // Removing all checked item if the sent data is empty\n        $('input:radio[name=\"' + $escape(el.id) + '\"]').prop(\"checked\", false);\n      } else {\n        $('input:radio[name=\"' + $escape(el.id) + '\"][value=\"' + $escape(value) + '\"]').prop(\"checked\", true);\n      }\n    }\n  }, {\n    key: \"getState\",\n    value: function getState(el) {\n      var $objs = $('input:radio[name=\"' + $escape(el.id) + '\"]'); // Store options in an array of objects, each with with value and label\n\n      var options = new Array($objs.length);\n\n      for (var i = 0; i < options.length; i++) {\n        options[i] = {\n          value: $objs[i].value,\n          label: getLabel($objs[i])\n        };\n      }\n\n      return {\n        label: getLabelNode(el).text(),\n        value: this.getValue(el),\n        options: options\n      };\n    }\n  }, {\n    key: \"receiveMessage\",\n    value: function receiveMessage(el, data) {\n      var $el = $(el); // This will replace all the options\n\n      if (hasOwnProperty(data, \"options\")) {\n        // Clear existing options and add each new one\n        $el.find(\"div.shiny-options-group\").remove(); // Backward compatibility: for HTML generated by shinybootstrap2 package\n\n        $el.find(\"label.radio\").remove(); // @ts-expect-error; TODO-barret; IDK what this line is doing\n\n        $el.append(data.options);\n      }\n\n      if (hasOwnProperty(data, \"value\")) this.setValue(el, data.value);\n      updateLabel(data.label, getLabelNode(el));\n      $(el).trigger(\"change\");\n    }\n  }, {\n    key: \"subscribe\",\n    value: function subscribe(el, callback) {\n      $(el).on(\"change.radioInputBinding\", function () {\n        callback(false);\n      });\n    }\n  }, {\n    key: \"unsubscribe\",\n    value: function unsubscribe(el) {\n      $(el).off(\".radioInputBinding\");\n    }\n  }]);\n\n  return RadioInputBinding;\n}(InputBinding);\n\nexport { RadioInputBinding };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport $ from \"jquery\";\nimport { InputBinding } from \"./inputBinding\";\nimport { formatDateUTC, updateLabel, $escape, parseDate, hasOwnProperty } from \"../../utils\";\n\nvar DateInputBindingBase = /*#__PURE__*/function (_InputBinding) {\n  _inherits(DateInputBindingBase, _InputBinding);\n\n  var _super = _createSuper(DateInputBindingBase);\n\n  function DateInputBindingBase() {\n    _classCallCheck(this, DateInputBindingBase);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(DateInputBindingBase, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find(\".shiny-date-input\");\n    }\n  }, {\n    key: \"getType\",\n    value: function getType(el) {\n      return \"shiny.date\";\n      el;\n    }\n  }, {\n    key: \"subscribe\",\n    value: function subscribe(el, callback) {\n      $(el).on(\"keyup.dateInputBinding input.dateInputBinding\", // event: Event\n      function () {\n        // Use normal debouncing policy when typing\n        callback(true);\n      });\n      $(el).on(\"changeDate.dateInputBinding change.dateInputBinding\", // event: Event\n      function () {\n        // Send immediately when clicked\n        callback(false);\n      });\n    }\n  }, {\n    key: \"unsubscribe\",\n    value: function unsubscribe(el) {\n      $(el).off(\".dateInputBinding\");\n    }\n  }, {\n    key: \"getRatePolicy\",\n    value: function getRatePolicy() {\n      return {\n        policy: \"debounce\",\n        delay: 250\n      };\n    }\n  }, {\n    key: \"setValue\",\n    value: function setValue(el, data) {\n      throw \"not implemented\";\n      el;\n      data;\n    }\n  }, {\n    key: \"initialize\",\n    value: function initialize(el) {\n      var $input = $(el).find(\"input\"); // The challenge with dates is that we want them to be at 00:00 in UTC so\n      // that we can do comparisons with them. However, the Date object itself\n      // does not carry timezone information, so we should call _floorDateTime()\n      // on Dates as soon as possible so that we know we're always working with\n      // consistent objects.\n\n      var date = $input.data(\"initial-date\"); // If initial_date is null, set to current date\n\n      if (date === undefined || date === null) {\n        // Get local date, but normalized to beginning of day in UTC.\n        date = this._floorDateTime(this._dateAsUTC(new Date()));\n      }\n\n      this.setValue(el, date); // Set the start and end dates, from min-date and max-date. These always\n      // use yyyy-mm-dd format, instead of bootstrap-datepicker's built-in\n      // support for date-startdate and data-enddate, which use the current\n      // date format.\n\n      if ($input.data(\"min-date\") !== undefined) {\n        this._setMin($input[0], $input.data(\"min-date\"));\n      }\n\n      if ($input.data(\"max-date\") !== undefined) {\n        this._setMax($input[0], $input.data(\"max-date\"));\n      }\n    }\n  }, {\n    key: \"_getLabelNode\",\n    value: function _getLabelNode(el) {\n      return $(el).find('label[for=\"' + $escape(el.id) + '\"]');\n    } // Given a format object from a date picker, return a string\n\n  }, {\n    key: \"_formatToString\",\n    value: function _formatToString(format) {\n      // Format object has structure like:\n      // { parts: ['mm', 'dd', 'yy'], separators: ['', '/', '/' ,''] }\n      var str = \"\";\n      var i;\n\n      for (i = 0; i < format.parts.length; i++) {\n        str += format.separators[i] + format.parts[i];\n      }\n\n      str += format.separators[i];\n      return str;\n    } // Given an unambiguous date string or a Date object, set the min (start) date.\n    // null will unset. undefined will result in no change,\n\n  }, {\n    key: \"_setMin\",\n    value: function _setMin(el, date) {\n      if (date === undefined) return;\n\n      if (date === null) {\n        $(el).bsDatepicker(\"setStartDate\", null);\n        return;\n      }\n\n      var parsedDate = this._newDate(date); // If date parsing fails, do nothing\n\n\n      if (parsedDate === null) return; // (Assign back to date as a Date object)\n\n      date = parsedDate;\n      if (isNaN(date.valueOf())) return; // Workarounds for\n      // https://github.com/rstudio/shiny/issues/2335\n\n      var curValue = $(el).bsDatepicker(\"getUTCDate\"); // Note that there's no `setUTCStartDate`, so we need to convert this Date.\n      // It starts at 00:00 UTC, and we convert it to 00:00 in local time, which\n      // is what's needed for `setStartDate`.\n\n      $(el).bsDatepicker(\"setStartDate\", this._utcDateAsLocal(date)); // If the new min is greater than the current date, unset the current date.\n\n      if (date && curValue && date.getTime() > curValue.getTime()) {\n        $(el).bsDatepicker(\"clearDates\");\n      } else {\n        // Setting the date needs to be done AFTER `setStartDate`, because the\n        // datepicker has a bug where calling `setStartDate` will clear the date\n        // internally (even though it will still be visible in the UI) when a\n        // 2-digit year format is used.\n        // https://github.com/eternicode/bootstrap-datepicker/issues/2010\n        $(el).bsDatepicker(\"setUTCDate\", curValue);\n      }\n    } // Given an unambiguous date string or a Date object, set the max (end) date\n    // null will unset.\n\n  }, {\n    key: \"_setMax\",\n    value: function _setMax(el, date) {\n      if (date === undefined) return;\n\n      if (date === null) {\n        $(el).bsDatepicker(\"setEndDate\", null);\n        return;\n      }\n\n      var parsedDate = this._newDate(date); // If date parsing fails, do nothing\n\n\n      if (parsedDate === null) return;\n      date = parsedDate;\n      if (isNaN(date.valueOf())) return; // Workaround for same issue as in _setMin.\n\n      var curValue = $(el).bsDatepicker(\"getUTCDate\");\n      $(el).bsDatepicker(\"setEndDate\", this._utcDateAsLocal(date)); // If the new min is greater than the current date, unset the current date.\n\n      if (date && curValue && date.getTime() < curValue.getTime()) {\n        $(el).bsDatepicker(\"clearDates\");\n      } else {\n        $(el).bsDatepicker(\"setUTCDate\", curValue);\n      }\n    } // Given a date string of format yyyy-mm-dd, return a Date object with\n    // that date at 12AM UTC.\n    // If date is a Date object, return it unchanged.\n\n  }, {\n    key: \"_newDate\",\n    value: function _newDate(date) {\n      if (date instanceof Date) return date;\n      if (!date) return null; // Get Date object - this will be at 12AM in UTC, but may print\n      // differently at the Javascript console.\n\n      var d = parseDate(date); // If invalid date, return null\n\n      if (isNaN(d.valueOf())) return null;\n      return d;\n    } // A Date can have any time during a day; this will return a new Date object\n    // set to 00:00 in UTC.\n\n  }, {\n    key: \"_floorDateTime\",\n    value: function _floorDateTime(date) {\n      date = new Date(date.getTime());\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    } // Given a Date object, return a Date object which has the same \"clock time\"\n    // in UTC. For example, if input date is 2013-02-01 23:00:00 GMT-0600 (CST),\n    // output will be 2013-02-01 23:00:00 UTC. Note that the JS console may\n    // print this in local time, as \"Sat Feb 02 2013 05:00:00 GMT-0600 (CST)\".\n\n  }, {\n    key: \"_dateAsUTC\",\n    value: function _dateAsUTC(date) {\n      return new Date(date.getTime() - date.getTimezoneOffset() * 60000);\n    } // The inverse of _dateAsUTC. This is needed to adjust time zones because\n    // some bootstrap-datepicker methods only take local dates as input, and not\n    // UTC.\n\n  }, {\n    key: \"_utcDateAsLocal\",\n    value: function _utcDateAsLocal(date) {\n      return new Date(date.getTime() + date.getTimezoneOffset() * 60000);\n    }\n  }]);\n\n  return DateInputBindingBase;\n}(InputBinding);\n\nvar DateInputBinding = /*#__PURE__*/function (_DateInputBindingBase) {\n  _inherits(DateInputBinding, _DateInputBindingBase);\n\n  var _super2 = _createSuper(DateInputBinding);\n\n  function DateInputBinding() {\n    _classCallCheck(this, DateInputBinding);\n\n    return _super2.apply(this, arguments);\n  }\n\n  _createClass(DateInputBinding, [{\n    key: \"getValue\",\n    value: // Return the date in an unambiguous format, yyyy-mm-dd (as opposed to a\n    // format like mm/dd/yyyy)\n    function getValue(el) {\n      var date = $(el).find(\"input\").bsDatepicker(\"getUTCDate\");\n      return formatDateUTC(date);\n    } // value must be an unambiguous string like '2001-01-01', or a Date object.\n\n  }, {\n    key: \"setValue\",\n    value: function setValue(el, value) {\n      // R's NA, which is null here will remove current value\n      if (value === null) {\n        $(el).find(\"input\").val(\"\").bsDatepicker(\"update\");\n        return;\n      }\n\n      var date = this._newDate(value);\n\n      if (date === null) {\n        return;\n      } // If date is invalid, do nothing\n\n\n      if (isNaN(date.valueOf())) return;\n      $(el).find(\"input\").bsDatepicker(\"setUTCDate\", date);\n    }\n  }, {\n    key: \"getState\",\n    value: function getState(el) {\n      var $el = $(el);\n      var $input = $el.find(\"input\");\n      var min = $input.data(\"datepicker\").startDate;\n      var max = $input.data(\"datepicker\").endDate; // Stringify min and max. If min and max aren't set, they will be\n      // -Infinity and Infinity; replace these with null.\n\n      min = min === -Infinity ? null : formatDateUTC(min);\n      max = max === Infinity ? null : formatDateUTC(max); // startViewMode is stored as a number; convert to string\n\n      var startview = $input.data(\"datepicker\").startViewMode;\n      if (startview === 2) startview = \"decade\";else if (startview === 1) startview = \"year\";else if (startview === 0) startview = \"month\";\n      return {\n        label: this._getLabelNode(el).text(),\n        value: this.getValue(el),\n        valueString: $input.val(),\n        min: min,\n        max: max,\n        language: $input.data(\"datepicker\").language,\n        weekstart: $input.data(\"datepicker\").weekStart,\n        format: this._formatToString($input.data(\"datepicker\").format),\n        startview: startview\n      };\n    }\n  }, {\n    key: \"receiveMessage\",\n    value: function receiveMessage(el, data) {\n      var $input = $(el).find(\"input\");\n      updateLabel(data.label, this._getLabelNode(el));\n      if (hasOwnProperty(data, \"min\")) this._setMin($input[0], data.min);\n      if (hasOwnProperty(data, \"max\")) this._setMax($input[0], data.max); // Must set value only after min and max have been set. If new value is\n      // outside the bounds of the previous min/max, then the result will be a\n      // blank input.\n\n      if (hasOwnProperty(data, \"value\")) this.setValue(el, data.value);\n      $(el).trigger(\"change\");\n    }\n  }]);\n\n  return DateInputBinding;\n}(DateInputBindingBase);\n\nexport { DateInputBinding, DateInputBindingBase };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.number.constructor.js\";\nimport \"core-js/modules/es.regexp.exec.js\";\nimport \"core-js/modules/es.string.split.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.regexp.to-string.js\";\nimport \"core-js/modules/es.string.replace.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\nimport $ from \"jquery\"; // import { NameValueHTMLElement } from \".\";\n\nimport { formatDateUTC, updateLabel, $escape, hasOwnProperty } from \"../../utils\";\nimport { TextInputBindingBase } from \"./text\"; // interface SliderHTMLElement extends NameValueHTMLElement {\n//   checked?: any;\n// }\n\n// Necessary to get hidden sliders to send their updated values\nfunction forceIonSliderUpdate(slider) {\n  if (slider.$cache && slider.$cache.input) slider.$cache.input.trigger(\"change\");else console.log(\"Couldn't force ion slider to update\");\n}\n\nfunction getTypePrettifyer(dataType, timeFormat, timezone) {\n  var timeFormatter;\n  var prettify;\n\n  if (dataType === \"date\") {\n    timeFormatter = window.strftime.utc();\n\n    prettify = function prettify(num) {\n      return timeFormatter(timeFormat, new Date(num));\n    };\n  } else if (dataType === \"datetime\") {\n    if (timezone) timeFormatter = window.strftime.timezone(timezone);else timeFormatter = window.strftime;\n\n    prettify = function prettify(num) {\n      return timeFormatter(timeFormat, new Date(num));\n    };\n  } else {\n    // The default prettify function for ion.rangeSlider adds thousands\n    // separators after the decimal mark, so we have our own version here.\n    // (#1958)\n    prettify = function prettify(num) {\n      // When executed, `this` will refer to the `IonRangeSlider.options`\n      // object.\n      return formatNumber(num, this.prettify_separator);\n    };\n  }\n\n  return prettify;\n}\n\nfunction getLabelNode(el) {\n  return $(el).parent().find('label[for=\"' + $escape(el.id) + '\"]');\n} // Number of values; 1 for single slider, 2 for range slider\n\n\nfunction numValues(el) {\n  if ($(el).data(\"ionRangeSlider\").options.type === \"double\") return 2;else return 1;\n}\n\nvar SliderInputBinding = /*#__PURE__*/function (_TextInputBindingBase) {\n  _inherits(SliderInputBinding, _TextInputBindingBase);\n\n  var _super = _createSuper(SliderInputBinding);\n\n  function SliderInputBinding() {\n    _classCallCheck(this, SliderInputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(SliderInputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      // Check if ionRangeSlider plugin is loaded\n      if (!$.fn.ionRangeSlider) {\n        // Return empty set of _found_ items\n        return $();\n      }\n\n      return $(scope).find(\"input.js-range-slider\");\n    }\n  }, {\n    key: \"getType\",\n    value: function getType(el) {\n      var dataType = $(el).data(\"data-type\");\n      if (dataType === \"date\") return \"shiny.date\";else if (dataType === \"datetime\") return \"shiny.datetime\";else return false;\n    }\n  }, {\n    key: \"getValue\",\n    value: function getValue(el) {\n      var $el = $(el);\n      var result = $(el).data(\"ionRangeSlider\").result; // Function for converting numeric value from slider to appropriate type.\n\n      var convert;\n      var dataType = $el.data(\"data-type\");\n\n      if (dataType === \"date\") {\n        convert = function convert(val) {\n          return formatDateUTC(new Date(Number(val)));\n        };\n      } else if (dataType === \"datetime\") {\n        convert = function convert(val) {\n          // Convert ms to s\n          return Number(val) / 1000;\n        };\n      } else {\n        convert = function convert(val) {\n          return Number(val);\n        };\n      }\n\n      if (numValues(el) === 2) {\n        return [convert(result.from), convert(result.to)];\n      } else {\n        return convert(result.from);\n      }\n    }\n  }, {\n    key: \"setValue\",\n    value: function setValue(el, value) {\n      var $el = $(el);\n      var slider = $el.data(\"ionRangeSlider\");\n      $el.data(\"immediate\", true);\n\n      try {\n        if (numValues(el) === 2 && value instanceof Array) {\n          slider.update({\n            from: value[0],\n            to: value[1]\n          });\n        } else {\n          slider.update({\n            from: value\n          });\n        }\n\n        forceIonSliderUpdate(slider);\n      } finally {\n        $el.data(\"immediate\", false);\n      }\n    }\n  }, {\n    key: \"subscribe\",\n    value: function subscribe(el, callback) {\n      $(el).on(\"change.sliderInputBinding\", function () {\n        callback(!$(el).data(\"immediate\") && !$(el).data(\"animating\"));\n      });\n    }\n  }, {\n    key: \"unsubscribe\",\n    value: function unsubscribe(el) {\n      $(el).off(\".sliderInputBinding\");\n    }\n  }, {\n    key: \"receiveMessage\",\n    value: function receiveMessage(el, data) {\n      var $el = $(el);\n      var slider = $el.data(\"ionRangeSlider\");\n      var msg = {};\n\n      if (hasOwnProperty(data, \"value\")) {\n        if (numValues(el) === 2 && data.value instanceof Array) {\n          msg.from = data.value[0];\n          msg.to = data.value[1];\n        } else {\n          msg.from = data.value;\n        }\n      }\n\n      var sliderFeatures = [\"min\", \"max\", \"step\"];\n\n      for (var i = 0; i < sliderFeatures.length; i++) {\n        var feats = sliderFeatures[i];\n\n        if (hasOwnProperty(data, feats)) {\n          msg[feats] = data[feats];\n        }\n      }\n\n      updateLabel(data.label, getLabelNode(el)); // (maybe) update data elements\n\n      var domElements = [\"data-type\", \"time-format\", \"timezone\"];\n\n      for (var _i = 0; _i < domElements.length; _i++) {\n        var elem = domElements[_i];\n\n        if (hasOwnProperty(data, elem)) {\n          $el.data(elem, data[elem]);\n        }\n      } // retrieve latest data values\n\n\n      var dataType = $el.data(\"data-type\");\n      var timeFormat = $el.data(\"time-format\");\n      var timezone = $el.data(\"timezone\");\n      msg.prettify = getTypePrettifyer(dataType, timeFormat, timezone);\n      $el.data(\"immediate\", true);\n\n      try {\n        slider.update(msg);\n        forceIonSliderUpdate(slider);\n      } finally {\n        $el.data(\"immediate\", false);\n      }\n    }\n  }, {\n    key: \"getRatePolicy\",\n    value: function getRatePolicy(el) {\n      return {\n        policy: \"debounce\",\n        delay: 250\n      };\n      el;\n    } // TODO-barret Why not implemented?\n\n  }, {\n    key: \"getState\",\n    value: function getState(el) {\n      // empty\n      el;\n    }\n  }, {\n    key: \"initialize\",\n    value: function initialize(el) {\n      var $el = $(el);\n      var dataType = $el.data(\"data-type\");\n      var timeFormat = $el.data(\"time-format\");\n      var timezone = $el.data(\"timezone\");\n      var opts = {\n        prettify: getTypePrettifyer(dataType, timeFormat, timezone)\n      };\n      $el.ionRangeSlider(opts);\n    }\n  }]);\n\n  return SliderInputBinding;\n}(TextInputBindingBase); // Format numbers for nicer output.\n// formatNumber(1234567.12345)           === \"1,234,567.12345\"\n// formatNumber(1234567.12345, \".\", \",\") === \"1.234.567,12345\"\n// formatNumber(1000, \" \")               === \"1 000\"\n// formatNumber(20)                      === \"20\"\n// formatNumber(1.2345e24)               === \"1.2345e+24\"\n\n\nfunction formatNumber(num) {\n  var thousandSep = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \",\";\n  var decimalSep = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \".\";\n  var parts = num.toString().split(\".\"); // Add separators to portion before decimal mark.\n\n  parts[0] = parts[0].replace(/(\\d{1,3}(?=(?:\\d\\d\\d)+(?!\\d)))/g, \"$1\" + thousandSep);\n  if (parts.length === 1) return parts[0];else if (parts.length === 2) return parts[0] + decimalSep + parts[1];else return \"\";\n} // TODO-barret ; this should be put in the \"init\" areas, correct?\n\n\n$(document).on(\"click\", \".slider-animate-button\", function (evt) {\n  evt.preventDefault();\n  var self = $(this);\n  var target = $(\"#\" + $escape(self.attr(\"data-target-id\")));\n  var startLabel = \"Play\";\n  var stopLabel = \"Pause\";\n  var loop = self.attr(\"data-loop\") !== undefined && !/^\\s*false\\s*$/i.test(self.attr(\"data-loop\"));\n  var animInterval = self.attr(\"data-interval\");\n  if (isNaN(animInterval)) animInterval = 1500;else animInterval = Number(animInterval);\n\n  if (!target.data(\"animTimer\")) {\n    var timer; // Separate code paths:\n    // Backward compatible code for old-style jsliders (Shiny <= 0.10.2.2),\n    // and new-style ionsliders.\n\n    if (target.hasClass(\"jslider\")) {\n      var slider = target.slider(); // If we're currently at the end, restart\n\n      if (!slider.canStepNext()) slider.resetToStart();\n      timer = setInterval(function () {\n        if (loop && !slider.canStepNext()) {\n          slider.resetToStart();\n        } else {\n          slider.stepNext();\n\n          if (!loop && !slider.canStepNext()) {\n            // TODO-barret replace with self.trigger(\"click\")\n            self.click(); // stop the animation\n          }\n        }\n      }, animInterval);\n    } else {\n      var _slider = target.data(\"ionRangeSlider\"); // Single sliders have slider.options.type == \"single\", and only the\n      // `from` value is used. Double sliders have type == \"double\", and also\n      // use the `to` value for the right handle.\n\n\n      var sliderCanStep = function sliderCanStep() {\n        if (_slider.options.type === \"double\") return _slider.result.to < _slider.result.max;else return _slider.result.from < _slider.result.max;\n      };\n\n      var sliderReset = function sliderReset() {\n        var val = {\n          from: _slider.result.min\n        }; // Preserve the current spacing for double sliders\n\n        if (_slider.options.type === \"double\") val.to = val.from + (_slider.result.to - _slider.result.from);\n\n        _slider.update(val);\n\n        forceIonSliderUpdate(_slider);\n      };\n\n      var sliderStep = function sliderStep() {\n        // Don't overshoot the end\n        var val = {\n          from: Math.min(_slider.result.max, _slider.result.from + _slider.options.step)\n        };\n        if (_slider.options.type === \"double\") val.to = Math.min(_slider.result.max, _slider.result.to + _slider.options.step);\n\n        _slider.update(val);\n\n        forceIonSliderUpdate(_slider);\n      }; // If we're currently at the end, restart\n\n\n      if (!sliderCanStep()) sliderReset();\n      timer = setInterval(function () {\n        if (loop && !sliderCanStep()) {\n          sliderReset();\n        } else {\n          sliderStep();\n\n          if (!loop && !sliderCanStep()) {\n            self.click(); // stop the animation\n          }\n        }\n      }, animInterval);\n    }\n\n    target.data(\"animTimer\", timer);\n    self.attr(\"title\", stopLabel);\n    self.addClass(\"playing\");\n    target.data(\"animating\", true);\n  } else {\n    clearTimeout(target.data(\"animTimer\"));\n    target.removeData(\"animTimer\");\n    self.attr(\"title\", startLabel);\n    self.removeClass(\"playing\");\n    target.removeData(\"animating\");\n  }\n});\nexport { SliderInputBinding };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\nimport $ from \"jquery\";\nimport { $escape, formatDateUTC, hasOwnProperty, updateLabel } from \"../../utils\";\nimport { DateInputBindingBase } from \"./date\";\n\nfunction getLabelNode(el) {\n  return $(el).find('label[for=\"' + $escape(el.id) + '\"]');\n}\n\nvar DateRangeInputBinding = /*#__PURE__*/function (_DateInputBindingBase) {\n  _inherits(DateRangeInputBinding, _DateInputBindingBase);\n\n  var _super = _createSuper(DateRangeInputBinding);\n\n  function DateRangeInputBinding() {\n    _classCallCheck(this, DateRangeInputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(DateRangeInputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find(\".shiny-date-range-input\");\n    } // Return the date in an unambiguous format, yyyy-mm-dd (as opposed to a\n    // format like mm/dd/yyyy)\n\n  }, {\n    key: \"getValue\",\n    value: function getValue(el) {\n      var $inputs = $(el).find(\"input\");\n      var start = $inputs.eq(0).bsDatepicker(\"getUTCDate\");\n      var end = $inputs.eq(1).bsDatepicker(\"getUTCDate\");\n      return [formatDateUTC(start), formatDateUTC(end)];\n    } // value must be an object, with optional fields `start` and `end`. These\n    // should be unambiguous strings like '2001-01-01', or Date objects.\n\n  }, {\n    key: \"setValue\",\n    value: function setValue(el, value) {\n      if (!(value instanceof Object)) {\n        return;\n      } // Get the start and end input objects\n\n\n      var $inputs = $(el).find(\"input\"); // If value is undefined, don't try to set\n      // null will remove the current value\n\n      if (value.start !== undefined) {\n        if (value.start === null) {\n          $inputs.eq(0).val(\"\").bsDatepicker(\"update\");\n        } else {\n          var start = this._newDate(value.start);\n\n          $inputs.eq(0).bsDatepicker(\"setUTCDate\", start);\n        }\n      }\n\n      if (value.end !== undefined) {\n        if (value.end === null) {\n          $inputs.eq(1).val(\"\").bsDatepicker(\"update\");\n        } else {\n          var end = this._newDate(value.end);\n\n          $inputs.eq(1).bsDatepicker(\"setUTCDate\", end);\n        }\n      }\n    }\n  }, {\n    key: \"getState\",\n    value: function getState(el) {\n      var $el = $(el);\n      var $inputs = $el.find(\"input\");\n      var $startinput = $inputs.eq(0);\n      var $endinput = $inputs.eq(1); // For many of the properties, assume start and end have the same values\n\n      var min = $startinput.bsDatepicker(\"getStartDate\");\n      var max = $startinput.bsDatepicker(\"getEndDate\"); // Stringify min and max. If min and max aren't set, they will be\n      // -Infinity and Infinity; replace these with null.\n\n      var minStr = min === -Infinity ? null : formatDateUTC(min);\n      var maxStr = max === Infinity ? null : formatDateUTC(max); // startViewMode is stored as a number; convert to string\n\n      var startview = $startinput.data(\"datepicker\").startView;\n      if (startview === 2) startview = \"decade\";else if (startview === 1) startview = \"year\";else if (startview === 0) startview = \"month\";\n      return {\n        label: getLabelNode(el).text(),\n        value: this.getValue(el),\n        valueString: [$startinput.val(), $endinput.val()],\n        min: minStr,\n        max: maxStr,\n        weekstart: $startinput.data(\"datepicker\").weekStart,\n        format: this._formatToString($startinput.data(\"datepicker\").format),\n        language: $startinput.data(\"datepicker\").language,\n        startview: startview\n      };\n    }\n  }, {\n    key: \"receiveMessage\",\n    value: function receiveMessage(el, data) {\n      var $el = $(el);\n      var $inputs = $el.find(\"input\");\n      var $startinput = $inputs.eq(0);\n      var $endinput = $inputs.eq(1);\n      updateLabel(data.label, getLabelNode(el));\n\n      if (hasOwnProperty(data, \"min\")) {\n        this._setMin($startinput[0], data.min);\n\n        this._setMin($endinput[0], data.min);\n      }\n\n      if (hasOwnProperty(data, \"max\")) {\n        this._setMax($startinput[0], data.max);\n\n        this._setMax($endinput[0], data.max);\n      } // Must set value only after min and max have been set. If new value is\n      // outside the bounds of the previous min/max, then the result will be a\n      // blank input.\n\n\n      if (hasOwnProperty(data, \"value\")) this.setValue(el, data.value);\n      $el.trigger(\"change\");\n    }\n  }, {\n    key: \"initialize\",\n    value: function initialize(el) {\n      var $el = $(el);\n      var $inputs = $el.find(\"input\");\n      var $startinput = $inputs.eq(0);\n      var $endinput = $inputs.eq(1);\n      var start = $startinput.data(\"initial-date\");\n      var end = $endinput.data(\"initial-date\"); // If empty/null, use local date, but as UTC\n\n      if (start === undefined || start === null) start = this._dateAsUTC(new Date());\n      if (end === undefined || end === null) end = this._dateAsUTC(new Date());\n      this.setValue(el, {\n        start: start,\n        end: end\n      }); // // Set the start and end dates, from min-date and max-date. These always\n      // // use yyyy-mm-dd format, instead of bootstrap-datepicker's built-in\n      // // support for date-startdate and data-enddate, which use the current\n      // // date format.\n\n      this._setMin($startinput[0], $startinput.data(\"min-date\"));\n\n      this._setMin($endinput[0], $startinput.data(\"min-date\"));\n\n      this._setMax($startinput[0], $endinput.data(\"max-date\"));\n\n      this._setMax($endinput[0], $endinput.data(\"max-date\"));\n    }\n  }, {\n    key: \"subscribe\",\n    value: function subscribe(el, callback) {\n      $(el).on(\"keyup.dateRangeInputBinding input.dateRangeInputBinding\", // event: Event\n      function () {\n        // Use normal debouncing policy when typing\n        callback(true);\n      });\n      $(el).on(\"changeDate.dateRangeInputBinding change.dateRangeInputBinding\", // event: Event\n      function () {\n        // Send immediately when clicked\n        callback(false);\n      });\n    }\n  }, {\n    key: \"unsubscribe\",\n    value: function unsubscribe(el) {\n      $(el).off(\".dateRangeInputBinding\");\n    }\n  }]);\n\n  return DateRangeInputBinding;\n}(DateInputBindingBase);\n\nexport { DateRangeInputBinding };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.function.name.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\nimport $ from \"jquery\";\nimport { InputBinding } from \"./inputBinding\";\nimport { $escape, hasOwnProperty, updateLabel } from \"../../utils\";\nimport { indirectEval } from \"../../utils/eval\";\n\nfunction getLabelNode(el) {\n  var escapedId = $escape(el.id);\n\n  if (isSelectize(el)) {\n    escapedId += \"-selectized\";\n  }\n\n  return $(el).parent().parent().find('label[for=\"' + escapedId + '\"]');\n} // Return true if it's a selectize input, false if it's a regular select input.\n// eslint-disable-next-line camelcase\n\n\nfunction isSelectize(el) {\n  var config = $(el).parent().find('script[data-for=\"' + $escape(el.id) + '\"]');\n  return config.length > 0;\n}\n\nvar SelectInputBinding = /*#__PURE__*/function (_InputBinding) {\n  _inherits(SelectInputBinding, _InputBinding);\n\n  var _super = _createSuper(SelectInputBinding);\n\n  function SelectInputBinding() {\n    _classCallCheck(this, SelectInputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(SelectInputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find(\"select\");\n    }\n  }, {\n    key: \"getType\",\n    value: function getType(el) {\n      var $el = $(el);\n\n      if (!$el.hasClass(\"symbol\")) {\n        // default character type\n        return null;\n      }\n\n      if ($el.attr(\"multiple\") === \"multiple\") {\n        return \"shiny.symbolList\";\n      } else {\n        return \"shiny.symbol\";\n      }\n    }\n  }, {\n    key: \"getId\",\n    value: function getId(el) {\n      return InputBinding.prototype.getId.call(this, el) || el.name;\n    }\n  }, {\n    key: \"getValue\",\n    value: function getValue(el) {\n      return $(el).val();\n    }\n  }, {\n    key: \"setValue\",\n    value: function setValue(el, value) {\n      if (!isSelectize(el)) {\n        $(el).val(value);\n      } else {\n        var selectize = this._selectize(el);\n\n        if (selectize) {\n          selectize.setValue(value);\n        }\n      }\n    }\n  }, {\n    key: \"getState\",\n    value: function getState(el) {\n      // Store options in an array of objects, each with with value and label\n      var options = new Array(el.length);\n\n      for (var i = 0; i < el.length; i++) {\n        options[i] = {\n          // TODO-barret; Is this a safe assumption?; Are there no Option Groups?\n          value: el[i].value,\n          label: el[i].label\n        };\n      }\n\n      return {\n        label: getLabelNode(el),\n        value: this.getValue(el),\n        options: options\n      };\n    }\n  }, {\n    key: \"receiveMessage\",\n    value: function receiveMessage(el, data) {\n      var $el = $(el);\n      var selectize; // This will replace all the options\n\n      if (hasOwnProperty(data, \"options\")) {\n        selectize = this._selectize(el); // Must destroy selectize before appending new options, otherwise\n        // selectize will restore the original select\n\n        if (selectize) selectize.destroy(); // Clear existing options and add each new one\n\n        $el.empty().append(data.options);\n\n        this._selectize(el);\n      } // re-initialize selectize\n\n\n      if (hasOwnProperty(data, \"config\")) {\n        $el.parent().find('script[data-for=\"' + $escape(el.id) + '\"]').replaceWith(data.config);\n\n        this._selectize(el, true);\n      } // use server-side processing for selectize\n\n\n      if (hasOwnProperty(data, \"url\")) {\n        selectize = this._selectize(el);\n        selectize.clearOptions();\n        var loaded = false;\n\n        selectize.settings.load = function (query, callback) {\n          var settings = selectize.settings;\n          $.ajax({\n            url: data.url,\n            data: {\n              query: query,\n              field: JSON.stringify([settings.searchField]),\n              value: settings.valueField,\n              conju: settings.searchConjunction,\n              maxop: settings.maxOptions\n            },\n            type: \"GET\",\n            error: function error() {\n              callback();\n            },\n            success: function success(res) {\n              // res = [{label: '1', value: '1', group: '1'}, ...]\n              // success is called after options are added, but\n              // groups need to be added manually below\n              $.each(res, function (index, elem) {\n                // Call selectize.addOptionGroup once for each optgroup; the\n                // first argument is the group ID, the second is an object with\n                // the group's label and value. We use the current settings of\n                // the selectize object to decide the fieldnames of that obj.\n                var optgroupId = elem[settings.optgroupField || \"optgroup\"];\n                var optgroup = {};\n                optgroup[settings.optgroupLabelField || \"label\"] = optgroupId;\n                optgroup[settings.optgroupValueField || \"value\"] = optgroupId;\n                selectize.addOptionGroup(optgroupId, optgroup);\n              });\n              callback(res);\n\n              if (!loaded) {\n                if (hasOwnProperty(data, \"value\")) {\n                  selectize.setValue(data.value);\n                } else if (settings.maxItems === 1) {\n                  // first item selected by default only for single-select\n                  selectize.setValue(res[0].value);\n                }\n              }\n\n              loaded = true;\n            }\n          });\n        }; // perform an empty search after changing the `load` function\n\n\n        selectize.load(function (callback) {\n          selectize.settings.load.apply(selectize, [\"\", callback]);\n        });\n      } else if (hasOwnProperty(data, \"value\")) {\n        this.setValue(el, data.value);\n      }\n\n      updateLabel(data.label, getLabelNode(el));\n      $(el).trigger(\"change\");\n    }\n  }, {\n    key: \"subscribe\",\n    value: function subscribe(el, callback) {\n      var _this = this;\n\n      $(el).on(\"change.selectInputBinding\", // event: Event\n      function () {\n        // https://github.com/rstudio/shiny/issues/2162\n        // Prevent spurious events that are gonna be squelched in\n        // a second anyway by the onItemRemove down below\n        if (el.nonempty && _this.getValue(el) === \"\") {\n          return;\n        }\n\n        callback(false);\n      });\n    }\n  }, {\n    key: \"unsubscribe\",\n    value: function unsubscribe(el) {\n      $(el).off(\".selectInputBinding\");\n    }\n  }, {\n    key: \"initialize\",\n    value: function initialize(el) {\n      this._selectize(el);\n    }\n  }, {\n    key: \"_selectize\",\n    value: function _selectize(el) {\n      var update = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      if (!$.fn.selectize) return undefined;\n      var $el = $(el);\n      var config = $el.parent().find('script[data-for=\"' + $escape(el.id) + '\"]');\n      if (config.length === 0) return undefined;\n      var options = $.extend({\n        labelField: \"label\",\n        valueField: \"value\",\n        searchField: [\"label\"]\n      }, JSON.parse(config.html())); // selectize created from selectInput()\n\n      if (typeof config.data(\"nonempty\") !== \"undefined\") {\n        el.nonempty = true;\n        options = $.extend(options, {\n          onItemRemove: function onItemRemove(value) {\n            if (this.getValue() === \"\") $(\"select#\" + $escape(el.id)).empty().append($(\"<option/>\", {\n              value: value,\n              selected: true\n            })).trigger(\"change\");\n          },\n          onDropdownClose: // $dropdown: any\n          function onDropdownClose() {\n            if (this.getValue() === \"\") this.setValue($(\"select#\" + $escape(el.id)).val());\n          }\n        });\n      } else {\n        el.nonempty = false;\n      } // options that should be eval()ed\n\n\n      if (config.data(\"eval\") instanceof Array) $.each(config.data(\"eval\"), function (i, x) {\n        /*jshint evil: true*/\n        options[x] = indirectEval(\"(\" + options[x] + \")\");\n      });\n      var control = $el.selectize(options)[0].selectize; // .selectize() does not really update settings; must destroy and rebuild\n\n      if (update) {\n        var settings = $.extend(control.settings, options);\n        control.destroy();\n        control = $el.selectize(settings)[0].selectize;\n      }\n\n      return control;\n    }\n  }]);\n\n  return SelectInputBinding;\n}(InputBinding);\n\nexport { SelectInputBinding };", "//esbuild.github.io/content-types/#direct-eval\n//tl/dr;\n// * Direct usage of `eval(\"x\")` is bad with bundled code.\n// * Instead, use indirect calls to `eval` such as `indirectEval(\"x\")`\n//   * Even just renaming the function works well enough.\n// > This is known as \"indirect eval\" because eval is not being called directly, and so does not trigger the grammatical special case for direct eval in the JavaScript VM. You can call indirect eval using any syntax at all except for an expression of the exact form eval('x'). For example, var eval2 = eval; eval2('x') and [eval][0]('x') and window.eval('x') are all indirect eval calls.\n// > When you use indirect eval, the code is evaluated in the global scope instead of in the inline scope of the caller.\nvar indirectEval = eval;\nexport { indirectEval };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport $ from \"jquery\";\nimport { InputBinding } from \"./inputBinding\";\nimport { hasOwnProperty } from \"../../utils\";\n\nvar ActionButtonInputBinding = /*#__PURE__*/function (_InputBinding) {\n  _inherits(ActionButtonInputBinding, _InputBinding);\n\n  var _super = _createSuper(ActionButtonInputBinding);\n\n  function ActionButtonInputBinding() {\n    _classCallCheck(this, ActionButtonInputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(ActionButtonInputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find(\".action-button\");\n    }\n  }, {\n    key: \"getValue\",\n    value: function getValue(el) {\n      return $(el).data(\"val\") || 0;\n    }\n  }, {\n    key: \"setValue\",\n    value: function setValue(el, value) {\n      $(el).data(\"val\", value);\n    }\n  }, {\n    key: \"getType\",\n    value: function getType(el) {\n      return \"shiny.action\";\n      el;\n    }\n  }, {\n    key: \"subscribe\",\n    value: function subscribe(el, callback) {\n      $(el).on(\"click.actionButtonInputBinding\", // e: Event\n      function () {\n        var $el = $(this);\n        var val = $el.data(\"val\") || 0;\n        $el.data(\"val\", val + 1);\n        callback(false);\n      });\n    }\n  }, {\n    key: \"getState\",\n    value: function getState(el) {\n      return {\n        value: this.getValue(el)\n      };\n    }\n  }, {\n    key: \"receiveMessage\",\n    value: function receiveMessage(el, data) {\n      var $el = $(el); // retrieve current label and icon\n\n      var label = $el.text();\n      var icon = \"\"; // to check (and store) the previous icon, we look for a $el child\n      // object that has an i tag, and some (any) class (this prevents\n      // italicized text - which has an i tag but, usually, no class -\n      // from being mistakenly selected)\n\n      if ($el.find(\"i[class]\").length > 0) {\n        var iconHtml = $el.find(\"i[class]\")[0];\n\n        if (iconHtml === $el.children()[0]) {\n          // another check for robustness\n          icon = $(iconHtml).prop(\"outerHTML\");\n        }\n      } // update the requested properties\n\n\n      if (hasOwnProperty(data, \"label\")) label = data.label;\n\n      if (hasOwnProperty(data, \"icon\")) {\n        icon = data.icon; // if the user entered icon=character(0), remove the icon\n\n        if (icon.length === 0) icon = \"\";\n      } // produce new html\n\n\n      $el.html(icon + \" \" + label);\n    }\n  }, {\n    key: \"unsubscribe\",\n    value: function unsubscribe(el) {\n      $(el).off(\".actionButtonInputBinding\");\n    }\n  }]);\n\n  return ActionButtonInputBinding;\n}(InputBinding); // TODO-barret should this be put in the init methods?\n\n\n$(document).on(\"click\", \"a.action-button\", function (e) {\n  e.preventDefault();\n});\nexport { ActionButtonInputBinding };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport $ from \"jquery\";\nimport { InputBinding } from \"./inputBinding\";\nimport { hasOwnProperty, isBS3 } from \"../../utils\";\n\nfunction getTabName(anchor) {\n  return anchor.attr(\"data-value\") || anchor.text();\n}\n\nvar BootstrapTabInputBinding = /*#__PURE__*/function (_InputBinding) {\n  _inherits(BootstrapTabInputBinding, _InputBinding);\n\n  var _super = _createSuper(BootstrapTabInputBinding);\n\n  function BootstrapTabInputBinding() {\n    _classCallCheck(this, BootstrapTabInputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(BootstrapTabInputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find(\"ul.nav.shiny-tab-input\");\n    }\n  }, {\n    key: \"getValue\",\n    value: function getValue(el) {\n      // prettier-ignore\n      // The BS4+ selectors may not work as is for dropdowns within dropdowns, but BS3+ dropped support for those anyway\n      var anchor = isBS3() ? $(el).find(\"li:not(.dropdown).active > a\") : $(el).find(\".nav-link:not(.dropdown-toggle).active, .dropdown-menu .dropdown-item.active\");\n      if (anchor.length === 1) return getTabName(anchor);\n      return null;\n    }\n  }, {\n    key: \"setValue\",\n    value: function setValue(el, value) {\n      var success = false;\n\n      if (value) {\n        // prettier-ignore\n        // The BS4+ selectors may not work as is for dropdowns within dropdowns, but BS3+ dropped support for those anyway\n        var anchors = isBS3() ? $(el).find(\"li:not(.dropdown) > a\") : $(el).find(\".nav-link:not(.dropdown-toggle), .dropdown-menu .dropdown-item\");\n        anchors.each(function () {\n          if (getTabName($(this)) === value) {\n            $(this).tab(\"show\");\n            success = true;\n            return false; // Break out of each()\n          }\n\n          return;\n        });\n      }\n\n      if (!success) {\n        // This is to handle the case where nothing is selected, e.g. the last tab\n        // was removed using removeTab.\n        $(el).trigger(\"change\");\n      }\n    }\n  }, {\n    key: \"getState\",\n    value: function getState(el) {\n      return {\n        value: this.getValue(el)\n      };\n    }\n  }, {\n    key: \"receiveMessage\",\n    value: function receiveMessage(el, data) {\n      if (hasOwnProperty(data, \"value\")) this.setValue(el, data.value);\n      $(el).trigger(\"change\");\n    }\n  }, {\n    key: \"subscribe\",\n    value: function subscribe(el, callback) {\n      $(el).on(\"change shown.bootstrapTabInputBinding shown.bs.tab.bootstrapTabInputBinding\", // event: Event\n      function () {\n        callback(false);\n      });\n    }\n  }, {\n    key: \"unsubscribe\",\n    value: function unsubscribe(el) {\n      $(el).off(\".bootstrapTabInputBinding\");\n    }\n  }]);\n\n  return BootstrapTabInputBinding;\n}(InputBinding);\n\nexport { BootstrapTabInputBinding };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.function.name.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\nimport $ from \"jquery\";\nimport { InputBinding } from \"./inputBinding\";\nimport { FileUploader } from \"../../file/fileProcessor\";\nimport { shinyShinyApp } from \"../../shiny/initedMethods\";\nvar zoneActive = \"shiny-file-input-active\";\nvar zoneOver = \"shiny-file-input-over\";\n\nfunction zoneOf(el) {\n  return $(el).closest(\"div.input-group\");\n} // This function makes it possible to attach listeners to the dragenter,\n// dragleave, and drop events of a single element with children. It's not\n// intuitive to do directly because outer elements fire \"dragleave\" events\n// both when the drag leaves the element and when the drag enters a child. To\n// make it easier, we maintain a count of the elements being dragged across\n// and trigger 3 new types of event:\n//\n// 1. draghover:enter - When a drag enters el and any of its children.\n// 2. draghover:leave - When the drag leaves el and all of its children.\n// 3. draghover:drop - When an item is dropped on el or any of its children.\n\n\nfunction enableDraghover(el) {\n  var $el = $(el);\n  var childCounter = 0;\n  $el.on({\n    \"dragenter.draghover\": function dragenterDraghover(e) {\n      if (childCounter++ === 0) {\n        $el.trigger(\"draghover:enter\", e);\n      }\n    },\n    \"dragleave.draghover\": function dragleaveDraghover(e) {\n      if (--childCounter === 0) {\n        $el.trigger(\"draghover:leave\", e);\n      }\n\n      if (childCounter < 0) {\n        console.error(\"draghover childCounter is negative somehow\");\n      }\n    },\n    \"dragover.draghover\": function dragoverDraghover(e) {\n      e.preventDefault();\n    },\n    \"drop.draghover\": function dropDraghover(e) {\n      childCounter = 0;\n      $el.trigger(\"draghover:drop\", e);\n      e.preventDefault();\n    }\n  });\n  return $el;\n}\n\nfunction disableDraghover(el) {\n  return $(el).off(\".draghover\");\n}\n\nfunction enableDocumentEvents() {\n  var $doc = $(\"html\");\n  enableDraghover($doc).on({\n    \"draghover:enter.draghover\": // e: Event\n    function draghoverEnterDraghover() {\n      zoneOf($fileInputs).addClass(zoneActive);\n    },\n    \"draghover:leave.draghover\": // e: Event\n    function draghoverLeaveDraghover() {\n      zoneOf($fileInputs).removeClass(zoneActive);\n    },\n    \"draghover:drop.draghover\": // e: Event\n    function draghoverDropDraghover() {\n      zoneOf($fileInputs).removeClass(zoneOver).removeClass(zoneActive);\n    }\n  });\n}\n\nfunction disableDocumentEvents() {\n  var $doc = $(\"html\");\n  $doc.off(\".draghover\");\n  disableDraghover($doc);\n}\n\nfunction canSetFiles(fileList) {\n  var testEl = document.createElement(\"input\");\n  testEl.type = \"file\";\n\n  try {\n    testEl.files = fileList;\n  } catch (e) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction handleDrop(e, el) {\n  var files = e.originalEvent.dataTransfer.files,\n      $el = $(el);\n\n  if (files === undefined || files === null) {\n    // 1. The FileList object isn't supported by this browser, and\n    // there's nothing else we can try. (< IE 10)\n    console.log(\"Dropping files is not supported on this browser. (no FileList)\");\n  } else if (!canSetFiles(files)) {\n    // 2. The browser doesn't support assigning a type=file input's .files\n    // property, but we do have a FileList to work with. (IE10+/Edge)\n    $el.val(\"\");\n    uploadDroppedFilesIE10Plus(el, files);\n  } else {\n    // 3. The browser supports FileList and input.files assignment.\n    // (Chrome, Safari)\n    $el.val(\"\");\n    el.files = e.originalEvent.dataTransfer.files; // Recent versions of Firefox (57+, or \"Quantum\" and beyond) don't seem to\n    // automatically trigger a change event, so we trigger one manually here.\n    // On browsers that do trigger change, this operation appears to be\n    // idempotent, as el.files doesn't change between events.\n\n    $el.trigger(\"change\");\n  }\n} // NOTE On Safari, at least version 10.1.2, *if the developer console is open*,\n// setting the input's value will behave strangely because of a Safari bug. The\n// uploaded file's name will appear over the placeholder value, instead of\n// replacing it. The workaround is to restart Safari. When I (Alan Dipert) ran\n// into this bug Winston Chang helped me diagnose the exact problem, and Winston\n// then submitted a bug report to Apple.\n\n\nfunction setFileText($el, files) {\n  var $fileText = $el.closest(\"div.input-group\").find(\"input[type=text]\");\n\n  if (files.length === 1) {\n    $fileText.val(files[0].name);\n  } else {\n    $fileText.val(files.length + \" files\");\n  }\n} // If previously selected files are uploading, abort that.\n\n\nfunction abortCurrentUpload($el) {\n  var uploader = $el.data(\"currentUploader\");\n  if (uploader) uploader.abort(); // Clear data-restore attribute if present.\n\n  $el.removeAttr(\"data-restore\");\n}\n\nfunction uploadDroppedFilesIE10Plus(el, files) {\n  var $el = $(el);\n  abortCurrentUpload($el); // Set the label in the text box\n\n  setFileText($el, files); // Start the new upload and put the uploader in 'currentUploader'.\n\n  $el.data(\"currentUploader\", new FileUploader(shinyShinyApp(), fileInputBindingGetId(el), files, el));\n}\n\nfunction uploadFiles(evt) {\n  var $el = $(evt.target);\n  abortCurrentUpload($el);\n  var files = evt.target.files;\n  var id = fileInputBindingGetId(evt.target);\n  if (files.length === 0) return; // Set the label in the text box\n\n  setFileText($el, files); // Start the new upload and put the uploader in 'currentUploader'.\n\n  $el.data(\"currentUploader\", new FileUploader(shinyShinyApp(), id, files, evt.target));\n} // Here we maintain a list of all the current file inputs. This is necessary\n// because we need to trigger events on them in order to respond to file drag\n// events. For example, they should all light up when a file is dragged on to\n// the page.\n// TODO-barret ; Should this be an internal class property?\n\n\nvar $fileInputs = $();\n\nfunction fileInputBindingGetId(el) {\n  return InputBinding.prototype.getId.call(this, el) || el.name;\n}\n\nvar FileInputBinding = /*#__PURE__*/function (_InputBinding) {\n  _inherits(FileInputBinding, _InputBinding);\n\n  var _super = _createSuper(FileInputBinding);\n\n  function FileInputBinding() {\n    _classCallCheck(this, FileInputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(FileInputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find('input[type=\"file\"]');\n    }\n  }, {\n    key: \"getId\",\n    value: function getId(el) {\n      return fileInputBindingGetId(el);\n    }\n  }, {\n    key: \"getValue\",\n    value: function getValue(el) {\n      // This returns a non-undefined value only when there's a 'data-restore'\n      // attribute, which is set only when restoring Shiny state. If a file is\n      // uploaded through the browser, 'data-restore' gets cleared.\n      var data = $(el).attr(\"data-restore\");\n\n      if (data) {\n        var dataParsed = JSON.parse(data); // Set the label in the text box\n\n        var $fileText = $(el).closest(\"div.input-group\").find(\"input[type=text]\");\n\n        if (dataParsed.name.length === 1) {\n          $fileText.val(dataParsed.name[0]);\n        } else {\n          $fileText.val(dataParsed.name.length + \" files\");\n        } // Manually set up progress bar. A bit inelegant because it duplicates\n        // code from FileUploader, but duplication is less bad than alternatives.\n\n\n        var $progress = $(el).closest(\"div.form-group\").find(\".progress\");\n        var $bar = $progress.find(\".progress-bar\");\n        $progress.removeClass(\"active\");\n        $bar.width(\"100%\");\n        $bar.css(\"visibility\", \"visible\");\n        return dataParsed;\n      } else {\n        return null;\n      }\n    }\n  }, {\n    key: \"setValue\",\n    value: function setValue(el, value) {\n      // Not implemented\n      el;\n      value;\n    }\n  }, {\n    key: \"getType\",\n    value: function getType(el) {\n      // This will be used only when restoring a file from a saved state.\n      return \"shiny.file\";\n      el;\n    }\n  }, {\n    key: \"subscribe\",\n    value: function subscribe(el, callback) {\n      callback;\n      $(el).on(\"change.fileInputBinding\", uploadFiles); // Here we try to set up the necessary events for Drag and Drop (\"DnD\").\n\n      if ($fileInputs.length === 0) enableDocumentEvents();\n      $fileInputs = $fileInputs.add(el);\n      var $zone = zoneOf(el);\n      enableDraghover($zone).on({\n        \"draghover:enter.draghover\": function draghoverEnterDraghover(e) {\n          e;\n          $zone.addClass(zoneOver);\n        },\n        \"draghover:leave.draghover\": function draghoverLeaveDraghover(e) {\n          $zone.removeClass(zoneOver); // Prevent this event from bubbling to the document handler,\n          // which would deactivate all zones.\n\n          e.stopPropagation();\n        },\n        \"draghover:drop.draghover\": function draghoverDropDraghover(e, dropEvent) {\n          e;\n          handleDrop(dropEvent, el);\n        }\n      });\n    }\n  }, {\n    key: \"unsubscribe\",\n    value: function unsubscribe(el) {\n      var $el = $(el),\n          $zone = zoneOf(el);\n      $zone.removeClass(zoneOver).removeClass(zoneActive);\n      disableDraghover($zone);\n      $el.off(\".fileInputBinding\");\n      $zone.off(\".draghover\"); // Remove el from list of inputs and (maybe) clean up global event handlers.\n\n      $fileInputs = $fileInputs.not(el);\n      if ($fileInputs.length === 0) disableDocumentEvents();\n    }\n  }]);\n\n  return FileInputBinding;\n}(InputBinding);\n\nexport { FileInputBinding };", "'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  map: function map(callbackfn /* , thisArg */) {\n    return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.array.map.js\";\nimport \"core-js/modules/es.function.name.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport $ from \"jquery\";\nimport { triggerFileInputChanged } from \"../events/inputChanged\";\nimport { $escape } from \"../utils\";\nimport { getFileInputBinding } from \"../shiny/initedMethods\";\n\n// Generic driver class for doing chunk-wise asynchronous processing of a\n// FileList object. Subclass/clone it and override the `on*` functions to\n// make it do something useful.\nvar FileProcessor = /*#__PURE__*/function () {\n  // Currently need to use small chunk size because R-Websockets can't\n  // handle continuation frames\n  function FileProcessor(files) {\n    var exec$run = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n    _classCallCheck(this, FileProcessor);\n\n    _defineProperty(this, \"files\", void 0);\n\n    _defineProperty(this, \"fileIndex\", -1);\n\n    _defineProperty(this, \"aborted\", false);\n\n    _defineProperty(this, \"completed\", false);\n\n    this.files = files; // TODO: Register error/abort callbacks\n\n    if (exec$run) {\n      this.$run();\n    }\n  } // Begin callbacks. Subclassers/cloners may override any or all of these.\n\n\n  _createClass(FileProcessor, [{\n    key: \"onBegin\",\n    value: function onBegin(files, cont) {\n      files;\n      setTimeout(cont, 0);\n    }\n  }, {\n    key: \"onFile\",\n    value: function onFile(file, cont) {\n      file;\n      setTimeout(cont, 0);\n    }\n  }, {\n    key: \"onComplete\",\n    value: function onComplete() {\n      return;\n    }\n  }, {\n    key: \"onAbort\",\n    value: function onAbort() {\n      return;\n    } // End callbacks\n    // Aborts processing, unless it's already completed\n\n  }, {\n    key: \"abort\",\n    value: function abort() {\n      if (this.completed || this.aborted) return;\n      this.aborted = true;\n      this.onAbort();\n    } // Returns a bound function that will call this.$run one time.\n\n  }, {\n    key: \"$getRun\",\n    value: function $getRun() {\n      var _this = this;\n\n      var called = false;\n      return function () {\n        if (called) return;\n        called = true;\n\n        _this.$run();\n      };\n    } // This function will be called multiple times to advance the process.\n    // It relies on the state of the object's fields to know what to do next.\n\n  }, {\n    key: \"$run\",\n    value: function $run() {\n      if (this.aborted || this.completed) return;\n\n      if (this.fileIndex < 0) {\n        // Haven't started yet--begin\n        this.fileIndex = 0;\n        this.onBegin(this.files, this.$getRun());\n        return;\n      }\n\n      if (this.fileIndex === this.files.length) {\n        // Just ended\n        this.completed = true;\n        this.onComplete();\n        return;\n      } // If we got here, then we have a file to process, or we are\n      // in the middle of processing a file, or have just finished\n      // processing a file.\n\n\n      var file = this.files[this.fileIndex++];\n      this.onFile(file, this.$getRun());\n    }\n  }]);\n\n  return FileProcessor;\n}();\n\nvar FileUploader = /*#__PURE__*/function (_FileProcessor) {\n  _inherits(FileUploader, _FileProcessor);\n\n  var _super = _createSuper(FileUploader);\n\n  function FileUploader(shinyapp, id, files, el) {\n    var _this2;\n\n    _classCallCheck(this, FileUploader);\n\n    // Init super with files, do not execute `this.$run()` before setting variables\n    _this2 = _super.call(this, files, false);\n\n    _defineProperty(_assertThisInitialized(_this2), \"shinyapp\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this2), \"id\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this2), \"el\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this2), \"jobId\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this2), \"uploadUrl\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this2), \"progressBytes\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this2), \"totalBytes\", void 0);\n\n    _this2.shinyapp = shinyapp;\n    _this2.id = id;\n    _this2.el = el;\n\n    _this2.$run();\n\n    return _this2;\n  }\n\n  _createClass(FileUploader, [{\n    key: \"makeRequest\",\n    value: function makeRequest(method, args, onSuccess, onFailure, blobs) {\n      this.shinyapp.makeRequest(method, args, onSuccess, onFailure, blobs);\n    }\n  }, {\n    key: \"onBegin\",\n    value: function onBegin(files, cont) {\n      var _this3 = this;\n\n      // Reset progress bar\n      this.$setError(null);\n      this.$setActive(true);\n      this.$setVisible(true);\n      this.onProgress(null, 0);\n      this.totalBytes = 0;\n      this.progressBytes = 0;\n      $.each(files, function (i, file) {\n        _this3.totalBytes += file.size;\n      });\n      var fileInfo = $.map(files, function (file, i) {\n        return {\n          name: file.name,\n          size: file.size,\n          type: file.type\n        };\n        i;\n      });\n      this.makeRequest(\"uploadInit\", [fileInfo], function (response) {\n        _this3.jobId = response.jobId;\n        _this3.uploadUrl = response.uploadUrl;\n        cont();\n      }, function (error) {\n        _this3.onError(error);\n      }, undefined);\n    }\n  }, {\n    key: \"onFile\",\n    value: function onFile(file, cont) {\n      var _this4 = this;\n\n      this.onProgress(file, 0);\n      $.ajax(this.uploadUrl, {\n        type: \"POST\",\n        cache: false,\n        xhr: function xhr() {\n          var xhrVal = $.ajaxSettings.xhr();\n\n          if (xhrVal.upload) {\n            xhrVal.upload.onprogress = function (e) {\n              if (e.lengthComputable) {\n                _this4.onProgress(file, (_this4.progressBytes + e.loaded) / _this4.totalBytes);\n              }\n            };\n          }\n\n          return xhrVal;\n        },\n        data: file,\n        contentType: \"application/octet-stream\",\n        processData: false,\n        success: function success() {\n          _this4.progressBytes += file.size;\n          cont();\n        },\n        error: function error(jqXHR, textStatus, errorThrown) {\n          errorThrown;\n\n          _this4.onError(jqXHR.responseText || textStatus);\n        }\n      });\n    }\n  }, {\n    key: \"onComplete\",\n    value: function onComplete() {\n      var _this5 = this;\n\n      var fileInfo = $.map(this.files, function (file, i) {\n        return {\n          name: file.name,\n          size: file.size,\n          type: file.type\n        };\n        i;\n      }); // Trigger shiny:inputchanged. Unlike a normal shiny:inputchanged event,\n      // it's not possible to modify the information before the values get\n      // sent to the server.\n\n      var evt = triggerFileInputChanged(this.id, fileInfo, getFileInputBinding(), this.el, \"shiny.fileupload\", document);\n      this.makeRequest(\"uploadEnd\", [this.jobId, this.id], function () {\n        _this5.$setActive(false);\n\n        _this5.onProgress(null, 1);\n\n        _this5.$bar().text(\"Upload complete\"); // Reset the file input's value to \"\". This allows the same file to be\n        // uploaded again. https://stackoverflow.com/a/22521275\n\n\n        $(evt.el).val(\"\");\n      }, function (error) {\n        _this5.onError(error);\n      }, undefined);\n      this.$bar().text(\"Finishing upload\");\n    }\n  }, {\n    key: \"onError\",\n    value: function onError(message) {\n      this.$setError(message || \"\");\n      this.$setActive(false);\n    }\n  }, {\n    key: \"onAbort\",\n    value: function onAbort() {\n      this.$setVisible(false);\n    }\n  }, {\n    key: \"onProgress\",\n    value: function onProgress(file, completed) {\n      this.$bar().width(Math.round(completed * 100) + \"%\");\n      this.$bar().text(file ? file.name : \"\");\n    }\n  }, {\n    key: \"$container\",\n    value: function $container() {\n      return $(\"#\" + $escape(this.id) + \"_progress.shiny-file-input-progress\");\n    }\n  }, {\n    key: \"$bar\",\n    value: function $bar() {\n      return $(\"#\" + $escape(this.id) + \"_progress.shiny-file-input-progress .progress-bar\");\n    }\n  }, {\n    key: \"$setVisible\",\n    value: function $setVisible(visible) {\n      this.$container().css(\"visibility\", visible ? \"visible\" : \"hidden\");\n    }\n  }, {\n    key: \"$setError\",\n    value: function $setError(error) {\n      this.$bar().toggleClass(\"progress-bar-danger\", error !== null);\n\n      if (error !== null) {\n        this.onProgress(null, 1);\n        this.$bar().text(error);\n      }\n    }\n  }, {\n    key: \"$setActive\",\n    value: function $setActive(active) {\n      this.$container().toggleClass(\"active\", !!active);\n    }\n  }]);\n\n  return FileUploader;\n}(FileProcessor);\n\nexport { FileUploader };", "import \"core-js/modules/es.function.name.js\";\nimport $ from \"jquery\";\n\nfunction triggerFileInputChanged(name, value, binding, el, inputType, onEl) {\n  var evt = $.Event(\"shiny:inputchanged\");\n  evt.name = name;\n  evt.value = value;\n  evt.binding = binding;\n  evt.el = el;\n  evt.inputType = inputType;\n  $(onEl).trigger(evt);\n  return evt;\n}\n\nexport { triggerFileInputChanged };", "var fullShinyObj = null;\n\nfunction setShinyObj(shiny) {\n  fullShinyObj = shiny;\n} //// 2021/03: TypeScript Conversion note\n// These methods are here due to the delayed initialization of `Shiny.shinyapp`. I\n// In theory, there could be multiple instances of `shinyapp`. In practice (and implementation), this is not possible and is a 1:1 coupling with `window.Shiny`.\n// To avoid calls to a large Shiny object, helper methods are created to wrap around calling the fully instantiated window.Shiny value.\n// TODO-barret; Why is `initShiny()` delayed? Is this to allow users to shim in some code? Why can't it be defined in the init method (maybe w/ an extra trigger call?)\n\n\nfunction shinySetInputValue(name, value, opts) {\n  fullShinyObj.setInputValue(name, value, opts);\n}\n\nfunction shinyShinyApp() {\n  return fullShinyObj.shinyapp;\n}\n\nfunction setShinyUser(user) {\n  fullShinyObj.user = user;\n}\n\nfunction shinyForgetLastInputValue(name) {\n  fullShinyObj.forgetLastInputValue(name);\n}\n\nfunction shinyBindAll(scope) {\n  fullShinyObj.bindAll(scope);\n}\n\nfunction shinyUnbindAll(scope) {\n  var includeSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  fullShinyObj.unbindAll(scope, includeSelf);\n}\n\nfunction shinyInitializeInputs(scope) {\n  fullShinyObj.initializeInputs(scope);\n}\n\nfunction shinyAppBindOutput(id, binding) {\n  fullShinyObj.shinyapp.bindOutput(id, binding);\n}\n\nfunction shinyAppUnbindOutput(id, binding) {\n  return fullShinyObj.shinyapp.unbindOutput(id, binding);\n}\n\nfunction getShinyOnCustomMessage() {\n  return fullShinyObj.oncustommessage;\n}\n\nvar fileInputBinding;\n\nfunction getFileInputBinding() {\n  return fileInputBinding;\n}\n\nfunction setFileInputBinding(fileInputBinding_) {\n  fileInputBinding = fileInputBinding_;\n}\n\nfunction getShinyCreateWebsocket() {\n  return fullShinyObj.createSocket;\n}\n\nexport { setShinyObj, shinySetInputValue, shinyShinyApp, setShinyUser, shinyForgetLastInputValue, shinyBindAll, shinyUnbindAll, shinyInitializeInputs, shinyAppBindOutput, shinyAppUnbindOutput, getShinyOnCustomMessage, getFileInputBinding, setFileInputBinding, getShinyCreateWebsocket };", "import { BindingRegistry } from \"../registry\";\nimport { InputBinding } from \"./inputBinding\";\nimport { CheckboxInputBinding } from \"./checkbox\";\nimport { CheckboxGroupInputBinding } from \"./checkboxgroup\";\nimport { NumberInputBinding } from \"./number\";\nimport { PasswordInputBinding } from \"./password\";\nimport { TextInputBinding } from \"./text\";\nimport { TextareaInputBinding } from \"./textarea\";\nimport { RadioInputBinding } from \"./radio\";\nimport { DateInputBinding } from \"./date\";\nimport { SliderInputBinding } from \"./slider\";\nimport { DateRangeInputBinding } from \"./daterange\";\nimport { SelectInputBinding } from \"./selectInput\";\nimport { ActionButtonInputBinding } from \"./actionbutton\";\nimport { BootstrapTabInputBinding } from \"./tabinput\";\nimport { FileInputBinding } from \"./fileinput\"; // TODO-barret make this an init method\n\nfunction initInputBindings() {\n  var inputBindings = new BindingRegistry();\n  inputBindings.register(new TextInputBinding(), \"shiny.textInput\");\n  inputBindings.register(new TextareaInputBinding(), \"shiny.textareaInput\");\n  inputBindings.register(new PasswordInputBinding(), \"shiny.passwordInput\");\n  inputBindings.register(new NumberInputBinding(), \"shiny.numberInput\");\n  inputBindings.register(new CheckboxInputBinding(), \"shiny.checkboxInput\");\n  inputBindings.register(new CheckboxGroupInputBinding(), \"shiny.checkboxGroupInput\");\n  inputBindings.register(new RadioInputBinding(), \"shiny.radioInput\");\n  inputBindings.register(new SliderInputBinding(), \"shiny.sliderInput\");\n  inputBindings.register(new DateInputBinding(), \"shiny.dateInput\");\n  inputBindings.register(new DateRangeInputBinding(), \"shiny.dateRangeInput\");\n  inputBindings.register(new SelectInputBinding(), \"shiny.selectInput\");\n  inputBindings.register(new ActionButtonInputBinding(), \"shiny.actionButtonInput\");\n  inputBindings.register(new BootstrapTabInputBinding(), \"shiny.bootstrapTabInput\");\n  var fileInputBinding = new FileInputBinding();\n  inputBindings.register(fileInputBinding, \"shiny.fileInputBinding\");\n  return {\n    inputBindings: inputBindings,\n    fileInputBinding: fileInputBinding\n  };\n}\n\nexport { initInputBindings, InputBinding };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport $ from \"jquery\";\nimport { OutputBinding } from \"./outputBinding\";\n\nvar TextOutputBinding = /*#__PURE__*/function (_OutputBinding) {\n  _inherits(TextOutputBinding, _OutputBinding);\n\n  var _super = _createSuper(TextOutputBinding);\n\n  function TextOutputBinding() {\n    _classCallCheck(this, TextOutputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(TextOutputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find(\".shiny-text-output\");\n    }\n  }, {\n    key: \"renderValue\",\n    value: function renderValue(el, data) {\n      $(el).text(data);\n    }\n  }]);\n\n  return TextOutputBinding;\n}(OutputBinding);\n\nexport { TextOutputBinding };", "'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n  join: function join(separator) {\n    return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n  }\n});\n", "import \"core-js/modules/es.array.join.js\";\nimport \"core-js/modules/es.array.map.js\";\nimport \"core-js/modules/es.regexp.exec.js\";\nimport \"core-js/modules/es.string.replace.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport $ from \"jquery\";\nimport { asArray } from \"../../utils\";\n\nvar OutputBinding = /*#__PURE__*/function () {\n  function OutputBinding() {\n    _classCallCheck(this, OutputBinding);\n\n    _defineProperty(this, \"name\", void 0);\n  }\n\n  _createClass(OutputBinding, [{\n    key: \"find\",\n    value: // Returns a jQuery object or element array that contains the\n    // descendants of scope that match this binding\n    function find(scope) {\n      throw \"Not implemented\";\n      scope;\n    }\n  }, {\n    key: \"renderValue\",\n    value: function renderValue(el, data) {\n      throw \"Not implemented\";\n      el;\n      data;\n    }\n  }, {\n    key: \"getId\",\n    value: function getId(el) {\n      return el.getAttribute(\"data-input-id\") || el.id;\n    }\n  }, {\n    key: \"onValueChange\",\n    value: function onValueChange(el, data) {\n      this.clearError(el);\n      this.renderValue(el, data);\n    }\n  }, {\n    key: \"onValueError\",\n    value: function onValueError(el, err) {\n      this.renderError(el, err);\n    }\n  }, {\n    key: \"renderError\",\n    value: function renderError(el, err) {\n      this.clearError(el);\n\n      if (err.message === \"\") {\n        // not really error, but we just need to wait (e.g. action buttons)\n        $(el).empty();\n        return;\n      }\n\n      var errClass = \"shiny-output-error\";\n\n      if (err.type !== null) {\n        // use the classes of the error condition as CSS class names\n        errClass = errClass + \" \" + $.map(asArray(err.type), function (type) {\n          return errClass + \"-\" + type;\n        }).join(\" \");\n      }\n\n      $(el).addClass(errClass).text(err.message);\n    }\n  }, {\n    key: \"clearError\",\n    value: function clearError(el) {\n      $(el).attr(\"class\", function (i, c) {\n        return c.replace(/(^|\\s)shiny-output-error\\S*/g, \"\");\n      });\n    }\n  }, {\n    key: \"showProgress\",\n    value: function showProgress(el, show) {\n      var recalcClass = \"recalculating\";\n      if (show) $(el).addClass(recalcClass);else $(el).removeClass(recalcClass);\n    }\n  }]);\n\n  return OutputBinding;\n}();\n\nexport { OutputBinding };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.function.name.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport $ from \"jquery\";\nimport { OutputBinding } from \"./outputBinding\";\n\nvar DownloadLinkOutputBinding = /*#__PURE__*/function (_OutputBinding) {\n  _inherits(DownloadLinkOutputBinding, _OutputBinding);\n\n  var _super = _createSuper(DownloadLinkOutputBinding);\n\n  function DownloadLinkOutputBinding() {\n    _classCallCheck(this, DownloadLinkOutputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(DownloadLinkOutputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find(\"a.shiny-download-link\");\n    }\n  }, {\n    key: \"renderValue\",\n    value: function renderValue(el, data) {\n      $(el).attr(\"href\", data);\n    }\n  }]);\n\n  return DownloadLinkOutputBinding;\n}(OutputBinding);\n\n// TODO-barret should this be in an init method?\n// Trigger shiny:filedownload event whenever a downloadButton/Link is clicked\n$(document).on(\"click.shinyDownloadLink\", \"a.shiny-download-link\", function (e) {\n  e;\n  var evt = jQuery.Event(\"shiny:filedownload\");\n  evt.name = this.id;\n  evt.href = this.href;\n  $(document).trigger(evt);\n});\nexport { DownloadLinkOutputBinding };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.array.join.js\";\nimport \"core-js/modules/es.array.map.js\";\nimport \"core-js/modules/es.regexp.exec.js\";\nimport \"core-js/modules/es.string.replace.js\";\nimport \"core-js/modules/es.string.search.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport $ from \"jquery\";\nimport { OutputBinding } from \"./outputBinding\";\nimport { shinyUnbindAll } from \"../../shiny/initedMethods\";\nimport { debounce } from \"../../time\";\nimport { escapeHTML } from \"../../utils\";\nimport { indirectEval } from \"../../utils/eval\";\n\nvar DatatableOutputBinding = /*#__PURE__*/function (_OutputBinding) {\n  _inherits(DatatableOutputBinding, _OutputBinding);\n\n  var _super = _createSuper(DatatableOutputBinding);\n\n  function DatatableOutputBinding() {\n    _classCallCheck(this, DatatableOutputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(DatatableOutputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find(\".shiny-datatable-output\");\n    }\n  }, {\n    key: \"onValueError\",\n    value: function onValueError(el, err) {\n      shinyUnbindAll(el);\n      this.renderError(el, err);\n    }\n  }, {\n    key: \"renderValue\",\n    value: function renderValue(el, _data) {\n      var $el = $(el).empty();\n      if (!_data || !_data.colnames) return;\n      var colnames = $.makeArray(_data.colnames);\n      var header = $.map(colnames, function (x) {\n        return \"<th>\" + x + \"</th>\";\n      }).join(\"\");\n      header = \"<thead><tr>\" + header + \"</tr></thead>\";\n      var footer = \"\";\n\n      if (_data.options === null || _data.options.searching !== false) {\n        footer = $.map(colnames, function (x) {\n          // placeholder needs to be escaped (and HTML tags are stripped off)\n          return '<th><input type=\"text\" placeholder=\"' + escapeHTML(x.replace(/(<([^>]+)>)/gi, \"\")) + '\" /></th>';\n        }).join(\"\");\n        footer = \"<tfoot>\" + footer + \"</tfoot>\";\n      }\n\n      var content = '<table class=\"table table-striped table-hover\">' + header + footer + \"</table>\";\n      $el.append(content); // options that should be eval()ed\n\n      if (_data.evalOptions) $.each(_data.evalOptions, function (i, x) {\n        /*jshint evil: true */\n        _data.options[x] = indirectEval(\"(\" + _data.options[x] + \")\");\n      }); // caseInsensitive searching? default true\n\n      var searchCI = _data.options === null || typeof _data.options.search === \"undefined\" || _data.options.search.caseInsensitive !== false;\n      var oTable = $(el).children(\"table\").DataTable($.extend({\n        processing: true,\n        serverSide: true,\n        order: [],\n        orderClasses: false,\n        pageLength: 25,\n        ajax: {\n          url: _data.action,\n          type: \"POST\",\n          data: function data(d) {\n            d.search.caseInsensitive = searchCI;\n            d.escape = _data.escape;\n          }\n        }\n      }, _data.options)); // the table object may need post-processing\n\n      if (typeof _data.callback === \"string\") {\n        /*jshint evil: true */\n        var callback = indirectEval(\"(\" + _data.callback + \")\");\n        if (typeof callback === \"function\") callback(oTable);\n      } // use debouncing for searching boxes\n\n\n      $el.find(\"label input\").first().unbind(\"keyup\").keyup(debounce(_data.searchDelay, function () {\n        oTable.search(this.value).draw();\n      }));\n      var searchInputs = $el.find(\"tfoot input\");\n\n      if (searchInputs.length > 0) {\n        // this is a little weird: aoColumns/bSearchable are still in DT 1.10\n        // https://github.com/DataTables/DataTables/issues/388\n        $.each(oTable.settings()[0].aoColumns, function (i, x) {\n          // hide the text box if not searchable\n          if (!x.bSearchable) searchInputs.eq(i).hide();\n        });\n        searchInputs.keyup(debounce(_data.searchDelay, function () {\n          oTable.column(searchInputs.index(this)).search(this.value).draw();\n        }));\n      } // FIXME: ugly scrollbars in tab panels b/c Bootstrap uses 'visible: auto'\n\n\n      $el.parents(\".tab-content\").css(\"overflow\", \"visible\");\n    }\n  }]);\n\n  return DatatableOutputBinding;\n}(OutputBinding);\n\nexport { DatatableOutputBinding };", "'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) {\n  return [\n    // `String.prototype.search` method\n    // https://tc39.es/ecma262/#sec-string.prototype.search\n    function search(regexp) {\n      var O = requireObjectCoercible(this);\n      var searcher = regexp == undefined ? undefined : regexp[SEARCH];\n      return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n    },\n    // `RegExp.prototype[@@search]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@search\n    function (regexp) {\n      var res = maybeCallNative(nativeSearch, regexp, this);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n\n      var previousLastIndex = rx.lastIndex;\n      if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n      var result = regExpExec(rx, S);\n      if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n      return result === null ? -1 : result.index;\n    }\n  ];\n});\n", "function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Debouncer = /*#__PURE__*/function () {\n  function Debouncer(target, func, delayMs) {\n    _classCallCheck(this, Debouncer);\n\n    _defineProperty(this, \"target\", void 0);\n\n    _defineProperty(this, \"func\", void 0);\n\n    _defineProperty(this, \"delayMs\", void 0);\n\n    _defineProperty(this, \"timerId\", void 0);\n\n    _defineProperty(this, \"args\", void 0);\n\n    this.target = target;\n    this.func = func;\n    this.delayMs = delayMs;\n    this.timerId = null;\n    this.args = null;\n  }\n\n  _createClass(Debouncer, [{\n    key: \"normalCall\",\n    value: function normalCall() {\n      var _this = this;\n\n      this.$clearTimer();\n\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      this.args = args;\n      this.timerId = setTimeout(function () {\n        // IE8 doesn't reliably clear timeout, so this additional\n        // check is needed\n        if (_this.timerId === null) return;\n\n        _this.$clearTimer();\n\n        _this.$invoke();\n      }, this.delayMs);\n    }\n  }, {\n    key: \"immediateCall\",\n    value: function immediateCall() {\n      this.$clearTimer();\n\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      this.args = args;\n      this.$invoke();\n    }\n  }, {\n    key: \"isPending\",\n    value: function isPending() {\n      return this.timerId !== null;\n    }\n  }, {\n    key: \"$clearTimer\",\n    value: function $clearTimer() {\n      if (this.timerId !== null) {\n        clearTimeout(this.timerId);\n        this.timerId = null;\n      }\n    }\n  }, {\n    key: \"$invoke\",\n    value: function $invoke() {\n      this.func.apply(this.target, this.args);\n      this.args = null;\n    }\n  }]);\n\n  return Debouncer;\n}(); // Returns a debounced version of the given function.\n// Debouncing means that when the function is invoked,\n// there is a delay of `threshold` milliseconds before\n// it is actually executed, and if the function is\n// invoked again before that threshold has elapsed then\n// the clock starts over.\n//\n// For example, if a function is debounced with a\n// threshold of 1000ms, then calling it 17 times at\n// 900ms intervals will result in a single execution\n// of the underlying function, 1000ms after the 17th\n// call.\n\n\nfunction debounce(threshold, func) {\n  var timerId = null;\n  return function () {\n    var _this2 = this;\n\n    for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n      args[_key3] = arguments[_key3];\n    }\n\n    if (timerId !== null) {\n      clearTimeout(timerId);\n      timerId = null;\n    }\n\n    timerId = setTimeout(function () {\n      // IE8 doesn't reliably clear timeout, so this additional\n      // check is needed\n      if (timerId === null) return;\n      timerId = null;\n      func.apply(_this2, args);\n    }, threshold);\n  };\n}\n\nexport { Debouncer, debounce };", "function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Invoker = /*#__PURE__*/function () {\n  function Invoker(target, func) {\n    _classCallCheck(this, Invoker);\n\n    _defineProperty(this, \"target\", void 0);\n\n    _defineProperty(this, \"func\", void 0);\n\n    this.target = target;\n    this.func = func;\n  } // TODO-barret - Don't know how to define the method twice and still have access to \"this\"\n\n\n  _createClass(Invoker, [{\n    key: \"normalCall\",\n    value: function normalCall() {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      this.func.apply(this.target, args);\n    }\n  }, {\n    key: \"immediateCall\",\n    value: function immediateCall() {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      this.func.apply(this.target, args);\n    }\n  }]);\n\n  return Invoker;\n}();\n\nexport { Invoker };", "import \"core-js/modules/es.array.concat.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Throttler = /*#__PURE__*/function () {\n  function Throttler(target, func, delayMs) {\n    _classCallCheck(this, Throttler);\n\n    _defineProperty(this, \"target\", void 0);\n\n    _defineProperty(this, \"func\", void 0);\n\n    _defineProperty(this, \"delayMs\", void 0);\n\n    _defineProperty(this, \"timerId\", void 0);\n\n    _defineProperty(this, \"args\", void 0);\n\n    this.target = target;\n    this.func = func;\n    this.delayMs = delayMs;\n    this.timerId = null;\n    this.args = null;\n  }\n\n  _createClass(Throttler, [{\n    key: \"normalCall\",\n    value: function normalCall() {\n      var _this = this;\n\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      this.args = args;\n\n      if (this.timerId === null) {\n        this.$invoke();\n        this.timerId = setTimeout(function () {\n          var _this$normalCall;\n\n          // IE8 doesn't reliably clear timeout, so this additional\n          // check is needed\n          if (_this.timerId === null) return;\n\n          _this.$clearTimer();\n\n          if (args.length > 0) (_this$normalCall = _this.normalCall).apply.apply(_this$normalCall, [_this].concat(args));\n        }, this.delayMs);\n      }\n    }\n  }, {\n    key: \"immediateCall\",\n    value: function immediateCall() {\n      this.$clearTimer();\n\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      this.args = args;\n      this.$invoke();\n    }\n  }, {\n    key: \"isPending\",\n    value: function isPending() {\n      return this.timerId !== null;\n    }\n  }, {\n    key: \"$clearTimer\",\n    value: function $clearTimer() {\n      if (this.timerId !== null) {\n        clearTimeout(this.timerId);\n        this.timerId = null;\n      }\n    }\n  }, {\n    key: \"$invoke\",\n    value: function $invoke() {\n      this.func.apply(this.target, this.args);\n      this.args = null;\n    }\n  }]);\n\n  return Throttler;\n}(); // Returns a throttled version of the given function.\n// Throttling means that the underlying function will\n// be executed no more than once every `threshold`\n// milliseconds.\n//\n// For example, if a function is throttled with a\n// threshold of 1000ms, then calling it 17 times at\n// 900ms intervals will result in something like 15\n// or 16 executions of the underlying function.\n// eslint-disable-next-line no-unused-vars\n\n\nfunction throttle(threshold, func) {\n  var executionPending = false;\n  var timerId = null;\n  var self, args;\n\n  function throttled() {\n    self = null;\n    args = null;\n\n    for (var _len3 = arguments.length, argumentVals = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n      argumentVals[_key3] = arguments[_key3];\n    }\n\n    if (timerId === null) {\n      // Haven't seen a call recently. Execute now and\n      // start a timer to buffer any subsequent calls.\n      timerId = setTimeout(function () {\n        // When time expires, clear the timer; and if\n        // there has been a call in the meantime, repeat.\n        timerId = null;\n\n        if (executionPending) {\n          executionPending = false;\n          throttled.apply(self, args);\n        }\n      }, threshold);\n      func.apply(this, argumentVals);\n    } else {\n      // Something executed recently. Don't do anything\n      // except set up target/arguments to be called later\n      executionPending = true;\n      self = this;\n      args = argumentVals;\n    }\n  }\n\n  return throttled;\n}\n\nexport { Throttler, throttle };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport $ from \"jquery\";\nimport { OutputBinding } from \"./outputBinding\";\nimport { shinyUnbindAll } from \"../../shiny/initedMethods\";\nimport { renderContent } from \"../../shiny/render\";\n\nvar HtmlOutputBinding = /*#__PURE__*/function (_OutputBinding) {\n  _inherits(HtmlOutputBinding, _OutputBinding);\n\n  var _super = _createSuper(HtmlOutputBinding);\n\n  function HtmlOutputBinding() {\n    _classCallCheck(this, HtmlOutputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(HtmlOutputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find(\".shiny-html-output\");\n    }\n  }, {\n    key: \"onValueError\",\n    value: function onValueError(el, err) {\n      shinyUnbindAll(el);\n      this.renderError(el, err);\n    }\n  }, {\n    key: \"renderValue\",\n    value: function renderValue(el, data) {\n      renderContent(el, data);\n    }\n  }]);\n\n  return HtmlOutputBinding;\n}(OutputBinding);\n\nexport { HtmlOutputBinding };", "'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n  forEach: forEach\n});\n", "var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  var Collection = global[COLLECTION_NAME];\n  var CollectionPrototype = Collection && Collection.prototype;\n  // some Chrome versions have non-configurable methods on DOMTokenList\n  if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n    createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n  } catch (error) {\n    CollectionPrototype.forEach = forEach;\n  }\n}\n", "var $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.es/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n  entries: function entries(O) {\n    return $entries(O);\n  }\n});\n", "function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.array.for-each.js\";\nimport \"core-js/modules/web.dom-collections.for-each.js\";\nimport \"core-js/modules/es.object.keys.js\";\nimport \"core-js/modules/es.array.index-of.js\";\nimport \"core-js/modules/es.function.name.js\";\nimport \"core-js/modules/es.array.map.js\";\nimport \"core-js/modules/es.object.entries.js\";\nimport \"core-js/modules/es.regexp.exec.js\";\nimport \"core-js/modules/es.string.replace.js\";\nimport \"core-js/modules/es.string.split.js\";\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.regexp.to-string.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\nimport \"core-js/modules/es.array.slice.js\";\nimport \"core-js/modules/es.array.from.js\";\nimport $ from \"jquery\";\nimport { asArray, hasOwnProperty } from \"../utils\";\nimport { isIE } from \"../utils/browser\";\nimport { shinyBindAll, shinyInitializeInputs, shinyUnbindAll } from \"./initedMethods\";\nimport { sendImageSizeFns } from \"./sendImageSize\";\nimport { renderHtml as singletonsRenderHtml } from \"./singletons\";\n\nfunction renderDependencies(dependencies) {\n  if (dependencies) {\n    dependencies.forEach(renderDependency);\n  }\n} // Render HTML in a DOM element, add dependencies, and bind Shiny\n// inputs/outputs. `content` can be null, a string, or an object with\n// properties 'html' and 'deps'.\n\n\nfunction renderContent(el, content) {\n  var where = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"replace\";\n\n  if (where === \"replace\") {\n    shinyUnbindAll(el);\n  }\n\n  var html = \"\";\n  var dependencies = [];\n\n  if (content === null) {\n    html = \"\";\n  } else if (typeof content === \"string\") {\n    html = content;\n  } else if (_typeof(content) === \"object\") {\n    html = content.html;\n    dependencies = content.deps || [];\n  }\n\n  renderHtml(html, el, dependencies, where);\n  var scope = el;\n\n  if (where === \"replace\") {\n    shinyInitializeInputs(el);\n    shinyBindAll(el);\n  } else {\n    var $parent = $(el).parent();\n\n    if ($parent.length > 0) {\n      scope = $parent;\n\n      if (where === \"beforeBegin\" || where === \"afterEnd\") {\n        var $grandparent = $parent.parent();\n        if ($grandparent.length > 0) scope = $grandparent;\n      }\n    }\n\n    shinyInitializeInputs(scope);\n    shinyBindAll(scope);\n  }\n} // Render HTML in a DOM element, inserting singletons into head as needed\n\n\nfunction renderHtml(html, el, dependencies) {\n  var where = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : \"replace\";\n  renderDependencies(dependencies);\n  return singletonsRenderHtml(html, el, where);\n}\n\nvar htmlDependencies = {};\n\nfunction registerDependency(name, version) {\n  htmlDependencies[name] = version;\n} // Re-render stylesheet(s) if the dependency has specificially requested it\n// and it matches an existing dependency (name and version)\n\n\nfunction needsRestyle(dep) {\n  if (!dep.restyle) {\n    return false;\n  }\n\n  var names = Object.keys(htmlDependencies);\n  var idx = names.indexOf(dep.name);\n\n  if (idx === -1) {\n    return false;\n  }\n\n  return htmlDependencies[names[idx]] === dep.version;\n} // Client-side dependency resolution and rendering\n\n\nfunction renderDependency(dep_) {\n  var dep = normalizeHtmlDependency(dep_); // Convert stylesheet objs to links early, because if `restyle` is true, we'll\n  // pass them through to `renderStylesheet` below.\n\n  var stylesheetLinks = dep.stylesheet.map(function (x) {\n    // Add \"rel\" and \"type\" fields if not already present.\n    if (!hasOwnProperty(x, \"rel\")) x.rel = \"stylesheet\";\n    if (!hasOwnProperty(x, \"type\")) x.type = \"text/css\";\n    var link = document.createElement(\"link\");\n    Object.entries(x).forEach(function (_ref) {\n      var _ref2 = _slicedToArray(_ref, 2),\n          attr = _ref2[0],\n          val = _ref2[1];\n\n      if (attr === \"href\") {\n        val = encodeURI(val);\n      } // If val isn't truthy (e.g., null), consider it a boolean attribute\n\n\n      link.setAttribute(attr, val ? val : \"\");\n    });\n    return link;\n  }); // If a restyle is needed, do that stuff and return. Note that other items\n  // (like scripts) aren't added, because they would have been added in a\n  // previous run.\n\n  if (needsRestyle(dep)) {\n    addStylesheetsAndRestyle(stylesheetLinks);\n    return true;\n  }\n\n  if (hasOwnProperty(htmlDependencies, dep.name)) return false;\n  registerDependency(dep.name, dep.version);\n  var $head = $(\"head\").first(); // Add each type of element to the DOM.\n\n  dep.meta.forEach(function (x) {\n    var meta = document.createElement(\"meta\");\n\n    for (var _i2 = 0, _Object$entries = Object.entries(x); _i2 < _Object$entries.length; _i2++) {\n      var _Object$entries$_i = _slicedToArray(_Object$entries[_i2], 2),\n          attr = _Object$entries$_i[0],\n          val = _Object$entries$_i[1];\n\n      meta.setAttribute(attr, val);\n    }\n\n    $head.append(meta);\n  });\n\n  if (stylesheetLinks.length !== 0) {\n    $head.append(stylesheetLinks);\n  }\n\n  dep.script.forEach(function (x) {\n    var script = document.createElement(\"script\");\n    Object.entries(x).forEach(function (_ref3) {\n      var _ref4 = _slicedToArray(_ref3, 2),\n          attr = _ref4[0],\n          val = _ref4[1];\n\n      if (attr === \"src\") {\n        val = encodeURI(val);\n      } // If val isn't truthy (e.g., null), consider it a boolean attribute\n\n\n      script.setAttribute(attr, val ? val : \"\");\n    });\n    $head.append(script);\n  });\n  dep.attachment.forEach(function (x) {\n    var link = $(\"<link rel='attachment'>\").attr(\"id\", dep.name + \"-\" + x.key + \"-attachment\").attr(\"href\", encodeURI(x.href));\n    $head.append(link);\n  });\n\n  if (dep.head) {\n    var $newHead = $(\"<head></head>\");\n    $newHead.html(dep.head);\n    $head.append($newHead.children());\n  }\n\n  return true;\n}\n\nfunction addStylesheetsAndRestyle(links) {\n  var $head = $(\"head\").first(); // This inline <style> based approach works for IE11\n\n  var refreshStyle = function refreshStyle(href, oldSheet) {\n    var xhr = new XMLHttpRequest();\n    xhr.open(\"GET\", href);\n\n    xhr.onload = function () {\n      var id = \"shiny_restyle_\" + href.split(\"?restyle\")[0].replace(/\\W/g, \"_\");\n      var oldStyle = $head.find(\"style#\" + id);\n      var newStyle = $(\"<style>\").attr(\"id\", id).html(xhr.responseText);\n      $head.append(newStyle); // We can remove the old styles immediately because the new styles\n      // should have been applied synchronously.\n\n      oldStyle.remove();\n      removeSheet(oldSheet);\n      sendImageSizeFns.transitioned();\n    };\n\n    xhr.send();\n  };\n\n  var findSheet = function findSheet(href) {\n    if (!href) return null;\n\n    for (var i = 0; i < document.styleSheets.length; i++) {\n      var sheet = document.styleSheets[i]; // The sheet's href is a full URL\n\n      if (typeof sheet.href === \"string\" && sheet.href.indexOf(href) > -1) {\n        return sheet;\n      }\n    }\n\n    return null;\n  }; // Removes the stylesheet from document.styleSheets, and also removes\n  // the owning <link> element, if present.\n\n\n  var removeSheet = function removeSheet(sheet) {\n    if (!sheet) return;\n    sheet.disabled = true; // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore; .cssText doesn't normally exist, but it does on IE?\n\n    if (isIE()) sheet.cssText = \"\";\n\n    if (sheet.ownerNode instanceof Element) {\n      $(sheet.ownerNode).remove();\n    }\n  };\n\n  links.map(function (link) {\n    var $link = $(link); // Find any document.styleSheets that match this link's href\n    // so we can remove it after bringing in the new stylesheet\n\n    var oldSheet = findSheet($link.attr(\"href\")); // Add a timestamp to the href to prevent caching\n\n    var href = $link.attr(\"href\") + \"?restyle=\" + new Date().getTime(); // Use inline <style> approach for IE, otherwise use the more elegant\n    // <link> -based approach\n\n    if (isIE()) {\n      refreshStyle(href, oldSheet);\n    } else {\n      $link.attr(\"href\", href); // This part is a bit tricky. The link's onload callback will be\n      // invoked after the file is loaded, but it can be _before_ the\n      // styles are actually applied. The amount of time it takes for the\n      // style to be applied is not predictable. We need to make sure the\n      // styles are applied before we send updated size/style information\n      // to the server.\n      //\n      // We do this by adding _another_ link, with CSS content\n      // base64-encoded and inlined into the href. We also add a dummy DOM\n      // element that the CSS applies to. The dummy CSS includes a\n      // transition, and when the `transitionend` event happens, we call\n      // sendImageSizeFns.transitioned() and remove the old sheet. We also remove the\n      // dummy DOM element and dummy CSS content.\n      //\n      // The reason this works is because (we assume) that if multiple\n      // <link> tags are added, they will be applied in the same order\n      // that they are loaded. This seems to be true in the browsers we\n      // have tested.\n      //\n      // Because it is common for multiple stylesheets to arrive close\n      // together, but not on exactly the same tick, we call\n      // sendImageSizeFns.transitioned(), which is debounced. Otherwise, it can result in\n      // the same plot being redrawn multiple times with different\n      // styling.\n\n      $link.attr(\"onload\", function () {\n        var $dummyEl = $(\"<div>\").css(\"transition\", \"0.1s all\").css(\"position\", \"absolute\").css(\"top\", \"-1000px\").css(\"left\", \"0\");\n        $dummyEl.one(\"transitionend\", function () {\n          $dummyEl.remove();\n          removeSheet(oldSheet);\n          sendImageSizeFns.transitioned();\n        });\n        $(document.body).append($dummyEl); // To ensure a transition actually happens, change the inline style _after_\n        // the DOM element has been added, and also use a new random color each time\n        // to prevent any potential caching done by the browser\n\n        var color = \"#\" + Math.floor(Math.random() * 16777215).toString(16);\n        setTimeout(function () {\n          return $dummyEl.css(\"color\", color);\n        }, 10);\n      });\n      $head.append(link);\n    }\n  });\n} // Convert legacy HtmlDependency to new HTMLDependency format. This is\n// idempotent; new HTMLDependency objects are returned unchanged.\n\n\nfunction normalizeHtmlDependency(dep) {\n  var _dep$src;\n\n  var hrefPrefix = (_dep$src = dep.src) === null || _dep$src === void 0 ? void 0 : _dep$src.href;\n  var result = {\n    name: dep.name,\n    version: dep.version,\n    restyle: dep.restyle,\n    meta: [],\n    stylesheet: [],\n    script: [],\n    attachment: [],\n    head: dep.head\n  };\n\n  if (dep.meta) {\n    if (Array.isArray(dep.meta)) {\n      // Assume we already have the canonical format:\n      //   [{name: \"myname\", content: \"mycontent\"}, ...]\n      result.meta = dep.meta;\n    } else {\n      // If here, then we have the legacy format, which we have to convert.\n      //   {myname: \"mycontent\", ...}\n      result.meta = Object.entries(dep.meta).map(function (_ref5) {\n        var _ref6 = _slicedToArray(_ref5, 2),\n            attr = _ref6[0],\n            val = _ref6[1];\n\n        return {\n          name: attr,\n          content: val\n        };\n      });\n    }\n  }\n\n  result.stylesheet = asArray(dep.stylesheet).map(function (s) {\n    if (typeof s === \"string\") {\n      s = {\n        href: s\n      };\n    }\n\n    if (hrefPrefix) {\n      s.href = hrefPrefix + \"/\" + s.href;\n    }\n\n    return s;\n  });\n  result.script = asArray(dep.script).map(function (s) {\n    if (typeof s === \"string\") {\n      s = {\n        src: s\n      };\n    }\n\n    if (hrefPrefix) {\n      s.src = hrefPrefix + \"/\" + s.src;\n    }\n\n    return s;\n  }); // dep.attachment might be one of the following types, which we will convert\n  // as shown:\n  // 0. undefined => []\n  // 1. A single string:\n  //    \"foo.txt\"\n  //    => [{key: \"1\", href: \"foo.txt\"}]\n  // 2. An array of strings:\n  //    [\"foo.txt\" ,\"bar.dat\"]\n  //    => [{key: \"1\", href: \"foo.txt\"}, {key: \"2\", href: \"bar.dat\"}]\n  // 3. An object:\n  //    {foo: \"foo.txt\", bar: \"bar.dat\"}\n  //    => [{key: \"foo\", href: \"foo.txt\"}, {key: \"bar\", href: \"bar.dat\"}]\n  // 4. An array of objects:\n  //    [{key: \"foo\", href: \"foo.txt\"}, {key: \"bar\", href: \"bar.dat\"}]\n  //    => (Returned unchanged)\n  //\n  // Note that the first three formats are from legacy code, and the last format\n  // is from new code.\n\n  var attachments = dep.attachment; // Convert format 0 (undefined) to format 2 or 4.\n\n  if (!attachments) attachments = []; // Convert format 1 to format 2.\n\n  if (typeof attachments === \"string\") attachments = [attachments];\n\n  if (Array.isArray(attachments)) {\n    // If we've gotten here, the format is either 2 or 4. Even though they are\n    // quite different, we can handle them both in the same loop.\n    // Need to give TypeScript a bit of help so that it's happy with .map()\n    // below. Instead of a union of two array types, tell it it's an array of\n    // a union of two types.\n    var tmp = attachments; // The contract for attachments is that arrays of attachments are\n    // addressed using 1-based indexes. Convert this array to an object.\n\n    attachments = tmp.map(function (attachment, index) {\n      if (typeof attachment === \"string\") {\n        return {\n          key: (index + 1).toString(),\n          href: attachment\n        };\n      } else {\n        return attachment;\n      }\n    });\n  } else {\n    // If we got here, it's format 3.\n    attachments = Object.entries(attachments).map(function (_ref7) {\n      var _ref8 = _slicedToArray(_ref7, 2),\n          attr = _ref8[0],\n          val = _ref8[1];\n\n      return {\n        key: attr,\n        href: val\n      };\n    });\n  } // At this point, we've normalized the format to #4. Now we can iterate over\n  // it and prepend `hrefPrefix`.\n\n\n  result.attachment = attachments.map(function (s) {\n    if (hrefPrefix) {\n      s.href = hrefPrefix + \"/\" + s.href;\n    }\n\n    return s;\n  });\n  return result;\n}\n\nexport { renderDependencies, renderContent, renderHtml, registerDependency };", "var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n  // eslint-disable-next-line es/no-array-from -- required for testing\n  Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n  from: from\n});\n", "function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { debounce, Debouncer } from \"../time\";\n\nvar SendImageSize = /*#__PURE__*/function () {\n  function SendImageSize() {\n    _classCallCheck(this, SendImageSize);\n\n    _defineProperty(this, \"regular\", void 0);\n\n    _defineProperty(this, \"transitioned\", void 0);\n  }\n\n  _createClass(SendImageSize, [{\n    key: \"setImageSend\",\n    value: function setImageSend(inputBatchSender, doSendImageSize) {\n      var sendImageSizeDebouncer = new Debouncer(null, doSendImageSize, 0);\n\n      this.regular = function () {\n        sendImageSizeDebouncer.normalCall();\n      }; // Make sure sendImageSize actually gets called before the inputBatchSender\n      // sends data to the server.\n\n\n      inputBatchSender.lastChanceCallback.push(function () {\n        if (sendImageSizeDebouncer.isPending()) sendImageSizeDebouncer.immediateCall();\n      }); // A version of sendImageSize which debounces for longer.\n\n      this.transitioned = debounce(200, this.regular);\n      return sendImageSizeDebouncer;\n    }\n  }]);\n\n  return SendImageSize;\n}();\n\nvar sendImageSizeFns = new SendImageSize();\nexport { sendImageSizeFns };", "import \"core-js/modules/es.regexp.exec.js\";\nimport \"core-js/modules/es.string.replace.js\";\nimport \"core-js/modules/es.array.join.js\";\nimport $ from \"jquery\";\nimport { toLowerCase } from \"../utils\";\nvar reSingleton = /<!--(SHINY.SINGLETON\\[([\\w]+)\\])-->([\\s\\S]*?)<!--\\/\\1-->/;\nvar reHead = /<head(?:\\s[^>]*)?>([\\s\\S]*?)<\\/head>/;\nvar knownSingletons = {};\n\nfunction renderHtml(html, el, where) {\n  var processed = processHtml(html);\n  addToHead(processed.head);\n  register(processed.singletons);\n\n  if (where === \"replace\") {\n    $(el).html(processed.html);\n  } else {\n    var elElements;\n\n    if (el instanceof HTMLElement) {\n      elElements = [el];\n    } else {\n      elElements = el.toArray();\n    }\n\n    $.each(elElements, function (i, el) {\n      // type InsertPosition = \"beforebegin\" | \"afterbegin\" | \"beforeend\" | \"afterend\"\n      el.insertAdjacentHTML(toLowerCase(where), processed.html);\n    });\n  }\n\n  return processed;\n} // Take an object where keys are names of singletons, and merges it into\n// knownSingletons\n\n\nfunction register(s) {\n  $.extend(knownSingletons, s);\n} // Takes a string or array of strings and adds them to knownSingletons\n\n\nfunction registerNames(s) {\n  if (typeof s === \"string\") {\n    knownSingletons[s] = true;\n  } else if (s instanceof Array) {\n    for (var i = 0; i < s.length; i++) {\n      knownSingletons[s[i]] = true;\n    }\n  }\n} // Inserts new content into document head\n\n\nfunction addToHead(head) {\n  if (head.length > 0) {\n    var tempDiv = $(\"<div>\" + head + \"</div>\").get(0);\n    var $head = $(\"head\");\n\n    while (tempDiv.hasChildNodes()) {\n      // @ts-expect-error; TODO-barret; IDK how this function works. Seems like it would add the first child forever.\n      $head.append(tempDiv.firstChild);\n    }\n  }\n} // Reads HTML and returns an object with info about singletons\n\n\nfunction processHtml(val) {\n  var newSingletons = {};\n  var newVal;\n\n  var findNewPayload = function findNewPayload(match, p1, sig, payload) {\n    if (knownSingletons[sig] || newSingletons[sig]) return \"\";\n    newSingletons[sig] = true;\n    return payload;\n  }; // eslint-disable-next-line no-constant-condition\n\n\n  while (true) {\n    newVal = val.replace(reSingleton, findNewPayload);\n    if (val.length === newVal.length) break;\n    val = newVal;\n  }\n\n  var heads = [];\n\n  var headAddPayload = function headAddPayload(match, payload) {\n    heads.push(payload);\n    return \"\";\n  }; // eslint-disable-next-line no-constant-condition\n\n\n  while (true) {\n    newVal = val.replace(reHead, headAddPayload);\n    if (val.length === newVal.length) break;\n    val = newVal;\n  }\n\n  return {\n    html: val,\n    head: heads.join(\"\\n\"),\n    singletons: newSingletons\n  };\n}\n\nexport { renderHtml, registerNames };", "'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  filter: function filter(callbackfn /* , thisArg */) {\n    return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.function.name.js\";\nimport \"core-js/modules/es.array.filter.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport $ from \"jquery\";\nimport { OutputBinding } from \"./outputBinding\";\nimport { createBrushHandler, createClickHandler, createClickInfo, createHoverHandler, disableDrag, initCoordmap } from \"../../imageutils\";\nimport { strToBool, getComputedLinkColor, getStyle, hasOwnProperty } from \"../../utils\";\nimport { isIE, IEVersion } from \"../../utils/browser\";\n\nvar ImageOutputBinding = /*#__PURE__*/function (_OutputBinding) {\n  _inherits(ImageOutputBinding, _OutputBinding);\n\n  var _super = _createSuper(ImageOutputBinding);\n\n  function ImageOutputBinding() {\n    _classCallCheck(this, ImageOutputBinding);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(ImageOutputBinding, [{\n    key: \"find\",\n    value: function find(scope) {\n      return $(scope).find(\".shiny-image-output, .shiny-plot-output\");\n    }\n  }, {\n    key: \"renderValue\",\n    value: function renderValue(el, data) {\n      // The overall strategy:\n      // * Clear out existing image and event handlers.\n      // * Create new image.\n      // * Create various event handlers.\n      // * Bind those event handlers to events.\n      // * Insert the new image.\n      var outputId = this.getId(el);\n      var $el = $(el);\n      var img; // Get existing img element if present.\n\n      var $img = $el.find(\"img\");\n\n      if ($img.length === 0) {\n        // If a img element is not already present, that means this is either\n        // the first time renderValue() has been called, or this is after an\n        // error.\n        img = document.createElement(\"img\");\n        $el.append(img);\n        $img = $(img);\n      } else {\n        // Trigger custom 'reset' event for any existing images in the div\n        img = $img[0];\n        $img.trigger(\"reset\");\n      }\n\n      if (!data) {\n        $el.empty();\n        return;\n      } // If value is undefined, return alternate. Sort of like ||, except it won't\n      // return alternate for other falsy values (0, false, null).\n\n\n      function ifUndefined(value, alternate) {\n        if (value === undefined) return alternate;\n        return value;\n      }\n\n      var opts = {\n        clickId: $el.data(\"click-id\"),\n        clickClip: ifUndefined(strToBool($el.data(\"click-clip\")), true),\n        dblclickId: $el.data(\"dblclick-id\"),\n        dblclickClip: ifUndefined(strToBool($el.data(\"dblclick-clip\")), true),\n        dblclickDelay: ifUndefined($el.data(\"dblclick-delay\"), 400),\n        hoverId: $el.data(\"hover-id\"),\n        hoverClip: ifUndefined(strToBool($el.data(\"hover-clip\")), true),\n        hoverDelayType: ifUndefined($el.data(\"hover-delay-type\"), \"debounce\"),\n        hoverDelay: ifUndefined($el.data(\"hover-delay\"), 300),\n        hoverNullOutside: ifUndefined(strToBool($el.data(\"hover-null-outside\")), false),\n        brushId: $el.data(\"brush-id\"),\n        brushClip: ifUndefined(strToBool($el.data(\"brush-clip\")), true),\n        brushDelayType: ifUndefined($el.data(\"brush-delay-type\"), \"debounce\"),\n        brushDelay: ifUndefined($el.data(\"brush-delay\"), 300),\n        brushFill: ifUndefined($el.data(\"brush-fill\"), \"#666\"),\n        brushStroke: ifUndefined($el.data(\"brush-stroke\"), \"#000\"),\n        brushOpacity: ifUndefined($el.data(\"brush-opacity\"), 0.3),\n        brushDirection: ifUndefined($el.data(\"brush-direction\"), \"xy\"),\n        brushResetOnNew: ifUndefined(strToBool($el.data(\"brush-reset-on-new\")), false),\n        coordmap: data.coordmap\n      };\n\n      if (opts.brushFill === \"auto\") {\n        opts.brushFill = getComputedLinkColor($el[0]);\n      }\n\n      if (opts.brushStroke === \"auto\") {\n        opts.brushStroke = getStyle($el[0], \"color\");\n      } // Copy items from data to img. Don't set the coordmap as an attribute.\n\n\n      $.each(data, function (key, value) {\n        if (value === null || key === \"coordmap\") {\n          return;\n        } // this checks only against base64 encoded src values\n        // images put here are only from renderImage and renderPlot\n\n\n        if (key === \"src\" && value === img.getAttribute(\"src\")) {\n          // Ensure the browser actually fires an onLoad event, which doesn't\n          // happen on WebKit if the value we set on src is the same as the\n          // value it already has\n          // https://github.com/rstudio/shiny/issues/2197\n          // https://stackoverflow.com/questions/5024111/javascript-image-onload-doesnt-fire-in-webkit-if-loading-same-image\n          img.removeAttribute(\"src\");\n        }\n\n        img.setAttribute(key, value);\n      }); // Unset any attributes in the current img that were not provided in the\n      // new data.\n\n      for (var i = 0; i < img.attributes.length; i++) {\n        var attrib = img.attributes[i]; // Need to check attrib.specified on IE because img.attributes contains\n        // all possible attributes on IE.\n\n        if (attrib.specified && !hasOwnProperty(data, attrib.name)) {\n          img.removeAttribute(attrib.name);\n        }\n      }\n\n      if (!opts.coordmap) {\n        opts.coordmap = {\n          panels: [],\n          dims: {\n            // These values be set to the naturalWidth and naturalHeight once the image has loaded\n            height: null,\n            width: null\n          }\n        };\n      } // Remove event handlers that were added in previous runs of this function.\n\n\n      $el.off(\".image_output\");\n      $img.off(\".image_output\"); // When the image loads, initialize all the interaction handlers. When the\n      // value of src is set, the browser may not load the image immediately,\n      // even if it's a data URL. If we try to initialize this stuff\n      // immediately, it can cause problems because we use we need the raw image\n      // height and width\n\n      $img.off(\"load.shiny_image_interaction\");\n      $img.one(\"load.shiny_image_interaction\", function () {\n        // Use a local variable so the type check is happy\n        var optsCoordmap = opts.coordmap = initCoordmap($el, opts.coordmap); // This object listens for mousedowns, and triggers mousedown2 and dblclick2\n        // events as appropriate.\n\n        var clickInfo = createClickInfo($el, opts.dblclickId, opts.dblclickDelay);\n        $el.on(\"mousedown.image_output\", clickInfo.mousedown);\n\n        if (isIE() && IEVersion() === 8) {\n          $el.on(\"dblclick.image_output\", clickInfo.dblclickIE8);\n        } // ----------------------------------------------------------\n        // Register the various event handlers\n        // ----------------------------------------------------------\n\n\n        if (opts.clickId) {\n          disableDrag($el, $img);\n          var clickHandler = createClickHandler(opts.clickId, opts.clickClip, optsCoordmap);\n          $el.on(\"mousedown2.image_output\", clickHandler.mousedown);\n          $el.on(\"resize.image_output\", clickHandler.onResize); // When img is reset, do housekeeping: clear $el's mouse listener and\n          // call the handler's onResetImg callback.\n\n          $img.on(\"reset.image_output\", clickHandler.onResetImg);\n        }\n\n        if (opts.dblclickId) {\n          disableDrag($el, $img); // We'll use the clickHandler's mousedown function, but register it to\n          // our custom 'dblclick2' event.\n\n          var dblclickHandler = createClickHandler(opts.dblclickId, opts.clickClip, optsCoordmap);\n          $el.on(\"dblclick2.image_output\", dblclickHandler.mousedown);\n          $el.on(\"resize.image_output\", dblclickHandler.onResize);\n          $img.on(\"reset.image_output\", dblclickHandler.onResetImg);\n        }\n\n        if (opts.hoverId) {\n          disableDrag($el, $img);\n          var hoverHandler = createHoverHandler(opts.hoverId, opts.hoverDelay, opts.hoverDelayType, opts.hoverClip, opts.hoverNullOutside, optsCoordmap);\n          $el.on(\"mousemove.image_output\", hoverHandler.mousemove);\n          $el.on(\"mouseout.image_output\", hoverHandler.mouseout);\n          $el.on(\"resize.image_output\", hoverHandler.onResize);\n          $img.on(\"reset.image_output\", hoverHandler.onResetImg);\n        }\n\n        if (opts.brushId) {\n          disableDrag($el, $img);\n          var brushHandler = createBrushHandler(opts.brushId, $el, opts, optsCoordmap, outputId);\n          $el.on(\"mousedown.image_output\", brushHandler.mousedown);\n          $el.on(\"mousemove.image_output\", brushHandler.mousemove);\n          $el.on(\"resize.image_output\", brushHandler.onResize);\n          $img.on(\"reset.image_output\", brushHandler.onResetImg);\n        }\n\n        if (opts.clickId || opts.dblclickId || opts.hoverId || opts.brushId) {\n          $el.addClass(\"crosshair\");\n        }\n\n        if (data.error) console.log(\"Error on server extracting coordmap: \" + data.error);\n      });\n    }\n  }, {\n    key: \"renderError\",\n    value: function renderError(el, err) {\n      $(el).find(\"img\").trigger(\"reset\");\n      OutputBinding.prototype.renderError.call(this, el, err);\n    }\n  }, {\n    key: \"clearError\",\n    value: function clearError(el) {\n      // Remove all elements except img and the brush; this is usually just\n      // error messages.\n      $(el).contents().filter(function () {\n        return !(this instanceof HTMLElement && (this.tagName === \"IMG\" || this.id === el.id + \"_brush\"));\n      }).remove(); // TODO-barret does this work?: `super.clearError(el)`\n\n      OutputBinding.prototype.clearError.call(this, el);\n    }\n  }, {\n    key: \"resize\",\n    value: function resize(el, width, height) {\n      $(el).find(\"img\").trigger(\"resize\");\n      return;\n      width;\n      height;\n    }\n  }]);\n\n  return ImageOutputBinding;\n}(OutputBinding);\n\nvar imageOutputBinding = new ImageOutputBinding();\nexport { imageOutputBinding, ImageOutputBinding };", "import \"core-js/modules/es.array.find.js\";\nimport $ from \"jquery\";\nimport { findOrigin } from \"./initCoordmap\";\nimport { equal, isnan, mapValues, roundSignif } from \"../utils\";\nimport { findBox } from \"./findbox\";\nimport { shiftToRange } from \"./shiftToRange\";\n\n// Returns an object that represents the state of the brush. This gets wrapped\n// in a brushHandler, which provides various event listeners.\nfunction createBrush($el, opts, coordmap, expandPixels) {\n  // Number of pixels outside of brush to allow start resizing\n  var resizeExpand = 10;\n  var el = $el[0];\n  var $div = null; // The div representing the brush\n\n  var state = {}; // Aliases for conciseness\n\n  var cssToImg = coordmap.scaleCssToImg;\n  var imgToCss = coordmap.scaleImgToCss;\n  reset();\n\n  function reset() {\n    // Current brushing/dragging/resizing state\n    state.brushing = false;\n    state.dragging = false;\n    state.resizing = false; // Offset of last mouse down and up events (in CSS pixels)\n\n    state.down = {\n      x: NaN,\n      y: NaN\n    };\n    state.up = {\n      x: NaN,\n      y: NaN\n    }; // Which side(s) we're currently resizing\n\n    state.resizeSides = {\n      left: false,\n      right: false,\n      top: false,\n      bottom: false\n    }; // Bounding rectangle of the brush, in CSS pixel and data dimensions. We\n    // need to record data dimensions along with pixel dimensions so that when\n    // a new plot is sent, we can re-draw the brush div with the appropriate\n    // coords.\n\n    state.boundsCss = {\n      xmin: NaN,\n      xmax: NaN,\n      ymin: NaN,\n      ymax: NaN\n    };\n    state.boundsData = {\n      xmin: NaN,\n      xmax: NaN,\n      ymin: NaN,\n      ymax: NaN\n    }; // Panel object that the brush is in\n\n    state.panel = null; // The bounds at the start of a drag/resize (in CSS pixels)\n\n    state.changeStartBounds = {\n      xmin: NaN,\n      xmax: NaN,\n      ymin: NaN,\n      ymax: NaN\n    };\n    if ($div) $div.remove();\n  } // If there's an existing brush div, use that div to set the new brush's\n  // settings, provided that the x, y, and panel variables have the same names,\n  // and there's a panel with matching panel variable values.\n\n\n  function importOldBrush() {\n    var oldDiv = $el.find(\"#\" + el.id + \"_brush\");\n    if (oldDiv.length === 0) return;\n    var oldBoundsData = oldDiv.data(\"bounds-data\");\n    var oldPanel = oldDiv.data(\"panel\");\n    if (!oldBoundsData || !oldPanel) return; // Find a panel that has matching vars; if none found, we can't restore.\n    // The oldPanel and new panel must match on their mapping vars, and the\n    // values.\n\n    for (var i = 0; i < coordmap.panels.length; i++) {\n      var curPanel = coordmap.panels[i];\n\n      if (equal(oldPanel.mapping, curPanel.mapping) && equal(oldPanel.panel_vars, curPanel.panel_vars)) {\n        // We've found a matching panel\n        state.panel = coordmap.panels[i];\n        break;\n      }\n    } // If we didn't find a matching panel, remove the old div and return\n\n\n    if (state.panel === null) {\n      oldDiv.remove();\n      return;\n    }\n\n    $div = oldDiv;\n    boundsData(oldBoundsData);\n    updateDiv();\n  } // This will reposition the brush div when the image is resized, maintaining\n  // the same data coordinates. Note that the \"resize\" here refers to the\n  // wrapper div/img being resized; elsewhere, \"resize\" refers to the brush\n  // div being resized.\n\n\n  function onResize() {\n    var boundsDataVal = boundsData(); // Check to see if we have valid boundsData\n\n    for (var val in boundsDataVal) {\n      if (isnan(boundsDataVal[val])) return;\n    }\n\n    boundsData(boundsDataVal);\n    updateDiv();\n  } // Return true if the offset is inside min/max coords\n\n\n  function isInsideBrush(offsetCss) {\n    var bounds = state.boundsCss;\n    return offsetCss.x <= bounds.xmax && offsetCss.x >= bounds.xmin && offsetCss.y <= bounds.ymax && offsetCss.y >= bounds.ymin;\n  } // Return true if offset is inside a region to start a resize\n\n\n  function isInResizeArea(offsetCss) {\n    var sides = whichResizeSides(offsetCss);\n    return sides.left || sides.right || sides.top || sides.bottom;\n  } // Return an object representing which resize region(s) the cursor is in.\n\n\n  function whichResizeSides(offsetCss) {\n    var b = state.boundsCss; // Bounds with expansion\n\n    var e = {\n      xmin: b.xmin - resizeExpand,\n      xmax: b.xmax + resizeExpand,\n      ymin: b.ymin - resizeExpand,\n      ymax: b.ymax + resizeExpand\n    };\n    var res = {\n      left: false,\n      right: false,\n      top: false,\n      bottom: false\n    };\n\n    if ((opts.brushDirection === \"xy\" || opts.brushDirection === \"x\") && offsetCss.y <= e.ymax && offsetCss.y >= e.ymin) {\n      if (offsetCss.x < b.xmin && offsetCss.x >= e.xmin) res.left = true;else if (offsetCss.x > b.xmax && offsetCss.x <= e.xmax) res.right = true;\n    }\n\n    if ((opts.brushDirection === \"xy\" || opts.brushDirection === \"y\") && offsetCss.x <= e.xmax && offsetCss.x >= e.xmin) {\n      if (offsetCss.y < b.ymin && offsetCss.y >= e.ymin) res.top = true;else if (offsetCss.y > b.ymax && offsetCss.y <= e.ymax) res.bottom = true;\n    }\n\n    return res;\n  } // Sets the bounds of the brush (in CSS pixels), given a box and optional\n  // panel. This will fit the box bounds into the panel, so we don't brush\n  // outside of it. This knows whether we're brushing in the x, y, or xy\n  // directions, and sets bounds accordingly. If no box is passed in, just\n  // return current bounds.\n\n\n  function boundsCss(boxCss) {\n    if (boxCss === undefined) {\n      return $.extend({}, state.boundsCss);\n    }\n\n    var minCss = {\n      x: boxCss.xmin,\n      y: boxCss.ymin\n    };\n    var maxCss = {\n      x: boxCss.xmax,\n      y: boxCss.ymax\n    };\n    var panel = state.panel;\n    var panelBoundsImg = panel.range;\n\n    if (opts.brushClip) {\n      minCss = imgToCss(panel.clipImg(cssToImg(minCss)));\n      maxCss = imgToCss(panel.clipImg(cssToImg(maxCss)));\n    }\n\n    if (opts.brushDirection === \"xy\") {// No change\n    } else if (opts.brushDirection === \"x\") {\n      // Extend top and bottom of plotting area\n      minCss.y = imgToCss({\n        y: panelBoundsImg.top\n      }).y;\n      maxCss.y = imgToCss({\n        y: panelBoundsImg.bottom\n      }).y;\n    } else if (opts.brushDirection === \"y\") {\n      minCss.x = imgToCss({\n        x: panelBoundsImg.left\n      }).x;\n      maxCss.x = imgToCss({\n        x: panelBoundsImg.right\n      }).x;\n    }\n\n    state.boundsCss = {\n      xmin: minCss.x,\n      xmax: maxCss.x,\n      ymin: minCss.y,\n      ymax: maxCss.y\n    }; // Positions in data space\n\n    var minData = state.panel.scaleImgToData(cssToImg(minCss));\n    var maxData = state.panel.scaleImgToData(cssToImg(maxCss)); // For reversed scales, the min and max can be reversed, so use findBox\n    // to ensure correct order.\n\n    state.boundsData = findBox(minData, maxData); // Round to 14 significant digits to avoid spurious changes in FP values\n    // (#1634).\n\n    state.boundsData = mapValues(state.boundsData, function (val) {\n      return roundSignif(val, 14);\n    }); // We also need to attach the data bounds and panel as data attributes, so\n    // that if the image is re-sent, we can grab the data bounds to create a new\n    // brush. This should be fast because it doesn't actually modify the DOM.\n\n    $div.data(\"bounds-data\", state.boundsData);\n    $div.data(\"panel\", state.panel);\n    return undefined;\n  } // Get or set the bounds of the brush using coordinates in the data space.\n\n\n  function boundsData(boxData) {\n    if (boxData === undefined) {\n      return $.extend({}, state.boundsData);\n    }\n\n    var boxCss = imgToCss(state.panel.scaleDataToImg(boxData)); // Round to 13 significant digits to avoid spurious changes in FP values\n    // (#2197).\n\n    boxCss = mapValues(boxCss, function (val) {\n      return roundSignif(val, 13);\n    }); // The scaling function can reverse the direction of the axes, so we need to\n    // find the min and max again.\n\n    boundsCss({\n      xmin: Math.min(boxCss.xmin, boxCss.xmax),\n      xmax: Math.max(boxCss.xmin, boxCss.xmax),\n      ymin: Math.min(boxCss.ymin, boxCss.ymax),\n      ymax: Math.max(boxCss.ymin, boxCss.ymax)\n    });\n    return undefined;\n  }\n\n  function getPanel() {\n    return state.panel;\n  } // Add a new div representing the brush.\n\n\n  function addDiv() {\n    if ($div) $div.remove(); // Start hidden; we'll show it when movement occurs\n\n    $div = $(document.createElement(\"div\")).attr(\"id\", el.id + \"_brush\").css({\n      \"background-color\": opts.brushFill,\n      opacity: opts.brushOpacity,\n      \"pointer-events\": \"none\",\n      position: \"absolute\"\n    }).hide();\n    var borderStyle = \"1px solid \" + opts.brushStroke;\n\n    if (opts.brushDirection === \"xy\") {\n      $div.css({\n        border: borderStyle\n      });\n    } else if (opts.brushDirection === \"x\") {\n      $div.css({\n        \"border-left\": borderStyle,\n        \"border-right\": borderStyle\n      });\n    } else if (opts.brushDirection === \"y\") {\n      $div.css({\n        \"border-top\": borderStyle,\n        \"border-bottom\": borderStyle\n      });\n    }\n\n    $el.append($div);\n    $div.offset({\n      x: 0,\n      y: 0\n    }).width(0).outerHeight(0);\n  } // Update the brush div to reflect the current brush bounds.\n\n\n  function updateDiv() {\n    // Need parent offset relative to page to calculate mouse offset\n    // relative to page.\n    var imgOffsetCss = findOrigin($el.find(\"img\"));\n    var b = state.boundsCss;\n    $div.offset({\n      top: imgOffsetCss.y + b.ymin,\n      left: imgOffsetCss.x + b.xmin\n    }).outerWidth(b.xmax - b.xmin + 1).outerHeight(b.ymax - b.ymin + 1);\n  }\n\n  function down(offsetCss) {\n    if (offsetCss === undefined) return state.down;\n    state.down = offsetCss;\n    return undefined;\n  }\n\n  function up(offsetCss) {\n    if (offsetCss === undefined) return state.up;\n    state.up = offsetCss;\n    return undefined;\n  }\n\n  function isBrushing() {\n    return state.brushing;\n  }\n\n  function startBrushing() {\n    state.brushing = true;\n    addDiv();\n    state.panel = coordmap.getPanelCss(state.down, expandPixels);\n    boundsCss(findBox(state.down, state.down));\n    updateDiv();\n  }\n\n  function brushTo(offsetCss) {\n    boundsCss(findBox(state.down, offsetCss));\n    $div.show();\n    updateDiv();\n  }\n\n  function stopBrushing() {\n    state.brushing = false; // Save the final bounding box of the brush\n\n    boundsCss(findBox(state.down, state.up));\n  }\n\n  function isDragging() {\n    return state.dragging;\n  }\n\n  function startDragging() {\n    state.dragging = true;\n    state.changeStartBounds = $.extend({}, state.boundsCss);\n  }\n\n  function dragTo(offsetCss) {\n    // How far the brush was dragged\n    var dx = offsetCss.x - state.down.x;\n    var dy = offsetCss.y - state.down.y; // Calculate what new positions would be, before clipping.\n\n    var start = state.changeStartBounds;\n    var newBoundsCss = {\n      xmin: start.xmin + dx,\n      xmax: start.xmax + dx,\n      ymin: start.ymin + dy,\n      ymax: start.ymax + dy\n    }; // Clip to the plotting area\n\n    if (opts.brushClip) {\n      var panelBoundsImg = state.panel.range;\n      var newBoundsImg = cssToImg(newBoundsCss); // Convert to format for shiftToRange\n\n      var xvalsImg = [newBoundsImg.xmin, newBoundsImg.xmax];\n      var yvalsImg = [newBoundsImg.ymin, newBoundsImg.ymax];\n      xvalsImg = shiftToRange(xvalsImg, panelBoundsImg.left, panelBoundsImg.right);\n      yvalsImg = shiftToRange(yvalsImg, panelBoundsImg.top, panelBoundsImg.bottom); // Convert back to bounds format\n\n      newBoundsCss = imgToCss({\n        xmin: xvalsImg[0],\n        xmax: xvalsImg[1],\n        ymin: yvalsImg[0],\n        ymax: yvalsImg[1]\n      });\n    }\n\n    boundsCss(newBoundsCss);\n    updateDiv();\n  }\n\n  function stopDragging() {\n    state.dragging = false;\n  }\n\n  function isResizing() {\n    return state.resizing;\n  }\n\n  function startResizing() {\n    state.resizing = true;\n    state.changeStartBounds = $.extend({}, state.boundsCss);\n    state.resizeSides = whichResizeSides(state.down);\n  }\n\n  function resizeTo(offsetCss) {\n    // How far the brush was dragged\n    var dCss = {\n      x: offsetCss.x - state.down.x,\n      y: offsetCss.y - state.down.y\n    };\n    var dImg = cssToImg(dCss); // Calculate what new positions would be, before clipping.\n\n    var bImg = cssToImg(state.changeStartBounds);\n    var panelBoundsImg = state.panel.range;\n\n    if (state.resizeSides.left) {\n      var xminImg = shiftToRange(bImg.xmin + dImg.x, panelBoundsImg.left, bImg.xmax)[0];\n      bImg.xmin = xminImg;\n    } else if (state.resizeSides.right) {\n      var xmaxImg = shiftToRange(bImg.xmax + dImg.x, bImg.xmin, panelBoundsImg.right)[0];\n      bImg.xmax = xmaxImg;\n    }\n\n    if (state.resizeSides.top) {\n      var yminImg = shiftToRange(bImg.ymin + dImg.y, panelBoundsImg.top, bImg.ymax)[0];\n      bImg.ymin = yminImg;\n    } else if (state.resizeSides.bottom) {\n      var ymaxImg = shiftToRange(bImg.ymax + dImg.y, bImg.ymin, panelBoundsImg.bottom)[0];\n      bImg.ymax = ymaxImg;\n    }\n\n    boundsCss(imgToCss(bImg));\n    updateDiv();\n  }\n\n  function stopResizing() {\n    state.resizing = false;\n  }\n\n  return {\n    reset: reset,\n    importOldBrush: importOldBrush,\n    isInsideBrush: isInsideBrush,\n    isInResizeArea: isInResizeArea,\n    whichResizeSides: whichResizeSides,\n    onResize: onResize,\n    // A callback when the wrapper div or img is resized.\n    boundsCss: boundsCss,\n    boundsData: boundsData,\n    getPanel: getPanel,\n    down: down,\n    up: up,\n    isBrushing: isBrushing,\n    startBrushing: startBrushing,\n    brushTo: brushTo,\n    stopBrushing: stopBrushing,\n    isDragging: isDragging,\n    startDragging: startDragging,\n    dragTo: dragTo,\n    stopDragging: stopDragging,\n    isResizing: isResizing,\n    startResizing: startResizing,\n    resizeTo: resizeTo,\n    stopResizing: stopResizing\n  };\n}\n\nexport { createBrush };", "import \"core-js/modules/es.parse-int.js\";\nimport \"core-js/modules/es.array.find.js\";\nimport $ from \"jquery\";\nimport { shinySetInputValue } from \"../shiny/initedMethods\";\nimport { mapValues } from \"../utils\";\nimport { initPanelScales } from \"./initPanelScales\"; // -----------------------------------------------------------------------\n// Utility functions for finding dimensions and locations of DOM elements\n// -----------------------------------------------------------------------\n// Returns the ratio that an element has been scaled (for example, by CSS\n// transforms) in the x and y directions.\n\nfunction findScalingRatio($el) {\n  var boundingRect = $el[0].getBoundingClientRect();\n  return {\n    x: boundingRect.width / $el.outerWidth(),\n    y: boundingRect.height / $el.outerHeight()\n  };\n}\n\nfunction findOrigin($el) {\n  var offset = $el.offset();\n  var scalingRatio = findScalingRatio($el); // Find the size of the padding and border, for the top and left. This is\n  // before any transforms.\n\n  var paddingBorder = {\n    left: parseInt($el.css(\"border-left-width\")) + parseInt($el.css(\"padding-left\")),\n    top: parseInt($el.css(\"border-top-width\")) + parseInt($el.css(\"padding-top\"))\n  }; // offset() returns the upper left corner of the element relative to the\n  // page, but it includes padding and border. Here we find the upper left\n  // of the element, not including padding and border.\n\n  return {\n    x: offset.left + scalingRatio.x * paddingBorder.left,\n    y: offset.top + scalingRatio.y * paddingBorder.top\n  };\n} // Find the dimensions of a tag, after transforms, and without padding and\n// border.\n\n\nfunction findDims($el) {\n  // If there's any padding/border, we need to find the ratio of the actual\n  // element content compared to the element plus padding and border.\n  var contentRatio = {\n    x: $el.width() / $el.outerWidth(),\n    y: $el.height() / $el.outerHeight()\n  }; // Get the dimensions of the element _after_ any CSS transforms. This\n  // includes the padding and border.\n\n  var boundingRect = $el[0].getBoundingClientRect(); // Dimensions of the element after any CSS transforms, and without\n  // padding/border.\n\n  return {\n    x: contentRatio.x * boundingRect.width,\n    y: contentRatio.y * boundingRect.height\n  };\n}\n\n// This adds functions to the coordmap object to handle various\n// coordinate-mapping tasks, and send information to the server. The input\n// coordmap is an array of objects, each of which represents a panel. coordmap\n// must be an array, even if empty, so that it can be modified in place; when\n// empty, we add a dummy panel to the array. It also calls initPanelScales,\n// which modifies each panel object to have scaleImgToData, scaleDataToImg,\n// and clip functions.\n//\n// There are three coordinate spaces which we need to translate between:\n//\n// 1. css: The pixel coordinates in the web browser, also known as CSS pixels.\n//    The origin is the upper-left corner of the <img> (not including padding\n//    and border).\n// 2. img: The pixel coordinates of the image data. A common case is on a\n//    HiDPI device, where the source PNG image could be 1000 pixels wide but\n//    be displayed in 500 CSS pixels. Another case is when the image has\n//    additional scaling due to CSS transforms or width.\n// 3. data: The coordinates in the data space. This is a bit more complicated\n//    than the other two, because there can be multiple panels (as in facets).\nfunction initCoordmap($el, coordmap_) {\n  var coordmap = coordmap_;\n  var $img = $el.find(\"img\");\n  var img = $img[0]; // If we didn't get any panels, create a dummy one where the domain and range\n  // are simply the pixel dimensions.\n  // that we modify.\n\n  if (coordmap.panels.length === 0) {\n    var bounds = {\n      top: 0,\n      left: 0,\n      right: img.clientWidth - 1,\n      bottom: img.clientHeight - 1\n    };\n    coordmap.panels[0] = {\n      domain: bounds,\n      range: bounds,\n      mapping: {}\n    };\n  } // If no dim height and width values are found, set them to the raw image height and width\n  // These values should be the same...\n  // This is only done to initialize an image output, whose height and width are unknown until the image is retrieved\n\n\n  coordmap.dims.height = coordmap.dims.height || img.naturalHeight;\n  coordmap.dims.width = coordmap.dims.width || img.naturalWidth; // Add scaling functions to each panel\n\n  initPanelScales(coordmap.panels); // This returns the offset of the mouse in CSS pixels relative to the img,\n  // but not including the  padding or border, if present.\n\n  coordmap.mouseOffsetCss = function (mouseEvent) {\n    var imgOrigin = findOrigin($img); // The offset of the mouse from the upper-left corner of the img, in\n    // pixels.\n\n    return {\n      x: mouseEvent.pageX - imgOrigin.x,\n      y: mouseEvent.pageY - imgOrigin.y\n    };\n  }; // Given an offset in an img in CSS pixels, return the corresponding offset\n  // in source image pixels. The offsetCss can have properties like \"x\",\n  // \"xmin\", \"y\", and \"ymax\" -- anything that starts with \"x\" and \"y\". If the\n  // img content is 1000 pixels wide, but is scaled to 400 pixels on screen,\n  // and the input is x:400, then this will return x:1000.\n\n\n  function scaleCssToImg(offsetCss) {\n    var pixelScaling = coordmap.imgToCssScalingRatio();\n    var result = mapValues(offsetCss, function (value, key) {\n      var prefix = key.substring(0, 1);\n\n      if (prefix === \"x\") {\n        return offsetCss[key] / pixelScaling.x;\n      } else if (prefix === \"y\") {\n        return offsetCss[key] / pixelScaling.y;\n      }\n\n      return null;\n    });\n    return result;\n  }\n\n  coordmap.scaleCssToImg = scaleCssToImg; // Given an offset in an img, in source image pixels, return the\n  // corresponding offset in CSS pixels. If the img content is 1000 pixels\n  // wide, but is scaled to 400 pixels on screen, and the input is x:1000,\n  // then this will return x:400.\n\n  function scaleImgToCss(offsetImg) {\n    var pixelScaling = coordmap.imgToCssScalingRatio();\n    var result = mapValues(offsetImg, function (value, key) {\n      var prefix = key.substring(0, 1);\n\n      if (prefix === \"x\") {\n        return offsetImg[key] * pixelScaling.x;\n      } else if (prefix === \"y\") {\n        return offsetImg[key] * pixelScaling.y;\n      }\n\n      return null;\n    });\n    return result;\n  }\n\n  coordmap.scaleImgToCss = scaleImgToCss; // Returns the x and y ratio the image content is scaled to on screen. If\n  // the image data is 1000 pixels wide and is scaled to 300 pixels on screen,\n  // then this returns 0.3. (Note the 300 pixels refers to CSS pixels.)\n\n  coordmap.imgToCssScalingRatio = function () {\n    var imgDims = findDims($img);\n    return {\n      x: imgDims.x / coordmap.dims.width,\n      y: imgDims.y / coordmap.dims.height\n    };\n  };\n\n  coordmap.cssToImgScalingRatio = function () {\n    var res = coordmap.imgToCssScalingRatio();\n    return {\n      x: 1 / res.x,\n      y: 1 / res.y\n    };\n  }; // Given an offset in css pixels, return an object representing which panel\n  // it's in. The `expand` argument tells it to expand the panel area by that\n  // many pixels. It's possible for an offset to be within more than one\n  // panel, because of the `expand` value. If that's the case, find the\n  // nearest panel.\n\n\n  coordmap.getPanelCss = function (offsetCss) {\n    var expand = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n    var offsetImg = coordmap.scaleCssToImg(offsetCss);\n    var x = offsetImg.x;\n    var y = offsetImg.y; // Convert expand from css pixels to img pixels\n\n    var cssToImgRatio = coordmap.cssToImgScalingRatio();\n    var expandImg = {\n      x: expand * cssToImgRatio.x,\n      y: expand * cssToImgRatio.y\n    };\n    var matches = []; // Panels that match\n\n    var dists = []; // Distance of offset to each matching panel\n\n    var b;\n    var i;\n\n    for (i = 0; i < coordmap.panels.length; i++) {\n      b = coordmap.panels[i].range;\n\n      if (x <= b.right + expandImg.x && x >= b.left - expandImg.x && y <= b.bottom + expandImg.y && y >= b.top - expandImg.y) {\n        matches.push(coordmap.panels[i]); // Find distance from edges for x and y\n\n        var xdist = 0;\n        var ydist = 0;\n\n        if (x > b.right && x <= b.right + expandImg.x) {\n          xdist = x - b.right;\n        } else if (x < b.left && x >= b.left - expandImg.x) {\n          xdist = x - b.left;\n        }\n\n        if (y > b.bottom && y <= b.bottom + expandImg.y) {\n          ydist = y - b.bottom;\n        } else if (y < b.top && y >= b.top - expandImg.y) {\n          ydist = y - b.top;\n        } // Cartesian distance\n\n\n        dists.push(Math.sqrt(Math.pow(xdist, 2) + Math.pow(ydist, 2)));\n      }\n    }\n\n    if (matches.length) {\n      // Find shortest distance\n      var minDist = Math.min.apply(null, dists);\n\n      for (i = 0; i < matches.length; i++) {\n        if (dists[i] === minDist) {\n          return matches[i];\n        }\n      }\n    }\n\n    return null;\n  }; // Is an offset (in css pixels) in a panel? If supplied, `expand` tells us\n  // to expand the panels by that many pixels in all directions.\n\n\n  coordmap.isInPanelCss = function (offsetCss) {\n    var expand = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n    if (coordmap.getPanelCss(offsetCss, expand)) return true;\n    return false;\n  }; // Returns a function that sends mouse coordinates, scaled to data space.\n  // If that function is passed a null event, it will send null.\n\n\n  coordmap.mouseCoordinateSender = function (inputId) {\n    var clip = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n    var nullOutside = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n    return function (e) {\n      if (e === null) {\n        shinySetInputValue(inputId, null);\n        return;\n      }\n\n      var coordsCss = coordmap.mouseOffsetCss(e); // If outside of plotting region\n\n      if (!coordmap.isInPanelCss(coordsCss)) {\n        if (nullOutside) {\n          shinySetInputValue(inputId, null);\n          return;\n        }\n\n        if (clip) return;\n        var _coords = {\n          // eslint-disable-next-line @typescript-eslint/naming-convention\n          coords_css: coordsCss,\n          // eslint-disable-next-line @typescript-eslint/naming-convention\n          coords_img: coordmap.scaleCssToImg(coordsCss)\n        };\n        shinySetInputValue(inputId, _coords, {\n          priority: \"event\"\n        });\n        return;\n      }\n\n      var panel = coordmap.getPanelCss(coordsCss);\n      var coordsImg = coordmap.scaleCssToImg(coordsCss);\n      var coordsData = panel.scaleImgToData(coordsImg);\n      var coords = {\n        x: coordsData.x,\n        y: coordsData.y,\n        // eslint-disable-next-line @typescript-eslint/naming-convention\n        coords_css: coordsCss,\n        // eslint-disable-next-line @typescript-eslint/naming-convention\n        coords_img: coordsImg,\n        // eslint-disable-next-line @typescript-eslint/naming-convention\n        img_css_ratio: coordmap.cssToImgScalingRatio()\n      }; // Add the panel (facet) variables, if present\n\n      $.extend(coords, panel.panel_vars); // Add variable name mappings\n\n      coords.mapping = panel.mapping; // Add scaling information\n\n      coords.domain = panel.domain;\n      coords.range = panel.range;\n      coords.log = panel.log;\n      shinySetInputValue(inputId, coords, {\n        priority: \"event\"\n      });\n    };\n  };\n\n  return coordmap;\n}\n\nexport { initCoordmap, findOrigin };", "// Map a value x from a domain to a range. If clip is true, clip it to the\nimport { mapValues } from \"../utils\"; // range.\n\nfunction mapLinear(x, domainMin, domainMax, rangeMin, rangeMax) {\n  var clip = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n  // By default, clip to range\n  clip = clip || true;\n  var factor = (rangeMax - rangeMin) / (domainMax - domainMin);\n  var val = x - domainMin;\n  var newval = val * factor + rangeMin;\n\n  if (clip) {\n    var max = Math.max(rangeMax, rangeMin);\n    var min = Math.min(rangeMax, rangeMin);\n    if (newval > max) newval = max;else if (newval < min) newval = min;\n  }\n\n  return newval;\n} // Create scale and inverse-scale functions for a single direction (x or y).\n\n\nfunction scaler1D(domainMin, domainMax, rangeMin, rangeMax, logbase) {\n  return {\n    scale: function scale(val, clip) {\n      if (logbase) val = Math.log(val) / Math.log(logbase);\n      return mapLinear(val, domainMin, domainMax, rangeMin, rangeMax, clip);\n    },\n    scaleInv: function scaleInv(val, clip) {\n      var res = mapLinear(val, rangeMin, rangeMax, domainMin, domainMax, clip);\n      if (logbase) res = Math.pow(logbase, res);\n      return res;\n    }\n  };\n}\n\n// Modify panel, adding scale and inverse-scale functions that take objects\n// like {x:1, y:3}, and also add clip function.\nfunction addScaleFuns(panel) {\n  var d = panel.domain;\n  var r = panel.range;\n  var xlog = panel.log && panel.log.x ? panel.log.x : null;\n  var ylog = panel.log && panel.log.y ? panel.log.y : null;\n  var xscaler = scaler1D(d.left, d.right, r.left, r.right, xlog);\n  var yscaler = scaler1D(d.bottom, d.top, r.bottom, r.top, ylog); // Given an object of form {x:1, y:2}, or {x:1, xmin:2:, ymax: 3}, convert\n  // from data coordinates to img. Whether a value is converted as x or y\n  // depends on the first character of the key.\n\n  panel.scaleDataToImg = function (val, clip) {\n    return mapValues(val, function (value, key) {\n      var prefix = key.substring(0, 1);\n\n      if (prefix === \"x\") {\n        return xscaler.scale(value, clip);\n      } else if (prefix === \"y\") {\n        return yscaler.scale(value, clip);\n      }\n\n      return null;\n    });\n  };\n\n  function scaleImgToData(val, clip) {\n    return mapValues(val, function (value, key) {\n      var prefix = key.substring(0, 1);\n\n      if (prefix === \"x\") {\n        return xscaler.scaleInv(value, clip);\n      } else if (prefix === \"y\") {\n        return yscaler.scaleInv(value, clip);\n      }\n\n      return null;\n    });\n  }\n\n  panel.scaleImgToData = scaleImgToData; // Given a scaled offset (in img pixels), clip it to the nearest panel region.\n\n  panel.clipImg = function (offsetImg) {\n    var newOffset = {\n      x: offsetImg.x,\n      y: offsetImg.y\n    };\n    var bounds = panel.range;\n    if (offsetImg.x > bounds.right) newOffset.x = bounds.right;else if (offsetImg.x < bounds.left) newOffset.x = bounds.left;\n    if (offsetImg.y > bounds.bottom) newOffset.y = bounds.bottom;else if (offsetImg.y < bounds.top) newOffset.y = bounds.top;\n    return newOffset;\n  };\n} // Modifies the panel objects in a coordmap, adding scaleImgToData(),\n// scaleDataToImg(), and clipImg() functions to each one. The panel objects\n// use img and data coordinates only; they do not use css coordinates. The\n// domain is in data coordinates; the range is in img coordinates.\n\n\nfunction initPanelScales(panels) {\n  // Add the functions to each panel object.\n  for (var i = 0; i < panels.length; i++) {\n    var panel = panels[i];\n    addScaleFuns(panel);\n  }\n}\n\nexport { initPanelScales };", "// Given two sets of x/y coordinates, return an object representing the min\n// and max x and y values. (This could be generalized to any number of\n// points).\nfunction findBox(offset1, offset2) {\n  return {\n    xmin: Math.min(offset1.x, offset2.x),\n    xmax: Math.max(offset1.x, offset2.x),\n    ymin: Math.min(offset1.y, offset2.y),\n    ymax: Math.max(offset1.y, offset2.y)\n  };\n}\n\nexport { findBox };", "// Shift an array of values so that they are within a min and max. The vals\n// will be shifted so that they maintain the same spacing internally. If the\n// range in vals is larger than the range of min and max, the result might not\n// make sense.\nfunction shiftToRange(vals, min, max) {\n  if (!(vals instanceof Array)) vals = [vals];\n  var maxval = Math.max.apply(null, vals);\n  var minval = Math.min.apply(null, vals);\n  var shiftAmount = 0;\n\n  if (maxval > max) {\n    shiftAmount = max - maxval;\n  } else if (minval < min) {\n    shiftAmount = min - minval;\n  }\n\n  var newvals = [];\n\n  for (var i = 0; i < vals.length; i++) {\n    newvals[i] = vals[i] + shiftAmount;\n  }\n\n  return newvals;\n}\n\nexport { shiftToRange };", "import $ from \"jquery\"; // This object provides two public event listeners: mousedown, and\n// dblclickIE8.\n// We need to make sure that, when the image is listening for double-\n// clicks, that a double-click doesn't trigger two click events. We'll\n// trigger custom mousedown2 and dblclick2 events with this mousedown\n// listener.\n\nfunction createClickInfo($el, dblclickId, dblclickDelay) {\n  var clickTimer = null;\n  var pendingE = null; // A pending mousedown2 event\n  // Create a new event of type eventType (like 'mousedown2'), and trigger\n  // it with the information stored in this.e.\n\n  function triggerEvent(newEventType, e) {\n    // Extract important info from e and construct a new event with type\n    // eventType.\n    var e2 = $.Event(newEventType, {\n      which: e.which,\n      pageX: e.pageX,\n      pageY: e.pageY\n    });\n    $el.trigger(e2);\n  }\n\n  function triggerPendingMousedown2() {\n    // It's possible that between the scheduling of a mousedown2 and the\n    // time this callback is executed, someone else triggers a\n    // mousedown2, so check for that.\n    if (pendingE) {\n      triggerEvent(\"mousedown2\", pendingE);\n      pendingE = null;\n    }\n  } // Set a timer to trigger a mousedown2 event, using information from the\n  // last recorded mousdown event.\n\n\n  function scheduleMousedown2(e) {\n    pendingE = e;\n    clickTimer = setTimeout(function () {\n      triggerPendingMousedown2();\n    }, dblclickDelay);\n  }\n\n  function mousedown(e) {\n    // Listen for left mouse button only\n    if (e.which !== 1) return; // If no dblclick listener, immediately trigger a mousedown2 event.\n\n    if (!dblclickId) {\n      triggerEvent(\"mousedown2\", e);\n      return;\n    } // If there's a dblclick listener, make sure not to count this as a\n    // click on the first mousedown; we need to wait for the dblclick\n    // delay before we can be sure this click was a single-click.\n\n\n    if (pendingE === null) {\n      scheduleMousedown2(e);\n    } else {\n      clearTimeout(clickTimer); // If second click is too far away, it doesn't count as a double\n      // click. Instead, immediately trigger a mousedown2 for the previous\n      // click, and set this click as a new first click.\n\n      if (pendingE && Math.abs(pendingE.pageX - e.pageX) > 2 || Math.abs(pendingE.pageY - e.pageY) > 2) {\n        triggerPendingMousedown2();\n        scheduleMousedown2(e);\n      } else {\n        // The second click was close to the first one. If it happened\n        // within specified delay, trigger our custom 'dblclick2' event.\n        pendingE = null;\n        triggerEvent(\"dblclick2\", e);\n      }\n    }\n  } // IE8 needs a special hack because when you do a double-click it doesn't\n  // trigger the click event twice - it directly triggers dblclick.\n\n\n  function dblclickIE8(e) {\n    e.which = 1; // In IE8, e.which is 0 instead of 1. ???\n\n    triggerEvent(\"dblclick2\", e);\n  }\n\n  return {\n    mousedown: mousedown,\n    dblclickIE8: dblclickIE8\n  };\n}\n\nexport { createClickInfo };", "import \"core-js/modules/es.array.find.js\";\nimport $ from \"jquery\";\nimport { imageOutputBinding } from \"../bindings/output/image\";\nimport { shinySetInputValue } from \"../shiny/initedMethods\";\nimport { Debouncer, Throttler } from \"../time\";\nimport { createBrush } from \"./createBrush\";\n\nfunction createClickHandler(inputId, clip, coordmap) {\n  var clickInfoSender = coordmap.mouseCoordinateSender(inputId, clip);\n  return {\n    mousedown: function mousedown(e) {\n      // Listen for left mouse button only\n      if (e.which !== 1) return;\n      clickInfoSender(e);\n    },\n    onResetImg: function onResetImg() {\n      clickInfoSender(null);\n    },\n    onResize: null\n  };\n}\n\nfunction createHoverHandler(inputId, delay, delayType, clip, nullOutside, coordmap) {\n  var sendHoverInfo = coordmap.mouseCoordinateSender(inputId, clip, nullOutside);\n  var hoverInfoSender;\n  if (delayType === \"throttle\") hoverInfoSender = new Throttler(null, sendHoverInfo, delay);else hoverInfoSender = new Debouncer(null, sendHoverInfo, delay); // What to do when mouse exits the image\n\n  var mouseout;\n  if (nullOutside) mouseout = function mouseout() {\n    hoverInfoSender.normalCall(null);\n  };else mouseout = function mouseout() {// do nothing\n  };\n  return {\n    mousemove: function mousemove(e) {\n      hoverInfoSender.normalCall(e);\n    },\n    mouseout: mouseout,\n    onResetImg: function onResetImg() {\n      hoverInfoSender.immediateCall(null);\n    },\n    onResize: null\n  };\n} // Returns a brush handler object. This has three public functions:\n// mousedown, mousemove, and onResetImg.\n\n\nfunction createBrushHandler(inputId, $el, opts, coordmap, outputId) {\n  // Parameter: expand the area in which a brush can be started, by this\n  // many pixels in all directions. (This should probably be a brush option)\n  var expandPixels = 20; // Represents the state of the brush\n\n  var brush = createBrush($el, opts, coordmap, expandPixels); // Brush IDs can span multiple image/plot outputs. When an output is brushed,\n  // if a brush with the same ID is active on a different image/plot, it must\n  // be dismissed (but without sending any data to the server). We implement\n  // this by sending the shiny-internal:brushed event to all plots, and letting\n  // each plot decide for itself what to do.\n  //\n  // The decision to have the event sent to each plot (as opposed to a single\n  // event triggered on, say, the document) was made to make cleanup easier;\n  // listening on an event on the document would prevent garbage collection\n  // of plot outputs that are removed from the document.\n\n  $el.on(\"shiny-internal:brushed.image_output\", function (e, coords) {\n    // If the new brush shares our ID but not our output element ID, we\n    // need to clear our brush (if any).\n    if (coords.brushId === inputId && coords.outputId !== outputId) {\n      $el.data(\"mostRecentBrush\", false);\n      brush.reset();\n    }\n  }); // Set cursor to one of 7 styles. We need to set the cursor on the whole\n  // el instead of the brush div, because the brush div has\n  // 'pointer-events:none' so that it won't intercept pointer events.\n  // If `style` is null, don't add a cursor style.\n\n  function setCursorStyle(style) {\n    $el.removeClass(\"crosshair grabbable grabbing ns-resize ew-resize nesw-resize nwse-resize\");\n    if (style) $el.addClass(style);\n  }\n\n  function sendBrushInfo() {\n    var coords = brush.boundsData(); // We're in a new or reset state\n\n    if (isNaN(coords.xmin)) {\n      shinySetInputValue(inputId, null); // Must tell other brushes to clear.\n\n      imageOutputBinding.find(document.documentElement).trigger(\"shiny-internal:brushed\", {\n        brushId: inputId,\n        outputId: null\n      });\n      return;\n    }\n\n    var panel = brush.getPanel(); // Add the panel (facet) variables, if present\n\n    $.extend(coords, panel.panel_vars); // eslint-disable-next-line camelcase\n\n    coords.coords_css = brush.boundsCss(); // eslint-disable-next-line camelcase\n\n    coords.coords_img = coordmap.scaleCssToImg(coords.coords_css); // eslint-disable-next-line camelcase\n\n    coords.img_css_ratio = coordmap.cssToImgScalingRatio(); // Add variable name mappings\n\n    coords.mapping = panel.mapping; // Add scaling information\n\n    coords.domain = panel.domain;\n    coords.range = panel.range;\n    coords.log = panel.log;\n    coords.direction = opts.brushDirection;\n    coords.brushId = inputId;\n    coords.outputId = outputId; // Send data to server\n\n    shinySetInputValue(inputId, coords);\n    $el.data(\"mostRecentBrush\", true);\n    imageOutputBinding.find(document.documentElement).trigger(\"shiny-internal:brushed\", coords);\n  }\n\n  var brushInfoSender;\n\n  if (opts.brushDelayType === \"throttle\") {\n    brushInfoSender = new Throttler(null, sendBrushInfo, opts.brushDelay);\n  } else {\n    brushInfoSender = new Debouncer(null, sendBrushInfo, opts.brushDelay);\n  }\n\n  function mousedown(e) {\n    // This can happen when mousedown inside the graphic, then mouseup\n    // outside, then mousedown inside. Just ignore the second\n    // mousedown.\n    if (brush.isBrushing() || brush.isDragging() || brush.isResizing()) return; // Listen for left mouse button only\n\n    if (e.which !== 1) return; // In general, brush uses css pixels, and coordmap uses img pixels.\n\n    var offsetCss = coordmap.mouseOffsetCss(e); // Ignore mousedown events outside of plotting region, expanded by\n    // a number of pixels specified in expandPixels.\n\n    if (opts.brushClip && !coordmap.isInPanelCss(offsetCss, expandPixels)) return;\n    brush.up({\n      x: NaN,\n      y: NaN\n    });\n    brush.down(offsetCss);\n\n    if (brush.isInResizeArea(offsetCss)) {\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      // @ts-expect-error; TODO-barret; Remove the variable? it is not used\n      brush.startResizing(offsetCss); // Attach the move and up handlers to the window so that they respond\n      // even when the mouse is moved outside of the image.\n\n      $(document).on(\"mousemove.image_brush\", mousemoveResizing).on(\"mouseup.image_brush\", mouseupResizing);\n    } else if (brush.isInsideBrush(offsetCss)) {\n      // @ts-expect-error; TODO-barret this variable is not respected\n      brush.startDragging(offsetCss);\n      setCursorStyle(\"grabbing\"); // Attach the move and up handlers to the window so that they respond\n      // even when the mouse is moved outside of the image.\n\n      $(document).on(\"mousemove.image_brush\", mousemoveDragging).on(\"mouseup.image_brush\", mouseupDragging);\n    } else {\n      var panel = coordmap.getPanelCss(offsetCss, expandPixels); // @ts-expect-error; TODO-barret start brushing does not take any args; Either change the function to ignore, or do not send to function;\n\n      brush.startBrushing(panel.clipImg(coordmap.scaleCssToImg(offsetCss))); // Attach the move and up handlers to the window so that they respond\n      // even when the mouse is moved outside of the image.\n\n      $(document).on(\"mousemove.image_brush\", mousemoveBrushing).on(\"mouseup.image_brush\", mouseupBrushing);\n    }\n  } // This sets the cursor style when it's in the el\n\n\n  function mousemove(e) {\n    // In general, brush uses css pixels, and coordmap uses img pixels.\n    var offsetCss = coordmap.mouseOffsetCss(e);\n\n    if (!(brush.isBrushing() || brush.isDragging() || brush.isResizing())) {\n      // Set the cursor depending on where it is\n      if (brush.isInResizeArea(offsetCss)) {\n        var r = brush.whichResizeSides(offsetCss);\n\n        if (r.left && r.top || r.right && r.bottom) {\n          setCursorStyle(\"nwse-resize\");\n        } else if (r.left && r.bottom || r.right && r.top) {\n          setCursorStyle(\"nesw-resize\");\n        } else if (r.left || r.right) {\n          setCursorStyle(\"ew-resize\");\n        } else if (r.top || r.bottom) {\n          setCursorStyle(\"ns-resize\");\n        }\n      } else if (brush.isInsideBrush(offsetCss)) {\n        setCursorStyle(\"grabbable\");\n      } else if (coordmap.isInPanelCss(offsetCss, expandPixels)) {\n        setCursorStyle(\"crosshair\");\n      } else {\n        setCursorStyle(null);\n      }\n    }\n  } // mousemove handlers while brushing or dragging\n\n\n  function mousemoveBrushing(e) {\n    brush.brushTo(coordmap.mouseOffsetCss(e));\n    brushInfoSender.normalCall();\n  }\n\n  function mousemoveDragging(e) {\n    brush.dragTo(coordmap.mouseOffsetCss(e));\n    brushInfoSender.normalCall();\n  }\n\n  function mousemoveResizing(e) {\n    brush.resizeTo(coordmap.mouseOffsetCss(e));\n    brushInfoSender.normalCall();\n  } // mouseup handlers while brushing or dragging\n\n\n  function mouseupBrushing(e) {\n    // Listen for left mouse button only\n    if (e.which !== 1) return;\n    $(document).off(\"mousemove.image_brush\").off(\"mouseup.image_brush\");\n    brush.up(coordmap.mouseOffsetCss(e));\n    brush.stopBrushing();\n    setCursorStyle(\"crosshair\"); // If the brush didn't go anywhere, hide the brush, clear value,\n    // and return.\n\n    if (brush.down().x === brush.up().x && brush.down().y === brush.up().y) {\n      brush.reset();\n      brushInfoSender.immediateCall();\n      return;\n    } // Send info immediately on mouseup, but only if needed. If we don't\n    // do the pending check, we might send the same data twice (with\n    // with difference nonce).\n\n\n    if (brushInfoSender.isPending()) brushInfoSender.immediateCall();\n  }\n\n  function mouseupDragging(e) {\n    // Listen for left mouse button only\n    if (e.which !== 1) return;\n    $(document).off(\"mousemove.image_brush\").off(\"mouseup.image_brush\");\n    brush.up(coordmap.mouseOffsetCss(e));\n    brush.stopDragging();\n    setCursorStyle(\"grabbable\");\n    if (brushInfoSender.isPending()) brushInfoSender.immediateCall();\n  }\n\n  function mouseupResizing(e) {\n    // Listen for left mouse button only\n    if (e.which !== 1) return;\n    $(document).off(\"mousemove.image_brush\").off(\"mouseup.image_brush\");\n    brush.up(coordmap.mouseOffsetCss(e));\n    brush.stopResizing();\n    if (brushInfoSender.isPending()) brushInfoSender.immediateCall();\n  } // Brush maintenance: When an image is re-rendered, the brush must either\n  // be removed (if brushResetOnNew) or imported (if !brushResetOnNew). The\n  // \"mostRecentBrush\" bit is to ensure that when multiple outputs share the\n  // same brush ID, inactive brushes don't send null values up to the server.\n  // This should be called when the img (not the el) is reset\n\n\n  function onResetImg() {\n    if (opts.brushResetOnNew) {\n      if ($el.data(\"mostRecentBrush\")) {\n        brush.reset();\n        brushInfoSender.immediateCall();\n      }\n    }\n  }\n\n  if (!opts.brushResetOnNew) {\n    if ($el.data(\"mostRecentBrush\")) {\n      // Importing an old brush must happen after the image data has loaded\n      // and the <img> DOM element has the updated size. If importOldBrush()\n      // is called before this happens, then the css-img coordinate mappings\n      // will give the wrong result, and the brush will have the wrong\n      // position.\n      //\n      // jcheng 09/26/2018: This used to happen in img.onLoad, but recently\n      // we moved to all brush initialization moving to img.onLoad so this\n      // logic can be executed inline.\n      brush.importOldBrush();\n      brushInfoSender.immediateCall();\n    }\n  }\n\n  function onResize() {\n    brush.onResize();\n    brushInfoSender.immediateCall();\n  }\n\n  return {\n    mousedown: mousedown,\n    mousemove: mousemove,\n    onResetImg: onResetImg,\n    onResize: onResize\n  };\n}\n\nexport { createClickHandler, createHoverHandler, createBrushHandler };", "function disableDrag($el, $img) {\n  // Make image non-draggable (Chrome, Safari)\n  $img.css(\"-webkit-user-drag\", \"none\"); // Firefox, IE<=10\n  // First remove existing handler so we don't keep adding handlers.\n\n  $img.off(\"dragstart.image_output\");\n  $img.on(\"dragstart.image_output\", function () {\n    return false;\n  }); // Disable selection of image and text when dragging in IE<=10\n\n  $el.off(\"selectstart.image_output\");\n  $el.on(\"selectstart.image_output\", function () {\n    return false;\n  });\n}\n\nexport { disableDrag };", "import { TextOutputBinding } from \"./text\";\nimport { BindingRegistry } from \"../registry\";\nimport { DownloadLinkOutputBinding } from \"./downloadlink\";\nimport { DatatableOutputBinding } from \"./datatable\";\nimport { HtmlOutputBinding } from \"./html\";\nimport { imageOutputBinding } from \"./image\";\nimport { OutputBinding } from \"./outputBinding\";\n\nfunction initOutputBindings() {\n  var outputBindings = new BindingRegistry();\n  outputBindings.register(new TextOutputBinding(), \"shiny.textOutput\");\n  outputBindings.register(new DownloadLinkOutputBinding(), \"shiny.downloadLink\");\n  outputBindings.register(new DatatableOutputBinding(), \"shiny.datatableOutput\");\n  outputBindings.register(new HtmlOutputBinding(), \"shiny.htmlOutput\");\n  outputBindings.register(imageOutputBinding, \"shiny.imageOutput\");\n  return {\n    outputBindings: outputBindings\n  };\n}\n\nexport { OutputBinding, initOutputBindings };", "import \"core-js/modules/es.array.find.js\";\nimport { imageOutputBinding } from \"../bindings/output/image\";\nimport { shinySetInputValue } from \"../shiny/initedMethods\";\n\nfunction resetBrush(brushId) {\n  shinySetInputValue(brushId, null);\n  imageOutputBinding.find(document.documentElement).trigger(\"shiny-internal:brushed\", {\n    brushId: brushId,\n    outputId: null\n  });\n}\n\nexport { resetBrush };", "import \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.array.join.js\";\nimport \"core-js/modules/es.array.filter.js\";\nimport \"core-js/modules/es.regexp.exec.js\";\nimport \"core-js/modules/es.string.split.js\";\nimport \"core-js/modules/es.string.match.js\";\nimport \"core-js/modules/es.array.map.js\";\nimport \"core-js/modules/es.string.replace.js\";\nimport $ from \"jquery\";\nimport { $escape, randomId } from \"../utils\";\nimport { shinyUnbindAll } from \"./initedMethods\";\nimport { renderContent } from \"./render\"; // Milliseconds to fade in or out\n\nvar fadeDuration = 250;\n\nfunction show() {\n  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n      _ref$html = _ref.html,\n      html = _ref$html === void 0 ? \"\" : _ref$html,\n      _ref$action = _ref.action,\n      action = _ref$action === void 0 ? \"\" : _ref$action,\n      _ref$deps = _ref.deps,\n      deps = _ref$deps === void 0 ? [] : _ref$deps,\n      _ref$duration = _ref.duration,\n      duration = _ref$duration === void 0 ? 5000 : _ref$duration,\n      _ref$id = _ref.id,\n      id = _ref$id === void 0 ? null : _ref$id,\n      _ref$closeButton = _ref.closeButton,\n      closeButton = _ref$closeButton === void 0 ? true : _ref$closeButton,\n      _ref$type = _ref.type,\n      type = _ref$type === void 0 ? null : _ref$type;\n\n  if (!id) id = randomId(); // Create panel if necessary\n\n  createPanel(); // Get existing DOM element for this ID, or create if needed.\n\n  var $notification = get(id);\n  if ($notification.length === 0) $notification = create(id); // Render html and dependencies\n\n  var newHtml = \"<div class=\\\"shiny-notification-content-text\\\">\".concat(html, \"</div>\") + \"<div class=\\\"shiny-notification-content-action\\\">\".concat(action, \"</div>\");\n  var $content = $notification.find(\".shiny-notification-content\");\n  renderContent($content, {\n    html: newHtml,\n    deps: deps\n  }); // Remove any existing classes of the form 'shiny-notification-xxxx'.\n  // The xxxx would be strings like 'warning'.\n\n  var classes = $notification.attr(\"class\").split(/\\s+/).filter(function (cls) {\n    return cls.match(/^shiny-notification-/);\n  }).join(\" \");\n  $notification.removeClass(classes); // Add class. 'default' means no additional CSS class.\n\n  if (type && type !== \"default\") $notification.addClass(\"shiny-notification-\" + type); // Make sure that the presence/absence of close button matches with value\n  // of `closeButton`.\n\n  var $close = $notification.find(\".shiny-notification-close\");\n\n  if (closeButton && $close.length === 0) {\n    $notification.append('<div class=\"shiny-notification-close\">&times;</div>');\n  } else if (!closeButton && $close.length !== 0) {\n    $close.remove();\n  } // If duration was provided, schedule removal. If not, clear existing\n  // removal callback (this happens if a message was first added with\n  // a duration, and then updated with no duration).\n\n\n  if (duration) addRemovalCallback(id, duration);else clearRemovalCallback(id);\n  return id;\n} // TODO-barret - Should `id` be required? (some places do not supply one)\n\n\nfunction remove(id) {\n  get(id).fadeOut(fadeDuration, function () {\n    shinyUnbindAll(this);\n    $(this).remove(); // If no more notifications, remove the panel from the DOM.\n\n    if (ids().length === 0) {\n      getPanel().remove();\n    }\n  });\n} // Returns an individual notification DOM object (wrapped in jQuery).\n\n\nfunction get(id) {\n  if (!id) return null;\n  return getPanel().find(\"#shiny-notification-\" + $escape(id));\n} // Return array of all notification IDs\n\n\nfunction ids() {\n  return getPanel().find(\".shiny-notification\").map(function () {\n    return this.id.replace(/shiny-notification-/, \"\");\n  }).get();\n} // Returns the notification panel DOM object (wrapped in jQuery).\n\n\nfunction getPanel() {\n  return $(\"#shiny-notification-panel\");\n} // Create notifications panel and return the jQuery object. If the DOM\n// element already exists, just return it.\n\n\nfunction createPanel() {\n  var $panel = getPanel();\n  if ($panel.length > 0) return $panel;\n  $(document.body).append('<div id=\"shiny-notification-panel\">');\n  return $panel;\n} // Create a notification DOM element and return the jQuery object. If the\n// DOM element already exists for the ID, just return it without creating.\n\n\nfunction create(id) {\n  var $notification = get(id);\n\n  if ($notification.length === 0) {\n    $notification = $(\"<div id=\\\"shiny-notification-\".concat(id, \"\\\" class=\\\"shiny-notification\\\">\") + '<div class=\"shiny-notification-close\">&times;</div>' + '<div class=\"shiny-notification-content\"></div>' + \"</div>\");\n    $notification.find(\".shiny-notification-close\").on(\"click\", function (e) {\n      e.preventDefault();\n      e.stopPropagation();\n      remove(id);\n    });\n    getPanel().append($notification);\n  }\n\n  return $notification;\n} // Add a callback to remove a notification after a delay in ms.\n\n\nfunction addRemovalCallback(id, delay) {\n  // If there's an existing removalCallback, clear it before adding the new\n  // one.\n  clearRemovalCallback(id); // Attach new removal callback\n\n  var removalCallback = setTimeout(function () {\n    remove(id);\n  }, delay);\n  get(id).data(\"removalCallback\", removalCallback);\n} // Clear a removal callback from a notification, if present.\n\n\nfunction clearRemovalCallback(id) {\n  var $notification = get(id);\n  var oldRemovalCallback = $notification.data(\"removalCallback\");\n\n  if (oldRemovalCallback) {\n    clearTimeout(oldRemovalCallback);\n  }\n}\n\nexport { show as showNotification, remove as removeNotification };", "'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n  return [\n    // `String.prototype.match` method\n    // https://tc39.es/ecma262/#sec-string.prototype.match\n    function match(regexp) {\n      var O = requireObjectCoercible(this);\n      var matcher = regexp == undefined ? undefined : regexp[MATCH];\n      return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n    },\n    // `RegExp.prototype[@@match]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n    function (regexp) {\n      var res = maybeCallNative(nativeMatch, regexp, this);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n\n      if (!rx.global) return regExpExec(rx, S);\n\n      var fullUnicode = rx.unicode;\n      rx.lastIndex = 0;\n      var A = [];\n      var n = 0;\n      var result;\n      while ((result = regExpExec(rx, S)) !== null) {\n        var matchStr = String(result[0]);\n        A[n] = matchStr;\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n        n++;\n      }\n      return n === 0 ? null : A;\n    }\n  ];\n});\n", "import \"core-js/modules/es.array.find.js\";\nimport $ from \"jquery\";\nimport { shinyUnbindAll } from \"./initedMethods\";\nimport { renderContent } from \"./render\"; // Show a modal dialog. This is meant to handle two types of cases: one is\n// that the content is a Bootstrap modal dialog, and the other is that the\n// content is non-Bootstrap. Bootstrap modals require some special handling,\n// which is coded in here.\n\nfunction show() {\n  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n      _ref$html = _ref.html,\n      html = _ref$html === void 0 ? \"\" : _ref$html,\n      _ref$deps = _ref.deps,\n      deps = _ref$deps === void 0 ? [] : _ref$deps;\n\n  // If there was an existing Bootstrap modal, then there will be a modal-\n  // backdrop div that was added outside of the modal wrapper, and it must be\n  // removed; otherwise there can be multiple of these divs.\n  $(\".modal-backdrop\").remove(); // Get existing wrapper DOM element, or create if needed.\n\n  var $modal = $(\"#shiny-modal-wrapper\");\n\n  if ($modal.length === 0) {\n    $modal = $('<div id=\"shiny-modal-wrapper\"></div>');\n    $(document.body).append($modal); // If the wrapper's content is a Bootstrap modal, then when the inner\n    // modal is hidden, remove the entire thing, including wrapper.\n\n    $modal.on(\"hidden.bs.modal\", function (e) {\n      if (e.target === $(\"#shiny-modal\")[0]) {\n        shinyUnbindAll($modal);\n        $modal.remove();\n      }\n    });\n  }\n\n  $modal.on(\"keydown.shinymodal\", function (e) {\n    // If we're listening for Esc, don't let the event propagate. See\n    // https://github.com/rstudio/shiny/issues/1453. The value of\n    // data(\"keyboard\") needs to be checked inside the handler, because at\n    // the time that $modal.on() is called, the $(\"#shiny-modal\") div doesn't\n    // yet exist.\n    if ($(\"#shiny-modal\").data(\"keyboard\") === false) return;\n\n    if (e.keyCode === 27) {\n      e.stopPropagation();\n      e.preventDefault();\n    }\n  }); // Set/replace contents of wrapper with html.\n\n  renderContent($modal, {\n    html: html,\n    deps: deps\n  });\n}\n\nfunction remove() {\n  var $modal = $(\"#shiny-modal-wrapper\");\n  $modal.off(\"keydown.shinymodal\"); // Look for a Bootstrap modal and if present, trigger hide event. This will\n  // trigger the hidden.bs.modal callback that we set in show(), which unbinds\n  // and removes the element.\n\n  if ($modal.find(\".modal\").length > 0) {\n    $modal.find(\".modal\").modal(\"hide\");\n  } else {\n    // If not a Bootstrap modal dialog, simply unbind and remove it.\n    shinyUnbindAll($modal);\n    $modal.remove();\n  }\n}\n\nexport { show as showModal, remove as removeModal };", "import $ from \"jquery\";\nimport { showNotification, removeNotification } from \"./notifications\";\n\nfunction updateTime(reconnectTime) {\n  var $time = $(\"#shiny-reconnect-time\"); // If the time has been removed, exit and don't reschedule this function.\n\n  if ($time.length === 0) return;\n  var seconds = Math.floor((reconnectTime - new Date().getTime()) / 1000);\n\n  if (seconds > 0) {\n    $time.text(\" in \" + seconds + \"s\");\n  } else {\n    $time.text(\"...\");\n  } // Reschedule this function after 1 second\n\n\n  setTimeout(function () {\n    updateTime(reconnectTime);\n  }, 1000);\n}\n\nfunction showReconnectDialog(delay) {\n  var reconnectTime = new Date().getTime() + delay; // If there's already a reconnect dialog, don't add another\n\n  if ($(\"#shiny-reconnect-text\").length > 0) return;\n  var html = '<span id=\"shiny-reconnect-text\">Attempting to reconnect</span>' + '<span id=\"shiny-reconnect-time\"></span>';\n  var action = '<a id=\"shiny-reconnect-now\" href=\"#\" onclick=\"Shiny.shinyapp.reconnect();\">Try now</a>';\n  showNotification({\n    id: \"reconnect\",\n    html: html,\n    action: action,\n    duration: null,\n    closeButton: false,\n    type: \"warning\"\n  });\n  updateTime(reconnectTime);\n}\n\nfunction hideReconnectDialog() {\n  removeNotification(\"reconnect\");\n}\n\nexport { showReconnectDialog, hideReconnectDialog };", "import \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.regexp.exec.js\";\nimport \"core-js/modules/es.string.match.js\";\nimport \"core-js/modules/es.parse-float.js\";\nimport \"core-js/modules/es.string.split.js\";\nimport \"core-js/modules/es.string.replace.js\";\nimport \"core-js/modules/es.array.index-of.js\";\nimport \"core-js/modules/es.array.concat.js\";\nimport \"core-js/modules/es.string.search.js\";\nimport $ from \"jquery\";\nimport { InputBatchSender, InputDeferDecorator, InputEventDecorator, InputNoResendDecorator, InputRateDecorator, InputValidateDecorator } from \"../inputPolicies\";\nimport { addDefaultInputOpts } from \"../inputPolicies/inputValidateDecorator\";\nimport { debounce, Debouncer } from \"../time\";\nimport { getComputedLinkColor, getStyle, hasOwnProperty, mapValues, pixelRatio } from \"../utils\";\nimport { bindAll, unbindAll, _bindAll } from \"./bind\";\nimport { setShinyObj } from \"./initedMethods\";\nimport { registerDependency } from \"./render\";\nimport { sendImageSizeFns } from \"./sendImageSize\";\nimport { ShinyApp } from \"./shinyapp\";\nimport { registerNames as singletonsRegisterNames } from \"./singletons\"; // \"init_shiny.js\"\n\nfunction initShiny(windowShiny) {\n  setShinyObj(windowShiny);\n  var shinyapp = windowShiny.shinyapp = new ShinyApp();\n  windowShiny.progressHandlers = shinyapp.progressHandlers;\n  var inputBatchSender = new InputBatchSender(shinyapp);\n  var inputsNoResend = new InputNoResendDecorator(inputBatchSender);\n  var inputsEvent = new InputEventDecorator(inputsNoResend);\n  var inputsRate = new InputRateDecorator(inputsEvent);\n  var inputsDefer = new InputDeferDecorator(inputsEvent);\n  var target;\n\n  if ($('input[type=\"submit\"], button[type=\"submit\"]').length > 0) {\n    // If there is a submit button on the page, use defer decorator\n    target = inputsDefer;\n    $('input[type=\"submit\"], button[type=\"submit\"]').each(function () {\n      $(this).click(function (event) {\n        event.preventDefault();\n        inputsDefer.submit();\n      });\n    });\n  } else {\n    // By default, use rate decorator\n    target = inputsRate;\n  }\n\n  var inputs = new InputValidateDecorator(target);\n\n  windowShiny.setInputValue = windowShiny.onInputChange = function (name, value, opts) {\n    var newOpts = addDefaultInputOpts(opts);\n    inputs.setInput(name, value, newOpts);\n  }; // By default, Shiny deduplicates input value changes; that is, if\n  // `setInputValue` is called with the same value as the input already\n  // has, the call is ignored (unless opts.priority = \"event\"). Calling\n  // `forgetLastInputValue` tells Shiny that the very next call to\n  // `setInputValue` for this input id shouldn't be ignored, even if it\n  // is a dupe of the existing value.\n\n\n  windowShiny.forgetLastInputValue = function (name) {\n    inputsNoResend.forget(name);\n  }; // MUST be called after `setShiny()`\n\n\n  var inputBindings = windowShiny.inputBindings;\n  var outputBindings = windowShiny.outputBindings;\n\n  function shinyBindCtx() {\n    return {\n      inputs: inputs,\n      inputsRate: inputsRate,\n      sendOutputHiddenState: sendOutputHiddenState,\n      maybeAddThemeObserver: maybeAddThemeObserver,\n      inputBindings: inputBindings,\n      outputBindings: outputBindings,\n      initDeferredIframes: initDeferredIframes\n    };\n  }\n\n  windowShiny.bindAll = function (scope) {\n    bindAll(shinyBindCtx(), scope);\n  };\n\n  windowShiny.unbindAll = function (scope) {\n    var includeSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n    unbindAll(shinyBindCtx(), scope, includeSelf);\n  }; // Calls .initialize() for all of the input objects in all input bindings,\n  // in the given scope.\n\n\n  function initializeInputs() {\n    var scope = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document.documentElement;\n    var bindings = inputBindings.getBindings(); // Iterate over all bindings\n\n    for (var i = 0; i < bindings.length; i++) {\n      var binding = bindings[i].binding;\n      var inputObjects = binding.find(scope);\n\n      if (inputObjects) {\n        // Iterate over all input objects for this binding\n        for (var j = 0; j < inputObjects.length; j++) {\n          var $inputObjectJ = $(inputObjects[j]);\n\n          if (!$inputObjectJ.data(\"_shiny_initialized\")) {\n            $inputObjectJ.data(\"_shiny_initialized\", true);\n            binding.initialize(inputObjects[j]);\n          }\n        }\n      }\n    }\n  }\n\n  windowShiny.initializeInputs = initializeInputs;\n\n  function getIdFromEl(el) {\n    var $el = $(el);\n    var bindingAdapter = $el.data(\"shiny-output-binding\");\n    if (!bindingAdapter) return null;else return bindingAdapter.getId();\n  } // Initialize all input objects in the document, before binding\n\n\n  initializeInputs(document.documentElement); // The input values returned by _bindAll() each have a structure like this:\n  //   { value: 123, opts: { ... } }\n  // We want to only keep the value. This is because when the initialValues is\n  // passed to ShinyApp.connect(), the ShinyApp object stores the\n  // initialValues object for the duration of the session, and the opts may\n  // have a reference to the DOM element, which would prevent it from being\n  // GC'd.\n\n  var initialValues = mapValues(_bindAll(shinyBindCtx(), document.documentElement), function (x) {\n    return x.value;\n  }); // The server needs to know the size of each image and plot output element,\n  // in case it is auto-sizing\n\n  $(\".shiny-image-output, .shiny-plot-output, .shiny-report-size\").each(function () {\n    var id = getIdFromEl(this);\n\n    if (this.offsetWidth !== 0 || this.offsetHeight !== 0) {\n      initialValues[\".clientdata_output_\" + id + \"_width\"] = this.offsetWidth;\n      initialValues[\".clientdata_output_\" + id + \"_height\"] = this.offsetHeight;\n    }\n  });\n\n  function getComputedBgColor(el) {\n    if (!el) {\n      // Top of document, can't recurse further\n      return null;\n    }\n\n    var bgColor = getStyle(el, \"background-color\");\n    var m = bgColor.match(/^rgba\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*\\)$/);\n\n    if (bgColor === \"transparent\" || m && parseFloat(m[4]) === 0) {\n      // No background color on this element. See if it has a background image.\n      var bgImage = getStyle(el, \"background-image\");\n\n      if (bgImage && bgImage !== \"none\") {\n        // Failed to detect background color, since it has a background image\n        return null;\n      } else {\n        // Recurse\n        return getComputedBgColor(el.parentElement);\n      }\n    }\n\n    return bgColor;\n  }\n\n  function getComputedFont(el) {\n    var fontFamily = getStyle(el, \"font-family\");\n    var fontSize = getStyle(el, \"font-size\");\n    return {\n      families: fontFamily.replace(/\"/g, \"\").split(\", \"),\n      size: fontSize\n    };\n  }\n\n  $(\".shiny-image-output, .shiny-plot-output, .shiny-report-theme\").each(function () {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    var el = this;\n    var id = getIdFromEl(el);\n    initialValues[\".clientdata_output_\" + id + \"_bg\"] = getComputedBgColor(el);\n    initialValues[\".clientdata_output_\" + id + \"_fg\"] = getStyle(el, \"color\");\n    initialValues[\".clientdata_output_\" + id + \"_accent\"] = getComputedLinkColor(el);\n    initialValues[\".clientdata_output_\" + id + \"_font\"] = getComputedFont(el);\n    maybeAddThemeObserver(el);\n  }); // Resend computed styles if *an output element's* class or style attribute changes.\n  // This gives us some level of confidence that getCurrentOutputInfo() will be\n  // properly invalidated if output container is mutated; but unfortunately,\n  // we don't have a reasonable way to detect change in *inherited* styles\n  // (other than session$setCurrentTheme())\n  // https://github.com/rstudio/shiny/issues/3196\n  // https://github.com/rstudio/shiny/issues/2998\n\n  function maybeAddThemeObserver(el) {\n    if (!window.MutationObserver) {\n      return; // IE10 and lower\n    }\n\n    var cl = el.classList;\n    var reportTheme = cl.contains(\"shiny-image-output\") || cl.contains(\"shiny-plot-output\") || cl.contains(\"shiny-report-theme\");\n\n    if (!reportTheme) {\n      return;\n    }\n\n    var $el = $(el);\n\n    if ($el.data(\"shiny-theme-observer\")) {\n      return; // i.e., observer is already observing\n    }\n\n    var observerCallback = new Debouncer(null, function () {\n      return doSendTheme(el);\n    }, 100);\n    var observer = new MutationObserver(function () {\n      return observerCallback.normalCall();\n    });\n    var config = {\n      attributes: true,\n      attributeFilter: [\"style\", \"class\"]\n    };\n    observer.observe(el, config);\n    $el.data(\"shiny-theme-observer\", observer);\n  }\n\n  function doSendTheme(el) {\n    // Sending theme info on error isn't necessary (it'd add an unnecessary additional round-trip)\n    if (el.classList.contains(\"shiny-output-error\")) {\n      return;\n    }\n\n    var id = getIdFromEl(el);\n    inputs.setInput(\".clientdata_output_\" + id + \"_bg\", getComputedBgColor(el));\n    inputs.setInput(\".clientdata_output_\" + id + \"_fg\", getStyle(el, \"color\"));\n    inputs.setInput(\".clientdata_output_\" + id + \"_accent\", getComputedLinkColor(el));\n    inputs.setInput(\".clientdata_output_\" + id + \"_font\", getComputedFont(el));\n  }\n\n  function doSendImageSize() {\n    $(\".shiny-image-output, .shiny-plot-output, .shiny-report-size\").each(function () {\n      var id = getIdFromEl(this);\n\n      if (this.offsetWidth !== 0 || this.offsetHeight !== 0) {\n        inputs.setInput(\".clientdata_output_\" + id + \"_width\", this.offsetWidth);\n        inputs.setInput(\".clientdata_output_\" + id + \"_height\", this.offsetHeight);\n      }\n    });\n    $(\".shiny-image-output, .shiny-plot-output, .shiny-report-theme\").each(function () {\n      doSendTheme(this);\n    });\n    $(\".shiny-bound-output\").each(function () {\n      var $this = $(this),\n          binding = $this.data(\"shiny-output-binding\");\n      $this.trigger({\n        type: \"shiny:visualchange\",\n        // @ts-expect-error; Can not remove info on a established, malformed Event object\n        visible: !isHidden(this),\n        binding: binding\n      });\n      binding.onResize();\n    });\n  }\n\n  sendImageSizeFns.setImageSend(inputBatchSender, doSendImageSize); // Return true if the object or one of its ancestors in the DOM tree has\n  // style='display:none'; otherwise return false.\n\n  function isHidden(obj) {\n    // null means we've hit the top of the tree. If width or height is\n    // non-zero, then we know that no ancestor has display:none.\n    if (obj === null || obj.offsetWidth !== 0 || obj.offsetHeight !== 0) {\n      return false;\n    } else if (getStyle(obj, \"display\") === \"none\") {\n      return true;\n    } else {\n      return isHidden(obj.parentNode);\n    }\n  }\n\n  var lastKnownVisibleOutputs = {}; // Set initial state of outputs to hidden, if needed\n\n  $(\".shiny-bound-output\").each(function () {\n    var id = getIdFromEl(this);\n\n    if (isHidden(this)) {\n      initialValues[\".clientdata_output_\" + id + \"_hidden\"] = true;\n    } else {\n      lastKnownVisibleOutputs[id] = true;\n      initialValues[\".clientdata_output_\" + id + \"_hidden\"] = false;\n    }\n  }); // Send update when hidden state changes\n\n  function doSendOutputHiddenState() {\n    var visibleOutputs = {};\n    $(\".shiny-bound-output\").each(function () {\n      var id = getIdFromEl(this);\n      delete lastKnownVisibleOutputs[id]; // Assume that the object is hidden when width and height are 0\n\n      var hidden = isHidden(this),\n          evt = {\n        type: \"shiny:visualchange\",\n        visible: !hidden\n      };\n\n      if (hidden) {\n        inputs.setInput(\".clientdata_output_\" + id + \"_hidden\", true);\n      } else {\n        visibleOutputs[id] = true;\n        inputs.setInput(\".clientdata_output_\" + id + \"_hidden\", false);\n      }\n\n      var $this = $(this); // @ts-expect-error; Can not remove info on a established, malformed Event object\n\n      evt.binding = $this.data(\"shiny-output-binding\"); // @ts-expect-error; Can not remove info on a established, malformed Event object\n\n      $this.trigger(evt);\n    }); // Anything left in lastKnownVisibleOutputs is orphaned\n\n    for (var name in lastKnownVisibleOutputs) {\n      if (hasOwnProperty(lastKnownVisibleOutputs, name)) inputs.setInput(\".clientdata_output_\" + name + \"_hidden\", true);\n    } // Update the visible outputs for next time\n\n\n    lastKnownVisibleOutputs = visibleOutputs;\n  } // sendOutputHiddenState gets called each time DOM elements are shown or\n  // hidden. This can be in the hundreds or thousands of times at startup.\n  // We'll debounce it, so that we do the actual work once per tick.\n\n\n  var sendOutputHiddenStateDebouncer = new Debouncer(null, doSendOutputHiddenState, 0);\n\n  function sendOutputHiddenState() {\n    sendOutputHiddenStateDebouncer.normalCall();\n  } // We need to make sure doSendOutputHiddenState actually gets called before\n  // the inputBatchSender sends data to the server. The lastChanceCallback\n  // here does that - if the debouncer has a pending call, flush it.\n\n\n  inputBatchSender.lastChanceCallback.push(function () {\n    if (sendOutputHiddenStateDebouncer.isPending()) sendOutputHiddenStateDebouncer.immediateCall();\n  }); // Given a namespace and a handler function, return a function that invokes\n  // the handler only when e's namespace matches. For example, if the\n  // namespace is \"bs\", it would match when e.namespace is \"bs\" or \"bs.tab\".\n  // If the namespace is \"bs.tab\", it would match for \"bs.tab\", but not \"bs\".\n\n  function filterEventsByNamespace(namespace, handler) {\n    for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n      args[_key - 2] = arguments[_key];\n    }\n\n    namespace = namespace.split(\".\");\n    return function (e) {\n      var eventNamespace = e.namespace.split(\".\"); // If any of the namespace strings aren't present in this event, quit.\n\n      for (var i = 0; i < namespace.length; i++) {\n        if (eventNamespace.indexOf(namespace[i]) === -1) return;\n      }\n\n      handler.apply(this, [namespace, handler].concat(args));\n    };\n  } // The size of each image may change either because the browser window was\n  // resized, or because a tab was shown/hidden (hidden elements report size\n  // of 0x0). It's OK to over-report sizes because the input pipeline will\n  // filter out values that haven't changed.\n\n\n  $(window).resize(debounce(500, sendImageSizeFns.regular)); // Need to register callbacks for each Bootstrap 3 class.\n\n  var bs3classes = [\"modal\", \"dropdown\", \"tab\", \"tooltip\", \"popover\", \"collapse\"];\n  $.each(bs3classes, function (idx, classname) {\n    $(document.body).on(\"shown.bs.\" + classname + \".sendImageSize\", \"*\", filterEventsByNamespace(\"bs\", sendImageSizeFns.regular));\n    $(document.body).on(\"shown.bs.\" + classname + \".sendOutputHiddenState \" + \"hidden.bs.\" + classname + \".sendOutputHiddenState\", \"*\", filterEventsByNamespace(\"bs\", sendOutputHiddenState));\n  }); // This is needed for Bootstrap 2 compatibility and for non-Bootstrap\n  // related shown/hidden events (like conditionalPanel)\n\n  $(document.body).on(\"shown.sendImageSize\", \"*\", sendImageSizeFns.regular);\n  $(document.body).on(\"shown.sendOutputHiddenState hidden.sendOutputHiddenState\", \"*\", sendOutputHiddenState); // Send initial pixel ratio, and update it if it changes\n\n  initialValues[\".clientdata_pixelratio\"] = pixelRatio();\n  $(window).resize(function () {\n    inputs.setInput(\".clientdata_pixelratio\", pixelRatio());\n  }); // Send initial URL\n\n  initialValues[\".clientdata_url_protocol\"] = window.location.protocol;\n  initialValues[\".clientdata_url_hostname\"] = window.location.hostname;\n  initialValues[\".clientdata_url_port\"] = window.location.port;\n  initialValues[\".clientdata_url_pathname\"] = window.location.pathname; // Send initial URL search (query string) and update it if it changes\n\n  initialValues[\".clientdata_url_search\"] = window.location.search;\n  $(window).on(\"pushstate\", function (e) {\n    inputs.setInput(\".clientdata_url_search\", window.location.search);\n    return;\n    e;\n  });\n  $(window).on(\"popstate\", function (e) {\n    inputs.setInput(\".clientdata_url_search\", window.location.search);\n    return;\n    e;\n  }); // This is only the initial value of the hash. The hash can change, but\n  // a reactive version of this isn't sent because watching for changes can\n  // require polling on some browsers. The JQuery hashchange plugin can be\n  // used if this capability is important.\n\n  initialValues[\".clientdata_url_hash_initial\"] = window.location.hash;\n  initialValues[\".clientdata_url_hash\"] = window.location.hash;\n  $(window).on(\"hashchange\", function (e) {\n    inputs.setInput(\".clientdata_url_hash\", window.location.hash);\n    return;\n    e;\n  }); // The server needs to know what singletons were rendered as part of\n  // the page loading\n\n  var singletonText = initialValues[\".clientdata_singletons\"] = $('script[type=\"application/shiny-singletons\"]').text();\n  singletonsRegisterNames(singletonText.split(/,/));\n  var dependencyText = $('script[type=\"application/html-dependencies\"]').text();\n  $.each(dependencyText.split(/;/), function (i, depStr) {\n    var match = /\\s*^(.+)\\[(.+)\\]\\s*$/.exec(depStr);\n\n    if (match) {\n      registerDependency(match[1], match[2]);\n    }\n  }); // We've collected all the initial values--start the server process!\n\n  inputsNoResend.reset(initialValues);\n  shinyapp.connect(initialValues);\n  $(document).one(\"shiny:connected\", function () {\n    initDeferredIframes();\n  }); // window.console.log(\"Shiny version: \", windowShiny.version);\n} // function initShiny()\n// Give any deferred iframes a chance to load.\n\n\nfunction initDeferredIframes() {\n  // TODO-barret; This method uses `window.Shiny`. Could be replaced with `fullShinyObj_.shinyapp?.isConnected()`,\n  // but that would not use `window.Shiny`. Is it a problem???\n  if ( // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-ignore; Do not want to define `window.Shiny` as a type to discourage usage of `window.Shiny`;\n  // Can not expect error when combining with window available Shiny definition\n  !window.Shiny || // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-ignore; Do not want to define `window.Shiny` as a type to discourage usage of `window.Shiny`;\n  // Can not expect error when combining with window available Shiny definition\n  !window.Shiny.shinyapp || // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-ignore; Do not want to define `window.Shiny` as a type to discourage usage of `window.Shiny`;\n  // Can not expect error when combining with window available Shiny definition\n  !window.Shiny.shinyapp.isConnected()) {\n    // If somehow we accidentally call this before the server connection is\n    // established, just ignore the call. At the time of this writing it\n    // doesn't happen, but it's easy to imagine a later refactoring putting\n    // us in this situation and it'd be hard to notice with either manual\n    // testing or automated tests, because the only effect is on HTTP request\n    // timing. (Update: Actually Aron saw this being called without even\n    // window.Shiny being defined, but it was hard to repro.)\n    return;\n  }\n\n  $(\".shiny-frame-deferred\").each(function (i, el) {\n    var $el = $(el);\n    $el.removeClass(\"shiny-frame-deferred\");\n    $el.attr(\"src\", $el.attr(\"data-deferred-src\"));\n    $el.attr(\"data-deferred-src\", null);\n  });\n}\n\nexport { initShiny };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport $ from \"jquery\";\nimport { InputPolicy } from \"./inputPolicy\";\n\n// Schedules data to be sent to shinyapp at the next setTimeout(0).\n// Batches multiple input calls into one websocket message.\nvar InputBatchSender = /*#__PURE__*/function (_InputPolicy) {\n  _inherits(InputBatchSender, _InputPolicy);\n\n  var _super = _createSuper(InputBatchSender);\n\n  function InputBatchSender(shinyapp) {\n    var _this;\n\n    _classCallCheck(this, InputBatchSender);\n\n    _this = _super.call(this);\n\n    _defineProperty(_assertThisInitialized(_this), \"shinyapp\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"timerId\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"pendingData\", {});\n\n    _defineProperty(_assertThisInitialized(_this), \"reentrant\", false);\n\n    _defineProperty(_assertThisInitialized(_this), \"lastChanceCallback\", []);\n\n    _this.shinyapp = shinyapp;\n    return _this;\n  }\n\n  _createClass(InputBatchSender, [{\n    key: \"setInput\",\n    value: function setInput(nameType, value, opts) {\n      this.pendingData[nameType] = value;\n\n      if (!this.reentrant) {\n        if (opts.priority === \"event\") {\n          this._sendNow();\n        } else if (!this.timerId) {\n          this.timerId = setTimeout(this._sendNow.bind(this), 0);\n        }\n      }\n    }\n  }, {\n    key: \"_sendNow\",\n    value: function _sendNow() {\n      if (this.reentrant) {\n        console.trace(\"Unexpected reentrancy in InputBatchSender!\");\n      }\n\n      this.reentrant = true;\n\n      try {\n        this.timerId = null;\n        $.each(this.lastChanceCallback, function (i, callback) {\n          callback();\n        });\n        var currentData = this.pendingData;\n        this.pendingData = {};\n        this.shinyapp.sendInput(currentData);\n      } finally {\n        this.reentrant = false;\n      }\n    }\n  }]);\n\n  return InputBatchSender;\n}(InputPolicy);\n\nexport { InputBatchSender };", "function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// Schedules data to be sent to shinyapp at the next setTimeout(0).\n// Batches multiple input calls into one websocket message.\nvar InputPolicy = /*#__PURE__*/function () {\n  function InputPolicy() {\n    _classCallCheck(this, InputPolicy);\n\n    _defineProperty(this, \"target\", void 0);\n  }\n\n  _createClass(InputPolicy, [{\n    key: \"setInput\",\n    value: function setInput(name, value, opts) {\n      throw \"not implemented\";\n      name;\n      value;\n      opts;\n    }\n  }]);\n\n  return InputPolicy;\n}();\n\nexport { InputPolicy };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.function.name.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { InputPolicy } from \"./inputPolicy\";\nimport { hasOwnProperty } from \"../utils\";\nimport { splitInputNameType } from \"./splitInputNameType\";\n\nvar InputNoResendDecorator = /*#__PURE__*/function (_InputPolicy) {\n  _inherits(InputNoResendDecorator, _InputPolicy);\n\n  var _super = _createSuper(InputNoResendDecorator);\n\n  function InputNoResendDecorator(target) {\n    var _this;\n\n    var initialValues = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, InputNoResendDecorator);\n\n    _this = _super.call(this);\n\n    _defineProperty(_assertThisInitialized(_this), \"lastSentValues\", void 0);\n\n    _this.target = target;\n\n    _this.reset(initialValues);\n\n    return _this;\n  }\n\n  _createClass(InputNoResendDecorator, [{\n    key: \"setInput\",\n    value: function setInput(nameType, value, opts) {\n      var _splitInputNameType = splitInputNameType(nameType),\n          inputName = _splitInputNameType.name,\n          inputType = _splitInputNameType.inputType;\n\n      var jsonValue = JSON.stringify(value);\n\n      if (opts.priority !== \"event\" && this.lastSentValues[inputName] && this.lastSentValues[inputName].jsonValue === jsonValue && this.lastSentValues[inputName].inputType === inputType) {\n        return;\n      }\n\n      this.lastSentValues[inputName] = {\n        jsonValue: jsonValue,\n        inputType: inputType\n      };\n      this.target.setInput(nameType, value, opts);\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      var values = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      // Given an object with flat name-value format:\n      //   { x: \"abc\", \"y.shiny.number\": 123 }\n      // Create an object in cache format and save it:\n      //   { x: { jsonValue: '\"abc\"', inputType: \"\" },\n      //     y: { jsonValue: \"123\", inputType: \"shiny.number\" } }\n      var cacheValues = {};\n\n      for (var inputName in values) {\n        if (hasOwnProperty(values, inputName)) {\n          var _splitInputNameType2 = splitInputNameType(inputName),\n              name = _splitInputNameType2.name,\n              inputType = _splitInputNameType2.inputType;\n\n          cacheValues[name] = {\n            jsonValue: JSON.stringify(values[inputName]),\n            inputType: inputType\n          };\n        }\n      }\n\n      this.lastSentValues = cacheValues;\n    }\n  }, {\n    key: \"forget\",\n    value: function forget(name) {\n      delete this.lastSentValues[name];\n    }\n  }]);\n\n  return InputNoResendDecorator;\n}(InputPolicy);\n\nexport { InputNoResendDecorator };", "import \"core-js/modules/es.regexp.exec.js\";\nimport \"core-js/modules/es.string.split.js\";\n\nfunction splitInputNameType(nameType) {\n  var name2 = nameType.split(\":\");\n  return {\n    name: name2[0],\n    inputType: name2.length > 1 ? name2[1] : \"\"\n  };\n}\n\nexport { splitInputNameType };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.function.name.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport $ from \"jquery\";\nimport { InputPolicy } from \"./inputPolicy\";\nimport { splitInputNameType } from \"./splitInputNameType\";\n\nvar InputEventDecorator = /*#__PURE__*/function (_InputPolicy) {\n  _inherits(InputEventDecorator, _InputPolicy);\n\n  var _super = _createSuper(InputEventDecorator);\n\n  function InputEventDecorator(target) {\n    var _this;\n\n    _classCallCheck(this, InputEventDecorator);\n\n    _this = _super.call(this);\n    _this.target = target;\n    return _this;\n  }\n\n  _createClass(InputEventDecorator, [{\n    key: \"setInput\",\n    value: function setInput(nameType, value, opts) {\n      var evt = jQuery.Event(\"shiny:inputchanged\");\n      var input = splitInputNameType(nameType);\n      evt.name = input.name;\n      evt.inputType = input.inputType;\n      evt.value = value;\n      evt.binding = opts.binding;\n      evt.el = opts.el;\n      evt.priority = opts.priority;\n      $(opts.el).trigger(evt);\n\n      if (!evt.isDefaultPrevented()) {\n        var name = evt.name;\n        if (evt.inputType !== \"\") name += \":\" + evt.inputType; // Most opts aren't passed along to lower levels in the input decorator\n        // stack.\n\n        this.target.setInput(name, evt.value, {\n          priority: opts.priority\n        });\n      }\n    }\n  }]);\n\n  return InputEventDecorator;\n}(InputPolicy);\n\nexport { InputEventDecorator };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.function.name.js\";\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { InputPolicy } from \"./inputPolicy\";\nimport { Debouncer, Invoker, Throttler } from \"../time\";\nimport { splitInputNameType } from \"./splitInputNameType\";\n\nvar InputRateDecorator = /*#__PURE__*/function (_InputPolicy) {\n  _inherits(InputRateDecorator, _InputPolicy);\n\n  var _super = _createSuper(InputRateDecorator);\n\n  function InputRateDecorator(target) {\n    var _this;\n\n    _classCallCheck(this, InputRateDecorator);\n\n    _this = _super.call(this);\n\n    _defineProperty(_assertThisInitialized(_this), \"inputRatePolicies\", {});\n\n    _this.target = target;\n    return _this;\n  } // Note that the first argument of setInput() and setRatePolicy()\n  // are passed both the input name (i.e., inputId) and type.\n  // https://github.com/rstudio/shiny/blob/67d3a/srcjs/init_shiny.js#L111-L126\n  // However, $ensureInit() and $doSetInput() are meant to be passed just\n  // the input name (i.e., inputId), which is why we distinguish between\n  // nameType and name.\n\n\n  _createClass(InputRateDecorator, [{\n    key: \"setInput\",\n    value: function setInput(nameType, value, opts) {\n      var _splitInputNameType = splitInputNameType(nameType),\n          inputName = _splitInputNameType.name;\n\n      this._ensureInit(inputName);\n\n      if (opts.priority !== \"deferred\") this.inputRatePolicies[inputName].immediateCall(nameType, value, opts);else this.inputRatePolicies[inputName].normalCall(nameType, value, opts);\n    }\n  }, {\n    key: \"setRatePolicy\",\n    value: function setRatePolicy(nameType, mode, millis) {\n      var _splitInputNameType2 = splitInputNameType(nameType),\n          inputName = _splitInputNameType2.name;\n\n      if (mode === \"direct\") {\n        this.inputRatePolicies[inputName] = new Invoker(this, this._doSetInput);\n      } else if (mode === \"debounce\") {\n        this.inputRatePolicies[inputName] = new Debouncer(this, this._doSetInput, millis);\n      } else if (mode === \"throttle\") {\n        this.inputRatePolicies[inputName] = new Throttler(this, this._doSetInput, millis);\n      }\n    }\n  }, {\n    key: \"_ensureInit\",\n    value: function _ensureInit(name) {\n      if (!(name in this.inputRatePolicies)) this.setRatePolicy(name, \"direct\");\n    }\n  }, {\n    key: \"_doSetInput\",\n    value: function _doSetInput(nameType, value, opts) {\n      this.target.setInput(nameType, value, opts);\n    }\n  }]);\n\n  return InputRateDecorator;\n}(InputPolicy);\n\nexport { InputRateDecorator };", "function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport \"core-js/modules/es.object.set-prototype-of.js\";\nimport \"core-js/modules/es.object.get-prototype-of.js\";\nimport \"core-js/modules/es.reflect.construct.js\";\nimport \"core-js/modules/es.symbol.js\";\nimport \"core-js/modules/es.symbol.description.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.symbol.iterator.js\";\nimport \"core-js/modules/es.array.iterator.js\";\nimport \"core-js/modules/es.string.iterator.js\";\nimport \"core-js/modules/web.dom-collections.iterator.js\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { InputPolicy } from \"./inputPolicy\";\nimport { hasOwnProperty } from \"../utils\";\n\nvar InputDeferDecorator = /*#__PURE__*/function (_InputPolicy) {\n  _inherits(InputDeferDecorator, _InputPolicy);\n\n  var _super = _createSuper(InputDeferDecorator);\n\n  function InputDeferDecorator(target) {\n    var _this;\n\n    _classCallCheck(this, InputDeferDecorator);\n\n    _this = _super.call(this);\n\n    _defineProperty(_assertThisInitialized(_this), \"pendingInput\", {});\n\n    _this.target = target;\n    return _this;\n  }\n\n  _createClass(InputDeferDecorator, [{\n    key: \"setInput\",\n    value: function setInput(nameType, value, opts) {\n      if (/^\\./.test(nameType)) this.target.setInput(nameType, value, opts);else this.pendingInput[nameType] = {\n        value: value,\n        opts: opts\n      };\n    }\n  }, {\n    key: \"submit\",\n    value: function submit() {\n      for (var nameType in this.pendingInput) {\n        if (hasOwnProperty(this.pendingInput, nameType)) {\n          var _this$pendingInput$na = this.pendingInput[nameType],\n              value = _this$pendingInput$na.value,\n              opts = _this$pendingInput$na.opts;\n          this.target.setInput(nameType, value, opts);\n        }\n      }\n    }\n  }]);\n\n  return InputDeferDecorator;\n}(InputPolicy);\n\nexport { InputDeferDecorator };", "function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport $ from \"jquery\";\n\n// Merge opts with defaults, and return a new object.\nfunction addDefaultInputOpts(opts) {\n  var newOpts = $.extend({\n    priority: \"immediate\",\n    binding: null,\n    el: null\n  }, opts);\n\n  if (newOpts && typeof newOpts.priority !== \"undefined\") {\n    switch (newOpts.priority) {\n      case \"deferred\":\n      case \"immediate\":\n      case \"event\":\n        break;\n\n      default:\n        throw new Error(\"Unexpected input value mode: '\" + newOpts.priority + \"'\");\n    }\n  }\n\n  return newOpts;\n}\n\nvar InputValidateDecorator = function InputValidateDecorator(target) {\n  _classCallCheck(this, InputValidateDecorator);\n\n  _defineProperty(this, \"target\", void 0);\n\n  _defineProperty(this, \"setInput\", function (nameType, value, opts) {\n    if (!nameType) throw \"Can't set input with empty name.\";\n    var newOpts = addDefaultInputOpts(opts);\n    this.target.setInput(nameType, value, newOpts);\n  });\n\n  this.target = target;\n};\n\nexport { InputValidateDecorator, addDefaultInputOpts };", "import \"core-js/modules/es.array.find.js\";\nimport $ from \"jquery\";\nimport { OutputBindingAdapter } from \"../bindings/outputAdapter\";\nimport { shinyAppBindOutput, shinyAppUnbindOutput } from \"./initedMethods\";\nimport { sendImageSizeFns } from \"./sendImageSize\";\nvar boundInputs = {};\n\n// todo make sure allowDeferred can NOT be supplied and still work\nfunction valueChangeCallback(inputs, binding, el, allowDeferred) {\n  var id = binding.getId(el);\n\n  if (id) {\n    var value = binding.getValue(el);\n    var type = binding.getType(el);\n    if (type) id = id + \":\" + type;\n    var opts = {\n      priority: allowDeferred ? \"deferred\" : \"immediate\",\n      binding: binding,\n      el: el\n    };\n    inputs.setInput(id, value, opts);\n  }\n}\n\nfunction bindInputs(shinyCtx) {\n  var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document.documentElement;\n  var inputs = shinyCtx.inputs,\n      inputsRate = shinyCtx.inputsRate,\n      inputBindings = shinyCtx.inputBindings;\n  var bindings = inputBindings.getBindings();\n  var inputItems = {};\n\n  var _loop = function _loop(i) {\n    var binding = bindings[i].binding;\n    var matches = binding.find(scope) || [];\n\n    var _loop2 = function _loop2(j) {\n      var el = matches[j];\n      var id = binding.getId(el); // Check if ID is falsy, or if already bound\n\n      if (!id || boundInputs[id]) return \"continue\";\n      var type = binding.getType(el);\n      var effectiveId = type ? id + \":\" + type : id;\n      inputItems[effectiveId] = {\n        value: binding.getValue(el),\n        opts: {\n          immediate: true,\n          binding: binding,\n          el: el\n        }\n      };\n      /*jshint loopfunc:true*/\n\n      var thisCallback = function () {\n        var thisBinding = binding;\n        var thisEl = el;\n        return function (allowDeferred) {\n          valueChangeCallback(inputs, thisBinding, thisEl, allowDeferred);\n        };\n      }();\n\n      binding.subscribe(el, thisCallback);\n      $(el).data(\"shiny-input-binding\", binding);\n      $(el).addClass(\"shiny-bound-input\");\n      var ratePolicy = binding.getRatePolicy(el);\n\n      if (ratePolicy !== null) {\n        inputsRate.setRatePolicy(effectiveId, ratePolicy.policy, ratePolicy.delay);\n      }\n\n      boundInputs[id] = {\n        binding: binding,\n        node: el\n      };\n      $(el).trigger({\n        type: \"shiny:bound\",\n        // @ts-expect-error; Can not remove info on a established, malformed Event object\n        binding: binding,\n        bindingType: \"input\"\n      });\n    };\n\n    for (var j = 0; j < matches.length; j++) {\n      var _ret = _loop2(j);\n\n      if (_ret === \"continue\") continue;\n    }\n  };\n\n  for (var i = 0; i < bindings.length; i++) {\n    _loop(i);\n  }\n\n  return inputItems;\n}\n\nfunction bindOutputs(_ref) {\n  var sendOutputHiddenState = _ref.sendOutputHiddenState,\n      maybeAddThemeObserver = _ref.maybeAddThemeObserver,\n      outputBindings = _ref.outputBindings;\n  var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document.documentElement;\n  var $scope = $(scope);\n  var bindings = outputBindings.getBindings();\n\n  for (var i = 0; i < bindings.length; i++) {\n    var binding = bindings[i].binding;\n    var matches = binding.find($scope) || [];\n\n    for (var j = 0; j < matches.length; j++) {\n      var _el = matches[j];\n      var id = binding.getId(_el); // Check if ID is falsy\n\n      if (!id) continue; // In some uncommon cases, elements that are later in the\n      // matches array can be removed from the document by earlier\n      // iterations. See https://github.com/rstudio/shiny/issues/1399\n\n      if (!$.contains(document.documentElement, _el)) continue;\n      var $el = $(_el);\n\n      if ($el.hasClass(\"shiny-bound-output\")) {\n        // Already bound; can happen with nested uiOutput (bindAll\n        // gets called on two ancestors)\n        continue;\n      } // If this element reports its CSS styles to getCurrentOutputInfo()\n      // then it should have a MutationObserver() to resend CSS if its\n      // style/class attributes change. This observer should already exist\n      // for _static_ UI, but not yet for _dynamic_ UI\n\n\n      maybeAddThemeObserver(_el);\n      var bindingAdapter = new OutputBindingAdapter(_el, binding);\n      shinyAppBindOutput(id, bindingAdapter);\n      $el.data(\"shiny-output-binding\", bindingAdapter);\n      $el.addClass(\"shiny-bound-output\");\n      if (!$el.attr(\"aria-live\")) $el.attr(\"aria-live\", \"polite\");\n      $el.trigger({\n        type: \"shiny:bound\",\n        // @ts-expect-error; Can not remove info on a established, malformed Event object\n        binding: binding,\n        bindingType: \"output\"\n      });\n    }\n  } // Send later in case DOM layout isn't final yet.\n\n\n  setTimeout(sendImageSizeFns.regular, 0);\n  setTimeout(sendOutputHiddenState, 0);\n}\n\nfunction unbindInputs() {\n  var scope = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document.documentElement;\n  var includeSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  var inputs = $(scope).find(\".shiny-bound-input\").toArray();\n\n  if (includeSelf && $(scope).hasClass(\"shiny-bound-input\")) {\n    inputs.push(scope);\n  }\n\n  for (var i = 0; i < inputs.length; i++) {\n    var _el2 = inputs[i];\n    var binding = $(_el2).data(\"shiny-input-binding\");\n    if (!binding) continue;\n    var id = binding.getId(_el2);\n    $(_el2).removeClass(\"shiny-bound-input\");\n    delete boundInputs[id];\n    binding.unsubscribe(_el2);\n    $(_el2).trigger({\n      type: \"shiny:unbound\",\n      // @ts-expect-error; Can not remove info on a established, malformed Event object\n      binding: binding,\n      bindingType: \"input\"\n    });\n  }\n}\n\nfunction unbindOutputs(_ref2) {\n  var sendOutputHiddenState = _ref2.sendOutputHiddenState;\n  var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document.documentElement;\n  var includeSelf = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  var outputs = $(scope).find(\".shiny-bound-output\").toArray();\n\n  if (includeSelf && $(scope).hasClass(\"shiny-bound-output\")) {\n    outputs.push(scope);\n  }\n\n  for (var i = 0; i < outputs.length; i++) {\n    var $el = $(outputs[i]);\n    var bindingAdapter = $el.data(\"shiny-output-binding\");\n    if (!bindingAdapter) continue;\n    var id = bindingAdapter.binding.getId(outputs[i]);\n    shinyAppUnbindOutput(id, bindingAdapter);\n    $el.removeClass(\"shiny-bound-output\");\n    $el.removeData(\"shiny-output-binding\");\n    $el.trigger({\n      type: \"shiny:unbound\",\n      // @ts-expect-error; Can not remove info on a established, malformed Event object\n      binding: bindingAdapter.binding,\n      bindingType: \"output\"\n    });\n  } // Send later in case DOM layout isn't final yet.\n\n\n  setTimeout(sendImageSizeFns.regular, 0);\n  setTimeout(sendOutputHiddenState, 0);\n} // (Named used before TS conversion)\n// eslint-disable-next-line @typescript-eslint/naming-convention\n\n\nfunction _bindAll(shinyCtx, scope) {\n  bindOutputs(shinyCtx, scope);\n  return bindInputs(shinyCtx, scope);\n}\n\nfunction unbindAll(shinyCtx, scope) {\n  var includeSelf = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  unbindInputs(scope, includeSelf);\n  unbindOutputs(shinyCtx, scope, includeSelf);\n}\n\nfunction bindAll(shinyCtx, scope) {\n  // _bindAll returns input values; it doesn't send them to the server.\n  // Shiny.bindAll needs to send the values to the server.\n  var currentInputItems = _bindAll(shinyCtx, scope);\n\n  var inputs = shinyCtx.inputs;\n  $.each(currentInputItems, function (name, item) {\n    inputs.setInput(name, item.value, item.opts);\n  }); // Not sure if the iframe stuff is an intrinsic part of bindAll, but bindAll\n  // is a convenient place to hang it. bindAll will be called anytime new HTML\n  // appears that might contain inputs/outputs; it's reasonable to assume that\n  // any such HTML may contain iframes as well.\n\n  shinyCtx.initDeferredIframes();\n}\n\nexport { unbindAll, bindAll, _bindAll };", "function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { makeResizeFilter } from \"../utils\";\n\nvar OutputBindingAdapter = /*#__PURE__*/function () {\n  function OutputBindingAdapter(el, binding) {\n    _classCallCheck(this, OutputBindingAdapter);\n\n    _defineProperty(this, \"el\", void 0);\n\n    _defineProperty(this, \"binding\", void 0);\n\n    this.el = el;\n    this.binding = binding; // If the binding actually has a resize method, override the prototype of\n    // onResize with a version that does a makeResizeFilter on the element.\n\n    if (binding.resize) {\n      this.onResize = makeResizeFilter(el, function (width, height) {\n        binding.resize(el, width, height);\n      });\n    }\n  }\n\n  _createClass(OutputBindingAdapter, [{\n    key: \"getId\",\n    value: function getId() {\n      return this.binding.getId(this.el);\n    }\n  }, {\n    key: \"onValueChange\",\n    value: function onValueChange(data) {\n      this.binding.onValueChange(this.el, data);\n    }\n  }, {\n    key: \"onValueError\",\n    value: function onValueError(err) {\n      this.binding.onValueError(this.el, err);\n    }\n  }, {\n    key: \"showProgress\",\n    value: function showProgress(show) {\n      this.binding.showProgress(this.el, show);\n    }\n  }, {\n    key: \"onResize\",\n    value: function onResize() {// Intentionally left blank; see constructor\n    }\n  }]);\n\n  return OutputBindingAdapter;\n}();\n\nexport { OutputBindingAdapter };", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar arrayBufferModule = require('../internals/array-buffer');\nvar setSpecies = require('../internals/set-species');\n\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\n\n// `ArrayBuffer` constructor\n// https://tc39.es/ecma262/#sec-arraybuffer-constructor\n$({ global: true, forced: NativeArrayBuffer !== ArrayBuffer }, {\n  ArrayBuffer: ArrayBuffer\n});\n\nsetSpecies(ARRAY_BUFFER);\n", "'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anObject = require('../internals/an-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar nativeArrayBufferSlice = ArrayBuffer.prototype.slice;\n\nvar INCORRECT_SLICE = fails(function () {\n  return !new ArrayBuffer(2).slice(1, undefined).byteLength;\n});\n\n// `ArrayBuffer.prototype.slice` method\n// https://tc39.es/ecma262/#sec-arraybuffer.prototype.slice\n$({ target: 'ArrayBuffer', proto: true, unsafe: true, forced: INCORRECT_SLICE }, {\n  slice: function slice(start, end) {\n    if (nativeArrayBufferSlice !== undefined && end === undefined) {\n      return nativeArrayBufferSlice.call(anObject(this), start); // FF fix\n    }\n    var length = anObject(this).byteLength;\n    var first = toAbsoluteIndex(start, length);\n    var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n    var result = new (speciesConstructor(this, ArrayBuffer))(toLength(fin - first));\n    var viewSource = new DataView(this);\n    var viewTarget = new DataView(result);\n    var index = 0;\n    while (first < fin) {\n      viewTarget.setUint8(index++, viewSource.getUint8(first++));\n    } return result;\n  }\n});\n", "var $ = require('../internals/export');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\n\n// `DataView` constructor\n// https://tc39.es/ecma262/#sec-dataview-constructor\n$({ global: true, forced: !NATIVE_ARRAY_BUFFER }, {\n  DataView: ArrayBufferModule.DataView\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || CHROME_BUG }, {\n  reduce: function reduce(callbackfn /* , initialValue */) {\n    return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n", "function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport \"core-js/modules/es.array.index-of.js\";\nimport \"core-js/modules/es.array.splice.js\";\nimport \"core-js/modules/es.array.find.js\";\nimport \"core-js/modules/es.array-buffer.constructor.js\";\nimport \"core-js/modules/es.array-buffer.slice.js\";\nimport \"core-js/modules/es.object.to-string.js\";\nimport \"core-js/modules/es.data-view.js\";\nimport \"core-js/modules/es.function.name.js\";\nimport \"core-js/modules/es.array.reduce.js\";\nimport \"core-js/modules/es.array.map.js\";\nimport \"core-js/modules/es.array.filter.js\";\nimport \"core-js/modules/es.object.keys.js\";\nimport \"core-js/modules/es.regexp.exec.js\";\nimport \"core-js/modules/es.string.replace.js\";\nimport \"core-js/modules/es.array.join.js\";\nimport \"core-js/modules/es.array.slice.js\";\nimport \"core-js/modules/es.array.for-each.js\";\nimport \"core-js/modules/web.dom-collections.for-each.js\";\nimport \"core-js/modules/es.number.constructor.js\";\nimport \"core-js/modules/es.string.search.js\";\nimport $ from \"jquery\";\nimport { $escape, hasOwnProperty, makeBlob, randomId, scopeExprToFunc } from \"../utils\";\nimport { getShinyCreateWebsocket, getShinyOnCustomMessage, setShinyUser, shinyForgetLastInputValue, shinyUnbindAll } from \"./initedMethods\";\nimport { isQt } from \"../utils/browser\";\nimport { showNotification, removeNotification } from \"./notifications\";\nimport { showModal, removeModal } from \"./modal\";\nimport { renderContent, renderHtml } from \"./render\";\nimport { hideReconnectDialog, showReconnectDialog } from \"./reconnectDialog\";\nimport { resetBrush } from \"../imageutils/resetBrush\";\nimport { indirectEval } from \"../utils/eval\";\n//// 2021/03 - TypeScript conversion note:\n// These four variables were moved from being internally defined to being defined globally within the file.\n// Before the TypeScript conversion, the values where attached to `window.Shiny.addCustomMessageHandler()`.\n// This prevents multiple instances of `ShinyApp` from existing independently. :-/\n// This behavior is also exhibited on `Shiny.progressHandlers`, however there are no instances of use on GitHub. So moving the assignment to within `initShiny()`.\n// Records insertion order of handlers. Maps number to name. This is so\n// we can dispatch messages to handlers in the order that handlers were\n// added.\nvar messageHandlerOrder = []; // Keep track of handlers by name. Maps name to handler function.\n\nvar messageHandlers = {}; // Two categories of message handlers: those that are from Shiny, and those\n// that are added by the user. The Shiny ones handle messages in\n// msgObj.values, msgObj.errors, and so on. The user ones handle messages\n// in msgObj.custom.foo and msgObj.custom.bar.\n\nvar customMessageHandlerOrder = [];\nvar customMessageHandlers = {}; // Adds Shiny (internal) message handler\n\nfunction addMessageHandler(type, handler) {\n  if (messageHandlers[type]) {\n    throw 'handler for message of type \"' + type + '\" already added.';\n  }\n\n  if (typeof handler !== \"function\") {\n    throw \"handler must be a function.\";\n  }\n\n  if (handler.length !== 1) {\n    throw \"handler must be a function that takes one argument.\";\n  }\n\n  messageHandlerOrder.push(type);\n  messageHandlers[type] = handler;\n} // Adds custom message handler - this one is exposed to the user\n\n\nfunction addCustomMessageHandler(type, handler) {\n  // Remove any previously defined handlers so that only the most recent one\n  // will be called\n  if (customMessageHandlers[type]) {\n    var typeIdx = customMessageHandlerOrder.indexOf(type);\n\n    if (typeIdx !== -1) {\n      customMessageHandlerOrder.splice(typeIdx, 1);\n      delete customMessageHandlers[type];\n    }\n  }\n\n  if (typeof handler !== \"function\") {\n    throw \"handler must be a function.\";\n  }\n\n  if (handler.length !== 1) {\n    throw \"handler must be a function that takes one argument.\";\n  }\n\n  customMessageHandlerOrder.push(type);\n  customMessageHandlers[type] = handler;\n} //// End message handler variables\n\n\nvar ShinyApp = /*#__PURE__*/function () {\n  // Cached input values\n  // Input values at initialization (and reconnect)\n  // Output bindings\n  // Cached values/errors\n  // Conditional bindings (show/hide element based on expression)\n  function ShinyApp() {\n    _classCallCheck(this, ShinyApp);\n\n    _defineProperty(this, \"$socket\", null);\n\n    _defineProperty(this, \"config\", null);\n\n    _defineProperty(this, \"$inputValues\", {});\n\n    _defineProperty(this, \"$initialInput\", void 0);\n\n    _defineProperty(this, \"$bindings\", {});\n\n    _defineProperty(this, \"$values\", {});\n\n    _defineProperty(this, \"$errors\", {});\n\n    _defineProperty(this, \"$conditionals\", {});\n\n    _defineProperty(this, \"$pendingMessages\", []);\n\n    _defineProperty(this, \"$activeRequests\", {});\n\n    _defineProperty(this, \"$nextRequestId\", 0);\n\n    _defineProperty(this, \"$allowReconnect\", false);\n\n    _defineProperty(this, \"scheduledReconnect\", null);\n\n    _defineProperty(this, \"reconnectDelay\", function () {\n      var attempts = 0; // Time to wait before each reconnection attempt. If we go through all of\n      // these values, repeated use the last one. Add 500ms to each one so that\n      // in the last 0.5s, it shows \"...\"\n\n      var delays = [1500, 1500, 2500, 2500, 5500, 5500, 10500];\n      return {\n        next: function next() {\n          var i = attempts; // Instead of going off the end, use the last one\n\n          if (i >= delays.length) {\n            i = delays.length - 1;\n          }\n\n          attempts++;\n          return delays[i];\n        },\n        reset: function reset() {\n          attempts = 0;\n        }\n      };\n    }());\n\n    _defineProperty(this, \"progressHandlers\", {\n      // Progress for a particular object\n      binding: function binding(message) {\n        var key = message.id;\n        var binding = this.$bindings[key];\n\n        if (binding) {\n          $(binding.el).trigger({\n            type: \"shiny:outputinvalidated\",\n            // @ts-expect-error; Can not remove info on a established, malformed Event object\n            binding: binding,\n            name: key\n          });\n          if (binding.showProgress) binding.showProgress(true);\n        }\n      },\n      // Open a page-level progress bar\n      open: function open(message) {\n        if (message.style === \"notification\") {\n          // For new-style (starting in Shiny 0.14) progress indicators that use\n          // the notification API.\n          // Progress bar starts hidden; will be made visible if a value is provided\n          // during updates.\n          showNotification({\n            html: \"<div id=\\\"shiny-progress-\".concat(message.id, \"\\\" class=\\\"shiny-progress-notification\\\">\") + '<div class=\"progress active\" style=\"display: none;\"><div class=\"progress-bar\"></div></div>' + '<div class=\"progress-text\">' + '<span class=\"progress-message\">message</span> ' + '<span class=\"progress-detail\"></span>' + \"</div>\" + \"</div>\",\n            id: message.id,\n            duration: null\n          });\n        } else if (message.style === \"old\") {\n          // For old-style (Shiny <=0.13.2) progress indicators.\n          // Add progress container (for all progress items) if not already present\n          var $container = $(\".shiny-progress-container\");\n\n          if ($container.length === 0) {\n            $container = $('<div class=\"shiny-progress-container\"></div>');\n            $(document.body).append($container);\n          } // Add div for just this progress ID\n\n\n          var depth = $(\".shiny-progress.open\").length; // The 'bar' class is needed for backward compatibility with Bootstrap 2.\n\n          var $progress = $('<div class=\"shiny-progress open\">' + '<div class=\"progress active\"><div class=\"progress-bar bar\"></div></div>' + '<div class=\"progress-text\">' + '<span class=\"progress-message\">message</span>' + '<span class=\"progress-detail\"></span>' + \"</div>\" + \"</div>\");\n          $progress.attr(\"id\", message.id);\n          $container.append($progress); // Stack bars\n\n          var $progressBar = $progress.find(\".progress\");\n          $progressBar.css(\"top\", depth * $progressBar.height() + \"px\"); // Stack text objects\n\n          var $progressText = $progress.find(\".progress-text\");\n          $progressText.css(\"top\", 3 * $progressBar.height() + depth * $progressText.outerHeight() + \"px\");\n          $progress.hide();\n        }\n      },\n      // Update page-level progress bar\n      update: function update(message) {\n        if (message.style === \"notification\") {\n          // For new-style (starting in Shiny 0.14) progress indicators that use\n          // the notification API.\n          var $progress = $(\"#shiny-progress-\" + message.id);\n          if ($progress.length === 0) return;\n\n          if (typeof message.message !== \"undefined\") {\n            $progress.find(\".progress-message\").text(message.message);\n          }\n\n          if (typeof message.detail !== \"undefined\") {\n            $progress.find(\".progress-detail\").text(message.detail);\n          }\n\n          if (typeof message.value !== \"undefined\" && message.value !== null) {\n            $progress.find(\".progress\").show();\n            $progress.find(\".progress-bar\").width(message.value * 100 + \"%\");\n          }\n        } else if (message.style === \"old\") {\n          // For old-style (Shiny <=0.13.2) progress indicators.\n          var _$progress = $(\"#\" + message.id + \".shiny-progress\");\n\n          if (typeof message.message !== \"undefined\") {\n            _$progress.find(\".progress-message\").text(message.message);\n          }\n\n          if (typeof message.detail !== \"undefined\") {\n            _$progress.find(\".progress-detail\").text(message.detail);\n          }\n\n          if (typeof message.value !== \"undefined\" && message.value !== null) {\n            _$progress.find(\".progress\").show();\n\n            _$progress.find(\".bar\").width(message.value * 100 + \"%\");\n          }\n\n          _$progress.fadeIn();\n        }\n      },\n      // Close page-level progress bar\n      close: function close(message) {\n        if (message.style === \"notification\") {\n          removeNotification(message.id);\n        } else if (message.style === \"old\") {\n          var $progress = $(\"#\" + message.id + \".shiny-progress\");\n          $progress.removeClass(\"open\");\n          $progress.fadeOut({\n            complete: function complete() {\n              $progress.remove(); // If this was the last shiny-progress, remove container\n\n              if ($(\".shiny-progress\").length === 0) $(\".shiny-progress-container\").remove();\n            }\n          });\n        }\n      }\n    });\n\n    this._init();\n  }\n\n  _createClass(ShinyApp, [{\n    key: \"connect\",\n    value: function connect(initialInput) {\n      if (this.$socket) throw \"Connect was already called on this application object\";\n      this.$socket = this.createSocket();\n      this.$initialInput = initialInput;\n      $.extend(this.$inputValues, initialInput);\n      this.$updateConditionals();\n    }\n  }, {\n    key: \"isConnected\",\n    value: function isConnected() {\n      return !!this.$socket;\n    }\n  }, {\n    key: \"reconnect\",\n    value: function reconnect() {\n      // This function can be invoked directly even if there's a scheduled\n      // reconnect, so be sure to clear any such scheduled reconnects.\n      clearTimeout(this.scheduledReconnect);\n      if (this.isConnected()) throw \"Attempted to reconnect, but already connected.\";\n      this.$socket = this.createSocket();\n      this.$initialInput = $.extend({}, this.$inputValues);\n      this.$updateConditionals();\n    }\n  }, {\n    key: \"createSocket\",\n    value: function createSocket() {\n      var _this = this;\n\n      var createSocketFunc = getShinyCreateWebsocket() || function () {\n        var protocol = \"ws:\";\n        if (window.location.protocol === \"https:\") protocol = \"wss:\";\n        var defaultPath = window.location.pathname; // some older WebKit browsers return the pathname already decoded;\n        // if we find invalid URL characters in the path, encode them\n\n        if (!/^([$#!&-;=?-[\\]_a-z~]|%[0-9a-fA-F]{2})+$/.test(defaultPath)) {\n          defaultPath = encodeURI(defaultPath); // Bizarrely, QtWebKit requires us to encode these characters *twice*\n\n          if (isQt()) {\n            defaultPath = encodeURI(defaultPath);\n          }\n        }\n\n        if (!/\\/$/.test(defaultPath)) defaultPath += \"/\";\n        defaultPath += \"websocket/\";\n        var ws = new WebSocket(protocol + \"//\" + window.location.host + defaultPath);\n        ws.binaryType = \"arraybuffer\";\n        return ws;\n      };\n\n      var socket = createSocketFunc();\n      var hasOpened = false;\n\n      socket.onopen = function () {\n        hasOpened = true;\n        $(document).trigger({\n          type: \"shiny:connected\",\n          // @ts-expect-error; Can not remove info on a established, malformed Event object\n          socket: socket\n        });\n\n        _this.onConnected();\n\n        socket.send(JSON.stringify({\n          method: \"init\",\n          data: _this.$initialInput\n        }));\n\n        while (_this.$pendingMessages.length) {\n          var msg = _this.$pendingMessages.shift();\n\n          socket.send(msg);\n        }\n      };\n\n      socket.onmessage = function (e) {\n        _this.dispatchMessage(e.data);\n      }; // Called when a successfully-opened websocket is closed, or when an\n      // attempt to open a connection fails.\n\n\n      socket.onclose = function () {\n        // These things are needed only if we've successfully opened the\n        // websocket.\n        if (hasOpened) {\n          $(document).trigger({\n            type: \"shiny:disconnected\",\n            // @ts-expect-error; Can not remove info on a established, malformed Event object\n            socket: socket\n          });\n\n          _this.$notifyDisconnected();\n        }\n\n        _this.onDisconnected(); // Must be run before this.$removeSocket()\n\n\n        _this.$removeSocket();\n      };\n\n      return socket;\n    }\n  }, {\n    key: \"sendInput\",\n    value: function sendInput(values) {\n      var msg = JSON.stringify({\n        method: \"update\",\n        data: values\n      });\n      this.$sendMsg(msg);\n      $.extend(this.$inputValues, values);\n      this.$updateConditionals();\n    }\n  }, {\n    key: \"$notifyDisconnected\",\n    value: function $notifyDisconnected() {\n      if (window.parent) {\n        window.parent.postMessage(\"disconnected\", \"*\");\n      }\n    }\n  }, {\n    key: \"$removeSocket\",\n    value: function $removeSocket() {\n      this.$socket = null;\n    }\n  }, {\n    key: \"$scheduleReconnect\",\n    value: function $scheduleReconnect(delay) {\n      var _this2 = this;\n\n      this.scheduledReconnect = setTimeout(function () {\n        _this2.reconnect();\n      }, delay);\n    } // How long should we wait before trying the next reconnection?\n    // The delay will increase with subsequent attempts.\n    // .next: Return the time to wait for next connection, and increment counter.\n    // .reset: Reset the attempt counter.\n\n  }, {\n    key: \"onDisconnected\",\n    value: function onDisconnected() {\n      // Add gray-out overlay, if not already present\n      var $overlay = $(\"#shiny-disconnected-overlay\");\n\n      if ($overlay.length === 0) {\n        $(document.body).append('<div id=\"shiny-disconnected-overlay\"></div>');\n      } // To try a reconnect, both the app (this.$allowReconnect) and the\n      // server (this.$socket.allowReconnect) must allow reconnections, or\n      // session$allowReconnect(\"force\") was called. The \"force\" option should\n      // only be used for testing.\n\n\n      if (this.$allowReconnect === true && this.$socket.allowReconnect === true || this.$allowReconnect === \"force\") {\n        var delay = this.reconnectDelay.next();\n        showReconnectDialog(delay);\n        this.$scheduleReconnect(delay);\n      }\n    }\n  }, {\n    key: \"onConnected\",\n    value: function onConnected() {\n      $(\"#shiny-disconnected-overlay\").remove();\n      hideReconnectDialog();\n      this.reconnectDelay.reset();\n    } // NB: Including blobs will cause IE to break!\n    // TODO: Make blobs work with Internet Explorer\n    //\n    // Websocket messages are normally one-way--i.e. the client passes a\n    // message to the server but there is no way for the server to provide\n    // a response to that specific message. makeRequest provides a way to\n    // do asynchronous RPC over websocket. Each request has a method name\n    // and arguments, plus optionally one or more binary blobs can be\n    // included as well. The request is tagged with a unique number that\n    // the server will use to label the corresponding response.\n    //\n    // @param method A string that tells the server what logic to run.\n    // @param args An array of objects that should also be passed to the\n    //   server in JSON-ified form.\n    // @param onSuccess A function that will be called back if the server\n    //   responds with success. If the server provides a value in the\n    //   response, the function will be called with it as the only argument.\n    // @param onError A function that will be called back if the server\n    //   responds with error, or if the request fails for any other reason.\n    //   The parameter to onError will be a string describing the error.\n    // @param blobs Optionally, an array of Blob, ArrayBuffer, or string\n    //   objects that will be made available to the server as part of the\n    //   request. Strings will be encoded using UTF-8.\n\n  }, {\n    key: \"makeRequest\",\n    value: function makeRequest(method, args, onSuccess, onError, blobs) {\n      var requestId = this.$nextRequestId;\n\n      while (this.$activeRequests[requestId]) {\n        requestId = (requestId + 1) % 1000000000;\n      }\n\n      this.$nextRequestId = requestId + 1;\n      this.$activeRequests[requestId] = {\n        onSuccess: onSuccess,\n        onError: onError\n      };\n      var msg = JSON.stringify({\n        method: method,\n        args: args,\n        tag: requestId\n      });\n\n      if (blobs) {\n        // We have binary data to transfer; form a different kind of packet.\n        // Start with a 4-byte signature, then for each blob, emit 4 bytes for\n        // the length followed by the blob. The json payload is UTF-8 encoded\n        // and used as the first blob.\n        var uint32ToBuf = function uint32ToBuf(val) {\n          var buffer = new ArrayBuffer(4);\n          var view = new DataView(buffer);\n          view.setUint32(0, val, true); // little-endian\n\n          return buffer;\n        };\n\n        var payload = [];\n        payload.push(uint32ToBuf(0x01020202)); // signature\n\n        var jsonBuf = makeBlob([msg]);\n        payload.push(uint32ToBuf(jsonBuf.size));\n        payload.push(jsonBuf);\n\n        for (var i = 0; i < blobs.length; i++) {\n          var _blob = blobs[i];\n          payload.push(uint32ToBuf(_blob.byteLength || _blob.size || 0));\n          payload.push(_blob);\n        }\n\n        var blob = makeBlob(payload);\n        msg = blob;\n      }\n\n      this.$sendMsg(msg);\n    }\n  }, {\n    key: \"$sendMsg\",\n    value: function $sendMsg(msg) {\n      if (!this.$socket.readyState) {\n        this.$pendingMessages.push(msg);\n      } else {\n        this.$socket.send(msg);\n      }\n    }\n  }, {\n    key: \"receiveError\",\n    value: function receiveError(name, error) {\n      if (this.$errors[name] === error) return;\n      this.$errors[name] = error;\n      delete this.$values[name];\n      var binding = this.$bindings[name];\n      var evt = jQuery.Event(\"shiny:error\");\n      evt.name = name;\n      evt.error = error;\n      evt.binding = binding;\n      $(binding ? binding.el : document).trigger(evt);\n\n      if (!evt.isDefaultPrevented() && binding && binding.onValueError) {\n        binding.onValueError(evt.error);\n      }\n    }\n  }, {\n    key: \"receiveOutput\",\n    value: function receiveOutput(name, value) {\n      var binding = this.$bindings[name];\n      var evt = jQuery.Event(\"shiny:value\");\n      evt.name = name;\n      evt.value = value;\n      evt.binding = binding;\n\n      if (this.$values[name] === value) {\n        $(binding ? binding.el : document).trigger(evt);\n        return undefined;\n      }\n\n      this.$values[name] = value;\n      delete this.$errors[name];\n      $(binding ? binding.el : document).trigger(evt);\n\n      if (!evt.isDefaultPrevented() && binding) {\n        binding.onValueChange(evt.value);\n      }\n\n      return value;\n    }\n  }, {\n    key: \"bindOutput\",\n    value: function bindOutput(id, binding) {\n      if (!id) throw \"Can't bind an element with no ID\";\n      if (this.$bindings[id]) throw \"Duplicate binding for ID \" + id;\n      this.$bindings[id] = binding;\n      if (this.$values[id] !== undefined) binding.onValueChange(this.$values[id]);else if (this.$errors[id] !== undefined) binding.onValueError(this.$errors[id]);\n      return binding;\n    }\n  }, {\n    key: \"unbindOutput\",\n    value: function unbindOutput(id, binding) {\n      if (this.$bindings[id] === binding) {\n        delete this.$bindings[id];\n        return true;\n      } else {\n        return false;\n      }\n    } // Narrows a scopeComponent -- an input or output object -- to one constrained\n    // by nsPrefix. Returns a new object with keys removed and renamed as\n    // necessary.\n\n  }, {\n    key: \"_narrowScopeComponent\",\n    value: function _narrowScopeComponent(scopeComponent, nsPrefix) {\n      return Object.keys(scopeComponent).filter(function (k) {\n        return k.indexOf(nsPrefix) === 0;\n      }).map(function (k) {\n        return _defineProperty({}, k.substring(nsPrefix.length), scopeComponent[k]);\n      }).reduce(function (obj, pair) {\n        return $.extend(obj, pair);\n      }, {});\n    } // Narrows a scope -- an object with input and output \"subComponents\" -- to\n    // one constrained by the nsPrefix string.\n    //\n    // If nsPrefix is null or empty, returns scope without modification.\n    //\n    // Otherwise, returns a new object with keys in subComponents removed and\n    // renamed as necessary.\n\n  }, {\n    key: \"_narrowScope\",\n    value: function _narrowScope(scope, nsPrefix) {\n      if (nsPrefix) {\n        return {\n          input: this._narrowScopeComponent(scope.input, nsPrefix),\n          output: this._narrowScopeComponent(scope.output, nsPrefix)\n        };\n      }\n\n      return scope;\n    }\n  }, {\n    key: \"$updateConditionals\",\n    value: function $updateConditionals() {\n      // @ts-expect-error; TODO-barret; Could this be transformed into `.trigger(TYPE)`?\n      $(document).trigger({\n        type: \"shiny:conditional\"\n      });\n      var inputs = {}; // Input keys use \"name:type\" format; we don't want the user to\n      // have to know about the type suffix when referring to inputs.\n\n      for (var name in this.$inputValues) {\n        if (hasOwnProperty(this.$inputValues, name)) {\n          var shortName = name.replace(/:.*/, \"\");\n          inputs[shortName] = this.$inputValues[name];\n        }\n      }\n\n      var scope = {\n        input: inputs,\n        output: this.$values\n      };\n      var conditionals = $(document).find(\"[data-display-if]\");\n\n      for (var i = 0; i < conditionals.length; i++) {\n        var el = $(conditionals[i]);\n        var condFunc = el.data(\"data-display-if-func\");\n\n        if (!condFunc) {\n          var condExpr = el.attr(\"data-display-if\");\n          condFunc = scopeExprToFunc(condExpr);\n          el.data(\"data-display-if-func\", condFunc);\n        }\n\n        var nsPrefix = el.attr(\"data-ns-prefix\");\n\n        var nsScope = this._narrowScope(scope, nsPrefix);\n\n        var show = condFunc(nsScope);\n        var showing = el.css(\"display\") !== \"none\";\n\n        if (show !== showing) {\n          if (show) {\n            el.trigger(\"show\");\n            el.show();\n            el.trigger(\"shown\");\n          } else {\n            el.trigger(\"hide\");\n            el.hide();\n            el.trigger(\"hidden\");\n          }\n        }\n      }\n    } // Message handler management functions =================================\n    // // Added in shiny init method\n    // Shiny.addCustomMessageHandler = addCustomMessageHandler;\n\n  }, {\n    key: \"dispatchMessage\",\n    value: function dispatchMessage(data) {\n      var msgObj = {};\n\n      if (typeof data === \"string\") {\n        msgObj = JSON.parse(data);\n      } else {\n        // data is arraybuffer\n        var len = new DataView(data, 0, 1).getUint8(0);\n        var typedv = new DataView(data, 1, len);\n        var typebuf = [];\n\n        for (var i = 0; i < len; i++) {\n          typebuf.push(String.fromCharCode(typedv.getUint8(i)));\n        }\n\n        var type = typebuf.join(\"\");\n        data = data.slice(len + 1);\n        msgObj.custom = {};\n        msgObj.custom[type] = data;\n      }\n\n      var evt = jQuery.Event(\"shiny:message\");\n      evt.message = msgObj;\n      $(document).trigger(evt);\n      if (evt.isDefaultPrevented()) return; // Send msgObj.foo and msgObj.bar to appropriate handlers\n\n      this._sendMessagesToHandlers(evt.message, messageHandlers, messageHandlerOrder);\n\n      this.$updateConditionals();\n    } // Message handlers =====================================================\n    // A function for sending messages to the appropriate handlers.\n    // - msgObj: the object containing messages, with format {msgObj.foo, msObj.bar\n\n  }, {\n    key: \"_sendMessagesToHandlers\",\n    value: function _sendMessagesToHandlers(msgObj, handlers, handlerOrder) {\n      // Dispatch messages to handlers, if handler is present\n      for (var i = 0; i < handlerOrder.length; i++) {\n        var msgType = handlerOrder[i];\n\n        if (hasOwnProperty(msgObj, msgType)) {\n          // Execute each handler with 'this' referring to the present value of\n          // 'this'\n          handlers[msgType].call(this, msgObj[msgType]);\n        }\n      }\n    }\n  }, {\n    key: \"_init\",\n    value: function _init() {\n      var _this3 = this;\n\n      // Dev note:\n      // * Use arrow functions to allow the Types to propagate.\n      // * However, `_sendMessagesToHandlers()` will adjust the `this` context to the same _`this`_.\n      addMessageHandler(\"values\", function (message) {\n        for (var name in _this3.$bindings) {\n          if (hasOwnProperty(_this3.$bindings, name)) _this3.$bindings[name].showProgress(false);\n        }\n\n        for (var _key in message) {\n          if (hasOwnProperty(message, _key)) {\n            _this3.receiveOutput(_key, message[_key]);\n          }\n        }\n      });\n      addMessageHandler(\"errors\", function (message) {\n        for (var _key2 in message) {\n          if (hasOwnProperty(message, _key2)) this.receiveError(_key2, message[_key2]);\n        }\n      });\n      addMessageHandler(\"inputMessages\", function (message) {\n        // inputMessages should be an array\n        for (var i = 0; i < message.length; i++) {\n          var $obj = $(\".shiny-bound-input#\" + $escape(message[i].id));\n          var inputBinding = $obj.data(\"shiny-input-binding\"); // Dispatch the message to the appropriate input object\n\n          if ($obj.length > 0) {\n            if (!$obj.attr(\"aria-live\")) $obj.attr(\"aria-live\", \"polite\");\n            var el = $obj[0];\n            var evt = jQuery.Event(\"shiny:updateinput\");\n            evt.message = message[i].message;\n            evt.binding = inputBinding;\n            $(el).trigger(evt);\n            if (!evt.isDefaultPrevented()) inputBinding.receiveMessage(el, evt.message);\n          }\n        }\n      });\n      addMessageHandler(\"javascript\", function (message) {\n        /*jshint evil: true */\n        indirectEval(message);\n      });\n      addMessageHandler(\"console\", function (message) {\n        for (var i = 0; i < message.length; i++) {\n          if (console.log) console.log(message[i]);\n        }\n      });\n      addMessageHandler(\"progress\", function (message) {\n        if (message.type && message.message) {\n          var handler = _this3.progressHandlers[message.type];\n          if (handler) handler.call(_this3, message.message);\n        }\n      });\n      addMessageHandler(\"notification\", function (message) {\n        if (message.type === \"show\") showNotification(message.message);else if (message.type === \"remove\") removeNotification(message.message);else throw \"Unkown notification type: \" + message.type;\n      });\n      addMessageHandler(\"modal\", function (message) {\n        if (message.type === \"show\") showModal(message.message); // For 'remove', message content isn't used\n        else if (message.type === \"remove\") removeModal();else throw \"Unkown modal type: \" + message.type;\n      });\n      addMessageHandler(\"response\", function (message) {\n        var requestId = message.tag;\n        var request = _this3.$activeRequests[requestId];\n\n        if (request) {\n          delete _this3.$activeRequests[requestId];\n          if (\"value\" in message) request.onSuccess(message.value);else request.onError(message.error);\n        }\n      });\n      addMessageHandler(\"allowReconnect\", function (message) {\n        switch (message) {\n          case true:\n          case false:\n          case \"force\":\n            _this3.$allowReconnect = message;\n            break;\n\n          default:\n            throw \"Invalid value for allowReconnect: \" + message;\n        }\n      });\n      addMessageHandler(\"custom\", function (message) {\n        // For old-style custom messages - should deprecate and migrate to new\n        // method\n        var shinyOnCustomMessage = getShinyOnCustomMessage();\n        if (shinyOnCustomMessage) shinyOnCustomMessage(message); // Send messages.foo and messages.bar to appropriate handlers\n\n        _this3._sendMessagesToHandlers(message, customMessageHandlers, customMessageHandlerOrder);\n      });\n      addMessageHandler(\"config\", function (message) {\n        _this3.config = {\n          workerId: message.workerId,\n          sessionId: message.sessionId\n        };\n        if (message.user) setShinyUser(message.user);\n        $(document).trigger(\"shiny:sessioninitialized\");\n      });\n      addMessageHandler(\"busy\", function (message) {\n        if (message === \"busy\") {\n          $(document.documentElement).addClass(\"shiny-busy\");\n          $(document).trigger(\"shiny:busy\");\n        } else if (message === \"idle\") {\n          $(document.documentElement).removeClass(\"shiny-busy\");\n          $(document).trigger(\"shiny:idle\");\n        }\n      });\n      addMessageHandler(\"recalculating\", function (message) {\n        if (hasOwnProperty(message, \"name\") && hasOwnProperty(message, \"status\")) {\n          var binding = _this3.$bindings[message.name]; // @ts-expect-error; TODO-barret; Could this be transformed into `.trigger(TYPE)`?\n\n          $(binding ? binding.el : null).trigger({\n            type: \"shiny:\" + message.status\n          });\n        }\n      });\n      addMessageHandler(\"reload\", function (message) {\n        window.location.reload();\n        return;\n        message;\n      });\n      addMessageHandler(\"shiny-insert-ui\", function (message) {\n        var targets = $(message.selector);\n\n        if (targets.length === 0) {\n          // render the HTML and deps to a null target, so\n          // the side-effect of rendering the deps, singletons,\n          // and <head> still occur\n          console.warn('The selector you chose (\"' + message.selector + '\") could not be found in the DOM.');\n          renderHtml(message.content.html, $([]).get(0), message.content.deps);\n        } else {\n          targets.each(function (i, target) {\n            renderContent(target, message.content, message.where);\n            return message.multiple;\n          });\n        }\n      });\n      addMessageHandler(\"shiny-remove-ui\", function (message) {\n        var els = $(message.selector);\n        els.each(function (i, el) {\n          shinyUnbindAll(el, true);\n          $(el).remove(); // If `multiple` is false, returning false terminates the function\n          // and no other elements are removed; if `multiple` is true,\n          // returning true continues removing all remaining elements.\n\n          return message.multiple;\n        });\n      });\n      addMessageHandler(\"frozen\", function (message) {\n        for (var i = 0; i < message.ids.length; i++) {\n          shinyForgetLastInputValue(message.ids[i]);\n        }\n      });\n\n      function getTabset(id) {\n        var $tabset = $(\"#\" + $escape(id));\n        if ($tabset.length === 0) throw \"There is no tabsetPanel (or navbarPage or navlistPanel) \" + \"with id equal to '\" + id + \"'\";\n        return $tabset;\n      }\n\n      function getTabContent($tabset) {\n        var tabsetId = $tabset.attr(\"data-tabsetid\");\n        var $tabContent = $(\"div.tab-content[data-tabsetid='\" + $escape(tabsetId) + \"']\");\n        return $tabContent;\n      }\n\n      function getTargetTabs($tabset, $tabContent, target) {\n        var dataValue = \"[data-value='\" + $escape(target) + \"']\";\n        var $aTag = $tabset.find(\"a\" + dataValue);\n        var $liTag = $aTag.parent();\n\n        if ($liTag.length === 0) {\n          throw \"There is no tabPanel (or navbarMenu) with value\" + \" (or menuName) equal to '\" + target + \"'\";\n        }\n\n        var $liTags = [];\n        var $divTags = [];\n\n        if ($aTag.attr(\"data-toggle\") === \"dropdown\") {\n          // dropdown\n          var $dropdownTabset = $aTag.find(\"+ ul.dropdown-menu\");\n          var dropdownId = $dropdownTabset.attr(\"data-tabsetid\");\n          var $dropdownLiTags = $dropdownTabset.find(\"a[data-toggle='tab']\").parent(\"li\");\n          $dropdownLiTags.each(function (i, el) {\n            $liTags.push($(el));\n          });\n          var selector = \"div.tab-pane[id^='tab-\" + $escape(dropdownId) + \"']\";\n          var $dropdownDivs = $tabContent.find(selector);\n          $dropdownDivs.each(function (i, el) {\n            $divTags.push($(el));\n          });\n        } else {\n          // regular tab\n          $divTags.push($tabContent.find(\"div\" + dataValue));\n        }\n\n        return {\n          $liTag: $liTag,\n          $liTags: $liTags,\n          $divTags: $divTags\n        };\n      }\n\n      addMessageHandler(\"shiny-insert-tab\", function (message) {\n        var $parentTabset = getTabset(message.inputId);\n        var $tabset = $parentTabset;\n        var $tabContent = getTabContent($tabset);\n        var tabsetId = $parentTabset.attr(\"data-tabsetid\");\n        var $divTag = $(message.divTag.html);\n        var $liTag = $(message.liTag.html);\n        var $aTag = $liTag.find(\"> a\"); // Unless the item is being prepended/appended, the target tab\n        // must be provided\n\n        var target = null;\n        var $targetLiTag = null;\n\n        if (message.target !== null) {\n          target = getTargetTabs($tabset, $tabContent, message.target);\n          $targetLiTag = target.$liTag;\n        } // If the item is to be placed inside a navbarMenu (dropdown),\n        // change the value of $tabset from the parent's ul tag to the\n        // dropdown's ul tag\n\n\n        var dropdown = getDropdown();\n\n        if (dropdown !== null) {\n          if ($aTag.attr(\"data-toggle\") === \"dropdown\") throw \"Cannot insert a navbarMenu inside another one\";\n          $tabset = dropdown.$tabset;\n          tabsetId = dropdown.id; // In the BS4+ case, the server will be generating \"top-level\" nav markup\n          // (i.e., `li.nav-item a.nav-link`), but when inserting inside a dropdown we\n          // need `li a.dropdown-item` for correct styling\n          // https://getbootstrap.com/docs/5.0/components/navs-tabs/#tabs-with-dropdowns\n\n          $liTag.removeClass(\"nav-item\").find(\".nav-link\").removeClass(\"nav-link\").addClass(\"dropdown-item\");\n        } // For regular tab items, fix the href (of the li > a tag)\n        // and the id (of the div tag). This does not apply to plain\n        // text items (which function as dividers and headers inside\n        // navbarMenus) and whole navbarMenus (since those get\n        // constructed from scratch on the R side and therefore\n        // there are no ids that need matching)\n\n\n        if ($aTag.attr(\"data-toggle\") === \"tab\") {\n          var index = getTabIndex($tabset, tabsetId);\n          var tabId = \"tab-\" + tabsetId + \"-\" + index;\n          $liTag.find(\"> a\").attr(\"href\", \"#\" + tabId);\n          $divTag.attr(\"id\", tabId);\n        } // actually insert the item into the right place\n\n\n        if (message.position === \"before\") {\n          if ($targetLiTag) {\n            $targetLiTag.before($liTag);\n          } else {\n            $tabset.prepend($liTag);\n          }\n        } else if (message.position === \"after\") {\n          if ($targetLiTag) {\n            $targetLiTag.after($liTag);\n          } else {\n            $tabset.append($liTag);\n          }\n        }\n\n        renderContent($liTag[0], {\n          html: $liTag.html(),\n          deps: message.liTag.deps\n        }); // jcheng 2017-07-28: This next part might look a little insane versus the\n        // more obvious `$tabContent.append($divTag);`, but there's a method to the\n        // madness.\n        //\n        // 1) We need to load the dependencies, and this needs to happen before\n        //    any scripts in $divTag get a chance to run.\n        // 2) The scripts in $divTag need to run only once.\n        // 3) The contents of $divTag need to be sent through renderContent so that\n        //    singletons may be registered and/or obeyed, and so that inputs/outputs\n        //    may be bound.\n        //\n        // Add to these constraints these facts:\n        //\n        // A) The (non-jQuery) DOM manipulation functions don't cause scripts to\n        //    run, but the jQuery functions all do.\n        // B) renderContent must be called on an element that's attached to the\n        //    document.\n        // C) $divTag may be of length > 1 (e.g. navbarMenu). I also noticed text\n        //    elements consisting of just \"\\n\" being included in the nodeset of\n        //    $divTag.\n        // D) renderContent has a bug where only position \"replace\" (the default)\n        //    uses the jQuery functions, so other positions like \"beforeend\" will\n        //    prevent child script tags from running.\n        //\n        // In theory the same problem exists for $liTag but since that content is\n        // much less likely to include arbitrary scripts, we're skipping it.\n        //\n        // This code could be nicer if we didn't use renderContent, but rather the\n        // lower-level functions that renderContent uses. Like if we pre-process\n        // the value of message.divTag.html for singletons, we could do that, then\n        // render dependencies, then do $tabContent.append($divTag).\n\n        renderContent($tabContent[0], {\n          html: \"\",\n          deps: message.divTag.deps\n        }, // @ts-expect-error; TODO-barret; There is no usage of beforeend\n        \"beforeend\");\n        $divTag.get().forEach(function (el) {\n          // Must not use jQuery for appending el to the doc, we don't want any\n          // scripts to run (since they will run when renderContent takes a crack).\n          $tabContent[0].appendChild(el); // If `el` itself is a script tag, this approach won't work (the script\n          // won't be run), since we're only sending innerHTML through renderContent\n          // and not the whole tag. That's fine in this case because we control the\n          // R code that generates this HTML, and we know that the element is not\n          // a script tag.\n\n          renderContent(el, el.innerHTML || el.textContent);\n        });\n\n        if (message.select) {\n          $liTag.find(\"a\").tab(\"show\");\n        }\n        /* Barbara -- August 2017\n        Note: until now, the number of tabs in a tabsetPanel (or navbarPage\n        or navlistPanel) was always fixed. So, an easy way to give an id to\n        a tab was simply incrementing a counter. (Just like it was easy to\n        give a random 4-digit number to identify the tabsetPanel). Now that\n        we're introducing dynamic tabs, we must retrieve these numbers and\n        fix the dummy id given to the tab in the R side -- there, we always\n        set the tab id (counter dummy) to \"id\" and the tabset id to \"tsid\")\n        */\n\n\n        function getTabIndex($tabset, tabsetId) {\n          // The 0 is to ensure this works for empty tabsetPanels as well\n          var existingTabIds = [0]; // loop through all existing tabs, find the one with highest id\n          // (since this is based on a numeric counter), and increment\n\n          $tabset.find(\"> li\").each(function () {\n            var $tab = $(this).find(\"> a[data-toggle='tab']\");\n\n            if ($tab.length > 0) {\n              // remove leading url if it exists. (copy of bootstrap url stripper)\n              var href = $tab.attr(\"href\").replace(/.*(?=#[^\\s]+$)/, \"\"); // remove tab id to get the index\n\n              var _index = href.replace(\"#tab-\" + tabsetId + \"-\", \"\");\n\n              existingTabIds.push(Number(_index));\n            }\n          });\n          return Math.max.apply(null, existingTabIds) + 1;\n        } // Finds out if the item will be placed inside a navbarMenu\n        // (dropdown). If so, returns the dropdown tabset (ul tag)\n        // and the dropdown tabsetid (to be used to fix the tab ID)\n\n\n        function getDropdown() {\n          if (message.menuName !== null) {\n            // menuName is only provided if the user wants to prepend\n            // or append an item inside a navbarMenu (dropdown)\n            var $dropdownATag = $(\"a.dropdown-toggle[data-value='\" + $escape(message.menuName) + \"']\");\n\n            if ($dropdownATag.length === 0) {\n              throw \"There is no navbarMenu with menuName equal to '\" + message.menuName + \"'\";\n            }\n\n            var $dropdownTabset = $dropdownATag.find(\"+ ul.dropdown-menu\");\n            var dropdownId = $dropdownTabset.attr(\"data-tabsetid\");\n            return {\n              $tabset: $dropdownTabset,\n              id: dropdownId\n            };\n          } else if (message.target !== null) {\n            // if our item is to be placed next to a tab that is inside\n            // a navbarMenu, our item will also be inside\n            var $uncleTabset = $targetLiTag.parent(\"ul\");\n\n            if ($uncleTabset.hasClass(\"dropdown-menu\")) {\n              var uncleId = $uncleTabset.attr(\"data-tabsetid\");\n              return {\n                $tabset: $uncleTabset,\n                id: uncleId\n              };\n            }\n          }\n\n          return null;\n        }\n      }); // If the given tabset has no active tabs, select the first one\n\n      function ensureTabsetHasVisibleTab($tabset) {\n        var inputBinding = $tabset.data(\"shiny-input-binding\"); // Use the getValue() method to avoid duplicating the CSS selector\n        // for querying the DOM for the currently active tab\n\n        if (!inputBinding.getValue($tabset)) {\n          // Note: destTabValue may be null. We still want to proceed\n          // through the below logic and setValue so that the input\n          // value for the tabset gets updated (i.e. input$tabsetId\n          // should be null if there are no tabs).\n          var destTabValue = getFirstTab($tabset);\n          var evt = jQuery.Event(\"shiny:updateinput\");\n          evt.binding = inputBinding;\n          $tabset.trigger(evt);\n          inputBinding.setValue($tabset[0], destTabValue);\n        }\n      } // Given a tabset ul jquery object, return the value of the first tab\n      // (in document order) that's visible and able to be selected.\n\n\n      function getFirstTab($ul) {\n        return $ul.find(\"li:visible a[data-toggle='tab']\").first().attr(\"data-value\") || null;\n      }\n\n      function tabApplyFunction(target, func) {\n        var liTags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n        $.each(target, function (key, el) {\n          if (key === \"$liTag\") {\n            // $liTag is always just one jQuery element\n            func(el);\n          } else if (key === \"$divTags\") {\n            // $divTags is always an array (even if length = 1)\n            $.each(el, function (i, div) {\n              func(div);\n            });\n          } else if (liTags && key === \"$liTags\") {\n            // $liTags is always an array (even if length = 0)\n            $.each(el, function (i, div) {\n              func(div);\n            });\n          }\n        });\n      }\n\n      addMessageHandler(\"shiny-remove-tab\", function (message) {\n        var $tabset = getTabset(message.inputId);\n        var $tabContent = getTabContent($tabset);\n        var target = getTargetTabs($tabset, $tabContent, message.target);\n        tabApplyFunction(target, removeEl);\n        ensureTabsetHasVisibleTab($tabset);\n\n        function removeEl($el) {\n          shinyUnbindAll($el, true);\n          $el.remove();\n        }\n      });\n      addMessageHandler(\"shiny-change-tab-visibility\", function (message) {\n        var $tabset = getTabset(message.inputId);\n        var $tabContent = getTabContent($tabset);\n        var target = getTargetTabs($tabset, $tabContent, message.target);\n        tabApplyFunction(target, changeVisibility, true);\n        ensureTabsetHasVisibleTab($tabset);\n\n        function changeVisibility($el) {\n          if (message.type === \"show\") $el.css(\"display\", \"\");else if (message.type === \"hide\") {\n            $el.hide();\n            $el.removeClass(\"active\");\n          }\n        }\n      });\n      addMessageHandler(\"updateQueryString\", function (message) {\n        // leave the bookmarking code intact\n        if (message.mode === \"replace\") {\n          window.history.replaceState(null, null, message.queryString);\n          return;\n        }\n\n        var what = null;\n        if (message.queryString.charAt(0) === \"#\") what = \"hash\";else if (message.queryString.charAt(0) === \"?\") what = \"query\";else throw \"The 'query' string must start with either '?' \" + \"(to update the query string) or with '#' (to \" + \"update the hash).\";\n        var path = window.location.pathname;\n        var oldQS = window.location.search;\n        var oldHash = window.location.hash;\n        /* Barbara -- December 2016\n        Note: we could check if the new QS and/or hash are different\n        from the old one(s) and, if not, we could choose not to push\n        a new state (whether or not we would replace it is moot/\n        inconsequential). However, I think that it is better to\n        interpret each call to `updateQueryString` as representing\n        new state (even if the message.queryString is the same), so\n        that check isn't even performed as of right now.\n        */\n\n        var relURL = path;\n        if (what === \"query\") relURL += message.queryString;else relURL += oldQS + message.queryString; // leave old QS if it exists\n\n        window.history.pushState(null, null, relURL); // for the case when message.queryString has both a query string\n        // and a hash (`what = \"hash\"` allows us to trigger the\n        // hashchange event)\n\n        if (message.queryString.indexOf(\"#\") !== -1) what = \"hash\"; // for the case when there was a hash before, but there isn't\n        // any hash now (e.g. for when only the query string is updated)\n\n        if (window.location.hash !== oldHash) what = \"hash\"; // This event needs to be triggered manually because pushState() never\n        // causes a hashchange event to be fired,\n\n        if (what === \"hash\") $(document).trigger(\"hashchange\");\n      });\n      addMessageHandler(\"resetBrush\", function (message) {\n        resetBrush(message.brushId);\n      });\n    } // Progress reporting ====================================================\n\n  }, {\n    key: \"getTestSnapshotBaseUrl\",\n    value: //// 2021/03: TypeScript Conversion\n    // Added in `./shiny/init.ts` as there are no instances of progressHandlers being used right away on GitHub\n    // Shiny.progressHandlers = this.progressHandlers;\n    // Returns a URL which can be queried to get values from inside the server\n    // function. This is enabled with `options(shiny.testmode=TRUE)`.\n    function getTestSnapshotBaseUrl() {\n      var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n          _ref2$fullUrl = _ref2.fullUrl,\n          fullUrl = _ref2$fullUrl === void 0 ? true : _ref2$fullUrl;\n\n      var loc = window.location;\n      var url = \"\";\n\n      if (fullUrl) {\n        // Strip off everything after last slash in path, like dirname() in R\n        url = loc.origin + loc.pathname.replace(/\\/[^/]*$/, \"\");\n      }\n\n      url += \"/session/\" + encodeURIComponent(this.config.sessionId) + \"/dataobj/shinytest?w=\" + encodeURIComponent(this.config.workerId) + \"&nonce=\" + randomId();\n      return url;\n    }\n  }]);\n\n  return ShinyApp;\n}();\n\nexport { ShinyApp, addCustomMessageHandler };", "function windowBlobBuilder() {\n  var blob = // @ts-expect-error; Using legacy definitions of Blob builders\n  window.BlobBuilder || // @ts-expect-error; Using legacy definitions of Blob builders\n  window.WebKitBlobBuilder || // @ts-expect-error; Using legacy definitions of Blob builders\n  window.MozBlobBuilder || window.MSBlobBuilder;\n  return blob;\n}\n\nexport { windowBlobBuilder };", "function windowUserAgent() {\n  return window.navigator.userAgent;\n}\n\nexport { windowUserAgent };", "import $ from \"jquery\";\nimport { shinyShinyApp } from \"./initedMethods\";\nimport { showNotification } from \"./notifications\";\n\nfunction initReactlog() {\n  $(document).on(\"keydown\", function (e) {\n    if (e.which !== 114 || !e.ctrlKey && !e.metaKey || e.shiftKey || e.altKey) return;\n    var url = \"reactlog?w=\" + window.escape(shinyShinyApp().config.workerId) + \"&s=\" + window.escape(shinyShinyApp().config.sessionId);\n    window.open(url);\n    e.preventDefault();\n  });\n  $(document).on(\"keydown\", function (e) {\n    if ( // if not one of the key combos below\n    !( // cmd/ctrl + fn + f4\n    e.which === 115 && (e.ctrlKey || e.metaKey) && !e.shiftKey && !e.altKey || // cmd/ctrl + shift + fn + f3\n    e.which === 114 && (e.ctrlKey || e.metaKey) && e.shiftKey && !e.altKey)) {\n      return;\n    }\n\n    var url = \"reactlog/mark?w=\" + window.escape(shinyShinyApp().config.workerId) + \"&s=\" + window.escape(shinyShinyApp().config.sessionId); // send notification\n\n    $.get(url, function (result) {\n      if (result !== \"marked\") return;\n      var html = '<span id=\"shiny-reactlog-mark-text\">Marked time point in reactlog</span>';\n      showNotification({\n        html: html,\n        closeButton: true\n      });\n    }).fail(function () {\n      // found returned error while marking, should open webpage\n      window.open(url);\n    });\n    e.preventDefault();\n  });\n}\n\nexport { initReactlog };", "import { disableFormSubmission } from \"./disableForm\";\nimport { trackHistory } from \"./history\";\nimport { determineBrowserInfo } from \"./browser\";\nimport { windowShiny } from \"../window/libraries\";\nimport { setShiny } from \"../shiny\";\nimport { setBlobBuilder } from \"../utils/blob\";\nimport { windowBlobBuilder } from \"../window/blobBuilder\";\nimport { setUserAgent } from \"../utils/userAgent\";\nimport { windowUserAgent } from \"../window/userAgent\";\nimport { initReactlog } from \"../shiny/reactlog\";\n\nfunction init() {\n  setShiny(windowShiny());\n  setUserAgent(windowUserAgent()); // before determineBrowserInfo()\n\n  determineBrowserInfo();\n  trackHistory();\n  disableFormSubmission();\n  setBlobBuilder(windowBlobBuilder());\n  initReactlog();\n}\n\nexport { init };", "import { init } from \"./initialize\";\ninit();"],
  "mappings": "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",
  "names": []
}

shiny/www/shared/shiny.js METASEP
/*! shiny 1.7.1.9001 | (c) 2012-2021 RStudio, PBC. | License: GPL-3 | file LICENSE */
(function() {
  var __create = Object.create;
  var __defProp = Object.defineProperty;
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
  var __getOwnPropNames = Object.getOwnPropertyNames;
  var __getProtoOf = Object.getPrototypeOf;
  var __hasOwnProp = Object.prototype.hasOwnProperty;
  var __markAsModule = function(target) {
    return __defProp(target, "__esModule", { value: true });
  };
  var __commonJS = function(cb, mod) {
    return function __require() {
      return mod || (0, cb[Object.keys(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
    };
  };
  var __reExport = function(target, module, desc) {
    if (module && typeof module === "object" || typeof module === "function")
      for (var keys2 = __getOwnPropNames(module), i = 0, n = keys2.length, key; i < n; i++) {
        key = keys2[i];
        if (!__hasOwnProp.call(target, key) && key !== "default")
          __defProp(target, key, { get: function(k) {
            return module[k];
          }.bind(null, key), enumerable: !(desc = __getOwnPropDesc(module, key)) || desc.enumerable });
      }
    return target;
  };
  var __toModule = function(module) {
    return __reExport(__markAsModule(__defProp(module != null ? __create(__getProtoOf(module)) : {}, "default", module && module.__esModule && "default" in module ? { get: function() {
      return module.default;
    }, enumerable: true } : { value: module, enumerable: true })), module);
  };

  // globals:jquery
  var require_jquery = __commonJS({
    "globals:jquery": function(exports, module) {
      module.exports = window.jQuery;
    }
  });

  // node_modules/core-js/internals/global.js
  var require_global = __commonJS({
    "node_modules/core-js/internals/global.js": function(exports, module) {
      var check = function(it) {
        return it && it.Math == Math && it;
      };
      module.exports = check(typeof globalThis == "object" && globalThis) || check(typeof window == "object" && window) || check(typeof self == "object" && self) || check(typeof global == "object" && global) || function() {
        return this;
      }() || Function("return this")();
    }
  });

  // node_modules/core-js/internals/fails.js
  var require_fails = __commonJS({
    "node_modules/core-js/internals/fails.js": function(exports, module) {
      module.exports = function(exec) {
        try {
          return !!exec();
        } catch (error) {
          return true;
        }
      };
    }
  });

  // node_modules/core-js/internals/descriptors.js
  var require_descriptors = __commonJS({
    "node_modules/core-js/internals/descriptors.js": function(exports, module) {
      var fails11 = require_fails();
      module.exports = !fails11(function() {
        return Object.defineProperty({}, 1, { get: function() {
          return 7;
        } })[1] != 7;
      });
    }
  });

  // node_modules/core-js/internals/object-property-is-enumerable.js
  var require_object_property_is_enumerable = __commonJS({
    "node_modules/core-js/internals/object-property-is-enumerable.js": function(exports) {
      "use strict";
      var $propertyIsEnumerable2 = {}.propertyIsEnumerable;
      var getOwnPropertyDescriptor4 = Object.getOwnPropertyDescriptor;
      var NASHORN_BUG = getOwnPropertyDescriptor4 && !$propertyIsEnumerable2.call({ 1: 2 }, 1);
      exports.f = NASHORN_BUG ? function propertyIsEnumerable2(V) {
        var descriptor = getOwnPropertyDescriptor4(this, V);
        return !!descriptor && descriptor.enumerable;
      } : $propertyIsEnumerable2;
    }
  });

  // node_modules/core-js/internals/create-property-descriptor.js
  var require_create_property_descriptor = __commonJS({
    "node_modules/core-js/internals/create-property-descriptor.js": function(exports, module) {
      module.exports = function(bitmap, value) {
        return {
          enumerable: !(bitmap & 1),
          configurable: !(bitmap & 2),
          writable: !(bitmap & 4),
          value: value
        };
      };
    }
  });

  // node_modules/core-js/internals/classof-raw.js
  var require_classof_raw = __commonJS({
    "node_modules/core-js/internals/classof-raw.js": function(exports, module) {
      var toString2 = {}.toString;
      module.exports = function(it) {
        return toString2.call(it).slice(8, -1);
      };
    }
  });

  // node_modules/core-js/internals/indexed-object.js
  var require_indexed_object = __commonJS({
    "node_modules/core-js/internals/indexed-object.js": function(exports, module) {
      var fails11 = require_fails();
      var classof2 = require_classof_raw();
      var split = "".split;
      module.exports = fails11(function() {
        return !Object("z").propertyIsEnumerable(0);
      }) ? function(it) {
        return classof2(it) == "String" ? split.call(it, "") : Object(it);
      } : Object;
    }
  });

  // node_modules/core-js/internals/require-object-coercible.js
  var require_require_object_coercible = __commonJS({
    "node_modules/core-js/internals/require-object-coercible.js": function(exports, module) {
      module.exports = function(it) {
        if (it == void 0)
          throw TypeError("Can't call method on " + it);
        return it;
      };
    }
  });

  // node_modules/core-js/internals/to-indexed-object.js
  var require_to_indexed_object = __commonJS({
    "node_modules/core-js/internals/to-indexed-object.js": function(exports, module) {
      var IndexedObject2 = require_indexed_object();
      var requireObjectCoercible5 = require_require_object_coercible();
      module.exports = function(it) {
        return IndexedObject2(requireObjectCoercible5(it));
      };
    }
  });

  // node_modules/core-js/internals/is-object.js
  var require_is_object = __commonJS({
    "node_modules/core-js/internals/is-object.js": function(exports, module) {
      module.exports = function(it) {
        return typeof it === "object" ? it !== null : typeof it === "function";
      };
    }
  });

  // node_modules/core-js/internals/to-primitive.js
  var require_to_primitive = __commonJS({
    "node_modules/core-js/internals/to-primitive.js": function(exports, module) {
      var isObject7 = require_is_object();
      module.exports = function(input, PREFERRED_STRING) {
        if (!isObject7(input))
          return input;
        var fn, val;
        if (PREFERRED_STRING && typeof (fn = input.toString) == "function" && !isObject7(val = fn.call(input)))
          return val;
        if (typeof (fn = input.valueOf) == "function" && !isObject7(val = fn.call(input)))
          return val;
        if (!PREFERRED_STRING && typeof (fn = input.toString) == "function" && !isObject7(val = fn.call(input)))
          return val;
        throw TypeError("Can't convert object to primitive value");
      };
    }
  });

  // node_modules/core-js/internals/to-object.js
  var require_to_object = __commonJS({
    "node_modules/core-js/internals/to-object.js": function(exports, module) {
      var requireObjectCoercible5 = require_require_object_coercible();
      module.exports = function(argument) {
        return Object(requireObjectCoercible5(argument));
      };
    }
  });

  // node_modules/core-js/internals/has.js
  var require_has = __commonJS({
    "node_modules/core-js/internals/has.js": function(exports, module) {
      var toObject6 = require_to_object();
      var hasOwnProperty2 = {}.hasOwnProperty;
      module.exports = Object.hasOwn || function hasOwn(it, key) {
        return hasOwnProperty2.call(toObject6(it), key);
      };
    }
  });

  // node_modules/core-js/internals/document-create-element.js
  var require_document_create_element = __commonJS({
    "node_modules/core-js/internals/document-create-element.js": function(exports, module) {
      var global8 = require_global();
      var isObject7 = require_is_object();
      var document2 = global8.document;
      var EXISTS = isObject7(document2) && isObject7(document2.createElement);
      module.exports = function(it) {
        return EXISTS ? document2.createElement(it) : {};
      };
    }
  });

  // node_modules/core-js/internals/ie8-dom-define.js
  var require_ie8_dom_define = __commonJS({
    "node_modules/core-js/internals/ie8-dom-define.js": function(exports, module) {
      var DESCRIPTORS6 = require_descriptors();
      var fails11 = require_fails();
      var createElement = require_document_create_element();
      module.exports = !DESCRIPTORS6 && !fails11(function() {
        return Object.defineProperty(createElement("div"), "a", {
          get: function() {
            return 7;
          }
        }).a != 7;
      });
    }
  });

  // node_modules/core-js/internals/object-get-own-property-descriptor.js
  var require_object_get_own_property_descriptor = __commonJS({
    "node_modules/core-js/internals/object-get-own-property-descriptor.js": function(exports) {
      var DESCRIPTORS6 = require_descriptors();
      var propertyIsEnumerableModule2 = require_object_property_is_enumerable();
      var createPropertyDescriptor2 = require_create_property_descriptor();
      var toIndexedObject5 = require_to_indexed_object();
      var toPrimitive3 = require_to_primitive();
      var has5 = require_has();
      var IE8_DOM_DEFINE = require_ie8_dom_define();
      var $getOwnPropertyDescriptor2 = Object.getOwnPropertyDescriptor;
      exports.f = DESCRIPTORS6 ? $getOwnPropertyDescriptor2 : function getOwnPropertyDescriptor4(O, P) {
        O = toIndexedObject5(O);
        P = toPrimitive3(P, true);
        if (IE8_DOM_DEFINE)
          try {
            return $getOwnPropertyDescriptor2(O, P);
          } catch (error) {
          }
        if (has5(O, P))
          return createPropertyDescriptor2(!propertyIsEnumerableModule2.f.call(O, P), O[P]);
      };
    }
  });

  // node_modules/core-js/internals/an-object.js
  var require_an_object = __commonJS({
    "node_modules/core-js/internals/an-object.js": function(exports, module) {
      var isObject7 = require_is_object();
      module.exports = function(it) {
        if (!isObject7(it)) {
          throw TypeError(String(it) + " is not an object");
        }
        return it;
      };
    }
  });

  // node_modules/core-js/internals/object-define-property.js
  var require_object_define_property = __commonJS({
    "node_modules/core-js/internals/object-define-property.js": function(exports) {
      var DESCRIPTORS6 = require_descriptors();
      var IE8_DOM_DEFINE = require_ie8_dom_define();
      var anObject10 = require_an_object();
      var toPrimitive3 = require_to_primitive();
      var $defineProperty2 = Object.defineProperty;
      exports.f = DESCRIPTORS6 ? $defineProperty2 : function defineProperty5(O, P, Attributes) {
        anObject10(O);
        P = toPrimitive3(P, true);
        anObject10(Attributes);
        if (IE8_DOM_DEFINE)
          try {
            return $defineProperty2(O, P, Attributes);
          } catch (error) {
          }
        if ("get" in Attributes || "set" in Attributes)
          throw TypeError("Accessors not supported");
        if ("value" in Attributes)
          O[P] = Attributes.value;
        return O;
      };
    }
  });

  // node_modules/core-js/internals/create-non-enumerable-property.js
  var require_create_non_enumerable_property = __commonJS({
    "node_modules/core-js/internals/create-non-enumerable-property.js": function(exports, module) {
      var DESCRIPTORS6 = require_descriptors();
      var definePropertyModule2 = require_object_define_property();
      var createPropertyDescriptor2 = require_create_property_descriptor();
      module.exports = DESCRIPTORS6 ? function(object, key, value) {
        return definePropertyModule2.f(object, key, createPropertyDescriptor2(1, value));
      } : function(object, key, value) {
        object[key] = value;
        return object;
      };
    }
  });

  // node_modules/core-js/internals/set-global.js
  var require_set_global = __commonJS({
    "node_modules/core-js/internals/set-global.js": function(exports, module) {
      var global8 = require_global();
      var createNonEnumerableProperty4 = require_create_non_enumerable_property();
      module.exports = function(key, value) {
        try {
          createNonEnumerableProperty4(global8, key, value);
        } catch (error) {
          global8[key] = value;
        }
        return value;
      };
    }
  });

  // node_modules/core-js/internals/shared-store.js
  var require_shared_store = __commonJS({
    "node_modules/core-js/internals/shared-store.js": function(exports, module) {
      var global8 = require_global();
      var setGlobal = require_set_global();
      var SHARED = "__core-js_shared__";
      var store = global8[SHARED] || setGlobal(SHARED, {});
      module.exports = store;
    }
  });

  // node_modules/core-js/internals/inspect-source.js
  var require_inspect_source = __commonJS({
    "node_modules/core-js/internals/inspect-source.js": function(exports, module) {
      var store = require_shared_store();
      var functionToString = Function.toString;
      if (typeof store.inspectSource != "function") {
        store.inspectSource = function(it) {
          return functionToString.call(it);
        };
      }
      module.exports = store.inspectSource;
    }
  });

  // node_modules/core-js/internals/native-weak-map.js
  var require_native_weak_map = __commonJS({
    "node_modules/core-js/internals/native-weak-map.js": function(exports, module) {
      var global8 = require_global();
      var inspectSource = require_inspect_source();
      var WeakMap = global8.WeakMap;
      module.exports = typeof WeakMap === "function" && /native code/.test(inspectSource(WeakMap));
    }
  });

  // node_modules/core-js/internals/is-pure.js
  var require_is_pure = __commonJS({
    "node_modules/core-js/internals/is-pure.js": function(exports, module) {
      module.exports = false;
    }
  });

  // node_modules/core-js/internals/shared.js
  var require_shared = __commonJS({
    "node_modules/core-js/internals/shared.js": function(exports, module) {
      var IS_PURE2 = require_is_pure();
      var store = require_shared_store();
      (module.exports = function(key, value) {
        return store[key] || (store[key] = value !== void 0 ? value : {});
      })("versions", []).push({
        version: "3.14.0",
        mode: IS_PURE2 ? "pure" : "global",
        copyright: "\xA9 2021 Denis Pushkarev (zloirock.ru)"
      });
    }
  });

  // node_modules/core-js/internals/uid.js
  var require_uid = __commonJS({
    "node_modules/core-js/internals/uid.js": function(exports, module) {
      var id = 0;
      var postfix = Math.random();
      module.exports = function(key) {
        return "Symbol(" + String(key === void 0 ? "" : key) + ")_" + (++id + postfix).toString(36);
      };
    }
  });

  // node_modules/core-js/internals/shared-key.js
  var require_shared_key = __commonJS({
    "node_modules/core-js/internals/shared-key.js": function(exports, module) {
      var shared2 = require_shared();
      var uid2 = require_uid();
      var keys2 = shared2("keys");
      module.exports = function(key) {
        return keys2[key] || (keys2[key] = uid2(key));
      };
    }
  });

  // node_modules/core-js/internals/hidden-keys.js
  var require_hidden_keys = __commonJS({
    "node_modules/core-js/internals/hidden-keys.js": function(exports, module) {
      module.exports = {};
    }
  });

  // node_modules/core-js/internals/internal-state.js
  var require_internal_state = __commonJS({
    "node_modules/core-js/internals/internal-state.js": function(exports, module) {
      var NATIVE_WEAK_MAP = require_native_weak_map();
      var global8 = require_global();
      var isObject7 = require_is_object();
      var createNonEnumerableProperty4 = require_create_non_enumerable_property();
      var objectHas = require_has();
      var shared2 = require_shared_store();
      var sharedKey2 = require_shared_key();
      var hiddenKeys2 = require_hidden_keys();
      var OBJECT_ALREADY_INITIALIZED = "Object already initialized";
      var WeakMap = global8.WeakMap;
      var set;
      var get3;
      var has5;
      var enforce = function(it) {
        return has5(it) ? get3(it) : set(it, {});
      };
      var getterFor = function(TYPE) {
        return function(it) {
          var state;
          if (!isObject7(it) || (state = get3(it)).type !== TYPE) {
            throw TypeError("Incompatible receiver, " + TYPE + " required");
          }
          return state;
        };
      };
      if (NATIVE_WEAK_MAP || shared2.state) {
        store = shared2.state || (shared2.state = new WeakMap());
        wmget = store.get;
        wmhas = store.has;
        wmset = store.set;
        set = function(it, metadata) {
          if (wmhas.call(store, it))
            throw new TypeError(OBJECT_ALREADY_INITIALIZED);
          metadata.facade = it;
          wmset.call(store, it, metadata);
          return metadata;
        };
        get3 = function(it) {
          return wmget.call(store, it) || {};
        };
        has5 = function(it) {
          return wmhas.call(store, it);
        };
      } else {
        STATE = sharedKey2("state");
        hiddenKeys2[STATE] = true;
        set = function(it, metadata) {
          if (objectHas(it, STATE))
            throw new TypeError(OBJECT_ALREADY_INITIALIZED);
          metadata.facade = it;
          createNonEnumerableProperty4(it, STATE, metadata);
          return metadata;
        };
        get3 = function(it) {
          return objectHas(it, STATE) ? it[STATE] : {};
        };
        has5 = function(it) {
          return objectHas(it, STATE);
        };
      }
      var store;
      var wmget;
      var wmhas;
      var wmset;
      var STATE;
      module.exports = {
        set: set,
        get: get3,
        has: has5,
        enforce: enforce,
        getterFor: getterFor
      };
    }
  });

  // node_modules/core-js/internals/redefine.js
  var require_redefine = __commonJS({
    "node_modules/core-js/internals/redefine.js": function(exports, module) {
      var global8 = require_global();
      var createNonEnumerableProperty4 = require_create_non_enumerable_property();
      var has5 = require_has();
      var setGlobal = require_set_global();
      var inspectSource = require_inspect_source();
      var InternalStateModule3 = require_internal_state();
      var getInternalState3 = InternalStateModule3.get;
      var enforceInternalState = InternalStateModule3.enforce;
      var TEMPLATE = String(String).split("String");
      (module.exports = function(O, key, value, options) {
        var unsafe = options ? !!options.unsafe : false;
        var simple = options ? !!options.enumerable : false;
        var noTargetGet = options ? !!options.noTargetGet : false;
        var state;
        if (typeof value == "function") {
          if (typeof key == "string" && !has5(value, "name")) {
            createNonEnumerableProperty4(value, "name", key);
          }
          state = enforceInternalState(value);
          if (!state.source) {
            state.source = TEMPLATE.join(typeof key == "string" ? key : "");
          }
        }
        if (O === global8) {
          if (simple)
            O[key] = value;
          else
            setGlobal(key, value);
          return;
        } else if (!unsafe) {
          delete O[key];
        } else if (!noTargetGet && O[key]) {
          simple = true;
        }
        if (simple)
          O[key] = value;
        else
          createNonEnumerableProperty4(O, key, value);
      })(Function.prototype, "toString", function toString2() {
        return typeof this == "function" && getInternalState3(this).source || inspectSource(this);
      });
    }
  });

  // node_modules/core-js/internals/path.js
  var require_path = __commonJS({
    "node_modules/core-js/internals/path.js": function(exports, module) {
      var global8 = require_global();
      module.exports = global8;
    }
  });

  // node_modules/core-js/internals/get-built-in.js
  var require_get_built_in = __commonJS({
    "node_modules/core-js/internals/get-built-in.js": function(exports, module) {
      var path = require_path();
      var global8 = require_global();
      var aFunction2 = function(variable) {
        return typeof variable == "function" ? variable : void 0;
      };
      module.exports = function(namespace, method) {
        return arguments.length < 2 ? aFunction2(path[namespace]) || aFunction2(global8[namespace]) : path[namespace] && path[namespace][method] || global8[namespace] && global8[namespace][method];
      };
    }
  });

  // node_modules/core-js/internals/to-integer.js
  var require_to_integer = __commonJS({
    "node_modules/core-js/internals/to-integer.js": function(exports, module) {
      var ceil = Math.ceil;
      var floor = Math.floor;
      module.exports = function(argument) {
        return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);
      };
    }
  });

  // node_modules/core-js/internals/to-length.js
  var require_to_length = __commonJS({
    "node_modules/core-js/internals/to-length.js": function(exports, module) {
      var toInteger3 = require_to_integer();
      var min4 = Math.min;
      module.exports = function(argument) {
        return argument > 0 ? min4(toInteger3(argument), 9007199254740991) : 0;
      };
    }
  });

  // node_modules/core-js/internals/to-absolute-index.js
  var require_to_absolute_index = __commonJS({
    "node_modules/core-js/internals/to-absolute-index.js": function(exports, module) {
      var toInteger3 = require_to_integer();
      var max4 = Math.max;
      var min4 = Math.min;
      module.exports = function(index, length) {
        var integer = toInteger3(index);
        return integer < 0 ? max4(integer + length, 0) : min4(integer, length);
      };
    }
  });

  // node_modules/core-js/internals/array-includes.js
  var require_array_includes = __commonJS({
    "node_modules/core-js/internals/array-includes.js": function(exports, module) {
      var toIndexedObject5 = require_to_indexed_object();
      var toLength8 = require_to_length();
      var toAbsoluteIndex4 = require_to_absolute_index();
      var createMethod = function(IS_INCLUDES) {
        return function($this, el, fromIndex) {
          var O = toIndexedObject5($this);
          var length = toLength8(O.length);
          var index = toAbsoluteIndex4(fromIndex, length);
          var value;
          if (IS_INCLUDES && el != el)
            while (length > index) {
              value = O[index++];
              if (value != value)
                return true;
            }
          else
            for (; length > index; index++) {
              if ((IS_INCLUDES || index in O) && O[index] === el)
                return IS_INCLUDES || index || 0;
            }
          return !IS_INCLUDES && -1;
        };
      };
      module.exports = {
        includes: createMethod(true),
        indexOf: createMethod(false)
      };
    }
  });

  // node_modules/core-js/internals/object-keys-internal.js
  var require_object_keys_internal = __commonJS({
    "node_modules/core-js/internals/object-keys-internal.js": function(exports, module) {
      var has5 = require_has();
      var toIndexedObject5 = require_to_indexed_object();
      var indexOf2 = require_array_includes().indexOf;
      var hiddenKeys2 = require_hidden_keys();
      module.exports = function(object, names) {
        var O = toIndexedObject5(object);
        var i = 0;
        var result = [];
        var key;
        for (key in O)
          !has5(hiddenKeys2, key) && has5(O, key) && result.push(key);
        while (names.length > i)
          if (has5(O, key = names[i++])) {
            ~indexOf2(result, key) || result.push(key);
          }
        return result;
      };
    }
  });

  // node_modules/core-js/internals/enum-bug-keys.js
  var require_enum_bug_keys = __commonJS({
    "node_modules/core-js/internals/enum-bug-keys.js": function(exports, module) {
      module.exports = [
        "constructor",
        "hasOwnProperty",
        "isPrototypeOf",
        "propertyIsEnumerable",
        "toLocaleString",
        "toString",
        "valueOf"
      ];
    }
  });

  // node_modules/core-js/internals/object-get-own-property-names.js
  var require_object_get_own_property_names = __commonJS({
    "node_modules/core-js/internals/object-get-own-property-names.js": function(exports) {
      var internalObjectKeys = require_object_keys_internal();
      var enumBugKeys = require_enum_bug_keys();
      var hiddenKeys2 = enumBugKeys.concat("length", "prototype");
      exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames3(O) {
        return internalObjectKeys(O, hiddenKeys2);
      };
    }
  });

  // node_modules/core-js/internals/object-get-own-property-symbols.js
  var require_object_get_own_property_symbols = __commonJS({
    "node_modules/core-js/internals/object-get-own-property-symbols.js": function(exports) {
      exports.f = Object.getOwnPropertySymbols;
    }
  });

  // node_modules/core-js/internals/own-keys.js
  var require_own_keys = __commonJS({
    "node_modules/core-js/internals/own-keys.js": function(exports, module) {
      var getBuiltIn3 = require_get_built_in();
      var getOwnPropertyNamesModule2 = require_object_get_own_property_names();
      var getOwnPropertySymbolsModule2 = require_object_get_own_property_symbols();
      var anObject10 = require_an_object();
      module.exports = getBuiltIn3("Reflect", "ownKeys") || function ownKeys(it) {
        var keys2 = getOwnPropertyNamesModule2.f(anObject10(it));
        var getOwnPropertySymbols3 = getOwnPropertySymbolsModule2.f;
        return getOwnPropertySymbols3 ? keys2.concat(getOwnPropertySymbols3(it)) : keys2;
      };
    }
  });

  // node_modules/core-js/internals/copy-constructor-properties.js
  var require_copy_constructor_properties = __commonJS({
    "node_modules/core-js/internals/copy-constructor-properties.js": function(exports, module) {
      var has5 = require_has();
      var ownKeys = require_own_keys();
      var getOwnPropertyDescriptorModule3 = require_object_get_own_property_descriptor();
      var definePropertyModule2 = require_object_define_property();
      module.exports = function(target, source) {
        var keys2 = ownKeys(source);
        var defineProperty5 = definePropertyModule2.f;
        var getOwnPropertyDescriptor4 = getOwnPropertyDescriptorModule3.f;
        for (var i = 0; i < keys2.length; i++) {
          var key = keys2[i];
          if (!has5(target, key))
            defineProperty5(target, key, getOwnPropertyDescriptor4(source, key));
        }
      };
    }
  });

  // node_modules/core-js/internals/is-forced.js
  var require_is_forced = __commonJS({
    "node_modules/core-js/internals/is-forced.js": function(exports, module) {
      var fails11 = require_fails();
      var replacement = /#|\.prototype\./;
      var isForced2 = function(feature, detection) {
        var value = data[normalize(feature)];
        return value == POLYFILL ? true : value == NATIVE ? false : typeof detection == "function" ? fails11(detection) : !!detection;
      };
      var normalize = isForced2.normalize = function(string) {
        return String(string).replace(replacement, ".").toLowerCase();
      };
      var data = isForced2.data = {};
      var NATIVE = isForced2.NATIVE = "N";
      var POLYFILL = isForced2.POLYFILL = "P";
      module.exports = isForced2;
    }
  });

  // node_modules/core-js/internals/export.js
  var require_export = __commonJS({
    "node_modules/core-js/internals/export.js": function(exports, module) {
      var global8 = require_global();
      var getOwnPropertyDescriptor4 = require_object_get_own_property_descriptor().f;
      var createNonEnumerableProperty4 = require_create_non_enumerable_property();
      var redefine5 = require_redefine();
      var setGlobal = require_set_global();
      var copyConstructorProperties2 = require_copy_constructor_properties();
      var isForced2 = require_is_forced();
      module.exports = function(options, source) {
        var TARGET = options.target;
        var GLOBAL = options.global;
        var STATIC = options.stat;
        var FORCED5, target, key, targetProperty, sourceProperty, descriptor;
        if (GLOBAL) {
          target = global8;
        } else if (STATIC) {
          target = global8[TARGET] || setGlobal(TARGET, {});
        } else {
          target = (global8[TARGET] || {}).prototype;
        }
        if (target)
          for (key in source) {
            sourceProperty = source[key];
            if (options.noTargetGet) {
              descriptor = getOwnPropertyDescriptor4(target, key);
              targetProperty = descriptor && descriptor.value;
            } else
              targetProperty = target[key];
            FORCED5 = isForced2(GLOBAL ? key : TARGET + (STATIC ? "." : "#") + key, options.forced);
            if (!FORCED5 && targetProperty !== void 0) {
              if (typeof sourceProperty === typeof targetProperty)
                continue;
              copyConstructorProperties2(sourceProperty, targetProperty);
            }
            if (options.sham || targetProperty && targetProperty.sham) {
              createNonEnumerableProperty4(sourceProperty, "sham", true);
            }
            redefine5(target, key, sourceProperty, options);
          }
      };
    }
  });

  // node_modules/core-js/internals/array-method-is-strict.js
  var require_array_method_is_strict = __commonJS({
    "node_modules/core-js/internals/array-method-is-strict.js": function(exports, module) {
      "use strict";
      var fails11 = require_fails();
      module.exports = function(METHOD_NAME, argument) {
        var method = [][METHOD_NAME];
        return !!method && fails11(function() {
          method.call(null, argument || function() {
            throw 1;
          }, 1);
        });
      };
    }
  });

  // node_modules/core-js/internals/whitespaces.js
  var require_whitespaces = __commonJS({
    "node_modules/core-js/internals/whitespaces.js": function(exports, module) {
      module.exports = "	\n\v\f\r \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF";
    }
  });

  // node_modules/core-js/internals/string-trim.js
  var require_string_trim = __commonJS({
    "node_modules/core-js/internals/string-trim.js": function(exports, module) {
      var requireObjectCoercible5 = require_require_object_coercible();
      var whitespaces = require_whitespaces();
      var whitespace = "[" + whitespaces + "]";
      var ltrim = RegExp("^" + whitespace + whitespace + "*");
      var rtrim = RegExp(whitespace + whitespace + "*$");
      var createMethod = function(TYPE) {
        return function($this) {
          var string = String(requireObjectCoercible5($this));
          if (TYPE & 1)
            string = string.replace(ltrim, "");
          if (TYPE & 2)
            string = string.replace(rtrim, "");
          return string;
        };
      };
      module.exports = {
        start: createMethod(1),
        end: createMethod(2),
        trim: createMethod(3)
      };
    }
  });

  // node_modules/core-js/internals/number-parse-int.js
  var require_number_parse_int = __commonJS({
    "node_modules/core-js/internals/number-parse-int.js": function(exports, module) {
      var global8 = require_global();
      var trim3 = require_string_trim().trim;
      var whitespaces = require_whitespaces();
      var $parseInt = global8.parseInt;
      var hex = /^[+-]?0[Xx]/;
      var FORCED5 = $parseInt(whitespaces + "08") !== 8 || $parseInt(whitespaces + "0x16") !== 22;
      module.exports = FORCED5 ? function parseInt2(string, radix) {
        var S = trim3(String(string));
        return $parseInt(S, radix >>> 0 || (hex.test(S) ? 16 : 10));
      } : $parseInt;
    }
  });

  // node_modules/core-js/internals/regexp-flags.js
  var require_regexp_flags = __commonJS({
    "node_modules/core-js/internals/regexp-flags.js": function(exports, module) {
      "use strict";
      var anObject10 = require_an_object();
      module.exports = function() {
        var that = anObject10(this);
        var result = "";
        if (that.global)
          result += "g";
        if (that.ignoreCase)
          result += "i";
        if (that.multiline)
          result += "m";
        if (that.dotAll)
          result += "s";
        if (that.unicode)
          result += "u";
        if (that.sticky)
          result += "y";
        return result;
      };
    }
  });

  // node_modules/core-js/internals/regexp-sticky-helpers.js
  var require_regexp_sticky_helpers = __commonJS({
    "node_modules/core-js/internals/regexp-sticky-helpers.js": function(exports) {
      "use strict";
      var fails11 = require_fails();
      function RE(s, f) {
        return RegExp(s, f);
      }
      exports.UNSUPPORTED_Y = fails11(function() {
        var re = RE("a", "y");
        re.lastIndex = 2;
        return re.exec("abcd") != null;
      });
      exports.BROKEN_CARET = fails11(function() {
        var re = RE("^r", "gy");
        re.lastIndex = 2;
        return re.exec("str") != null;
      });
    }
  });

  // node_modules/core-js/internals/regexp-exec.js
  var require_regexp_exec = __commonJS({
    "node_modules/core-js/internals/regexp-exec.js": function(exports, module) {
      "use strict";
      var regexpFlags = require_regexp_flags();
      var stickyHelpers2 = require_regexp_sticky_helpers();
      var shared2 = require_shared();
      var nativeExec = RegExp.prototype.exec;
      var nativeReplace = shared2("native-string-replace", String.prototype.replace);
      var patchedExec = nativeExec;
      var UPDATES_LAST_INDEX_WRONG = function() {
        var re1 = /a/;
        var re2 = /b*/g;
        nativeExec.call(re1, "a");
        nativeExec.call(re2, "a");
        return re1.lastIndex !== 0 || re2.lastIndex !== 0;
      }();
      var UNSUPPORTED_Y2 = stickyHelpers2.UNSUPPORTED_Y || stickyHelpers2.BROKEN_CARET;
      var NPCG_INCLUDED = /()??/.exec("")[1] !== void 0;
      var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y2;
      if (PATCH) {
        patchedExec = function exec(str) {
          var re = this;
          var lastIndex, reCopy, match, i;
          var sticky = UNSUPPORTED_Y2 && re.sticky;
          var flags2 = regexpFlags.call(re);
          var source = re.source;
          var charsAdded = 0;
          var strCopy = str;
          if (sticky) {
            flags2 = flags2.replace("y", "");
            if (flags2.indexOf("g") === -1) {
              flags2 += "g";
            }
            strCopy = String(str).slice(re.lastIndex);
            if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== "\n")) {
              source = "(?: " + source + ")";
              strCopy = " " + strCopy;
              charsAdded++;
            }
            reCopy = new RegExp("^(?:" + source + ")", flags2);
          }
          if (NPCG_INCLUDED) {
            reCopy = new RegExp("^" + source + "$(?!\\s)", flags2);
          }
          if (UPDATES_LAST_INDEX_WRONG)
            lastIndex = re.lastIndex;
          match = nativeExec.call(sticky ? reCopy : re, strCopy);
          if (sticky) {
            if (match) {
              match.input = match.input.slice(charsAdded);
              match[0] = match[0].slice(charsAdded);
              match.index = re.lastIndex;
              re.lastIndex += match[0].length;
            } else
              re.lastIndex = 0;
          } else if (UPDATES_LAST_INDEX_WRONG && match) {
            re.lastIndex = re.global ? match.index + match[0].length : lastIndex;
          }
          if (NPCG_INCLUDED && match && match.length > 1) {
            nativeReplace.call(match[0], reCopy, function() {
              for (i = 1; i < arguments.length - 2; i++) {
                if (arguments[i] === void 0)
                  match[i] = void 0;
              }
            });
          }
          return match;
        };
      }
      module.exports = patchedExec;
    }
  });

  // node_modules/core-js/modules/es.regexp.exec.js
  var require_es_regexp_exec = __commonJS({
    "node_modules/core-js/modules/es.regexp.exec.js": function() {
      "use strict";
      var $72 = require_export();
      var exec = require_regexp_exec();
      $72({ target: "RegExp", proto: true, forced: /./.exec !== exec }, {
        exec: exec
      });
    }
  });

  // node_modules/core-js/internals/engine-user-agent.js
  var require_engine_user_agent = __commonJS({
    "node_modules/core-js/internals/engine-user-agent.js": function(exports, module) {
      var getBuiltIn3 = require_get_built_in();
      module.exports = getBuiltIn3("navigator", "userAgent") || "";
    }
  });

  // node_modules/core-js/internals/engine-v8-version.js
  var require_engine_v8_version = __commonJS({
    "node_modules/core-js/internals/engine-v8-version.js": function(exports, module) {
      var global8 = require_global();
      var userAgent2 = require_engine_user_agent();
      var process2 = global8.process;
      var versions = process2 && process2.versions;
      var v8 = versions && versions.v8;
      var match;
      var version;
      if (v8) {
        match = v8.split(".");
        version = match[0] < 4 ? 1 : match[0] + match[1];
      } else if (userAgent2) {
        match = userAgent2.match(/Edge\/(\d+)/);
        if (!match || match[1] >= 74) {
          match = userAgent2.match(/Chrome\/(\d+)/);
          if (match)
            version = match[1];
        }
      }
      module.exports = version && +version;
    }
  });

  // node_modules/core-js/internals/native-symbol.js
  var require_native_symbol = __commonJS({
    "node_modules/core-js/internals/native-symbol.js": function(exports, module) {
      var V8_VERSION2 = require_engine_v8_version();
      var fails11 = require_fails();
      module.exports = !!Object.getOwnPropertySymbols && !fails11(function() {
        var symbol = Symbol();
        return !String(symbol) || !(Object(symbol) instanceof Symbol) || !Symbol.sham && V8_VERSION2 && V8_VERSION2 < 41;
      });
    }
  });

  // node_modules/core-js/internals/use-symbol-as-uid.js
  var require_use_symbol_as_uid = __commonJS({
    "node_modules/core-js/internals/use-symbol-as-uid.js": function(exports, module) {
      var NATIVE_SYMBOL2 = require_native_symbol();
      module.exports = NATIVE_SYMBOL2 && !Symbol.sham && typeof Symbol.iterator == "symbol";
    }
  });

  // node_modules/core-js/internals/well-known-symbol.js
  var require_well_known_symbol = __commonJS({
    "node_modules/core-js/internals/well-known-symbol.js": function(exports, module) {
      var global8 = require_global();
      var shared2 = require_shared();
      var has5 = require_has();
      var uid2 = require_uid();
      var NATIVE_SYMBOL2 = require_native_symbol();
      var USE_SYMBOL_AS_UID2 = require_use_symbol_as_uid();
      var WellKnownSymbolsStore2 = shared2("wks");
      var Symbol2 = global8.Symbol;
      var createWellKnownSymbol = USE_SYMBOL_AS_UID2 ? Symbol2 : Symbol2 && Symbol2.withoutSetter || uid2;
      module.exports = function(name) {
        if (!has5(WellKnownSymbolsStore2, name) || !(NATIVE_SYMBOL2 || typeof WellKnownSymbolsStore2[name] == "string")) {
          if (NATIVE_SYMBOL2 && has5(Symbol2, name)) {
            WellKnownSymbolsStore2[name] = Symbol2[name];
          } else {
            WellKnownSymbolsStore2[name] = createWellKnownSymbol("Symbol." + name);
          }
        }
        return WellKnownSymbolsStore2[name];
      };
    }
  });

  // node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js
  var require_fix_regexp_well_known_symbol_logic = __commonJS({
    "node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js": function(exports, module) {
      "use strict";
      require_es_regexp_exec();
      var redefine5 = require_redefine();
      var regexpExec2 = require_regexp_exec();
      var fails11 = require_fails();
      var wellKnownSymbol5 = require_well_known_symbol();
      var createNonEnumerableProperty4 = require_create_non_enumerable_property();
      var SPECIES2 = wellKnownSymbol5("species");
      var RegExpPrototype2 = RegExp.prototype;
      var REPLACE_SUPPORTS_NAMED_GROUPS = !fails11(function() {
        var re = /./;
        re.exec = function() {
          var result = [];
          result.groups = { a: "7" };
          return result;
        };
        return "".replace(re, "$<a>") !== "7";
      });
      var REPLACE_KEEPS_$0 = function() {
        return "a".replace(/./, "$0") === "$0";
      }();
      var REPLACE = wellKnownSymbol5("replace");
      var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = function() {
        if (/./[REPLACE]) {
          return /./[REPLACE]("a", "$0") === "";
        }
        return false;
      }();
      var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails11(function() {
        var re = /(?:)/;
        var originalExec = re.exec;
        re.exec = function() {
          return originalExec.apply(this, arguments);
        };
        var result = "ab".split(re);
        return result.length !== 2 || result[0] !== "a" || result[1] !== "b";
      });
      module.exports = function(KEY, length, exec, sham) {
        var SYMBOL2 = wellKnownSymbol5(KEY);
        var DELEGATES_TO_SYMBOL = !fails11(function() {
          var O = {};
          O[SYMBOL2] = function() {
            return 7;
          };
          return ""[KEY](O) != 7;
        });
        var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails11(function() {
          var execCalled = false;
          var re = /a/;
          if (KEY === "split") {
            re = {};
            re.constructor = {};
            re.constructor[SPECIES2] = function() {
              return re;
            };
            re.flags = "";
            re[SYMBOL2] = /./[SYMBOL2];
          }
          re.exec = function() {
            execCalled = true;
            return null;
          };
          re[SYMBOL2]("");
          return !execCalled;
        });
        if (!DELEGATES_TO_SYMBOL || !DELEGATES_TO_EXEC || KEY === "replace" && !(REPLACE_SUPPORTS_NAMED_GROUPS && REPLACE_KEEPS_$0 && !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE) || KEY === "split" && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC) {
          var nativeRegExpMethod = /./[SYMBOL2];
          var methods = exec(SYMBOL2, ""[KEY], function(nativeMethod, regexp, str, arg2, forceStringMethod) {
            var $exec = regexp.exec;
            if ($exec === regexpExec2 || $exec === RegExpPrototype2.exec) {
              if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
                return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };
              }
              return { done: true, value: nativeMethod.call(str, regexp, arg2) };
            }
            return { done: false };
          }, {
            REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,
            REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE
          });
          var stringMethod = methods[0];
          var regexMethod = methods[1];
          redefine5(String.prototype, KEY, stringMethod);
          redefine5(RegExpPrototype2, SYMBOL2, length == 2 ? function(string, arg) {
            return regexMethod.call(string, this, arg);
          } : function(string) {
            return regexMethod.call(string, this);
          });
        }
        if (sham)
          createNonEnumerableProperty4(RegExpPrototype2[SYMBOL2], "sham", true);
      };
    }
  });

  // node_modules/core-js/internals/string-multibyte.js
  var require_string_multibyte = __commonJS({
    "node_modules/core-js/internals/string-multibyte.js": function(exports, module) {
      var toInteger3 = require_to_integer();
      var requireObjectCoercible5 = require_require_object_coercible();
      var createMethod = function(CONVERT_TO_STRING) {
        return function($this, pos) {
          var S = String(requireObjectCoercible5($this));
          var position = toInteger3(pos);
          var size = S.length;
          var first, second;
          if (position < 0 || position >= size)
            return CONVERT_TO_STRING ? "" : void 0;
          first = S.charCodeAt(position);
          return first < 55296 || first > 56319 || position + 1 === size || (second = S.charCodeAt(position + 1)) < 56320 || second > 57343 ? CONVERT_TO_STRING ? S.charAt(position) : first : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 55296 << 10) + (second - 56320) + 65536;
        };
      };
      module.exports = {
        codeAt: createMethod(false),
        charAt: createMethod(true)
      };
    }
  });

  // node_modules/core-js/internals/advance-string-index.js
  var require_advance_string_index = __commonJS({
    "node_modules/core-js/internals/advance-string-index.js": function(exports, module) {
      "use strict";
      var charAt2 = require_string_multibyte().charAt;
      module.exports = function(S, index, unicode) {
        return index + (unicode ? charAt2(S, index).length : 1);
      };
    }
  });

  // node_modules/core-js/internals/get-substitution.js
  var require_get_substitution = __commonJS({
    "node_modules/core-js/internals/get-substitution.js": function(exports, module) {
      var toObject6 = require_to_object();
      var floor = Math.floor;
      var replace = "".replace;
      var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d{1,2}|<[^>]*>)/g;
      var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d{1,2})/g;
      module.exports = function(matched, str, position, captures, namedCaptures, replacement) {
        var tailPos = position + matched.length;
        var m = captures.length;
        var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
        if (namedCaptures !== void 0) {
          namedCaptures = toObject6(namedCaptures);
          symbols = SUBSTITUTION_SYMBOLS;
        }
        return replace.call(replacement, symbols, function(match, ch) {
          var capture;
          switch (ch.charAt(0)) {
            case "$":
              return "$";
            case "&":
              return matched;
            case "`":
              return str.slice(0, position);
            case "'":
              return str.slice(tailPos);
            case "<":
              capture = namedCaptures[ch.slice(1, -1)];
              break;
            default:
              var n = +ch;
              if (n === 0)
                return match;
              if (n > m) {
                var f = floor(n / 10);
                if (f === 0)
                  return match;
                if (f <= m)
                  return captures[f - 1] === void 0 ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);
                return match;
              }
              capture = captures[n - 1];
          }
          return capture === void 0 ? "" : capture;
        });
      };
    }
  });

  // node_modules/core-js/internals/regexp-exec-abstract.js
  var require_regexp_exec_abstract = __commonJS({
    "node_modules/core-js/internals/regexp-exec-abstract.js": function(exports, module) {
      var classof2 = require_classof_raw();
      var regexpExec2 = require_regexp_exec();
      module.exports = function(R, S) {
        var exec = R.exec;
        if (typeof exec === "function") {
          var result = exec.call(R, S);
          if (typeof result !== "object") {
            throw TypeError("RegExp exec method returned something other than an Object or null");
          }
          return result;
        }
        if (classof2(R) !== "RegExp") {
          throw TypeError("RegExp#exec called on incompatible receiver");
        }
        return regexpExec2.call(R, S);
      };
    }
  });

  // node_modules/core-js/internals/to-string-tag-support.js
  var require_to_string_tag_support = __commonJS({
    "node_modules/core-js/internals/to-string-tag-support.js": function(exports, module) {
      var wellKnownSymbol5 = require_well_known_symbol();
      var TO_STRING_TAG2 = wellKnownSymbol5("toStringTag");
      var test = {};
      test[TO_STRING_TAG2] = "z";
      module.exports = String(test) === "[object z]";
    }
  });

  // node_modules/core-js/internals/classof.js
  var require_classof = __commonJS({
    "node_modules/core-js/internals/classof.js": function(exports, module) {
      var TO_STRING_TAG_SUPPORT2 = require_to_string_tag_support();
      var classofRaw = require_classof_raw();
      var wellKnownSymbol5 = require_well_known_symbol();
      var TO_STRING_TAG2 = wellKnownSymbol5("toStringTag");
      var CORRECT_ARGUMENTS = classofRaw(function() {
        return arguments;
      }()) == "Arguments";
      var tryGet = function(it, key) {
        try {
          return it[key];
        } catch (error) {
        }
      };
      module.exports = TO_STRING_TAG_SUPPORT2 ? classofRaw : function(it) {
        var O, tag, result;
        return it === void 0 ? "Undefined" : it === null ? "Null" : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG2)) == "string" ? tag : CORRECT_ARGUMENTS ? classofRaw(O) : (result = classofRaw(O)) == "Object" && typeof O.callee == "function" ? "Arguments" : result;
      };
    }
  });

  // node_modules/core-js/internals/object-to-string.js
  var require_object_to_string = __commonJS({
    "node_modules/core-js/internals/object-to-string.js": function(exports, module) {
      "use strict";
      var TO_STRING_TAG_SUPPORT2 = require_to_string_tag_support();
      var classof2 = require_classof();
      module.exports = TO_STRING_TAG_SUPPORT2 ? {}.toString : function toString2() {
        return "[object " + classof2(this) + "]";
      };
    }
  });

  // node_modules/core-js/internals/number-parse-float.js
  var require_number_parse_float = __commonJS({
    "node_modules/core-js/internals/number-parse-float.js": function(exports, module) {
      var global8 = require_global();
      var trim3 = require_string_trim().trim;
      var whitespaces = require_whitespaces();
      var $parseFloat = global8.parseFloat;
      var FORCED5 = 1 / $parseFloat(whitespaces + "-0") !== -Infinity;
      module.exports = FORCED5 ? function parseFloat2(string) {
        var trimmedString = trim3(String(string));
        var result = $parseFloat(trimmedString);
        return result === 0 && trimmedString.charAt(0) == "-" ? -0 : result;
      } : $parseFloat;
    }
  });

  // node_modules/core-js/internals/this-number-value.js
  var require_this_number_value = __commonJS({
    "node_modules/core-js/internals/this-number-value.js": function(exports, module) {
      var classof2 = require_classof_raw();
      module.exports = function(value) {
        if (typeof value != "number" && classof2(value) != "Number") {
          throw TypeError("Incorrect invocation");
        }
        return +value;
      };
    }
  });

  // node_modules/core-js/internals/is-array.js
  var require_is_array = __commonJS({
    "node_modules/core-js/internals/is-array.js": function(exports, module) {
      var classof2 = require_classof_raw();
      module.exports = Array.isArray || function isArray4(arg) {
        return classof2(arg) == "Array";
      };
    }
  });

  // node_modules/core-js/internals/create-property.js
  var require_create_property = __commonJS({
    "node_modules/core-js/internals/create-property.js": function(exports, module) {
      "use strict";
      var toPrimitive3 = require_to_primitive();
      var definePropertyModule2 = require_object_define_property();
      var createPropertyDescriptor2 = require_create_property_descriptor();
      module.exports = function(object, key, value) {
        var propertyKey = toPrimitive3(key);
        if (propertyKey in object)
          definePropertyModule2.f(object, propertyKey, createPropertyDescriptor2(0, value));
        else
          object[propertyKey] = value;
      };
    }
  });

  // node_modules/core-js/internals/array-species-create.js
  var require_array_species_create = __commonJS({
    "node_modules/core-js/internals/array-species-create.js": function(exports, module) {
      var isObject7 = require_is_object();
      var isArray4 = require_is_array();
      var wellKnownSymbol5 = require_well_known_symbol();
      var SPECIES2 = wellKnownSymbol5("species");
      module.exports = function(originalArray, length) {
        var C;
        if (isArray4(originalArray)) {
          C = originalArray.constructor;
          if (typeof C == "function" && (C === Array || isArray4(C.prototype)))
            C = void 0;
          else if (isObject7(C)) {
            C = C[SPECIES2];
            if (C === null)
              C = void 0;
          }
        }
        return new (C === void 0 ? Array : C)(length === 0 ? 0 : length);
      };
    }
  });

  // node_modules/core-js/internals/array-method-has-species-support.js
  var require_array_method_has_species_support = __commonJS({
    "node_modules/core-js/internals/array-method-has-species-support.js": function(exports, module) {
      var fails11 = require_fails();
      var wellKnownSymbol5 = require_well_known_symbol();
      var V8_VERSION2 = require_engine_v8_version();
      var SPECIES2 = wellKnownSymbol5("species");
      module.exports = function(METHOD_NAME) {
        return V8_VERSION2 >= 51 || !fails11(function() {
          var array = [];
          var constructor = array.constructor = {};
          constructor[SPECIES2] = function() {
            return { foo: 1 };
          };
          return array[METHOD_NAME](Boolean).foo !== 1;
        });
      };
    }
  });

  // node_modules/core-js/internals/object-keys.js
  var require_object_keys = __commonJS({
    "node_modules/core-js/internals/object-keys.js": function(exports, module) {
      var internalObjectKeys = require_object_keys_internal();
      var enumBugKeys = require_enum_bug_keys();
      module.exports = Object.keys || function keys2(O) {
        return internalObjectKeys(O, enumBugKeys);
      };
    }
  });

  // node_modules/core-js/internals/is-regexp.js
  var require_is_regexp = __commonJS({
    "node_modules/core-js/internals/is-regexp.js": function(exports, module) {
      var isObject7 = require_is_object();
      var classof2 = require_classof_raw();
      var wellKnownSymbol5 = require_well_known_symbol();
      var MATCH = wellKnownSymbol5("match");
      module.exports = function(it) {
        var isRegExp2;
        return isObject7(it) && ((isRegExp2 = it[MATCH]) !== void 0 ? !!isRegExp2 : classof2(it) == "RegExp");
      };
    }
  });

  // node_modules/core-js/internals/a-function.js
  var require_a_function = __commonJS({
    "node_modules/core-js/internals/a-function.js": function(exports, module) {
      module.exports = function(it) {
        if (typeof it != "function") {
          throw TypeError(String(it) + " is not a function");
        }
        return it;
      };
    }
  });

  // node_modules/core-js/internals/species-constructor.js
  var require_species_constructor = __commonJS({
    "node_modules/core-js/internals/species-constructor.js": function(exports, module) {
      var anObject10 = require_an_object();
      var aFunction2 = require_a_function();
      var wellKnownSymbol5 = require_well_known_symbol();
      var SPECIES2 = wellKnownSymbol5("species");
      module.exports = function(O, defaultConstructor) {
        var C = anObject10(O).constructor;
        var S;
        return C === void 0 || (S = anObject10(C)[SPECIES2]) == void 0 ? defaultConstructor : aFunction2(S);
      };
    }
  });

  // node_modules/core-js/internals/function-bind-context.js
  var require_function_bind_context = __commonJS({
    "node_modules/core-js/internals/function-bind-context.js": function(exports, module) {
      var aFunction2 = require_a_function();
      module.exports = function(fn, that, length) {
        aFunction2(fn);
        if (that === void 0)
          return fn;
        switch (length) {
          case 0:
            return function() {
              return fn.call(that);
            };
          case 1:
            return function(a) {
              return fn.call(that, a);
            };
          case 2:
            return function(a, b) {
              return fn.call(that, a, b);
            };
          case 3:
            return function(a, b, c) {
              return fn.call(that, a, b, c);
            };
        }
        return function() {
          return fn.apply(that, arguments);
        };
      };
    }
  });

  // node_modules/core-js/internals/array-iteration.js
  var require_array_iteration = __commonJS({
    "node_modules/core-js/internals/array-iteration.js": function(exports, module) {
      var bind2 = require_function_bind_context();
      var IndexedObject2 = require_indexed_object();
      var toObject6 = require_to_object();
      var toLength8 = require_to_length();
      var arraySpeciesCreate3 = require_array_species_create();
      var push = [].push;
      var createMethod = function(TYPE) {
        var IS_MAP = TYPE == 1;
        var IS_FILTER = TYPE == 2;
        var IS_SOME = TYPE == 3;
        var IS_EVERY = TYPE == 4;
        var IS_FIND_INDEX = TYPE == 6;
        var IS_FILTER_OUT = TYPE == 7;
        var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
        return function($this, callbackfn, that, specificCreate) {
          var O = toObject6($this);
          var self2 = IndexedObject2(O);
          var boundFunction = bind2(callbackfn, that, 3);
          var length = toLength8(self2.length);
          var index = 0;
          var create5 = specificCreate || arraySpeciesCreate3;
          var target = IS_MAP ? create5($this, length) : IS_FILTER || IS_FILTER_OUT ? create5($this, 0) : void 0;
          var value, result;
          for (; length > index; index++)
            if (NO_HOLES || index in self2) {
              value = self2[index];
              result = boundFunction(value, index, O);
              if (TYPE) {
                if (IS_MAP)
                  target[index] = result;
                else if (result)
                  switch (TYPE) {
                    case 3:
                      return true;
                    case 5:
                      return value;
                    case 6:
                      return index;
                    case 2:
                      push.call(target, value);
                  }
                else
                  switch (TYPE) {
                    case 4:
                      return false;
                    case 7:
                      push.call(target, value);
                  }
              }
            }
          return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;
        };
      };
      module.exports = {
        forEach: createMethod(0),
        map: createMethod(1),
        filter: createMethod(2),
        some: createMethod(3),
        every: createMethod(4),
        find: createMethod(5),
        findIndex: createMethod(6),
        filterOut: createMethod(7)
      };
    }
  });

  // node_modules/core-js/internals/object-define-properties.js
  var require_object_define_properties = __commonJS({
    "node_modules/core-js/internals/object-define-properties.js": function(exports, module) {
      var DESCRIPTORS6 = require_descriptors();
      var definePropertyModule2 = require_object_define_property();
      var anObject10 = require_an_object();
      var objectKeys2 = require_object_keys();
      module.exports = DESCRIPTORS6 ? Object.defineProperties : function defineProperties2(O, Properties) {
        anObject10(O);
        var keys2 = objectKeys2(Properties);
        var length = keys2.length;
        var index = 0;
        var key;
        while (length > index)
          definePropertyModule2.f(O, key = keys2[index++], Properties[key]);
        return O;
      };
    }
  });

  // node_modules/core-js/internals/html.js
  var require_html = __commonJS({
    "node_modules/core-js/internals/html.js": function(exports, module) {
      var getBuiltIn3 = require_get_built_in();
      module.exports = getBuiltIn3("document", "documentElement");
    }
  });

  // node_modules/core-js/internals/object-create.js
  var require_object_create = __commonJS({
    "node_modules/core-js/internals/object-create.js": function(exports, module) {
      var anObject10 = require_an_object();
      var defineProperties2 = require_object_define_properties();
      var enumBugKeys = require_enum_bug_keys();
      var hiddenKeys2 = require_hidden_keys();
      var html = require_html();
      var documentCreateElement = require_document_create_element();
      var sharedKey2 = require_shared_key();
      var GT = ">";
      var LT = "<";
      var PROTOTYPE2 = "prototype";
      var SCRIPT = "script";
      var IE_PROTO = sharedKey2("IE_PROTO");
      var EmptyConstructor = function() {
      };
      var scriptTag = function(content) {
        return LT + SCRIPT + GT + content + LT + "/" + SCRIPT + GT;
      };
      var NullProtoObjectViaActiveX = function(activeXDocument2) {
        activeXDocument2.write(scriptTag(""));
        activeXDocument2.close();
        var temp = activeXDocument2.parentWindow.Object;
        activeXDocument2 = null;
        return temp;
      };
      var NullProtoObjectViaIFrame = function() {
        var iframe = documentCreateElement("iframe");
        var JS = "java" + SCRIPT + ":";
        var iframeDocument;
        iframe.style.display = "none";
        html.appendChild(iframe);
        iframe.src = String(JS);
        iframeDocument = iframe.contentWindow.document;
        iframeDocument.open();
        iframeDocument.write(scriptTag("document.F=Object"));
        iframeDocument.close();
        return iframeDocument.F;
      };
      var activeXDocument;
      var NullProtoObject = function() {
        try {
          activeXDocument = document.domain && new ActiveXObject("htmlfile");
        } catch (error) {
        }
        NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();
        var length = enumBugKeys.length;
        while (length--)
          delete NullProtoObject[PROTOTYPE2][enumBugKeys[length]];
        return NullProtoObject();
      };
      hiddenKeys2[IE_PROTO] = true;
      module.exports = Object.create || function create5(O, Properties) {
        var result;
        if (O !== null) {
          EmptyConstructor[PROTOTYPE2] = anObject10(O);
          result = new EmptyConstructor();
          EmptyConstructor[PROTOTYPE2] = null;
          result[IE_PROTO] = O;
        } else
          result = NullProtoObject();
        return Properties === void 0 ? result : defineProperties2(result, Properties);
      };
    }
  });

  // node_modules/core-js/internals/add-to-unscopables.js
  var require_add_to_unscopables = __commonJS({
    "node_modules/core-js/internals/add-to-unscopables.js": function(exports, module) {
      var wellKnownSymbol5 = require_well_known_symbol();
      var create5 = require_object_create();
      var definePropertyModule2 = require_object_define_property();
      var UNSCOPABLES = wellKnownSymbol5("unscopables");
      var ArrayPrototype = Array.prototype;
      if (ArrayPrototype[UNSCOPABLES] == void 0) {
        definePropertyModule2.f(ArrayPrototype, UNSCOPABLES, {
          configurable: true,
          value: create5(null)
        });
      }
      module.exports = function(key) {
        ArrayPrototype[UNSCOPABLES][key] = true;
      };
    }
  });

  // node_modules/core-js/internals/a-possible-prototype.js
  var require_a_possible_prototype = __commonJS({
    "node_modules/core-js/internals/a-possible-prototype.js": function(exports, module) {
      var isObject7 = require_is_object();
      module.exports = function(it) {
        if (!isObject7(it) && it !== null) {
          throw TypeError("Can't set " + String(it) + " as a prototype");
        }
        return it;
      };
    }
  });

  // node_modules/core-js/internals/object-set-prototype-of.js
  var require_object_set_prototype_of = __commonJS({
    "node_modules/core-js/internals/object-set-prototype-of.js": function(exports, module) {
      var anObject10 = require_an_object();
      var aPossiblePrototype = require_a_possible_prototype();
      module.exports = Object.setPrototypeOf || ("__proto__" in {} ? function() {
        var CORRECT_SETTER = false;
        var test = {};
        var setter;
        try {
          setter = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").set;
          setter.call(test, []);
          CORRECT_SETTER = test instanceof Array;
        } catch (error) {
        }
        return function setPrototypeOf2(O, proto) {
          anObject10(O);
          aPossiblePrototype(proto);
          if (CORRECT_SETTER)
            setter.call(O, proto);
          else
            O.__proto__ = proto;
          return O;
        };
      }() : void 0);
    }
  });

  // node_modules/core-js/internals/correct-prototype-getter.js
  var require_correct_prototype_getter = __commonJS({
    "node_modules/core-js/internals/correct-prototype-getter.js": function(exports, module) {
      var fails11 = require_fails();
      module.exports = !fails11(function() {
        function F() {
        }
        F.prototype.constructor = null;
        return Object.getPrototypeOf(new F()) !== F.prototype;
      });
    }
  });

  // node_modules/core-js/internals/object-get-prototype-of.js
  var require_object_get_prototype_of = __commonJS({
    "node_modules/core-js/internals/object-get-prototype-of.js": function(exports, module) {
      var has5 = require_has();
      var toObject6 = require_to_object();
      var sharedKey2 = require_shared_key();
      var CORRECT_PROTOTYPE_GETTER2 = require_correct_prototype_getter();
      var IE_PROTO = sharedKey2("IE_PROTO");
      var ObjectPrototype2 = Object.prototype;
      module.exports = CORRECT_PROTOTYPE_GETTER2 ? Object.getPrototypeOf : function(O) {
        O = toObject6(O);
        if (has5(O, IE_PROTO))
          return O[IE_PROTO];
        if (typeof O.constructor == "function" && O instanceof O.constructor) {
          return O.constructor.prototype;
        }
        return O instanceof Object ? ObjectPrototype2 : null;
      };
    }
  });

  // node_modules/core-js/internals/function-bind.js
  var require_function_bind = __commonJS({
    "node_modules/core-js/internals/function-bind.js": function(exports, module) {
      "use strict";
      var aFunction2 = require_a_function();
      var isObject7 = require_is_object();
      var slice3 = [].slice;
      var factories = {};
      var construct2 = function(C, argsLength, args) {
        if (!(argsLength in factories)) {
          for (var list = [], i = 0; i < argsLength; i++)
            list[i] = "a[" + i + "]";
          factories[argsLength] = Function("C,a", "return new C(" + list.join(",") + ")");
        }
        return factories[argsLength](C, args);
      };
      module.exports = Function.bind || function bind2(that) {
        var fn = aFunction2(this);
        var partArgs = slice3.call(arguments, 1);
        var boundFunction = function bound() {
          var args = partArgs.concat(slice3.call(arguments));
          return this instanceof boundFunction ? construct2(fn, args.length, args) : fn.apply(that, args);
        };
        if (isObject7(fn.prototype))
          boundFunction.prototype = fn.prototype;
        return boundFunction;
      };
    }
  });

  // node_modules/core-js/internals/object-get-own-property-names-external.js
  var require_object_get_own_property_names_external = __commonJS({
    "node_modules/core-js/internals/object-get-own-property-names-external.js": function(exports, module) {
      var toIndexedObject5 = require_to_indexed_object();
      var $getOwnPropertyNames2 = require_object_get_own_property_names().f;
      var toString2 = {}.toString;
      var windowNames = typeof window == "object" && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [];
      var getWindowNames = function(it) {
        try {
          return $getOwnPropertyNames2(it);
        } catch (error) {
          return windowNames.slice();
        }
      };
      module.exports.f = function getOwnPropertyNames3(it) {
        return windowNames && toString2.call(it) == "[object Window]" ? getWindowNames(it) : $getOwnPropertyNames2(toIndexedObject5(it));
      };
    }
  });

  // node_modules/core-js/internals/well-known-symbol-wrapped.js
  var require_well_known_symbol_wrapped = __commonJS({
    "node_modules/core-js/internals/well-known-symbol-wrapped.js": function(exports) {
      var wellKnownSymbol5 = require_well_known_symbol();
      exports.f = wellKnownSymbol5;
    }
  });

  // node_modules/core-js/internals/define-well-known-symbol.js
  var require_define_well_known_symbol = __commonJS({
    "node_modules/core-js/internals/define-well-known-symbol.js": function(exports, module) {
      var path = require_path();
      var has5 = require_has();
      var wrappedWellKnownSymbolModule2 = require_well_known_symbol_wrapped();
      var defineProperty5 = require_object_define_property().f;
      module.exports = function(NAME2) {
        var Symbol2 = path.Symbol || (path.Symbol = {});
        if (!has5(Symbol2, NAME2))
          defineProperty5(Symbol2, NAME2, {
            value: wrappedWellKnownSymbolModule2.f(NAME2)
          });
      };
    }
  });

  // node_modules/core-js/internals/set-to-string-tag.js
  var require_set_to_string_tag = __commonJS({
    "node_modules/core-js/internals/set-to-string-tag.js": function(exports, module) {
      var defineProperty5 = require_object_define_property().f;
      var has5 = require_has();
      var wellKnownSymbol5 = require_well_known_symbol();
      var TO_STRING_TAG2 = wellKnownSymbol5("toStringTag");
      module.exports = function(it, TAG, STATIC) {
        if (it && !has5(it = STATIC ? it : it.prototype, TO_STRING_TAG2)) {
          defineProperty5(it, TO_STRING_TAG2, { configurable: true, value: TAG });
        }
      };
    }
  });

  // node_modules/core-js/internals/iterators.js
  var require_iterators = __commonJS({
    "node_modules/core-js/internals/iterators.js": function(exports, module) {
      module.exports = {};
    }
  });

  // node_modules/core-js/internals/iterators-core.js
  var require_iterators_core = __commonJS({
    "node_modules/core-js/internals/iterators-core.js": function(exports, module) {
      "use strict";
      var fails11 = require_fails();
      var getPrototypeOf3 = require_object_get_prototype_of();
      var createNonEnumerableProperty4 = require_create_non_enumerable_property();
      var has5 = require_has();
      var wellKnownSymbol5 = require_well_known_symbol();
      var IS_PURE2 = require_is_pure();
      var ITERATOR2 = wellKnownSymbol5("iterator");
      var BUGGY_SAFARI_ITERATORS = false;
      var returnThis = function() {
        return this;
      };
      var IteratorPrototype;
      var PrototypeOfArrayIteratorPrototype;
      var arrayIterator;
      if ([].keys) {
        arrayIterator = [].keys();
        if (!("next" in arrayIterator))
          BUGGY_SAFARI_ITERATORS = true;
        else {
          PrototypeOfArrayIteratorPrototype = getPrototypeOf3(getPrototypeOf3(arrayIterator));
          if (PrototypeOfArrayIteratorPrototype !== Object.prototype)
            IteratorPrototype = PrototypeOfArrayIteratorPrototype;
        }
      }
      var NEW_ITERATOR_PROTOTYPE = IteratorPrototype == void 0 || fails11(function() {
        var test = {};
        return IteratorPrototype[ITERATOR2].call(test) !== test;
      });
      if (NEW_ITERATOR_PROTOTYPE)
        IteratorPrototype = {};
      if ((!IS_PURE2 || NEW_ITERATOR_PROTOTYPE) && !has5(IteratorPrototype, ITERATOR2)) {
        createNonEnumerableProperty4(IteratorPrototype, ITERATOR2, returnThis);
      }
      module.exports = {
        IteratorPrototype: IteratorPrototype,
        BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS
      };
    }
  });

  // node_modules/core-js/internals/create-iterator-constructor.js
  var require_create_iterator_constructor = __commonJS({
    "node_modules/core-js/internals/create-iterator-constructor.js": function(exports, module) {
      "use strict";
      var IteratorPrototype = require_iterators_core().IteratorPrototype;
      var create5 = require_object_create();
      var createPropertyDescriptor2 = require_create_property_descriptor();
      var setToStringTag2 = require_set_to_string_tag();
      var Iterators = require_iterators();
      var returnThis = function() {
        return this;
      };
      module.exports = function(IteratorConstructor, NAME2, next2) {
        var TO_STRING_TAG2 = NAME2 + " Iterator";
        IteratorConstructor.prototype = create5(IteratorPrototype, { next: createPropertyDescriptor2(1, next2) });
        setToStringTag2(IteratorConstructor, TO_STRING_TAG2, false, true);
        Iterators[TO_STRING_TAG2] = returnThis;
        return IteratorConstructor;
      };
    }
  });

  // node_modules/core-js/internals/define-iterator.js
  var require_define_iterator = __commonJS({
    "node_modules/core-js/internals/define-iterator.js": function(exports, module) {
      "use strict";
      var $72 = require_export();
      var createIteratorConstructor = require_create_iterator_constructor();
      var getPrototypeOf3 = require_object_get_prototype_of();
      var setPrototypeOf2 = require_object_set_prototype_of();
      var setToStringTag2 = require_set_to_string_tag();
      var createNonEnumerableProperty4 = require_create_non_enumerable_property();
      var redefine5 = require_redefine();
      var wellKnownSymbol5 = require_well_known_symbol();
      var IS_PURE2 = require_is_pure();
      var Iterators = require_iterators();
      var IteratorsCore = require_iterators_core();
      var IteratorPrototype = IteratorsCore.IteratorPrototype;
      var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;
      var ITERATOR2 = wellKnownSymbol5("iterator");
      var KEYS = "keys";
      var VALUES = "values";
      var ENTRIES = "entries";
      var returnThis = function() {
        return this;
      };
      module.exports = function(Iterable, NAME2, IteratorConstructor, next2, DEFAULT, IS_SET, FORCED5) {
        createIteratorConstructor(IteratorConstructor, NAME2, next2);
        var getIterationMethod = function(KIND) {
          if (KIND === DEFAULT && defaultIterator)
            return defaultIterator;
          if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype)
            return IterablePrototype[KIND];
          switch (KIND) {
            case KEYS:
              return function keys2() {
                return new IteratorConstructor(this, KIND);
              };
            case VALUES:
              return function values() {
                return new IteratorConstructor(this, KIND);
              };
            case ENTRIES:
              return function entries2() {
                return new IteratorConstructor(this, KIND);
              };
          }
          return function() {
            return new IteratorConstructor(this);
          };
        };
        var TO_STRING_TAG2 = NAME2 + " Iterator";
        var INCORRECT_VALUES_NAME = false;
        var IterablePrototype = Iterable.prototype;
        var nativeIterator = IterablePrototype[ITERATOR2] || IterablePrototype["@@iterator"] || DEFAULT && IterablePrototype[DEFAULT];
        var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);
        var anyNativeIterator = NAME2 == "Array" ? IterablePrototype.entries || nativeIterator : nativeIterator;
        var CurrentIteratorPrototype, methods, KEY;
        if (anyNativeIterator) {
          CurrentIteratorPrototype = getPrototypeOf3(anyNativeIterator.call(new Iterable()));
          if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {
            if (!IS_PURE2 && getPrototypeOf3(CurrentIteratorPrototype) !== IteratorPrototype) {
              if (setPrototypeOf2) {
                setPrototypeOf2(CurrentIteratorPrototype, IteratorPrototype);
              } else if (typeof CurrentIteratorPrototype[ITERATOR2] != "function") {
                createNonEnumerableProperty4(CurrentIteratorPrototype, ITERATOR2, returnThis);
              }
            }
            setToStringTag2(CurrentIteratorPrototype, TO_STRING_TAG2, true, true);
            if (IS_PURE2)
              Iterators[TO_STRING_TAG2] = returnThis;
          }
        }
        if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {
          INCORRECT_VALUES_NAME = true;
          defaultIterator = function values() {
            return nativeIterator.call(this);
          };
        }
        if ((!IS_PURE2 || FORCED5) && IterablePrototype[ITERATOR2] !== defaultIterator) {
          createNonEnumerableProperty4(IterablePrototype, ITERATOR2, defaultIterator);
        }
        Iterators[NAME2] = defaultIterator;
        if (DEFAULT) {
          methods = {
            values: getIterationMethod(VALUES),
            keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),
            entries: getIterationMethod(ENTRIES)
          };
          if (FORCED5)
            for (KEY in methods) {
              if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {
                redefine5(IterablePrototype, KEY, methods[KEY]);
              }
            }
          else
            $72({ target: NAME2, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);
        }
        return methods;
      };
    }
  });

  // node_modules/core-js/modules/es.array.iterator.js
  var require_es_array_iterator = __commonJS({
    "node_modules/core-js/modules/es.array.iterator.js": function(exports, module) {
      "use strict";
      var toIndexedObject5 = require_to_indexed_object();
      var addToUnscopables2 = require_add_to_unscopables();
      var Iterators = require_iterators();
      var InternalStateModule3 = require_internal_state();
      var defineIterator2 = require_define_iterator();
      var ARRAY_ITERATOR = "Array Iterator";
      var setInternalState3 = InternalStateModule3.set;
      var getInternalState3 = InternalStateModule3.getterFor(ARRAY_ITERATOR);
      module.exports = defineIterator2(Array, "Array", function(iterated, kind) {
        setInternalState3(this, {
          type: ARRAY_ITERATOR,
          target: toIndexedObject5(iterated),
          index: 0,
          kind: kind
        });
      }, function() {
        var state = getInternalState3(this);
        var target = state.target;
        var kind = state.kind;
        var index = state.index++;
        if (!target || index >= target.length) {
          state.target = void 0;
          return { value: void 0, done: true };
        }
        if (kind == "keys")
          return { value: index, done: false };
        if (kind == "values")
          return { value: target[index], done: false };
        return { value: [index, target[index]], done: false };
      }, "values");
      Iterators.Arguments = Iterators.Array;
      addToUnscopables2("keys");
      addToUnscopables2("values");
      addToUnscopables2("entries");
    }
  });

  // node_modules/core-js/internals/dom-iterables.js
  var require_dom_iterables = __commonJS({
    "node_modules/core-js/internals/dom-iterables.js": function(exports, module) {
      module.exports = {
        CSSRuleList: 0,
        CSSStyleDeclaration: 0,
        CSSValueList: 0,
        ClientRectList: 0,
        DOMRectList: 0,
        DOMStringList: 0,
        DOMTokenList: 1,
        DataTransferItemList: 0,
        FileList: 0,
        HTMLAllCollection: 0,
        HTMLCollection: 0,
        HTMLFormElement: 0,
        HTMLSelectElement: 0,
        MediaList: 0,
        MimeTypeArray: 0,
        NamedNodeMap: 0,
        NodeList: 1,
        PaintRequestList: 0,
        Plugin: 0,
        PluginArray: 0,
        SVGLengthList: 0,
        SVGNumberList: 0,
        SVGPathSegList: 0,
        SVGPointList: 0,
        SVGStringList: 0,
        SVGTransformList: 0,
        SourceBufferList: 0,
        StyleSheetList: 0,
        TextTrackCueList: 0,
        TextTrackList: 0,
        TouchList: 0
      };
    }
  });

  // node_modules/core-js/internals/string-trim-forced.js
  var require_string_trim_forced = __commonJS({
    "node_modules/core-js/internals/string-trim-forced.js": function(exports, module) {
      var fails11 = require_fails();
      var whitespaces = require_whitespaces();
      var non = "\u200B\x85\u180E";
      module.exports = function(METHOD_NAME) {
        return fails11(function() {
          return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;
        });
      };
    }
  });

  // node_modules/core-js/internals/inherit-if-required.js
  var require_inherit_if_required = __commonJS({
    "node_modules/core-js/internals/inherit-if-required.js": function(exports, module) {
      var isObject7 = require_is_object();
      var setPrototypeOf2 = require_object_set_prototype_of();
      module.exports = function($this, dummy, Wrapper) {
        var NewTarget, NewTargetPrototype;
        if (setPrototypeOf2 && typeof (NewTarget = dummy.constructor) == "function" && NewTarget !== Wrapper && isObject7(NewTargetPrototype = NewTarget.prototype) && NewTargetPrototype !== Wrapper.prototype)
          setPrototypeOf2($this, NewTargetPrototype);
        return $this;
      };
    }
  });

  // node_modules/core-js/internals/same-value.js
  var require_same_value = __commonJS({
    "node_modules/core-js/internals/same-value.js": function(exports, module) {
      module.exports = Object.is || function is(x, y) {
        return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;
      };
    }
  });

  // node_modules/core-js/internals/array-for-each.js
  var require_array_for_each = __commonJS({
    "node_modules/core-js/internals/array-for-each.js": function(exports, module) {
      "use strict";
      var $forEach2 = require_array_iteration().forEach;
      var arrayMethodIsStrict4 = require_array_method_is_strict();
      var STRICT_METHOD4 = arrayMethodIsStrict4("forEach");
      module.exports = !STRICT_METHOD4 ? function forEach3(callbackfn) {
        return $forEach2(this, callbackfn, arguments.length > 1 ? arguments[1] : void 0);
      } : [].forEach;
    }
  });

  // node_modules/core-js/internals/object-to-array.js
  var require_object_to_array = __commonJS({
    "node_modules/core-js/internals/object-to-array.js": function(exports, module) {
      var DESCRIPTORS6 = require_descriptors();
      var objectKeys2 = require_object_keys();
      var toIndexedObject5 = require_to_indexed_object();
      var propertyIsEnumerable2 = require_object_property_is_enumerable().f;
      var createMethod = function(TO_ENTRIES) {
        return function(it) {
          var O = toIndexedObject5(it);
          var keys2 = objectKeys2(O);
          var length = keys2.length;
          var i = 0;
          var result = [];
          var key;
          while (length > i) {
            key = keys2[i++];
            if (!DESCRIPTORS6 || propertyIsEnumerable2.call(O, key)) {
              result.push(TO_ENTRIES ? [key, O[key]] : O[key]);
            }
          }
          return result;
        };
      };
      module.exports = {
        entries: createMethod(true),
        values: createMethod(false)
      };
    }
  });

  // node_modules/core-js/internals/iterator-close.js
  var require_iterator_close = __commonJS({
    "node_modules/core-js/internals/iterator-close.js": function(exports, module) {
      var anObject10 = require_an_object();
      module.exports = function(iterator) {
        var returnMethod = iterator["return"];
        if (returnMethod !== void 0) {
          return anObject10(returnMethod.call(iterator)).value;
        }
      };
    }
  });

  // node_modules/core-js/internals/call-with-safe-iteration-closing.js
  var require_call_with_safe_iteration_closing = __commonJS({
    "node_modules/core-js/internals/call-with-safe-iteration-closing.js": function(exports, module) {
      var anObject10 = require_an_object();
      var iteratorClose = require_iterator_close();
      module.exports = function(iterator, fn, value, ENTRIES) {
        try {
          return ENTRIES ? fn(anObject10(value)[0], value[1]) : fn(value);
        } catch (error) {
          iteratorClose(iterator);
          throw error;
        }
      };
    }
  });

  // node_modules/core-js/internals/is-array-iterator-method.js
  var require_is_array_iterator_method = __commonJS({
    "node_modules/core-js/internals/is-array-iterator-method.js": function(exports, module) {
      var wellKnownSymbol5 = require_well_known_symbol();
      var Iterators = require_iterators();
      var ITERATOR2 = wellKnownSymbol5("iterator");
      var ArrayPrototype = Array.prototype;
      module.exports = function(it) {
        return it !== void 0 && (Iterators.Array === it || ArrayPrototype[ITERATOR2] === it);
      };
    }
  });

  // node_modules/core-js/internals/get-iterator-method.js
  var require_get_iterator_method = __commonJS({
    "node_modules/core-js/internals/get-iterator-method.js": function(exports, module) {
      var classof2 = require_classof();
      var Iterators = require_iterators();
      var wellKnownSymbol5 = require_well_known_symbol();
      var ITERATOR2 = wellKnownSymbol5("iterator");
      module.exports = function(it) {
        if (it != void 0)
          return it[ITERATOR2] || it["@@iterator"] || Iterators[classof2(it)];
      };
    }
  });

  // node_modules/core-js/internals/array-from.js
  var require_array_from = __commonJS({
    "node_modules/core-js/internals/array-from.js": function(exports, module) {
      "use strict";
      var bind2 = require_function_bind_context();
      var toObject6 = require_to_object();
      var callWithSafeIterationClosing = require_call_with_safe_iteration_closing();
      var isArrayIteratorMethod = require_is_array_iterator_method();
      var toLength8 = require_to_length();
      var createProperty4 = require_create_property();
      var getIteratorMethod = require_get_iterator_method();
      module.exports = function from2(arrayLike) {
        var O = toObject6(arrayLike);
        var C = typeof this == "function" ? this : Array;
        var argumentsLength = arguments.length;
        var mapfn = argumentsLength > 1 ? arguments[1] : void 0;
        var mapping = mapfn !== void 0;
        var iteratorMethod = getIteratorMethod(O);
        var index = 0;
        var length, result, step, iterator, next2, value;
        if (mapping)
          mapfn = bind2(mapfn, argumentsLength > 2 ? arguments[2] : void 0, 2);
        if (iteratorMethod != void 0 && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {
          iterator = iteratorMethod.call(O);
          next2 = iterator.next;
          result = new C();
          for (; !(step = next2.call(iterator)).done; index++) {
            value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;
            createProperty4(result, index, value);
          }
        } else {
          length = toLength8(O.length);
          result = new C(length);
          for (; length > index; index++) {
            value = mapping ? mapfn(O[index], index) : O[index];
            createProperty4(result, index, value);
          }
        }
        result.length = index;
        return result;
      };
    }
  });

  // node_modules/core-js/internals/check-correctness-of-iteration.js
  var require_check_correctness_of_iteration = __commonJS({
    "node_modules/core-js/internals/check-correctness-of-iteration.js": function(exports, module) {
      var wellKnownSymbol5 = require_well_known_symbol();
      var ITERATOR2 = wellKnownSymbol5("iterator");
      var SAFE_CLOSING = false;
      try {
        called = 0;
        iteratorWithReturn = {
          next: function() {
            return { done: !!called++ };
          },
          "return": function() {
            SAFE_CLOSING = true;
          }
        };
        iteratorWithReturn[ITERATOR2] = function() {
          return this;
        };
        Array.from(iteratorWithReturn, function() {
          throw 2;
        });
      } catch (error) {
      }
      var called;
      var iteratorWithReturn;
      module.exports = function(exec, SKIP_CLOSING) {
        if (!SKIP_CLOSING && !SAFE_CLOSING)
          return false;
        var ITERATION_SUPPORT = false;
        try {
          var object = {};
          object[ITERATOR2] = function() {
            return {
              next: function() {
                return { done: ITERATION_SUPPORT = true };
              }
            };
          };
          exec(object);
        } catch (error) {
        }
        return ITERATION_SUPPORT;
      };
    }
  });

  // node_modules/core-js/internals/array-buffer-native.js
  var require_array_buffer_native = __commonJS({
    "node_modules/core-js/internals/array-buffer-native.js": function(exports, module) {
      module.exports = typeof ArrayBuffer !== "undefined" && typeof DataView !== "undefined";
    }
  });

  // node_modules/core-js/internals/redefine-all.js
  var require_redefine_all = __commonJS({
    "node_modules/core-js/internals/redefine-all.js": function(exports, module) {
      var redefine5 = require_redefine();
      module.exports = function(target, src, options) {
        for (var key in src)
          redefine5(target, key, src[key], options);
        return target;
      };
    }
  });

  // node_modules/core-js/internals/an-instance.js
  var require_an_instance = __commonJS({
    "node_modules/core-js/internals/an-instance.js": function(exports, module) {
      module.exports = function(it, Constructor, name) {
        if (!(it instanceof Constructor)) {
          throw TypeError("Incorrect " + (name ? name + " " : "") + "invocation");
        }
        return it;
      };
    }
  });

  // node_modules/core-js/internals/to-index.js
  var require_to_index = __commonJS({
    "node_modules/core-js/internals/to-index.js": function(exports, module) {
      var toInteger3 = require_to_integer();
      var toLength8 = require_to_length();
      module.exports = function(it) {
        if (it === void 0)
          return 0;
        var number = toInteger3(it);
        var length = toLength8(number);
        if (number !== length)
          throw RangeError("Wrong length or index");
        return length;
      };
    }
  });

  // node_modules/core-js/internals/ieee754.js
  var require_ieee754 = __commonJS({
    "node_modules/core-js/internals/ieee754.js": function(exports, module) {
      var abs = Math.abs;
      var pow = Math.pow;
      var floor = Math.floor;
      var log = Math.log;
      var LN2 = Math.LN2;
      var pack = function(number, mantissaLength, bytes) {
        var buffer = new Array(bytes);
        var exponentLength = bytes * 8 - mantissaLength - 1;
        var eMax = (1 << exponentLength) - 1;
        var eBias = eMax >> 1;
        var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;
        var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;
        var index = 0;
        var exponent, mantissa, c;
        number = abs(number);
        if (number != number || number === Infinity) {
          mantissa = number != number ? 1 : 0;
          exponent = eMax;
        } else {
          exponent = floor(log(number) / LN2);
          if (number * (c = pow(2, -exponent)) < 1) {
            exponent--;
            c *= 2;
          }
          if (exponent + eBias >= 1) {
            number += rt / c;
          } else {
            number += rt * pow(2, 1 - eBias);
          }
          if (number * c >= 2) {
            exponent++;
            c /= 2;
          }
          if (exponent + eBias >= eMax) {
            mantissa = 0;
            exponent = eMax;
          } else if (exponent + eBias >= 1) {
            mantissa = (number * c - 1) * pow(2, mantissaLength);
            exponent = exponent + eBias;
          } else {
            mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);
            exponent = 0;
          }
        }
        for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8)
          ;
        exponent = exponent << mantissaLength | mantissa;
        exponentLength += mantissaLength;
        for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8)
          ;
        buffer[--index] |= sign * 128;
        return buffer;
      };
      var unpack = function(buffer, mantissaLength) {
        var bytes = buffer.length;
        var exponentLength = bytes * 8 - mantissaLength - 1;
        var eMax = (1 << exponentLength) - 1;
        var eBias = eMax >> 1;
        var nBits = exponentLength - 7;
        var index = bytes - 1;
        var sign = buffer[index--];
        var exponent = sign & 127;
        var mantissa;
        sign >>= 7;
        for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8)
          ;
        mantissa = exponent & (1 << -nBits) - 1;
        exponent >>= -nBits;
        nBits += mantissaLength;
        for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8)
          ;
        if (exponent === 0) {
          exponent = 1 - eBias;
        } else if (exponent === eMax) {
          return mantissa ? NaN : sign ? -Infinity : Infinity;
        } else {
          mantissa = mantissa + pow(2, mantissaLength);
          exponent = exponent - eBias;
        }
        return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);
      };
      module.exports = {
        pack: pack,
        unpack: unpack
      };
    }
  });

  // node_modules/core-js/internals/array-fill.js
  var require_array_fill = __commonJS({
    "node_modules/core-js/internals/array-fill.js": function(exports, module) {
      "use strict";
      var toObject6 = require_to_object();
      var toAbsoluteIndex4 = require_to_absolute_index();
      var toLength8 = require_to_length();
      module.exports = function fill(value) {
        var O = toObject6(this);
        var length = toLength8(O.length);
        var argumentsLength = arguments.length;
        var index = toAbsoluteIndex4(argumentsLength > 1 ? arguments[1] : void 0, length);
        var end = argumentsLength > 2 ? arguments[2] : void 0;
        var endPos = end === void 0 ? length : toAbsoluteIndex4(end, length);
        while (endPos > index)
          O[index++] = value;
        return O;
      };
    }
  });

  // node_modules/core-js/internals/array-buffer.js
  var require_array_buffer = __commonJS({
    "node_modules/core-js/internals/array-buffer.js": function(exports, module) {
      "use strict";
      var global8 = require_global();
      var DESCRIPTORS6 = require_descriptors();
      var NATIVE_ARRAY_BUFFER2 = require_array_buffer_native();
      var createNonEnumerableProperty4 = require_create_non_enumerable_property();
      var redefineAll = require_redefine_all();
      var fails11 = require_fails();
      var anInstance = require_an_instance();
      var toInteger3 = require_to_integer();
      var toLength8 = require_to_length();
      var toIndex = require_to_index();
      var IEEE754 = require_ieee754();
      var getPrototypeOf3 = require_object_get_prototype_of();
      var setPrototypeOf2 = require_object_set_prototype_of();
      var getOwnPropertyNames3 = require_object_get_own_property_names().f;
      var defineProperty5 = require_object_define_property().f;
      var arrayFill = require_array_fill();
      var setToStringTag2 = require_set_to_string_tag();
      var InternalStateModule3 = require_internal_state();
      var getInternalState3 = InternalStateModule3.get;
      var setInternalState3 = InternalStateModule3.set;
      var ARRAY_BUFFER2 = "ArrayBuffer";
      var DATA_VIEW = "DataView";
      var PROTOTYPE2 = "prototype";
      var WRONG_LENGTH = "Wrong length";
      var WRONG_INDEX = "Wrong index";
      var NativeArrayBuffer2 = global8[ARRAY_BUFFER2];
      var $ArrayBuffer = NativeArrayBuffer2;
      var $DataView = global8[DATA_VIEW];
      var $DataViewPrototype = $DataView && $DataView[PROTOTYPE2];
      var ObjectPrototype2 = Object.prototype;
      var RangeError2 = global8.RangeError;
      var packIEEE754 = IEEE754.pack;
      var unpackIEEE754 = IEEE754.unpack;
      var packInt8 = function(number) {
        return [number & 255];
      };
      var packInt16 = function(number) {
        return [number & 255, number >> 8 & 255];
      };
      var packInt32 = function(number) {
        return [number & 255, number >> 8 & 255, number >> 16 & 255, number >> 24 & 255];
      };
      var unpackInt32 = function(buffer) {
        return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];
      };
      var packFloat32 = function(number) {
        return packIEEE754(number, 23, 4);
      };
      var packFloat64 = function(number) {
        return packIEEE754(number, 52, 8);
      };
      var addGetter = function(Constructor, key2) {
        defineProperty5(Constructor[PROTOTYPE2], key2, { get: function() {
          return getInternalState3(this)[key2];
        } });
      };
      var get3 = function(view, count, index, isLittleEndian) {
        var intIndex = toIndex(index);
        var store = getInternalState3(view);
        if (intIndex + count > store.byteLength)
          throw RangeError2(WRONG_INDEX);
        var bytes = getInternalState3(store.buffer).bytes;
        var start = intIndex + store.byteOffset;
        var pack = bytes.slice(start, start + count);
        return isLittleEndian ? pack : pack.reverse();
      };
      var set = function(view, count, index, conversion, value, isLittleEndian) {
        var intIndex = toIndex(index);
        var store = getInternalState3(view);
        if (intIndex + count > store.byteLength)
          throw RangeError2(WRONG_INDEX);
        var bytes = getInternalState3(store.buffer).bytes;
        var start = intIndex + store.byteOffset;
        var pack = conversion(+value);
        for (var i = 0; i < count; i++)
          bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];
      };
      if (!NATIVE_ARRAY_BUFFER2) {
        $ArrayBuffer = function ArrayBuffer4(length) {
          anInstance(this, $ArrayBuffer, ARRAY_BUFFER2);
          var byteLength = toIndex(length);
          setInternalState3(this, {
            bytes: arrayFill.call(new Array(byteLength), 0),
            byteLength: byteLength
          });
          if (!DESCRIPTORS6)
            this.byteLength = byteLength;
        };
        $DataView = function DataView3(buffer, byteOffset, byteLength) {
          anInstance(this, $DataView, DATA_VIEW);
          anInstance(buffer, $ArrayBuffer, DATA_VIEW);
          var bufferLength = getInternalState3(buffer).byteLength;
          var offset = toInteger3(byteOffset);
          if (offset < 0 || offset > bufferLength)
            throw RangeError2("Wrong offset");
          byteLength = byteLength === void 0 ? bufferLength - offset : toLength8(byteLength);
          if (offset + byteLength > bufferLength)
            throw RangeError2(WRONG_LENGTH);
          setInternalState3(this, {
            buffer: buffer,
            byteLength: byteLength,
            byteOffset: offset
          });
          if (!DESCRIPTORS6) {
            this.buffer = buffer;
            this.byteLength = byteLength;
            this.byteOffset = offset;
          }
        };
        if (DESCRIPTORS6) {
          addGetter($ArrayBuffer, "byteLength");
          addGetter($DataView, "buffer");
          addGetter($DataView, "byteLength");
          addGetter($DataView, "byteOffset");
        }
        redefineAll($DataView[PROTOTYPE2], {
          getInt8: function getInt8(byteOffset) {
            return get3(this, 1, byteOffset)[0] << 24 >> 24;
          },
          getUint8: function getUint8(byteOffset) {
            return get3(this, 1, byteOffset)[0];
          },
          getInt16: function getInt16(byteOffset) {
            var bytes = get3(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : void 0);
            return (bytes[1] << 8 | bytes[0]) << 16 >> 16;
          },
          getUint16: function getUint16(byteOffset) {
            var bytes = get3(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : void 0);
            return bytes[1] << 8 | bytes[0];
          },
          getInt32: function getInt32(byteOffset) {
            return unpackInt32(get3(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : void 0));
          },
          getUint32: function getUint32(byteOffset) {
            return unpackInt32(get3(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : void 0)) >>> 0;
          },
          getFloat32: function getFloat32(byteOffset) {
            return unpackIEEE754(get3(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : void 0), 23);
          },
          getFloat64: function getFloat64(byteOffset) {
            return unpackIEEE754(get3(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : void 0), 52);
          },
          setInt8: function setInt8(byteOffset, value) {
            set(this, 1, byteOffset, packInt8, value);
          },
          setUint8: function setUint8(byteOffset, value) {
            set(this, 1, byteOffset, packInt8, value);
          },
          setInt16: function setInt16(byteOffset, value) {
            set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : void 0);
          },
          setUint16: function setUint16(byteOffset, value) {
            set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : void 0);
          },
          setInt32: function setInt32(byteOffset, value) {
            set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : void 0);
          },
          setUint32: function setUint32(byteOffset, value) {
            set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : void 0);
          },
          setFloat32: function setFloat32(byteOffset, value) {
            set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : void 0);
          },
          setFloat64: function setFloat64(byteOffset, value) {
            set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : void 0);
          }
        });
      } else {
        if (!fails11(function() {
          NativeArrayBuffer2(1);
        }) || !fails11(function() {
          new NativeArrayBuffer2(-1);
        }) || fails11(function() {
          new NativeArrayBuffer2();
          new NativeArrayBuffer2(1.5);
          new NativeArrayBuffer2(NaN);
          return NativeArrayBuffer2.name != ARRAY_BUFFER2;
        })) {
          $ArrayBuffer = function ArrayBuffer4(length) {
            anInstance(this, $ArrayBuffer);
            return new NativeArrayBuffer2(toIndex(length));
          };
          ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE2] = NativeArrayBuffer2[PROTOTYPE2];
          for (keys2 = getOwnPropertyNames3(NativeArrayBuffer2), j = 0; keys2.length > j; ) {
            if (!((key = keys2[j++]) in $ArrayBuffer)) {
              createNonEnumerableProperty4($ArrayBuffer, key, NativeArrayBuffer2[key]);
            }
          }
          ArrayBufferPrototype.constructor = $ArrayBuffer;
        }
        if (setPrototypeOf2 && getPrototypeOf3($DataViewPrototype) !== ObjectPrototype2) {
          setPrototypeOf2($DataViewPrototype, ObjectPrototype2);
        }
        testView = new $DataView(new $ArrayBuffer(2));
        $setInt8 = $DataViewPrototype.setInt8;
        testView.setInt8(0, 2147483648);
        testView.setInt8(1, 2147483649);
        if (testView.getInt8(0) || !testView.getInt8(1))
          redefineAll($DataViewPrototype, {
            setInt8: function setInt8(byteOffset, value) {
              $setInt8.call(this, byteOffset, value << 24 >> 24);
            },
            setUint8: function setUint8(byteOffset, value) {
              $setInt8.call(this, byteOffset, value << 24 >> 24);
            }
          }, { unsafe: true });
      }
      var ArrayBufferPrototype;
      var keys2;
      var j;
      var key;
      var testView;
      var $setInt8;
      setToStringTag2($ArrayBuffer, ARRAY_BUFFER2);
      setToStringTag2($DataView, DATA_VIEW);
      module.exports = {
        ArrayBuffer: $ArrayBuffer,
        DataView: $DataView
      };
    }
  });

  // node_modules/core-js/internals/set-species.js
  var require_set_species = __commonJS({
    "node_modules/core-js/internals/set-species.js": function(exports, module) {
      "use strict";
      var getBuiltIn3 = require_get_built_in();
      var definePropertyModule2 = require_object_define_property();
      var wellKnownSymbol5 = require_well_known_symbol();
      var DESCRIPTORS6 = require_descriptors();
      var SPECIES2 = wellKnownSymbol5("species");
      module.exports = function(CONSTRUCTOR_NAME) {
        var Constructor = getBuiltIn3(CONSTRUCTOR_NAME);
        var defineProperty5 = definePropertyModule2.f;
        if (DESCRIPTORS6 && Constructor && !Constructor[SPECIES2]) {
          defineProperty5(Constructor, SPECIES2, {
            configurable: true,
            get: function() {
              return this;
            }
          });
        }
      };
    }
  });

  // node_modules/core-js/internals/array-reduce.js
  var require_array_reduce = __commonJS({
    "node_modules/core-js/internals/array-reduce.js": function(exports, module) {
      var aFunction2 = require_a_function();
      var toObject6 = require_to_object();
      var IndexedObject2 = require_indexed_object();
      var toLength8 = require_to_length();
      var createMethod = function(IS_RIGHT) {
        return function(that, callbackfn, argumentsLength, memo) {
          aFunction2(callbackfn);
          var O = toObject6(that);
          var self2 = IndexedObject2(O);
          var length = toLength8(O.length);
          var index = IS_RIGHT ? length - 1 : 0;
          var i = IS_RIGHT ? -1 : 1;
          if (argumentsLength < 2)
            while (true) {
              if (index in self2) {
                memo = self2[index];
                index += i;
                break;
              }
              index += i;
              if (IS_RIGHT ? index < 0 : length <= index) {
                throw TypeError("Reduce of empty array with no initial value");
              }
            }
          for (; IS_RIGHT ? index >= 0 : length > index; index += i)
            if (index in self2) {
              memo = callbackfn(memo, self2[index], index, O);
            }
          return memo;
        };
      };
      module.exports = {
        left: createMethod(false),
        right: createMethod(true)
      };
    }
  });

  // node_modules/core-js/internals/engine-is-node.js
  var require_engine_is_node = __commonJS({
    "node_modules/core-js/internals/engine-is-node.js": function(exports, module) {
      var classof2 = require_classof_raw();
      var global8 = require_global();
      module.exports = classof2(global8.process) == "process";
    }
  });

  // srcts/src/initialize/disableForm.ts
  var import_jquery = __toModule(require_jquery());
  function disableFormSubmission() {
    (0, import_jquery.default)(document).on("submit", "form:not([action])", function(e) {
      e.preventDefault();
    });
  }

  // srcts/src/initialize/history.ts
  var import_jquery2 = __toModule(require_jquery());
  function trackHistory() {
    var origPushState = window.history.pushState;
    window.history.pushState = function() {
      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
        args[_key] = arguments[_key];
      }
      var result = origPushState.apply(this, args);
      (0, import_jquery2.default)(document).trigger("pushstate");
      return result;
    };
  }

  // node_modules/core-js/modules/es.array.index-of.js
  "use strict";
  var $3 = require_export();
  var $indexOf = require_array_includes().indexOf;
  var arrayMethodIsStrict = require_array_method_is_strict();
  var nativeIndexOf = [].indexOf;
  var NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;
  var STRICT_METHOD = arrayMethodIsStrict("indexOf");
  $3({ target: "Array", proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD }, {
    indexOf: function indexOf(searchElement) {
      return NEGATIVE_ZERO ? nativeIndexOf.apply(this, arguments) || 0 : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : void 0);
    }
  });

  // node_modules/core-js/modules/es.parse-int.js
  var $4 = require_export();
  var parseIntImplementation = require_number_parse_int();
  $4({ global: true, forced: parseInt != parseIntImplementation }, {
    parseInt: parseIntImplementation
  });

  // srcts/src/initialize/browser.ts
  var import_jquery3 = __toModule(require_jquery());

  // srcts/src/utils/browser.ts
  var isQtVal = false;
  var isIEVal = false;
  var versionIE = -1;
  function setIsQt(isQt2) {
    isQtVal = isQt2;
  }
  function setIsIE(isIE2) {
    isIEVal = isIE2;
  }
  function setIEVersion(versionIE_) {
    versionIE = versionIE_;
  }
  function isQt() {
    return isQtVal;
  }
  function isIE() {
    return isIEVal;
  }
  function IEVersion() {
    return versionIE;
  }

  // srcts/src/utils/userAgent.ts
  var userAgent;
  function setUserAgent(userAgent_) {
    userAgent = userAgent_;
  }

  // srcts/src/initialize/browser.ts
  function getIEVersion() {
    var msie = userAgent.indexOf("MSIE ");
    if (isIE() && msie > 0) {
      return parseInt(userAgent.substring(msie + 5, userAgent.indexOf(".", msie)), 10);
    }
    var trident = userAgent.indexOf("Trident/");
    if (trident > 0) {
      var rv = userAgent.indexOf("rv:");
      return parseInt(userAgent.substring(rv + 3, userAgent.indexOf(".", rv)), 10);
    }
    return -1;
  }
  function determineBrowserInfo() {
    if (/\bQt\//.test(userAgent)) {
      (0, import_jquery3.default)(document.documentElement).addClass("qt");
      setIsQt(true);
    } else {
      setIsQt(false);
    }
    if (/\bQt/.test(userAgent) && /\bMacintosh/.test(userAgent)) {
      (0, import_jquery3.default)(document.documentElement).addClass("qtmac");
    }
    if (/\bQt\/5/.test(userAgent) && /Linux/.test(userAgent)) {
      (0, import_jquery3.default)(document.documentElement).addClass("qt5");
    }
    setIsIE(/MSIE|Trident|Edge/.test(userAgent));
    setIEVersion(getIEVersion());
  }

  // srcts/src/window/libraries.ts
  function windowShiny() {
    if (!window["Shiny"]) {
      window["Shiny"] = {};
    }
    return window["Shiny"];
  }

  // srcts/src/shiny/index.ts
  var import_jquery43 = __toModule(require_jquery());

  // node_modules/core-js/modules/es.function.name.js
  var DESCRIPTORS = require_descriptors();
  var defineProperty = require_object_define_property().f;
  var FunctionPrototype = Function.prototype;
  var FunctionPrototypeToString = FunctionPrototype.toString;
  var nameRE = /^\s*function ([^ (]*)/;
  var NAME = "name";
  if (DESCRIPTORS && !(NAME in FunctionPrototype)) {
    defineProperty(FunctionPrototype, NAME, {
      configurable: true,
      get: function() {
        try {
          return FunctionPrototypeToString.call(this).match(nameRE)[1];
        } catch (error) {
          return "";
        }
      }
    });
  }

  // srcts/src/utils/index.ts
  var import_es_regexp_exec = __toModule(require_es_regexp_exec());

  // node_modules/core-js/modules/es.string.replace.js
  "use strict";
  var fixRegExpWellKnownSymbolLogic = require_fix_regexp_well_known_symbol_logic();
  var anObject = require_an_object();
  var toLength = require_to_length();
  var toInteger = require_to_integer();
  var requireObjectCoercible = require_require_object_coercible();
  var advanceStringIndex = require_advance_string_index();
  var getSubstitution = require_get_substitution();
  var regExpExec = require_regexp_exec_abstract();
  var max = Math.max;
  var min = Math.min;
  var maybeToString = function(it) {
    return it === void 0 ? it : String(it);
  };
  fixRegExpWellKnownSymbolLogic("replace", 2, function(REPLACE, nativeReplace, maybeCallNative, reason) {
    var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;
    var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;
    var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? "$" : "$0";
    return [
      function replace(searchValue, replaceValue) {
        var O = requireObjectCoercible(this);
        var replacer = searchValue == void 0 ? void 0 : searchValue[REPLACE];
        return replacer !== void 0 ? replacer.call(searchValue, O, replaceValue) : nativeReplace.call(String(O), searchValue, replaceValue);
      },
      function(regexp, replaceValue) {
        if (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0 || typeof replaceValue === "string" && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1) {
          var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);
          if (res.done)
            return res.value;
        }
        var rx = anObject(regexp);
        var S = String(this);
        var functionalReplace = typeof replaceValue === "function";
        if (!functionalReplace)
          replaceValue = String(replaceValue);
        var global8 = rx.global;
        if (global8) {
          var fullUnicode = rx.unicode;
          rx.lastIndex = 0;
        }
        var results = [];
        while (true) {
          var result = regExpExec(rx, S);
          if (result === null)
            break;
          results.push(result);
          if (!global8)
            break;
          var matchStr = String(result[0]);
          if (matchStr === "")
            rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
        }
        var accumulatedResult = "";
        var nextSourcePosition = 0;
        for (var i = 0; i < results.length; i++) {
          result = results[i];
          var matched = String(result[0]);
          var position = max(min(toInteger(result.index), S.length), 0);
          var captures = [];
          for (var j = 1; j < result.length; j++)
            captures.push(maybeToString(result[j]));
          var namedCaptures = result.groups;
          if (functionalReplace) {
            var replacerArgs = [matched].concat(captures, position, S);
            if (namedCaptures !== void 0)
              replacerArgs.push(namedCaptures);
            var replacement = String(replaceValue.apply(void 0, replacerArgs));
          } else {
            replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);
          }
          if (position >= nextSourcePosition) {
            accumulatedResult += S.slice(nextSourcePosition, position) + replacement;
            nextSourcePosition = position + matched.length;
          }
        }
        return accumulatedResult + S.slice(nextSourcePosition);
      }
    ];
  });

  // node_modules/core-js/modules/es.object.to-string.js
  var TO_STRING_TAG_SUPPORT = require_to_string_tag_support();
  var redefine = require_redefine();
  var toString = require_object_to_string();
  if (!TO_STRING_TAG_SUPPORT) {
    redefine(Object.prototype, "toString", toString, { unsafe: true });
  }

  // node_modules/core-js/modules/es.regexp.to-string.js
  "use strict";
  var redefine2 = require_redefine();
  var anObject2 = require_an_object();
  var fails = require_fails();
  var flags = require_regexp_flags();
  var TO_STRING = "toString";
  var RegExpPrototype = RegExp.prototype;
  var nativeToString = RegExpPrototype[TO_STRING];
  var NOT_GENERIC = fails(function() {
    return nativeToString.call({ source: "a", flags: "b" }) != "/a/b";
  });
  var INCORRECT_NAME = nativeToString.name != TO_STRING;
  if (NOT_GENERIC || INCORRECT_NAME) {
    redefine2(RegExp.prototype, TO_STRING, function toString2() {
      var R = anObject2(this);
      var p = String(R.source);
      var rf = R.flags;
      var f = String(rf === void 0 && R instanceof RegExp && !("flags" in RegExpPrototype) ? flags.call(R) : rf);
      return "/" + p + "/" + f;
    }, { unsafe: true });
  }

  // node_modules/core-js/modules/es.parse-float.js
  var $6 = require_export();
  var parseFloatImplementation = require_number_parse_float();
  $6({ global: true, forced: parseFloat != parseFloatImplementation }, {
    parseFloat: parseFloatImplementation
  });

  // node_modules/core-js/modules/es.number.to-precision.js
  "use strict";
  var $7 = require_export();
  var fails2 = require_fails();
  var thisNumberValue = require_this_number_value();
  var nativeToPrecision = 1 .toPrecision;
  var FORCED = fails2(function() {
    return nativeToPrecision.call(1, void 0) !== "1";
  }) || !fails2(function() {
    nativeToPrecision.call({});
  });
  $7({ target: "Number", proto: true, forced: FORCED }, {
    toPrecision: function toPrecision(precision) {
      return precision === void 0 ? nativeToPrecision.call(thisNumberValue(this)) : nativeToPrecision.call(thisNumberValue(this), precision);
    }
  });

  // node_modules/core-js/modules/es.array.concat.js
  "use strict";
  var $8 = require_export();
  var fails3 = require_fails();
  var isArray = require_is_array();
  var isObject = require_is_object();
  var toObject = require_to_object();
  var toLength2 = require_to_length();
  var createProperty = require_create_property();
  var arraySpeciesCreate = require_array_species_create();
  var arrayMethodHasSpeciesSupport = require_array_method_has_species_support();
  var wellKnownSymbol = require_well_known_symbol();
  var V8_VERSION = require_engine_v8_version();
  var IS_CONCAT_SPREADABLE = wellKnownSymbol("isConcatSpreadable");
  var MAX_SAFE_INTEGER = 9007199254740991;
  var MAXIMUM_ALLOWED_INDEX_EXCEEDED = "Maximum allowed index exceeded";
  var IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails3(function() {
    var array = [];
    array[IS_CONCAT_SPREADABLE] = false;
    return array.concat()[0] !== array;
  });
  var SPECIES_SUPPORT = arrayMethodHasSpeciesSupport("concat");
  var isConcatSpreadable = function(O) {
    if (!isObject(O))
      return false;
    var spreadable = O[IS_CONCAT_SPREADABLE];
    return spreadable !== void 0 ? !!spreadable : isArray(O);
  };
  var FORCED2 = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;
  $8({ target: "Array", proto: true, forced: FORCED2 }, {
    concat: function concat(arg) {
      var O = toObject(this);
      var A = arraySpeciesCreate(O, 0);
      var n = 0;
      var i, k, length, len, E;
      for (i = -1, length = arguments.length; i < length; i++) {
        E = i === -1 ? O : arguments[i];
        if (isConcatSpreadable(E)) {
          len = toLength2(E.length);
          if (n + len > MAX_SAFE_INTEGER)
            throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);
          for (k = 0; k < len; k++, n++)
            if (k in E)
              createProperty(A, n, E[k]);
        } else {
          if (n >= MAX_SAFE_INTEGER)
            throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);
          createProperty(A, n++, E);
        }
      }
      A.length = n;
      return A;
    }
  });

  // node_modules/core-js/modules/es.array.slice.js
  "use strict";
  var $9 = require_export();
  var isObject2 = require_is_object();
  var isArray2 = require_is_array();
  var toAbsoluteIndex = require_to_absolute_index();
  var toLength3 = require_to_length();
  var toIndexedObject = require_to_indexed_object();
  var createProperty2 = require_create_property();
  var wellKnownSymbol2 = require_well_known_symbol();
  var arrayMethodHasSpeciesSupport2 = require_array_method_has_species_support();
  var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport2("slice");
  var SPECIES = wellKnownSymbol2("species");
  var nativeSlice = [].slice;
  var max2 = Math.max;
  $9({ target: "Array", proto: true, forced: !HAS_SPECIES_SUPPORT }, {
    slice: function slice(start, end) {
      var O = toIndexedObject(this);
      var length = toLength3(O.length);
      var k = toAbsoluteIndex(start, length);
      var fin = toAbsoluteIndex(end === void 0 ? length : end, length);
      var Constructor, result, n;
      if (isArray2(O)) {
        Constructor = O.constructor;
        if (typeof Constructor == "function" && (Constructor === Array || isArray2(Constructor.prototype))) {
          Constructor = void 0;
        } else if (isObject2(Constructor)) {
          Constructor = Constructor[SPECIES];
          if (Constructor === null)
            Constructor = void 0;
        }
        if (Constructor === Array || Constructor === void 0) {
          return nativeSlice.call(O, k, fin);
        }
      }
      result = new (Constructor === void 0 ? Array : Constructor)(max2(fin - k, 0));
      for (n = 0; k < fin; k++, n++)
        if (k in O)
          createProperty2(result, n, O[k]);
      result.length = n;
      return result;
    }
  });

  // node_modules/core-js/modules/es.array.splice.js
  "use strict";
  var $10 = require_export();
  var toAbsoluteIndex2 = require_to_absolute_index();
  var toInteger2 = require_to_integer();
  var toLength4 = require_to_length();
  var toObject2 = require_to_object();
  var arraySpeciesCreate2 = require_array_species_create();
  var createProperty3 = require_create_property();
  var arrayMethodHasSpeciesSupport3 = require_array_method_has_species_support();
  var HAS_SPECIES_SUPPORT2 = arrayMethodHasSpeciesSupport3("splice");
  var max3 = Math.max;
  var min2 = Math.min;
  var MAX_SAFE_INTEGER2 = 9007199254740991;
  var MAXIMUM_ALLOWED_LENGTH_EXCEEDED = "Maximum allowed length exceeded";
  $10({ target: "Array", proto: true, forced: !HAS_SPECIES_SUPPORT2 }, {
    splice: function splice(start, deleteCount) {
      var O = toObject2(this);
      var len = toLength4(O.length);
      var actualStart = toAbsoluteIndex2(start, len);
      var argumentsLength = arguments.length;
      var insertCount, actualDeleteCount, A, k, from2, to;
      if (argumentsLength === 0) {
        insertCount = actualDeleteCount = 0;
      } else if (argumentsLength === 1) {
        insertCount = 0;
        actualDeleteCount = len - actualStart;
      } else {
        insertCount = argumentsLength - 2;
        actualDeleteCount = min2(max3(toInteger2(deleteCount), 0), len - actualStart);
      }
      if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER2) {
        throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);
      }
      A = arraySpeciesCreate2(O, actualDeleteCount);
      for (k = 0; k < actualDeleteCount; k++) {
        from2 = actualStart + k;
        if (from2 in O)
          createProperty3(A, k, O[from2]);
      }
      A.length = actualDeleteCount;
      if (insertCount < actualDeleteCount) {
        for (k = actualStart; k < len - actualDeleteCount; k++) {
          from2 = k + actualDeleteCount;
          to = k + insertCount;
          if (from2 in O)
            O[to] = O[from2];
          else
            delete O[to];
        }
        for (k = len; k > len - actualDeleteCount + insertCount; k--)
          delete O[k - 1];
      } else if (insertCount > actualDeleteCount) {
        for (k = len - actualDeleteCount; k > actualStart; k--) {
          from2 = k + actualDeleteCount - 1;
          to = k + insertCount - 1;
          if (from2 in O)
            O[to] = O[from2];
          else
            delete O[to];
        }
      }
      for (k = 0; k < insertCount; k++) {
        O[k + actualStart] = arguments[k + 2];
      }
      O.length = len - actualDeleteCount + insertCount;
      return A;
    }
  });

  // node_modules/core-js/modules/es.object.keys.js
  var $11 = require_export();
  var toObject3 = require_to_object();
  var nativeKeys = require_object_keys();
  var fails4 = require_fails();
  var FAILS_ON_PRIMITIVES = fails4(function() {
    nativeKeys(1);
  });
  $11({ target: "Object", stat: true, forced: FAILS_ON_PRIMITIVES }, {
    keys: function keys(it) {
      return nativeKeys(toObject3(it));
    }
  });

  // node_modules/core-js/modules/es.string.split.js
  "use strict";
  var fixRegExpWellKnownSymbolLogic2 = require_fix_regexp_well_known_symbol_logic();
  var isRegExp = require_is_regexp();
  var anObject3 = require_an_object();
  var requireObjectCoercible2 = require_require_object_coercible();
  var speciesConstructor = require_species_constructor();
  var advanceStringIndex2 = require_advance_string_index();
  var toLength5 = require_to_length();
  var callRegExpExec = require_regexp_exec_abstract();
  var regexpExec = require_regexp_exec();
  var stickyHelpers = require_regexp_sticky_helpers();
  var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;
  var arrayPush = [].push;
  var min3 = Math.min;
  var MAX_UINT32 = 4294967295;
  fixRegExpWellKnownSymbolLogic2("split", 2, function(SPLIT, nativeSplit, maybeCallNative) {
    var internalSplit;
    if ("abbc".split(/(b)*/)[1] == "c" || "test".split(/(?:)/, -1).length != 4 || "ab".split(/(?:ab)*/).length != 2 || ".".split(/(.?)(.?)/).length != 4 || ".".split(/()()/).length > 1 || "".split(/.?/).length) {
      internalSplit = function(separator, limit) {
        var string = String(requireObjectCoercible2(this));
        var lim = limit === void 0 ? MAX_UINT32 : limit >>> 0;
        if (lim === 0)
          return [];
        if (separator === void 0)
          return [string];
        if (!isRegExp(separator)) {
          return nativeSplit.call(string, separator, lim);
        }
        var output = [];
        var flags2 = (separator.ignoreCase ? "i" : "") + (separator.multiline ? "m" : "") + (separator.unicode ? "u" : "") + (separator.sticky ? "y" : "");
        var lastLastIndex = 0;
        var separatorCopy = new RegExp(separator.source, flags2 + "g");
        var match, lastIndex, lastLength;
        while (match = regexpExec.call(separatorCopy, string)) {
          lastIndex = separatorCopy.lastIndex;
          if (lastIndex > lastLastIndex) {
            output.push(string.slice(lastLastIndex, match.index));
            if (match.length > 1 && match.index < string.length)
              arrayPush.apply(output, match.slice(1));
            lastLength = match[0].length;
            lastLastIndex = lastIndex;
            if (output.length >= lim)
              break;
          }
          if (separatorCopy.lastIndex === match.index)
            separatorCopy.lastIndex++;
        }
        if (lastLastIndex === string.length) {
          if (lastLength || !separatorCopy.test(""))
            output.push("");
        } else
          output.push(string.slice(lastLastIndex));
        return output.length > lim ? output.slice(0, lim) : output;
      };
    } else if ("0".split(void 0, 0).length) {
      internalSplit = function(separator, limit) {
        return separator === void 0 && limit === 0 ? [] : nativeSplit.call(this, separator, limit);
      };
    } else
      internalSplit = nativeSplit;
    return [
      function split(separator, limit) {
        var O = requireObjectCoercible2(this);
        var splitter = separator == void 0 ? void 0 : separator[SPLIT];
        return splitter !== void 0 ? splitter.call(separator, O, limit) : internalSplit.call(String(O), separator, limit);
      },
      function(regexp, limit) {
        var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);
        if (res.done)
          return res.value;
        var rx = anObject3(regexp);
        var S = String(this);
        var C = speciesConstructor(rx, RegExp);
        var unicodeMatching = rx.unicode;
        var flags2 = (rx.ignoreCase ? "i" : "") + (rx.multiline ? "m" : "") + (rx.unicode ? "u" : "") + (UNSUPPORTED_Y ? "g" : "y");
        var splitter = new C(UNSUPPORTED_Y ? "^(?:" + rx.source + ")" : rx, flags2);
        var lim = limit === void 0 ? MAX_UINT32 : limit >>> 0;
        if (lim === 0)
          return [];
        if (S.length === 0)
          return callRegExpExec(splitter, S) === null ? [S] : [];
        var p = 0;
        var q = 0;
        var A = [];
        while (q < S.length) {
          splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;
          var z = callRegExpExec(splitter, UNSUPPORTED_Y ? S.slice(q) : S);
          var e;
          if (z === null || (e = min3(toLength5(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p) {
            q = advanceStringIndex2(S, q, unicodeMatching);
          } else {
            A.push(S.slice(p, q));
            if (A.length === lim)
              return A;
            for (var i = 1; i <= z.length - 1; i++) {
              A.push(z[i]);
              if (A.length === lim)
                return A;
            }
            q = p = e;
          }
        }
        A.push(S.slice(p));
        return A;
      }
    ];
  }, UNSUPPORTED_Y);

  // srcts/src/utils/index.ts
  var import_jquery5 = __toModule(require_jquery());

  // srcts/src/window/pixelRatio.ts
  function windowDevicePixelRatio() {
    return window.devicePixelRatio;
  }

  // srcts/src/utils/blob.ts
  var import_jquery4 = __toModule(require_jquery());
  var blobBuilderClass;
  function setBlobBuilder(blobBuilderClass_) {
    blobBuilderClass = blobBuilderClass_;
    return;
  }
  function makeBlob(parts) {
    try {
      return new Blob(parts);
    } catch (e) {
      var blobBuilder = new blobBuilderClass();
      import_jquery4.default.each(parts, function(i, part) {
        blobBuilder.append(part);
      });
      return blobBuilder.getBlob();
    }
  }

  // srcts/src/utils/object.ts
  function hasOwnProperty(x, y) {
    return Object.prototype.hasOwnProperty.call(x, y);
  }

  // srcts/src/utils/index.ts
  function escapeHTML(str) {
    var escaped = {
      "&": "&amp;",
      "<": "&lt;",
      ">": "&gt;",
      '"': "&quot;",
      "'": "&#039;",
      "/": "&#x2F;"
    };
    return str.replace(/[&<>'"/]/g, function(m) {
      return escaped[m];
    });
  }
  function randomId() {
    return Math.floor(4294967296 + Math.random() * 64424509440).toString(16);
  }
  function strToBool(str) {
    if (!str || !str.toLowerCase)
      return void 0;
    switch (str.toLowerCase()) {
      case "true":
        return true;
      case "false":
        return false;
      default:
        return void 0;
    }
  }
  function getStyle(el, styleProp) {
    var x = void 0;
    if (el.currentStyle)
      x = el.currentStyle[styleProp];
    else if (window.getComputedStyle) {
      var style = document.defaultView.getComputedStyle(el, null);
      if (style)
        x = style.getPropertyValue(styleProp);
    }
    return x;
  }
  function padZeros(n, digits) {
    var str = n.toString();
    while (str.length < digits) {
      str = "0" + str;
    }
    return str;
  }
  function roundSignif(x) {
    var digits = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1;
    if (digits < 1)
      throw "Significant digits must be at least 1.";
    return parseFloat(x.toPrecision(digits));
  }
  function parseDate(dateString) {
    var date = new Date(dateString);
    if (date.toString() === "Invalid Date") {
      date = new Date(dateString.replace(/-/g, "/"));
    }
    return date;
  }
  function formatDateUTC(date) {
    if (date instanceof Date) {
      return date.getUTCFullYear() + "-" + padZeros(date.getUTCMonth() + 1, 2) + "-" + padZeros(date.getUTCDate(), 2);
    } else {
      return null;
    }
  }
  function makeResizeFilter(el, func) {
    var lastSize = {};
    return function() {
      var size = {
        w: el.offsetWidth,
        h: el.offsetHeight
      };
      if (size.w === 0 && size.h === 0)
        return;
      if (size.w === lastSize.w && size.h === lastSize.h)
        return;
      lastSize = size;
      func(size.w, size.h);
    };
  }
  function pixelRatio() {
    if (windowDevicePixelRatio()) {
      return Math.round(windowDevicePixelRatio() * 100) / 100;
    } else {
      return 1;
    }
  }
  function scopeExprToFunc(expr) {
    var exprEscaped = expr.replace(/[\\"']/g, "\\$&").replace(/\u0000/g, "\\0").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\b]/g, "\\b");
    var func;
    try {
      func = new Function("with (this) {\n        try {\n          return (".concat(expr, ");\n        } catch (e) {\n          console.error('Error evaluating expression: ").concat(exprEscaped, "');\n          throw e;\n        }\n      }"));
    } catch (e) {
      console.error("Error parsing expression: " + expr);
      throw e;
    }
    return function(scope) {
      return func.call(scope);
    };
  }
  function asArray(value) {
    if (value === null || value === void 0)
      return [];
    if (Array.isArray(value))
      return value;
    return [value];
  }
  function mergeSort(list, sortfunc) {
    function merge(sortfunc2, a, b) {
      var ia = 0;
      var ib = 0;
      var sorted = [];
      while (ia < a.length && ib < b.length) {
        if (sortfunc2(a[ia], b[ib]) <= 0) {
          sorted.push(a[ia++]);
        } else {
          sorted.push(b[ib++]);
        }
      }
      while (ia < a.length) {
        sorted.push(a[ia++]);
      }
      while (ib < b.length) {
        sorted.push(b[ib++]);
      }
      return sorted;
    }
    list = list.slice(0);
    for (var chunkSize = 1; chunkSize < list.length; chunkSize *= 2) {
      for (var i = 0; i < list.length; i += chunkSize * 2) {
        var listA = list.slice(i, i + chunkSize);
        var listB = list.slice(i + chunkSize, i + chunkSize * 2);
        var merged = merge(sortfunc, listA, listB);
        var args = [i, merged.length];
        Array.prototype.push.apply(args, merged);
        Array.prototype.splice.apply(list, args);
      }
    }
    return list;
  }
  var $escape = function $escape2(val) {
    return val.replace(/([!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~])/g, "\\$1");
  };
  function mapValues(obj, f) {
    var newObj = {};
    for (var _key in obj) {
      if (hasOwnProperty(obj, _key))
        newObj[_key] = f(obj[_key], _key, obj);
    }
    return newObj;
  }
  function isnan(x) {
    return typeof x === "number" && isNaN(x);
  }
  function _equal(x, y) {
    if (import_jquery5.default.type(x) === "object" && import_jquery5.default.type(y) === "object") {
      var xo = x;
      var yo = y;
      if (Object.keys(xo).length !== Object.keys(yo).length)
        return false;
      for (var prop in xo) {
        if (!hasOwnProperty(yo, prop) || !_equal(xo[prop], yo[prop]))
          return false;
      }
      return true;
    } else if (import_jquery5.default.type(x) === "array" && import_jquery5.default.type(y) === "array") {
      var xa = x;
      var ya = y;
      if (xa.length !== ya.length)
        return false;
      for (var i = 0; i < xa.length; i++) {
        if (!_equal(xa[i], ya[i]))
          return false;
      }
      return true;
    } else {
      return x === y;
    }
  }
  function equal() {
    if (arguments.length < 2)
      throw new Error("equal requires at least two arguments.");
    for (var i = 0; i < arguments.length - 1; i++) {
      if (!_equal(i < 0 || arguments.length <= i ? void 0 : arguments[i], i + 1 < 0 || arguments.length <= i + 1 ? void 0 : arguments[i + 1]))
        return false;
    }
    return true;
  }
  var compareVersion = function compareVersion2(a, op, b) {
    function versionParts(ver) {
      return (ver + "").replace(/-/, ".").replace(/(\.0)+[^.]*$/, "").split(".");
    }
    function cmpVersion(a2, b2) {
      a2 = versionParts(a2);
      b2 = versionParts(b2);
      var len = Math.min(a2.length, b2.length);
      var cmp;
      for (var i = 0; i < len; i++) {
        cmp = parseInt(a2[i], 10) - parseInt(b2[i], 10);
        if (cmp !== 0) {
          return cmp;
        }
      }
      return a2.length - b2.length;
    }
    var diff = cmpVersion(a, b);
    if (op === "==")
      return diff === 0;
    else if (op === ">=")
      return diff >= 0;
    else if (op === ">")
      return diff > 0;
    else if (op === "<=")
      return diff <= 0;
    else if (op === "<")
      return diff < 0;
    else
      throw "Unknown operator: ".concat(op);
  };
  function updateLabel(labelTxt, labelNode) {
    if (typeof labelTxt === "undefined")
      return;
    if (labelNode.length !== 1) {
      throw new Error("labelNode must be of length 1");
    }
    var emptyLabel = Array.isArray(labelTxt) && labelTxt.length === 0;
    if (emptyLabel) {
      labelNode.addClass("shiny-label-null");
    } else {
      labelNode.text(labelTxt);
      labelNode.removeClass("shiny-label-null");
    }
  }
  function getComputedLinkColor(el) {
    var a = document.createElement("a");
    a.href = "/";
    var div = document.createElement("div");
    div.style.setProperty("position", "absolute", "important");
    div.style.setProperty("top", "-1000px", "important");
    div.style.setProperty("left", "0", "important");
    div.style.setProperty("width", "30px", "important");
    div.style.setProperty("height", "10px", "important");
    div.appendChild(a);
    el.appendChild(div);
    var linkColor = window.getComputedStyle(a).getPropertyValue("color");
    el.removeChild(div);
    return linkColor;
  }
  function isBS3() {
    return !window.bootstrap;
  }
  function toLowerCase(str) {
    return str.toLowerCase();
  }

  // srcts/src/bindings/registry.ts
  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties(Constructor, staticProps);
    return Constructor;
  }
  function _defineProperty(obj, key, value) {
    if (key in obj) {
      Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });
    } else {
      obj[key] = value;
    }
    return obj;
  }
  var BindingRegistry = /* @__PURE__ */ function() {
    function BindingRegistry2() {
      _classCallCheck(this, BindingRegistry2);
      _defineProperty(this, "name", void 0);
      _defineProperty(this, "bindings", []);
      _defineProperty(this, "bindingNames", {});
    }
    _createClass(BindingRegistry2, [{
      key: "register",
      value: function register2(binding, bindingName) {
        var priority = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0;
        var bindingObj = {
          binding: binding,
          priority: priority
        };
        this.bindings.unshift(bindingObj);
        if (bindingName) {
          this.bindingNames[bindingName] = bindingObj;
          binding.name = bindingName;
        }
      }
    }, {
      key: "setPriority",
      value: function setPriority(bindingName, priority) {
        var bindingObj = this.bindingNames[bindingName];
        if (!bindingObj)
          throw "Tried to set priority on unknown binding " + bindingName;
        bindingObj.priority = priority || 0;
      }
    }, {
      key: "getPriority",
      value: function getPriority(bindingName) {
        var bindingObj = this.bindingNames[bindingName];
        if (!bindingObj)
          return false;
        return bindingObj.priority;
      }
    }, {
      key: "getBindings",
      value: function getBindings() {
        return mergeSort(this.bindings, function(a, b) {
          return b.priority - a.priority;
        });
      }
    }]);
    return BindingRegistry2;
  }();

  // srcts/src/bindings/input/inputBinding.ts
  function _classCallCheck2(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties2(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass2(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties2(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties2(Constructor, staticProps);
    return Constructor;
  }
  function _defineProperty2(obj, key, value) {
    if (key in obj) {
      Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });
    } else {
      obj[key] = value;
    }
    return obj;
  }
  var InputBinding = /* @__PURE__ */ function() {
    function InputBinding2() {
      _classCallCheck2(this, InputBinding2);
      _defineProperty2(this, "name", void 0);
    }
    _createClass2(InputBinding2, [{
      key: "find",
      value: function find2(scope) {
        throw "Not implemented";
        scope;
      }
    }, {
      key: "getId",
      value: function getId(el) {
        return el.getAttribute("data-input-id") || el.id;
      }
    }, {
      key: "getType",
      value: function getType(el) {
        return false;
        el;
      }
    }, {
      key: "getValue",
      value: function getValue(el) {
        throw "Not implemented";
        el;
      }
    }, {
      key: "subscribe",
      value: function subscribe(el, callback) {
        el;
        callback;
      }
    }, {
      key: "unsubscribe",
      value: function unsubscribe(el) {
        el;
      }
    }, {
      key: "receiveMessage",
      value: function receiveMessage(el, data) {
        throw "Not implemented";
        el;
        data;
      }
    }, {
      key: "getState",
      value: function getState(el) {
        throw "Not implemented";
        el;
      }
    }, {
      key: "getRatePolicy",
      value: function getRatePolicy(el) {
        return null;
        el;
      }
    }, {
      key: "initialize",
      value: function initialize(el) {
        el;
      }
    }, {
      key: "dispose",
      value: function dispose(el) {
        el;
      }
    }]);
    return InputBinding2;
  }();

  // node_modules/core-js/modules/es.array.find.js
  "use strict";
  var $14 = require_export();
  var $find = require_array_iteration().find;
  var addToUnscopables = require_add_to_unscopables();
  var FIND = "find";
  var SKIPS_HOLES = true;
  if (FIND in [])
    Array(1)[FIND](function() {
      SKIPS_HOLES = false;
    });
  $14({ target: "Array", proto: true, forced: SKIPS_HOLES }, {
    find: function find(callbackfn) {
      return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : void 0);
    }
  });
  addToUnscopables(FIND);

  // node_modules/core-js/modules/es.object.set-prototype-of.js
  var $15 = require_export();
  var setPrototypeOf = require_object_set_prototype_of();
  $15({ target: "Object", stat: true }, {
    setPrototypeOf: setPrototypeOf
  });

  // node_modules/core-js/modules/es.object.get-prototype-of.js
  var $16 = require_export();
  var fails5 = require_fails();
  var toObject4 = require_to_object();
  var nativeGetPrototypeOf = require_object_get_prototype_of();
  var CORRECT_PROTOTYPE_GETTER = require_correct_prototype_getter();
  var FAILS_ON_PRIMITIVES2 = fails5(function() {
    nativeGetPrototypeOf(1);
  });
  $16({ target: "Object", stat: true, forced: FAILS_ON_PRIMITIVES2, sham: !CORRECT_PROTOTYPE_GETTER }, {
    getPrototypeOf: function getPrototypeOf(it) {
      return nativeGetPrototypeOf(toObject4(it));
    }
  });

  // node_modules/core-js/modules/es.reflect.construct.js
  var $17 = require_export();
  var getBuiltIn = require_get_built_in();
  var aFunction = require_a_function();
  var anObject4 = require_an_object();
  var isObject3 = require_is_object();
  var create = require_object_create();
  var bind = require_function_bind();
  var fails6 = require_fails();
  var nativeConstruct = getBuiltIn("Reflect", "construct");
  var NEW_TARGET_BUG = fails6(function() {
    function F() {
    }
    return !(nativeConstruct(function() {
    }, [], F) instanceof F);
  });
  var ARGS_BUG = !fails6(function() {
    nativeConstruct(function() {
    });
  });
  var FORCED3 = NEW_TARGET_BUG || ARGS_BUG;
  $17({ target: "Reflect", stat: true, forced: FORCED3, sham: FORCED3 }, {
    construct: function construct(Target, args) {
      aFunction(Target);
      anObject4(args);
      var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);
      if (ARGS_BUG && !NEW_TARGET_BUG)
        return nativeConstruct(Target, args, newTarget);
      if (Target == newTarget) {
        switch (args.length) {
          case 0:
            return new Target();
          case 1:
            return new Target(args[0]);
          case 2:
            return new Target(args[0], args[1]);
          case 3:
            return new Target(args[0], args[1], args[2]);
          case 4:
            return new Target(args[0], args[1], args[2], args[3]);
        }
        var $args = [null];
        $args.push.apply($args, args);
        return new (bind.apply(Target, $args))();
      }
      var proto = newTarget.prototype;
      var instance = create(isObject3(proto) ? proto : Object.prototype);
      var result = Function.apply.call(Target, instance, args);
      return isObject3(result) ? result : instance;
    }
  });

  // node_modules/core-js/modules/es.symbol.js
  "use strict";
  var $18 = require_export();
  var global2 = require_global();
  var getBuiltIn2 = require_get_built_in();
  var IS_PURE = require_is_pure();
  var DESCRIPTORS2 = require_descriptors();
  var NATIVE_SYMBOL = require_native_symbol();
  var USE_SYMBOL_AS_UID = require_use_symbol_as_uid();
  var fails7 = require_fails();
  var has = require_has();
  var isArray3 = require_is_array();
  var isObject4 = require_is_object();
  var anObject5 = require_an_object();
  var toObject5 = require_to_object();
  var toIndexedObject2 = require_to_indexed_object();
  var toPrimitive = require_to_primitive();
  var createPropertyDescriptor = require_create_property_descriptor();
  var nativeObjectCreate = require_object_create();
  var objectKeys = require_object_keys();
  var getOwnPropertyNamesModule = require_object_get_own_property_names();
  var getOwnPropertyNamesExternal = require_object_get_own_property_names_external();
  var getOwnPropertySymbolsModule = require_object_get_own_property_symbols();
  var getOwnPropertyDescriptorModule = require_object_get_own_property_descriptor();
  var definePropertyModule = require_object_define_property();
  var propertyIsEnumerableModule = require_object_property_is_enumerable();
  var createNonEnumerableProperty = require_create_non_enumerable_property();
  var redefine3 = require_redefine();
  var shared = require_shared();
  var sharedKey = require_shared_key();
  var hiddenKeys = require_hidden_keys();
  var uid = require_uid();
  var wellKnownSymbol3 = require_well_known_symbol();
  var wrappedWellKnownSymbolModule = require_well_known_symbol_wrapped();
  var defineWellKnownSymbol = require_define_well_known_symbol();
  var setToStringTag = require_set_to_string_tag();
  var InternalStateModule = require_internal_state();
  var $forEach = require_array_iteration().forEach;
  var HIDDEN = sharedKey("hidden");
  var SYMBOL = "Symbol";
  var PROTOTYPE = "prototype";
  var TO_PRIMITIVE = wellKnownSymbol3("toPrimitive");
  var setInternalState = InternalStateModule.set;
  var getInternalState = InternalStateModule.getterFor(SYMBOL);
  var ObjectPrototype = Object[PROTOTYPE];
  var $Symbol = global2.Symbol;
  var $stringify = getBuiltIn2("JSON", "stringify");
  var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
  var nativeDefineProperty = definePropertyModule.f;
  var nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;
  var nativePropertyIsEnumerable = propertyIsEnumerableModule.f;
  var AllSymbols = shared("symbols");
  var ObjectPrototypeSymbols = shared("op-symbols");
  var StringToSymbolRegistry = shared("string-to-symbol-registry");
  var SymbolToStringRegistry = shared("symbol-to-string-registry");
  var WellKnownSymbolsStore = shared("wks");
  var QObject = global2.QObject;
  var USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;
  var setSymbolDescriptor = DESCRIPTORS2 && fails7(function() {
    return nativeObjectCreate(nativeDefineProperty({}, "a", {
      get: function() {
        return nativeDefineProperty(this, "a", { value: 7 }).a;
      }
    })).a != 7;
  }) ? function(O, P, Attributes) {
    var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);
    if (ObjectPrototypeDescriptor)
      delete ObjectPrototype[P];
    nativeDefineProperty(O, P, Attributes);
    if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {
      nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);
    }
  } : nativeDefineProperty;
  var wrap = function(tag, description) {
    var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);
    setInternalState(symbol, {
      type: SYMBOL,
      tag: tag,
      description: description
    });
    if (!DESCRIPTORS2)
      symbol.description = description;
    return symbol;
  };
  var isSymbol = USE_SYMBOL_AS_UID ? function(it) {
    return typeof it == "symbol";
  } : function(it) {
    return Object(it) instanceof $Symbol;
  };
  var $defineProperty = function defineProperty2(O, P, Attributes) {
    if (O === ObjectPrototype)
      $defineProperty(ObjectPrototypeSymbols, P, Attributes);
    anObject5(O);
    var key = toPrimitive(P, true);
    anObject5(Attributes);
    if (has(AllSymbols, key)) {
      if (!Attributes.enumerable) {
        if (!has(O, HIDDEN))
          nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));
        O[HIDDEN][key] = true;
      } else {
        if (has(O, HIDDEN) && O[HIDDEN][key])
          O[HIDDEN][key] = false;
        Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });
      }
      return setSymbolDescriptor(O, key, Attributes);
    }
    return nativeDefineProperty(O, key, Attributes);
  };
  var $defineProperties = function defineProperties(O, Properties) {
    anObject5(O);
    var properties = toIndexedObject2(Properties);
    var keys2 = objectKeys(properties).concat($getOwnPropertySymbols(properties));
    $forEach(keys2, function(key) {
      if (!DESCRIPTORS2 || $propertyIsEnumerable.call(properties, key))
        $defineProperty(O, key, properties[key]);
    });
    return O;
  };
  var $create = function create2(O, Properties) {
    return Properties === void 0 ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);
  };
  var $propertyIsEnumerable = function propertyIsEnumerable(V) {
    var P = toPrimitive(V, true);
    var enumerable = nativePropertyIsEnumerable.call(this, P);
    if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P))
      return false;
    return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;
  };
  var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {
    var it = toIndexedObject2(O);
    var key = toPrimitive(P, true);
    if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key))
      return;
    var descriptor = nativeGetOwnPropertyDescriptor(it, key);
    if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {
      descriptor.enumerable = true;
    }
    return descriptor;
  };
  var $getOwnPropertyNames = function getOwnPropertyNames(O) {
    var names = nativeGetOwnPropertyNames(toIndexedObject2(O));
    var result = [];
    $forEach(names, function(key) {
      if (!has(AllSymbols, key) && !has(hiddenKeys, key))
        result.push(key);
    });
    return result;
  };
  var $getOwnPropertySymbols = function getOwnPropertySymbols(O) {
    var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;
    var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject2(O));
    var result = [];
    $forEach(names, function(key) {
      if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {
        result.push(AllSymbols[key]);
      }
    });
    return result;
  };
  if (!NATIVE_SYMBOL) {
    $Symbol = function Symbol2() {
      if (this instanceof $Symbol)
        throw TypeError("Symbol is not a constructor");
      var description = !arguments.length || arguments[0] === void 0 ? void 0 : String(arguments[0]);
      var tag = uid(description);
      var setter = function(value) {
        if (this === ObjectPrototype)
          setter.call(ObjectPrototypeSymbols, value);
        if (has(this, HIDDEN) && has(this[HIDDEN], tag))
          this[HIDDEN][tag] = false;
        setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));
      };
      if (DESCRIPTORS2 && USE_SETTER)
        setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });
      return wrap(tag, description);
    };
    redefine3($Symbol[PROTOTYPE], "toString", function toString2() {
      return getInternalState(this).tag;
    });
    redefine3($Symbol, "withoutSetter", function(description) {
      return wrap(uid(description), description);
    });
    propertyIsEnumerableModule.f = $propertyIsEnumerable;
    definePropertyModule.f = $defineProperty;
    getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;
    getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;
    getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;
    wrappedWellKnownSymbolModule.f = function(name) {
      return wrap(wellKnownSymbol3(name), name);
    };
    if (DESCRIPTORS2) {
      nativeDefineProperty($Symbol[PROTOTYPE], "description", {
        configurable: true,
        get: function description() {
          return getInternalState(this).description;
        }
      });
      if (!IS_PURE) {
        redefine3(ObjectPrototype, "propertyIsEnumerable", $propertyIsEnumerable, { unsafe: true });
      }
    }
  }
  $18({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {
    Symbol: $Symbol
  });
  $forEach(objectKeys(WellKnownSymbolsStore), function(name) {
    defineWellKnownSymbol(name);
  });
  $18({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {
    "for": function(key) {
      var string = String(key);
      if (has(StringToSymbolRegistry, string))
        return StringToSymbolRegistry[string];
      var symbol = $Symbol(string);
      StringToSymbolRegistry[string] = symbol;
      SymbolToStringRegistry[symbol] = string;
      return symbol;
    },
    keyFor: function keyFor(sym) {
      if (!isSymbol(sym))
        throw TypeError(sym + " is not a symbol");
      if (has(SymbolToStringRegistry, sym))
        return SymbolToStringRegistry[sym];
    },
    useSetter: function() {
      USE_SETTER = true;
    },
    useSimple: function() {
      USE_SETTER = false;
    }
  });
  $18({ target: "Object", stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS2 }, {
    create: $create,
    defineProperty: $defineProperty,
    defineProperties: $defineProperties,
    getOwnPropertyDescriptor: $getOwnPropertyDescriptor
  });
  $18({ target: "Object", stat: true, forced: !NATIVE_SYMBOL }, {
    getOwnPropertyNames: $getOwnPropertyNames,
    getOwnPropertySymbols: $getOwnPropertySymbols
  });
  $18({ target: "Object", stat: true, forced: fails7(function() {
    getOwnPropertySymbolsModule.f(1);
  }) }, {
    getOwnPropertySymbols: function getOwnPropertySymbols2(it) {
      return getOwnPropertySymbolsModule.f(toObject5(it));
    }
  });
  if ($stringify) {
    FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails7(function() {
      var symbol = $Symbol();
      return $stringify([symbol]) != "[null]" || $stringify({ a: symbol }) != "{}" || $stringify(Object(symbol)) != "{}";
    });
    $18({ target: "JSON", stat: true, forced: FORCED_JSON_STRINGIFY }, {
      stringify: function stringify(it, replacer, space) {
        var args = [it];
        var index = 1;
        var $replacer;
        while (arguments.length > index)
          args.push(arguments[index++]);
        $replacer = replacer;
        if (!isObject4(replacer) && it === void 0 || isSymbol(it))
          return;
        if (!isArray3(replacer))
          replacer = function(key, value) {
            if (typeof $replacer == "function")
              value = $replacer.call(this, key, value);
            if (!isSymbol(value))
              return value;
          };
        args[1] = replacer;
        return $stringify.apply(null, args);
      }
    });
  }
  var FORCED_JSON_STRINGIFY;
  if (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {
    createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
  }
  setToStringTag($Symbol, SYMBOL);
  hiddenKeys[HIDDEN] = true;

  // node_modules/core-js/modules/es.symbol.description.js
  "use strict";
  var $19 = require_export();
  var DESCRIPTORS3 = require_descriptors();
  var global3 = require_global();
  var has2 = require_has();
  var isObject5 = require_is_object();
  var defineProperty3 = require_object_define_property().f;
  var copyConstructorProperties = require_copy_constructor_properties();
  var NativeSymbol = global3.Symbol;
  if (DESCRIPTORS3 && typeof NativeSymbol == "function" && (!("description" in NativeSymbol.prototype) || NativeSymbol().description !== void 0)) {
    EmptyStringDescriptionStore = {};
    SymbolWrapper = function Symbol2() {
      var description = arguments.length < 1 || arguments[0] === void 0 ? void 0 : String(arguments[0]);
      var result = this instanceof SymbolWrapper ? new NativeSymbol(description) : description === void 0 ? NativeSymbol() : NativeSymbol(description);
      if (description === "")
        EmptyStringDescriptionStore[result] = true;
      return result;
    };
    copyConstructorProperties(SymbolWrapper, NativeSymbol);
    symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;
    symbolPrototype.constructor = SymbolWrapper;
    symbolToString = symbolPrototype.toString;
    native = String(NativeSymbol("test")) == "Symbol(test)";
    regexp = /^Symbol\((.*)\)[^)]+$/;
    defineProperty3(symbolPrototype, "description", {
      configurable: true,
      get: function description() {
        var symbol = isObject5(this) ? this.valueOf() : this;
        var string = symbolToString.call(symbol);
        if (has2(EmptyStringDescriptionStore, symbol))
          return "";
        var desc = native ? string.slice(7, -1) : string.replace(regexp, "$1");
        return desc === "" ? void 0 : desc;
      }
    });
    $19({ global: true, forced: true }, {
      Symbol: SymbolWrapper
    });
  }
  var EmptyStringDescriptionStore;
  var SymbolWrapper;
  var symbolPrototype;
  var symbolToString;
  var native;
  var regexp;

  // node_modules/core-js/modules/es.symbol.iterator.js
  var defineWellKnownSymbol2 = require_define_well_known_symbol();
  defineWellKnownSymbol2("iterator");

  // srcts/src/bindings/input/checkbox.ts
  var import_es_array_iterator = __toModule(require_es_array_iterator());

  // node_modules/core-js/modules/es.string.iterator.js
  "use strict";
  var charAt = require_string_multibyte().charAt;
  var InternalStateModule2 = require_internal_state();
  var defineIterator = require_define_iterator();
  var STRING_ITERATOR = "String Iterator";
  var setInternalState2 = InternalStateModule2.set;
  var getInternalState2 = InternalStateModule2.getterFor(STRING_ITERATOR);
  defineIterator(String, "String", function(iterated) {
    setInternalState2(this, {
      type: STRING_ITERATOR,
      string: String(iterated),
      index: 0
    });
  }, function next() {
    var state = getInternalState2(this);
    var string = state.string;
    var index = state.index;
    var point;
    if (index >= string.length)
      return { value: void 0, done: true };
    point = charAt(string, index);
    state.index += point.length;
    return { value: point, done: false };
  });

  // node_modules/core-js/modules/web.dom-collections.iterator.js
  var global4 = require_global();
  var DOMIterables = require_dom_iterables();
  var ArrayIteratorMethods = require_es_array_iterator();
  var createNonEnumerableProperty2 = require_create_non_enumerable_property();
  var wellKnownSymbol4 = require_well_known_symbol();
  var ITERATOR = wellKnownSymbol4("iterator");
  var TO_STRING_TAG = wellKnownSymbol4("toStringTag");
  var ArrayValues = ArrayIteratorMethods.values;
  for (var COLLECTION_NAME in DOMIterables) {
    Collection = global4[COLLECTION_NAME];
    CollectionPrototype = Collection && Collection.prototype;
    if (CollectionPrototype) {
      if (CollectionPrototype[ITERATOR] !== ArrayValues)
        try {
          createNonEnumerableProperty2(CollectionPrototype, ITERATOR, ArrayValues);
        } catch (error) {
          CollectionPrototype[ITERATOR] = ArrayValues;
        }
      if (!CollectionPrototype[TO_STRING_TAG]) {
        createNonEnumerableProperty2(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);
      }
      if (DOMIterables[COLLECTION_NAME])
        for (METHOD_NAME in ArrayIteratorMethods) {
          if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME])
            try {
              createNonEnumerableProperty2(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);
            } catch (error) {
              CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];
            }
        }
    }
  }
  var Collection;
  var CollectionPrototype;
  var METHOD_NAME;

  // srcts/src/bindings/input/checkbox.ts
  var import_jquery6 = __toModule(require_jquery());
  function _typeof(obj) {
    "@babel/helpers - typeof";
    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
      _typeof = function _typeof27(obj2) {
        return typeof obj2;
      };
    } else {
      _typeof = function _typeof27(obj2) {
        return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
      };
    }
    return _typeof(obj);
  }
  function _classCallCheck3(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties3(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass3(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties3(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties3(Constructor, staticProps);
    return Constructor;
  }
  function _inherits(subClass, superClass) {
    if (typeof superClass !== "function" && superClass !== null) {
      throw new TypeError("Super expression must either be null or a function");
    }
    subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });
    if (superClass)
      _setPrototypeOf(subClass, superClass);
  }
  function _setPrototypeOf(o, p) {
    _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf26(o2, p2) {
      o2.__proto__ = p2;
      return o2;
    };
    return _setPrototypeOf(o, p);
  }
  function _createSuper(Derived) {
    var hasNativeReflectConstruct = _isNativeReflectConstruct();
    return function _createSuperInternal() {
      var Super = _getPrototypeOf(Derived), result;
      if (hasNativeReflectConstruct) {
        var NewTarget = _getPrototypeOf(this).constructor;
        result = Reflect.construct(Super, arguments, NewTarget);
      } else {
        result = Super.apply(this, arguments);
      }
      return _possibleConstructorReturn(this, result);
    };
  }
  function _possibleConstructorReturn(self2, call) {
    if (call && (_typeof(call) === "object" || typeof call === "function")) {
      return call;
    }
    return _assertThisInitialized(self2);
  }
  function _assertThisInitialized(self2) {
    if (self2 === void 0) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }
    return self2;
  }
  function _isNativeReflectConstruct() {
    if (typeof Reflect === "undefined" || !Reflect.construct)
      return false;
    if (Reflect.construct.sham)
      return false;
    if (typeof Proxy === "function")
      return true;
    try {
      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
      }));
      return true;
    } catch (e) {
      return false;
    }
  }
  function _getPrototypeOf(o) {
    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf26(o2) {
      return o2.__proto__ || Object.getPrototypeOf(o2);
    };
    return _getPrototypeOf(o);
  }
  var CheckboxInputBinding = /* @__PURE__ */ function(_InputBinding) {
    _inherits(CheckboxInputBinding2, _InputBinding);
    var _super = _createSuper(CheckboxInputBinding2);
    function CheckboxInputBinding2() {
      _classCallCheck3(this, CheckboxInputBinding2);
      return _super.apply(this, arguments);
    }
    _createClass3(CheckboxInputBinding2, [{
      key: "find",
      value: function find2(scope) {
        return (0, import_jquery6.default)(scope).find('input[type="checkbox"]');
      }
    }, {
      key: "getValue",
      value: function getValue(el) {
        return el.checked;
      }
    }, {
      key: "setValue",
      value: function setValue(el, value) {
        el.checked = value;
      }
    }, {
      key: "subscribe",
      value: function subscribe(el, callback) {
        (0, import_jquery6.default)(el).on("change.checkboxInputBinding", function() {
          callback(true);
        });
      }
    }, {
      key: "unsubscribe",
      value: function unsubscribe(el) {
        (0, import_jquery6.default)(el).off(".checkboxInputBinding");
      }
    }, {
      key: "getState",
      value: function getState(el) {
        return {
          label: (0, import_jquery6.default)(el).parent().find("span").text(),
          value: el.checked
        };
      }
    }, {
      key: "receiveMessage",
      value: function receiveMessage(el, data) {
        if (hasOwnProperty(data, "value"))
          el.checked = data.value;
        if (hasOwnProperty(data, "label"))
          (0, import_jquery6.default)(el).parent().find("span").text(data.label);
        (0, import_jquery6.default)(el).trigger("change");
      }
    }]);
    return CheckboxInputBinding2;
  }(InputBinding);

  // node_modules/core-js/modules/es.string.trim.js
  "use strict";
  var $21 = require_export();
  var $trim = require_string_trim().trim;
  var forcedStringTrimMethod = require_string_trim_forced();
  $21({ target: "String", proto: true, forced: forcedStringTrimMethod("trim") }, {
    trim: function trim() {
      return $trim(this);
    }
  });

  // srcts/src/bindings/input/checkboxgroup.ts
  var import_es_array_iterator2 = __toModule(require_es_array_iterator());
  var import_jquery7 = __toModule(require_jquery());
  function _typeof2(obj) {
    "@babel/helpers - typeof";
    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
      _typeof2 = function _typeof27(obj2) {
        return typeof obj2;
      };
    } else {
      _typeof2 = function _typeof27(obj2) {
        return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
      };
    }
    return _typeof2(obj);
  }
  function _classCallCheck4(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties4(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass4(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties4(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties4(Constructor, staticProps);
    return Constructor;
  }
  function _inherits2(subClass, superClass) {
    if (typeof superClass !== "function" && superClass !== null) {
      throw new TypeError("Super expression must either be null or a function");
    }
    subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });
    if (superClass)
      _setPrototypeOf2(subClass, superClass);
  }
  function _setPrototypeOf2(o, p) {
    _setPrototypeOf2 = Object.setPrototypeOf || function _setPrototypeOf26(o2, p2) {
      o2.__proto__ = p2;
      return o2;
    };
    return _setPrototypeOf2(o, p);
  }
  function _createSuper2(Derived) {
    var hasNativeReflectConstruct = _isNativeReflectConstruct2();
    return function _createSuperInternal() {
      var Super = _getPrototypeOf2(Derived), result;
      if (hasNativeReflectConstruct) {
        var NewTarget = _getPrototypeOf2(this).constructor;
        result = Reflect.construct(Super, arguments, NewTarget);
      } else {
        result = Super.apply(this, arguments);
      }
      return _possibleConstructorReturn2(this, result);
    };
  }
  function _possibleConstructorReturn2(self2, call) {
    if (call && (_typeof2(call) === "object" || typeof call === "function")) {
      return call;
    }
    return _assertThisInitialized2(self2);
  }
  function _assertThisInitialized2(self2) {
    if (self2 === void 0) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }
    return self2;
  }
  function _isNativeReflectConstruct2() {
    if (typeof Reflect === "undefined" || !Reflect.construct)
      return false;
    if (Reflect.construct.sham)
      return false;
    if (typeof Proxy === "function")
      return true;
    try {
      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
      }));
      return true;
    } catch (e) {
      return false;
    }
  }
  function _getPrototypeOf2(o) {
    _getPrototypeOf2 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf26(o2) {
      return o2.__proto__ || Object.getPrototypeOf(o2);
    };
    return _getPrototypeOf2(o);
  }
  function getLabelNode(el) {
    return (0, import_jquery7.default)(el).find('label[for="' + $escape(el.id) + '"]');
  }
  function getLabel(obj) {
    if (obj.parentNode.tagName === "LABEL") {
      return (0, import_jquery7.default)(obj.parentNode).find("span").text().trim();
    }
    return null;
  }
  var CheckboxGroupInputBinding = /* @__PURE__ */ function(_InputBinding) {
    _inherits2(CheckboxGroupInputBinding2, _InputBinding);
    var _super = _createSuper2(CheckboxGroupInputBinding2);
    function CheckboxGroupInputBinding2() {
      _classCallCheck4(this, CheckboxGroupInputBinding2);
      return _super.apply(this, arguments);
    }
    _createClass4(CheckboxGroupInputBinding2, [{
      key: "find",
      value: function find2(scope) {
        return (0, import_jquery7.default)(scope).find(".shiny-input-checkboxgroup");
      }
    }, {
      key: "getValue",
      value: function getValue(el) {
        var $objs = (0, import_jquery7.default)('input:checkbox[name="' + $escape(el.id) + '"]:checked');
        var values = new Array($objs.length);
        for (var i = 0; i < $objs.length; i++) {
          values[i] = $objs[i].value;
        }
        return values;
      }
    }, {
      key: "setValue",
      value: function setValue(el, value) {
        (0, import_jquery7.default)('input:checkbox[name="' + $escape(el.id) + '"]').prop("checked", false);
        if (value instanceof Array) {
          for (var i = 0; i < value.length; i++) {
            (0, import_jquery7.default)('input:checkbox[name="' + $escape(el.id) + '"][value="' + $escape(value[i]) + '"]').prop("checked", true);
          }
        } else {
          (0, import_jquery7.default)('input:checkbox[name="' + $escape(el.id) + '"][value="' + $escape(value) + '"]').prop("checked", true);
        }
      }
    }, {
      key: "getState",
      value: function getState(el) {
        var $objs = (0, import_jquery7.default)('input:checkbox[name="' + $escape(el.id) + '"]');
        var options = new Array($objs.length);
        for (var i = 0; i < options.length; i++) {
          options[i] = {
            value: $objs[i].value,
            label: getLabel($objs[i])
          };
        }
        return {
          label: getLabelNode(el).text(),
          value: this.getValue(el),
          options: options
        };
      }
    }, {
      key: "receiveMessage",
      value: function receiveMessage(el, data) {
        var $el = (0, import_jquery7.default)(el);
        if (hasOwnProperty(data, "options")) {
          $el.find("div.shiny-options-group").remove();
          $el.find("label.checkbox").remove();
          $el.append(data.options);
        }
        if (hasOwnProperty(data, "value"))
          this.setValue(el, data.value);
        updateLabel(data.label, getLabelNode(el));
        (0, import_jquery7.default)(el).trigger("change");
      }
    }, {
      key: "subscribe",
      value: function subscribe(el, callback) {
        (0, import_jquery7.default)(el).on("change.checkboxGroupInputBinding", function() {
          callback(false);
        });
      }
    }, {
      key: "unsubscribe",
      value: function unsubscribe(el) {
        (0, import_jquery7.default)(el).off(".checkboxGroupInputBinding");
      }
    }]);
    return CheckboxGroupInputBinding2;
  }(InputBinding);

  // node_modules/core-js/modules/es.number.constructor.js
  "use strict";
  var DESCRIPTORS4 = require_descriptors();
  var global5 = require_global();
  var isForced = require_is_forced();
  var redefine4 = require_redefine();
  var has3 = require_has();
  var classof = require_classof_raw();
  var inheritIfRequired = require_inherit_if_required();
  var toPrimitive2 = require_to_primitive();
  var fails8 = require_fails();
  var create3 = require_object_create();
  var getOwnPropertyNames2 = require_object_get_own_property_names().f;
  var getOwnPropertyDescriptor2 = require_object_get_own_property_descriptor().f;
  var defineProperty4 = require_object_define_property().f;
  var trim2 = require_string_trim().trim;
  var NUMBER = "Number";
  var NativeNumber = global5[NUMBER];
  var NumberPrototype = NativeNumber.prototype;
  var BROKEN_CLASSOF = classof(create3(NumberPrototype)) == NUMBER;
  var toNumber = function(argument) {
    var it = toPrimitive2(argument, false);
    var first, third, radix, maxCode, digits, length, index, code;
    if (typeof it == "string" && it.length > 2) {
      it = trim2(it);
      first = it.charCodeAt(0);
      if (first === 43 || first === 45) {
        third = it.charCodeAt(2);
        if (third === 88 || third === 120)
          return NaN;
      } else if (first === 48) {
        switch (it.charCodeAt(1)) {
          case 66:
          case 98:
            radix = 2;
            maxCode = 49;
            break;
          case 79:
          case 111:
            radix = 8;
            maxCode = 55;
            break;
          default:
            return +it;
        }
        digits = it.slice(2);
        length = digits.length;
        for (index = 0; index < length; index++) {
          code = digits.charCodeAt(index);
          if (code < 48 || code > maxCode)
            return NaN;
        }
        return parseInt(digits, radix);
      }
    }
    return +it;
  };
  if (isForced(NUMBER, !NativeNumber(" 0o1") || !NativeNumber("0b1") || NativeNumber("+0x1"))) {
    NumberWrapper = function Number2(value) {
      var it = arguments.length < 1 ? 0 : value;
      var dummy = this;
      return dummy instanceof NumberWrapper && (BROKEN_CLASSOF ? fails8(function() {
        NumberPrototype.valueOf.call(dummy);
      }) : classof(dummy) != NUMBER) ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);
    };
    for (keys2 = DESCRIPTORS4 ? getOwnPropertyNames2(NativeNumber) : "MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,fromString,range".split(","), j = 0; keys2.length > j; j++) {
      if (has3(NativeNumber, key = keys2[j]) && !has3(NumberWrapper, key)) {
        defineProperty4(NumberWrapper, key, getOwnPropertyDescriptor2(NativeNumber, key));
      }
    }
    NumberWrapper.prototype = NumberPrototype;
    NumberPrototype.constructor = NumberWrapper;
    redefine4(global5, NUMBER, NumberWrapper);
  }
  var NumberWrapper;
  var keys2;
  var j;
  var key;

  // srcts/src/bindings/input/number.ts
  var import_es_array_iterator4 = __toModule(require_es_array_iterator());
  var import_jquery9 = __toModule(require_jquery());

  // node_modules/core-js/modules/es.reflect.get.js
  var $23 = require_export();
  var isObject6 = require_is_object();
  var anObject6 = require_an_object();
  var has4 = require_has();
  var getOwnPropertyDescriptorModule2 = require_object_get_own_property_descriptor();
  var getPrototypeOf2 = require_object_get_prototype_of();
  function get(target, propertyKey) {
    var receiver = arguments.length < 3 ? target : arguments[2];
    var descriptor, prototype;
    if (anObject6(target) === receiver)
      return target[propertyKey];
    if (descriptor = getOwnPropertyDescriptorModule2.f(target, propertyKey))
      return has4(descriptor, "value") ? descriptor.value : descriptor.get === void 0 ? void 0 : descriptor.get.call(receiver);
    if (isObject6(prototype = getPrototypeOf2(target)))
      return get(prototype, propertyKey, receiver);
  }
  $23({ target: "Reflect", stat: true }, {
    get: get
  });

  // node_modules/core-js/modules/es.object.get-own-property-descriptor.js
  var $24 = require_export();
  var fails9 = require_fails();
  var toIndexedObject3 = require_to_indexed_object();
  var nativeGetOwnPropertyDescriptor2 = require_object_get_own_property_descriptor().f;
  var DESCRIPTORS5 = require_descriptors();
  var FAILS_ON_PRIMITIVES3 = fails9(function() {
    nativeGetOwnPropertyDescriptor2(1);
  });
  var FORCED4 = !DESCRIPTORS5 || FAILS_ON_PRIMITIVES3;
  $24({ target: "Object", stat: true, forced: FORCED4, sham: !DESCRIPTORS5 }, {
    getOwnPropertyDescriptor: function getOwnPropertyDescriptor3(it, key) {
      return nativeGetOwnPropertyDescriptor2(toIndexedObject3(it), key);
    }
  });

  // srcts/src/bindings/input/text.ts
  var import_es_array_iterator3 = __toModule(require_es_array_iterator());
  var import_jquery8 = __toModule(require_jquery());
  function _typeof3(obj) {
    "@babel/helpers - typeof";
    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
      _typeof3 = function _typeof27(obj2) {
        return typeof obj2;
      };
    } else {
      _typeof3 = function _typeof27(obj2) {
        return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
      };
    }
    return _typeof3(obj);
  }
  function _classCallCheck5(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties5(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass5(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties5(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties5(Constructor, staticProps);
    return Constructor;
  }
  function _get(target, property, receiver) {
    if (typeof Reflect !== "undefined" && Reflect.get) {
      _get = Reflect.get;
    } else {
      _get = function _get2(target2, property2, receiver2) {
        var base = _superPropBase(target2, property2);
        if (!base)
          return;
        var desc = Object.getOwnPropertyDescriptor(base, property2);
        if (desc.get) {
          return desc.get.call(receiver2);
        }
        return desc.value;
      };
    }
    return _get(target, property, receiver || target);
  }
  function _superPropBase(object, property) {
    while (!Object.prototype.hasOwnProperty.call(object, property)) {
      object = _getPrototypeOf3(object);
      if (object === null)
        break;
    }
    return object;
  }
  function _inherits3(subClass, superClass) {
    if (typeof superClass !== "function" && superClass !== null) {
      throw new TypeError("Super expression must either be null or a function");
    }
    subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });
    if (superClass)
      _setPrototypeOf3(subClass, superClass);
  }
  function _setPrototypeOf3(o, p) {
    _setPrototypeOf3 = Object.setPrototypeOf || function _setPrototypeOf26(o2, p2) {
      o2.__proto__ = p2;
      return o2;
    };
    return _setPrototypeOf3(o, p);
  }
  function _createSuper3(Derived) {
    var hasNativeReflectConstruct = _isNativeReflectConstruct3();
    return function _createSuperInternal() {
      var Super = _getPrototypeOf3(Derived), result;
      if (hasNativeReflectConstruct) {
        var NewTarget = _getPrototypeOf3(this).constructor;
        result = Reflect.construct(Super, arguments, NewTarget);
      } else {
        result = Super.apply(this, arguments);
      }
      return _possibleConstructorReturn3(this, result);
    };
  }
  function _possibleConstructorReturn3(self2, call) {
    if (call && (_typeof3(call) === "object" || typeof call === "function")) {
      return call;
    }
    return _assertThisInitialized3(self2);
  }
  function _assertThisInitialized3(self2) {
    if (self2 === void 0) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }
    return self2;
  }
  function _isNativeReflectConstruct3() {
    if (typeof Reflect === "undefined" || !Reflect.construct)
      return false;
    if (Reflect.construct.sham)
      return false;
    if (typeof Proxy === "function")
      return true;
    try {
      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
      }));
      return true;
    } catch (e) {
      return false;
    }
  }
  function _getPrototypeOf3(o) {
    _getPrototypeOf3 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf26(o2) {
      return o2.__proto__ || Object.getPrototypeOf(o2);
    };
    return _getPrototypeOf3(o);
  }
  function getLabelNode2(el) {
    return (0, import_jquery8.default)(el).parent().find('label[for="' + $escape(el.id) + '"]');
  }
  var TextInputBindingBase = /* @__PURE__ */ function(_InputBinding) {
    _inherits3(TextInputBindingBase2, _InputBinding);
    var _super = _createSuper3(TextInputBindingBase2);
    function TextInputBindingBase2() {
      _classCallCheck5(this, TextInputBindingBase2);
      return _super.apply(this, arguments);
    }
    _createClass5(TextInputBindingBase2, [{
      key: "find",
      value: function find2(scope) {
        var $inputs = (0, import_jquery8.default)(scope).find('input[type="text"], input[type="search"], input[type="url"], input[type="email"]');
        return $inputs.not('input[type="text"][id$="-selectized"]');
      }
    }, {
      key: "getId",
      value: function getId(el) {
        return _get(_getPrototypeOf3(TextInputBindingBase2.prototype), "getId", this).call(this, el) || el.name;
      }
    }, {
      key: "getValue",
      value: function getValue(el) {
        throw "not implemented";
        el;
      }
    }, {
      key: "setValue",
      value: function setValue(el, value) {
        throw "not implemented";
        el;
        value;
      }
    }, {
      key: "subscribe",
      value: function subscribe(el, callback) {
        (0, import_jquery8.default)(el).on("keyup.textInputBinding input.textInputBinding", function() {
          callback(true);
        });
        (0, import_jquery8.default)(el).on("change.textInputBinding", function() {
          callback(false);
        });
      }
    }, {
      key: "unsubscribe",
      value: function unsubscribe(el) {
        (0, import_jquery8.default)(el).off(".textInputBinding");
      }
    }, {
      key: "receiveMessage",
      value: function receiveMessage(el, data) {
        throw "not implemented";
        el;
        data;
      }
    }, {
      key: "getState",
      value: function getState(el) {
        throw "not implemented";
        el;
      }
    }, {
      key: "getRatePolicy",
      value: function getRatePolicy(el) {
        return {
          policy: "debounce",
          delay: 250
        };
        el;
      }
    }]);
    return TextInputBindingBase2;
  }(InputBinding);
  var TextInputBinding = /* @__PURE__ */ function(_TextInputBindingBase) {
    _inherits3(TextInputBinding2, _TextInputBindingBase);
    var _super2 = _createSuper3(TextInputBinding2);
    function TextInputBinding2() {
      _classCallCheck5(this, TextInputBinding2);
      return _super2.apply(this, arguments);
    }
    _createClass5(TextInputBinding2, [{
      key: "setValue",
      value: function setValue(el, value) {
        el.value = value;
      }
    }, {
      key: "getValue",
      value: function getValue(el) {
        return el.value;
      }
    }, {
      key: "getState",
      value: function getState(el) {
        return {
          label: getLabelNode2(el).text(),
          value: el.value,
          placeholder: el.placeholder
        };
      }
    }, {
      key: "receiveMessage",
      value: function receiveMessage(el, data) {
        if (hasOwnProperty(data, "value"))
          this.setValue(el, data.value);
        updateLabel(data.label, getLabelNode2(el));
        if (hasOwnProperty(data, "placeholder"))
          el.placeholder = data.placeholder;
        (0, import_jquery8.default)(el).trigger("change");
      }
    }]);
    return TextInputBinding2;
  }(TextInputBindingBase);

  // srcts/src/bindings/input/number.ts
  function _typeof4(obj) {
    "@babel/helpers - typeof";
    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
      _typeof4 = function _typeof27(obj2) {
        return typeof obj2;
      };
    } else {
      _typeof4 = function _typeof27(obj2) {
        return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
      };
    }
    return _typeof4(obj);
  }
  function _classCallCheck6(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties6(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass6(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties6(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties6(Constructor, staticProps);
    return Constructor;
  }
  function _inherits4(subClass, superClass) {
    if (typeof superClass !== "function" && superClass !== null) {
      throw new TypeError("Super expression must either be null or a function");
    }
    subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });
    if (superClass)
      _setPrototypeOf4(subClass, superClass);
  }
  function _setPrototypeOf4(o, p) {
    _setPrototypeOf4 = Object.setPrototypeOf || function _setPrototypeOf26(o2, p2) {
      o2.__proto__ = p2;
      return o2;
    };
    return _setPrototypeOf4(o, p);
  }
  function _createSuper4(Derived) {
    var hasNativeReflectConstruct = _isNativeReflectConstruct4();
    return function _createSuperInternal() {
      var Super = _getPrototypeOf4(Derived), result;
      if (hasNativeReflectConstruct) {
        var NewTarget = _getPrototypeOf4(this).constructor;
        result = Reflect.construct(Super, arguments, NewTarget);
      } else {
        result = Super.apply(this, arguments);
      }
      return _possibleConstructorReturn4(this, result);
    };
  }
  function _possibleConstructorReturn4(self2, call) {
    if (call && (_typeof4(call) === "object" || typeof call === "function")) {
      return call;
    }
    return _assertThisInitialized4(self2);
  }
  function _assertThisInitialized4(self2) {
    if (self2 === void 0) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }
    return self2;
  }
  function _isNativeReflectConstruct4() {
    if (typeof Reflect === "undefined" || !Reflect.construct)
      return false;
    if (Reflect.construct.sham)
      return false;
    if (typeof Proxy === "function")
      return true;
    try {
      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
      }));
      return true;
    } catch (e) {
      return false;
    }
  }
  function _getPrototypeOf4(o) {
    _getPrototypeOf4 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf26(o2) {
      return o2.__proto__ || Object.getPrototypeOf(o2);
    };
    return _getPrototypeOf4(o);
  }
  function getLabelNode3(el) {
    return (0, import_jquery9.default)(el).parent().find('label[for="' + $escape(el.id) + '"]');
  }
  var NumberInputBinding = /* @__PURE__ */ function(_TextInputBindingBase) {
    _inherits4(NumberInputBinding2, _TextInputBindingBase);
    var _super = _createSuper4(NumberInputBinding2);
    function NumberInputBinding2() {
      _classCallCheck6(this, NumberInputBinding2);
      return _super.apply(this, arguments);
    }
    _createClass6(NumberInputBinding2, [{
      key: "find",
      value: function find2(scope) {
        return (0, import_jquery9.default)(scope).find('input[type="number"]');
      }
    }, {
      key: "getValue",
      value: function getValue(el) {
        var numberVal = (0, import_jquery9.default)(el).val();
        if (typeof numberVal == "string") {
          if (/^\s*$/.test(numberVal))
            return null;
        }
        var numberValue = Number(numberVal);
        if (!isNaN(numberValue)) {
          return numberValue;
        }
        return numberVal;
      }
    }, {
      key: "setValue",
      value: function setValue(el, value) {
        el.value = "" + value;
      }
    }, {
      key: "getType",
      value: function getType(el) {
        return "shiny.number";
        el;
      }
    }, {
      key: "receiveMessage",
      value: function receiveMessage(el, data) {
        if (hasOwnProperty(data, "value"))
          el.value = data.value;
        if (hasOwnProperty(data, "min"))
          el.min = data.min;
        if (hasOwnProperty(data, "max"))
          el.max = data.max;
        if (hasOwnProperty(data, "step"))
          el.step = data.step;
        updateLabel(data.label, getLabelNode3(el));
        (0, import_jquery9.default)(el).trigger("change");
      }
    }, {
      key: "getState",
      value: function getState(el) {
        return {
          label: getLabelNode3(el).text(),
          value: this.getValue(el),
          min: Number(el.min),
          max: Number(el.max),
          step: Number(el.step)
        };
      }
    }]);
    return NumberInputBinding2;
  }(TextInputBindingBase);

  // srcts/src/bindings/input/password.ts
  var import_es_array_iterator5 = __toModule(require_es_array_iterator());
  var import_jquery10 = __toModule(require_jquery());
  function _typeof5(obj) {
    "@babel/helpers - typeof";
    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
      _typeof5 = function _typeof27(obj2) {
        return typeof obj2;
      };
    } else {
      _typeof5 = function _typeof27(obj2) {
        return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
      };
    }
    return _typeof5(obj);
  }
  function _classCallCheck7(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties7(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass7(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties7(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties7(Constructor, staticProps);
    return Constructor;
  }
  function _inherits5(subClass, superClass) {
    if (typeof superClass !== "function" && superClass !== null) {
      throw new TypeError("Super expression must either be null or a function");
    }
    subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });
    if (superClass)
      _setPrototypeOf5(subClass, superClass);
  }
  function _setPrototypeOf5(o, p) {
    _setPrototypeOf5 = Object.setPrototypeOf || function _setPrototypeOf26(o2, p2) {
      o2.__proto__ = p2;
      return o2;
    };
    return _setPrototypeOf5(o, p);
  }
  function _createSuper5(Derived) {
    var hasNativeReflectConstruct = _isNativeReflectConstruct5();
    return function _createSuperInternal() {
      var Super = _getPrototypeOf5(Derived), result;
      if (hasNativeReflectConstruct) {
        var NewTarget = _getPrototypeOf5(this).constructor;
        result = Reflect.construct(Super, arguments, NewTarget);
      } else {
        result = Super.apply(this, arguments);
      }
      return _possibleConstructorReturn5(this, result);
    };
  }
  function _possibleConstructorReturn5(self2, call) {
    if (call && (_typeof5(call) === "object" || typeof call === "function")) {
      return call;
    }
    return _assertThisInitialized5(self2);
  }
  function _assertThisInitialized5(self2) {
    if (self2 === void 0) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }
    return self2;
  }
  function _isNativeReflectConstruct5() {
    if (typeof Reflect === "undefined" || !Reflect.construct)
      return false;
    if (Reflect.construct.sham)
      return false;
    if (typeof Proxy === "function")
      return true;
    try {
      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
      }));
      return true;
    } catch (e) {
      return false;
    }
  }
  function _getPrototypeOf5(o) {
    _getPrototypeOf5 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf26(o2) {
      return o2.__proto__ || Object.getPrototypeOf(o2);
    };
    return _getPrototypeOf5(o);
  }
  var PasswordInputBinding = /* @__PURE__ */ function(_TextInputBinding) {
    _inherits5(PasswordInputBinding2, _TextInputBinding);
    var _super = _createSuper5(PasswordInputBinding2);
    function PasswordInputBinding2() {
      _classCallCheck7(this, PasswordInputBinding2);
      return _super.apply(this, arguments);
    }
    _createClass7(PasswordInputBinding2, [{
      key: "find",
      value: function find2(scope) {
        return (0, import_jquery10.default)(scope).find('input[type="password"]');
      }
    }, {
      key: "getType",
      value: function getType(el) {
        return "shiny.password";
        el;
      }
    }]);
    return PasswordInputBinding2;
  }(TextInputBinding);

  // srcts/src/bindings/input/textarea.ts
  var import_es_array_iterator6 = __toModule(require_es_array_iterator());
  var import_jquery11 = __toModule(require_jquery());
  function _typeof6(obj) {
    "@babel/helpers - typeof";
    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
      _typeof6 = function _typeof27(obj2) {
        return typeof obj2;
      };
    } else {
      _typeof6 = function _typeof27(obj2) {
        return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
      };
    }
    return _typeof6(obj);
  }
  function _classCallCheck8(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties8(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass8(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties8(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties8(Constructor, staticProps);
    return Constructor;
  }
  function _inherits6(subClass, superClass) {
    if (typeof superClass !== "function" && superClass !== null) {
      throw new TypeError("Super expression must either be null or a function");
    }
    subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });
    if (superClass)
      _setPrototypeOf6(subClass, superClass);
  }
  function _setPrototypeOf6(o, p) {
    _setPrototypeOf6 = Object.setPrototypeOf || function _setPrototypeOf26(o2, p2) {
      o2.__proto__ = p2;
      return o2;
    };
    return _setPrototypeOf6(o, p);
  }
  function _createSuper6(Derived) {
    var hasNativeReflectConstruct = _isNativeReflectConstruct6();
    return function _createSuperInternal() {
      var Super = _getPrototypeOf6(Derived), result;
      if (hasNativeReflectConstruct) {
        var NewTarget = _getPrototypeOf6(this).constructor;
        result = Reflect.construct(Super, arguments, NewTarget);
      } else {
        result = Super.apply(this, arguments);
      }
      return _possibleConstructorReturn6(this, result);
    };
  }
  function _possibleConstructorReturn6(self2, call) {
    if (call && (_typeof6(call) === "object" || typeof call === "function")) {
      return call;
    }
    return _assertThisInitialized6(self2);
  }
  function _assertThisInitialized6(self2) {
    if (self2 === void 0) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }
    return self2;
  }
  function _isNativeReflectConstruct6() {
    if (typeof Reflect === "undefined" || !Reflect.construct)
      return false;
    if (Reflect.construct.sham)
      return false;
    if (typeof Proxy === "function")
      return true;
    try {
      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
      }));
      return true;
    } catch (e) {
      return false;
    }
  }
  function _getPrototypeOf6(o) {
    _getPrototypeOf6 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf26(o2) {
      return o2.__proto__ || Object.getPrototypeOf(o2);
    };
    return _getPrototypeOf6(o);
  }
  var TextareaInputBinding = /* @__PURE__ */ function(_TextInputBinding) {
    _inherits6(TextareaInputBinding2, _TextInputBinding);
    var _super = _createSuper6(TextareaInputBinding2);
    function TextareaInputBinding2() {
      _classCallCheck8(this, TextareaInputBinding2);
      return _super.apply(this, arguments);
    }
    _createClass8(TextareaInputBinding2, [{
      key: "find",
      value: function find2(scope) {
        return (0, import_jquery11.default)(scope).find("textarea");
      }
    }]);
    return TextareaInputBinding2;
  }(TextInputBinding);

  // srcts/src/bindings/input/radio.ts
  var import_es_array_iterator7 = __toModule(require_es_array_iterator());
  var import_jquery12 = __toModule(require_jquery());
  function _typeof7(obj) {
    "@babel/helpers - typeof";
    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
      _typeof7 = function _typeof27(obj2) {
        return typeof obj2;
      };
    } else {
      _typeof7 = function _typeof27(obj2) {
        return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
      };
    }
    return _typeof7(obj);
  }
  function _classCallCheck9(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties9(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass9(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties9(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties9(Constructor, staticProps);
    return Constructor;
  }
  function _inherits7(subClass, superClass) {
    if (typeof superClass !== "function" && superClass !== null) {
      throw new TypeError("Super expression must either be null or a function");
    }
    subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });
    if (superClass)
      _setPrototypeOf7(subClass, superClass);
  }
  function _setPrototypeOf7(o, p) {
    _setPrototypeOf7 = Object.setPrototypeOf || function _setPrototypeOf26(o2, p2) {
      o2.__proto__ = p2;
      return o2;
    };
    return _setPrototypeOf7(o, p);
  }
  function _createSuper7(Derived) {
    var hasNativeReflectConstruct = _isNativeReflectConstruct7();
    return function _createSuperInternal() {
      var Super = _getPrototypeOf7(Derived), result;
      if (hasNativeReflectConstruct) {
        var NewTarget = _getPrototypeOf7(this).constructor;
        result = Reflect.construct(Super, arguments, NewTarget);
      } else {
        result = Super.apply(this, arguments);
      }
      return _possibleConstructorReturn7(this, result);
    };
  }
  function _possibleConstructorReturn7(self2, call) {
    if (call && (_typeof7(call) === "object" || typeof call === "function")) {
      return call;
    }
    return _assertThisInitialized7(self2);
  }
  function _assertThisInitialized7(self2) {
    if (self2 === void 0) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }
    return self2;
  }
  function _isNativeReflectConstruct7() {
    if (typeof Reflect === "undefined" || !Reflect.construct)
      return false;
    if (Reflect.construct.sham)
      return false;
    if (typeof Proxy === "function")
      return true;
    try {
      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
      }));
      return true;
    } catch (e) {
      return false;
    }
  }
  function _getPrototypeOf7(o) {
    _getPrototypeOf7 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf26(o2) {
      return o2.__proto__ || Object.getPrototypeOf(o2);
    };
    return _getPrototypeOf7(o);
  }
  function getLabelNode4(el) {
    return (0, import_jquery12.default)(el).parent().find('label[for="' + $escape(el.id) + '"]');
  }
  function getLabel2(obj) {
    if (obj.parentNode.tagName === "LABEL") {
      return (0, import_jquery12.default)(obj.parentNode).find("span").text().trim();
    }
    return null;
  }
  var RadioInputBinding = /* @__PURE__ */ function(_InputBinding) {
    _inherits7(RadioInputBinding2, _InputBinding);
    var _super = _createSuper7(RadioInputBinding2);
    function RadioInputBinding2() {
      _classCallCheck9(this, RadioInputBinding2);
      return _super.apply(this, arguments);
    }
    _createClass9(RadioInputBinding2, [{
      key: "find",
      value: function find2(scope) {
        return (0, import_jquery12.default)(scope).find(".shiny-input-radiogroup");
      }
    }, {
      key: "getValue",
      value: function getValue(el) {
        var checkedItems = (0, import_jquery12.default)('input:radio[name="' + $escape(el.id) + '"]:checked');
        if (checkedItems.length === 0) {
          return null;
        }
        return checkedItems.val();
      }
    }, {
      key: "setValue",
      value: function setValue(el, value) {
        if (import_jquery12.default.isArray(value) && value.length === 0) {
          (0, import_jquery12.default)('input:radio[name="' + $escape(el.id) + '"]').prop("checked", false);
        } else {
          (0, import_jquery12.default)('input:radio[name="' + $escape(el.id) + '"][value="' + $escape(value) + '"]').prop("checked", true);
        }
      }
    }, {
      key: "getState",
      value: function getState(el) {
        var $objs = (0, import_jquery12.default)('input:radio[name="' + $escape(el.id) + '"]');
        var options = new Array($objs.length);
        for (var i = 0; i < options.length; i++) {
          options[i] = {
            value: $objs[i].value,
            label: getLabel2($objs[i])
          };
        }
        return {
          label: getLabelNode4(el).text(),
          value: this.getValue(el),
          options: options
        };
      }
    }, {
      key: "receiveMessage",
      value: function receiveMessage(el, data) {
        var $el = (0, import_jquery12.default)(el);
        if (hasOwnProperty(data, "options")) {
          $el.find("div.shiny-options-group").remove();
          $el.find("label.radio").remove();
          $el.append(data.options);
        }
        if (hasOwnProperty(data, "value"))
          this.setValue(el, data.value);
        updateLabel(data.label, getLabelNode4(el));
        (0, import_jquery12.default)(el).trigger("change");
      }
    }, {
      key: "subscribe",
      value: function subscribe(el, callback) {
        (0, import_jquery12.default)(el).on("change.radioInputBinding", function() {
          callback(false);
        });
      }
    }, {
      key: "unsubscribe",
      value: function unsubscribe(el) {
        (0, import_jquery12.default)(el).off(".radioInputBinding");
      }
    }]);
    return RadioInputBinding2;
  }(InputBinding);

  // srcts/src/bindings/input/date.ts
  var import_es_array_iterator8 = __toModule(require_es_array_iterator());
  var import_jquery13 = __toModule(require_jquery());
  function _typeof8(obj) {
    "@babel/helpers - typeof";
    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
      _typeof8 = function _typeof27(obj2) {
        return typeof obj2;
      };
    } else {
      _typeof8 = function _typeof27(obj2) {
        return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
      };
    }
    return _typeof8(obj);
  }
  function _classCallCheck10(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties10(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass10(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties10(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties10(Constructor, staticProps);
    return Constructor;
  }
  function _inherits8(subClass, superClass) {
    if (typeof superClass !== "function" && superClass !== null) {
      throw new TypeError("Super expression must either be null or a function");
    }
    subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });
    if (superClass)
      _setPrototypeOf8(subClass, superClass);
  }
  function _setPrototypeOf8(o, p) {
    _setPrototypeOf8 = Object.setPrototypeOf || function _setPrototypeOf26(o2, p2) {
      o2.__proto__ = p2;
      return o2;
    };
    return _setPrototypeOf8(o, p);
  }
  function _createSuper8(Derived) {
    var hasNativeReflectConstruct = _isNativeReflectConstruct8();
    return function _createSuperInternal() {
      var Super = _getPrototypeOf8(Derived), result;
      if (hasNativeReflectConstruct) {
        var NewTarget = _getPrototypeOf8(this).constructor;
        result = Reflect.construct(Super, arguments, NewTarget);
      } else {
        result = Super.apply(this, arguments);
      }
      return _possibleConstructorReturn8(this, result);
    };
  }
  function _possibleConstructorReturn8(self2, call) {
    if (call && (_typeof8(call) === "object" || typeof call === "function")) {
      return call;
    }
    return _assertThisInitialized8(self2);
  }
  function _assertThisInitialized8(self2) {
    if (self2 === void 0) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }
    return self2;
  }
  function _isNativeReflectConstruct8() {
    if (typeof Reflect === "undefined" || !Reflect.construct)
      return false;
    if (Reflect.construct.sham)
      return false;
    if (typeof Proxy === "function")
      return true;
    try {
      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
      }));
      return true;
    } catch (e) {
      return false;
    }
  }
  function _getPrototypeOf8(o) {
    _getPrototypeOf8 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf26(o2) {
      return o2.__proto__ || Object.getPrototypeOf(o2);
    };
    return _getPrototypeOf8(o);
  }
  var DateInputBindingBase = /* @__PURE__ */ function(_InputBinding) {
    _inherits8(DateInputBindingBase2, _InputBinding);
    var _super = _createSuper8(DateInputBindingBase2);
    function DateInputBindingBase2() {
      _classCallCheck10(this, DateInputBindingBase2);
      return _super.apply(this, arguments);
    }
    _createClass10(DateInputBindingBase2, [{
      key: "find",
      value: function find2(scope) {
        return (0, import_jquery13.default)(scope).find(".shiny-date-input");
      }
    }, {
      key: "getType",
      value: function getType(el) {
        return "shiny.date";
        el;
      }
    }, {
      key: "subscribe",
      value: function subscribe(el, callback) {
        (0, import_jquery13.default)(el).on("keyup.dateInputBinding input.dateInputBinding", function() {
          callback(true);
        });
        (0, import_jquery13.default)(el).on("changeDate.dateInputBinding change.dateInputBinding", function() {
          callback(false);
        });
      }
    }, {
      key: "unsubscribe",
      value: function unsubscribe(el) {
        (0, import_jquery13.default)(el).off(".dateInputBinding");
      }
    }, {
      key: "getRatePolicy",
      value: function getRatePolicy() {
        return {
          policy: "debounce",
          delay: 250
        };
      }
    }, {
      key: "setValue",
      value: function setValue(el, data) {
        throw "not implemented";
        el;
        data;
      }
    }, {
      key: "initialize",
      value: function initialize(el) {
        var $input = (0, import_jquery13.default)(el).find("input");
        var date = $input.data("initial-date");
        if (date === void 0 || date === null) {
          date = this._floorDateTime(this._dateAsUTC(new Date()));
        }
        this.setValue(el, date);
        if ($input.data("min-date") !== void 0) {
          this._setMin($input[0], $input.data("min-date"));
        }
        if ($input.data("max-date") !== void 0) {
          this._setMax($input[0], $input.data("max-date"));
        }
      }
    }, {
      key: "_getLabelNode",
      value: function _getLabelNode(el) {
        return (0, import_jquery13.default)(el).find('label[for="' + $escape(el.id) + '"]');
      }
    }, {
      key: "_formatToString",
      value: function _formatToString(format) {
        var str = "";
        var i;
        for (i = 0; i < format.parts.length; i++) {
          str += format.separators[i] + format.parts[i];
        }
        str += format.separators[i];
        return str;
      }
    }, {
      key: "_setMin",
      value: function _setMin(el, date) {
        if (date === void 0)
          return;
        if (date === null) {
          (0, import_jquery13.default)(el).bsDatepicker("setStartDate", null);
          return;
        }
        var parsedDate = this._newDate(date);
        if (parsedDate === null)
          return;
        date = parsedDate;
        if (isNaN(date.valueOf()))
          return;
        var curValue = (0, import_jquery13.default)(el).bsDatepicker("getUTCDate");
        (0, import_jquery13.default)(el).bsDatepicker("setStartDate", this._utcDateAsLocal(date));
        if (date && curValue && date.getTime() > curValue.getTime()) {
          (0, import_jquery13.default)(el).bsDatepicker("clearDates");
        } else {
          (0, import_jquery13.default)(el).bsDatepicker("setUTCDate", curValue);
        }
      }
    }, {
      key: "_setMax",
      value: function _setMax(el, date) {
        if (date === void 0)
          return;
        if (date === null) {
          (0, import_jquery13.default)(el).bsDatepicker("setEndDate", null);
          return;
        }
        var parsedDate = this._newDate(date);
        if (parsedDate === null)
          return;
        date = parsedDate;
        if (isNaN(date.valueOf()))
          return;
        var curValue = (0, import_jquery13.default)(el).bsDatepicker("getUTCDate");
        (0, import_jquery13.default)(el).bsDatepicker("setEndDate", this._utcDateAsLocal(date));
        if (date && curValue && date.getTime() < curValue.getTime()) {
          (0, import_jquery13.default)(el).bsDatepicker("clearDates");
        } else {
          (0, import_jquery13.default)(el).bsDatepicker("setUTCDate", curValue);
        }
      }
    }, {
      key: "_newDate",
      value: function _newDate(date) {
        if (date instanceof Date)
          return date;
        if (!date)
          return null;
        var d = parseDate(date);
        if (isNaN(d.valueOf()))
          return null;
        return d;
      }
    }, {
      key: "_floorDateTime",
      value: function _floorDateTime(date) {
        date = new Date(date.getTime());
        date.setUTCHours(0, 0, 0, 0);
        return date;
      }
    }, {
      key: "_dateAsUTC",
      value: function _dateAsUTC(date) {
        return new Date(date.getTime() - date.getTimezoneOffset() * 6e4);
      }
    }, {
      key: "_utcDateAsLocal",
      value: function _utcDateAsLocal(date) {
        return new Date(date.getTime() + date.getTimezoneOffset() * 6e4);
      }
    }]);
    return DateInputBindingBase2;
  }(InputBinding);
  var DateInputBinding = /* @__PURE__ */ function(_DateInputBindingBase) {
    _inherits8(DateInputBinding2, _DateInputBindingBase);
    var _super2 = _createSuper8(DateInputBinding2);
    function DateInputBinding2() {
      _classCallCheck10(this, DateInputBinding2);
      return _super2.apply(this, arguments);
    }
    _createClass10(DateInputBinding2, [{
      key: "getValue",
      value: function getValue(el) {
        var date = (0, import_jquery13.default)(el).find("input").bsDatepicker("getUTCDate");
        return formatDateUTC(date);
      }
    }, {
      key: "setValue",
      value: function setValue(el, value) {
        if (value === null) {
          (0, import_jquery13.default)(el).find("input").val("").bsDatepicker("update");
          return;
        }
        var date = this._newDate(value);
        if (date === null) {
          return;
        }
        if (isNaN(date.valueOf()))
          return;
        (0, import_jquery13.default)(el).find("input").bsDatepicker("setUTCDate", date);
      }
    }, {
      key: "getState",
      value: function getState(el) {
        var $el = (0, import_jquery13.default)(el);
        var $input = $el.find("input");
        var min4 = $input.data("datepicker").startDate;
        var max4 = $input.data("datepicker").endDate;
        min4 = min4 === -Infinity ? null : formatDateUTC(min4);
        max4 = max4 === Infinity ? null : formatDateUTC(max4);
        var startview = $input.data("datepicker").startViewMode;
        if (startview === 2)
          startview = "decade";
        else if (startview === 1)
          startview = "year";
        else if (startview === 0)
          startview = "month";
        return {
          label: this._getLabelNode(el).text(),
          value: this.getValue(el),
          valueString: $input.val(),
          min: min4,
          max: max4,
          language: $input.data("datepicker").language,
          weekstart: $input.data("datepicker").weekStart,
          format: this._formatToString($input.data("datepicker").format),
          startview: startview
        };
      }
    }, {
      key: "receiveMessage",
      value: function receiveMessage(el, data) {
        var $input = (0, import_jquery13.default)(el).find("input");
        updateLabel(data.label, this._getLabelNode(el));
        if (hasOwnProperty(data, "min"))
          this._setMin($input[0], data.min);
        if (hasOwnProperty(data, "max"))
          this._setMax($input[0], data.max);
        if (hasOwnProperty(data, "value"))
          this.setValue(el, data.value);
        (0, import_jquery13.default)(el).trigger("change");
      }
    }]);
    return DateInputBinding2;
  }(DateInputBindingBase);

  // srcts/src/bindings/input/slider.ts
  var import_es_regexp_exec2 = __toModule(require_es_regexp_exec());
  var import_es_array_iterator9 = __toModule(require_es_array_iterator());
  var import_jquery14 = __toModule(require_jquery());
  function _typeof9(obj) {
    "@babel/helpers - typeof";
    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
      _typeof9 = function _typeof27(obj2) {
        return typeof obj2;
      };
    } else {
      _typeof9 = function _typeof27(obj2) {
        return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
      };
    }
    return _typeof9(obj);
  }
  function _classCallCheck11(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties11(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass11(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties11(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties11(Constructor, staticProps);
    return Constructor;
  }
  function _inherits9(subClass, superClass) {
    if (typeof superClass !== "function" && superClass !== null) {
      throw new TypeError("Super expression must either be null or a function");
    }
    subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });
    if (superClass)
      _setPrototypeOf9(subClass, superClass);
  }
  function _setPrototypeOf9(o, p) {
    _setPrototypeOf9 = Object.setPrototypeOf || function _setPrototypeOf26(o2, p2) {
      o2.__proto__ = p2;
      return o2;
    };
    return _setPrototypeOf9(o, p);
  }
  function _createSuper9(Derived) {
    var hasNativeReflectConstruct = _isNativeReflectConstruct9();
    return function _createSuperInternal() {
      var Super = _getPrototypeOf9(Derived), result;
      if (hasNativeReflectConstruct) {
        var NewTarget = _getPrototypeOf9(this).constructor;
        result = Reflect.construct(Super, arguments, NewTarget);
      } else {
        result = Super.apply(this, arguments);
      }
      return _possibleConstructorReturn9(this, result);
    };
  }
  function _possibleConstructorReturn9(self2, call) {
    if (call && (_typeof9(call) === "object" || typeof call === "function")) {
      return call;
    }
    return _assertThisInitialized9(self2);
  }
  function _assertThisInitialized9(self2) {
    if (self2 === void 0) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }
    return self2;
  }
  function _isNativeReflectConstruct9() {
    if (typeof Reflect === "undefined" || !Reflect.construct)
      return false;
    if (Reflect.construct.sham)
      return false;
    if (typeof Proxy === "function")
      return true;
    try {
      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
      }));
      return true;
    } catch (e) {
      return false;
    }
  }
  function _getPrototypeOf9(o) {
    _getPrototypeOf9 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf26(o2) {
      return o2.__proto__ || Object.getPrototypeOf(o2);
    };
    return _getPrototypeOf9(o);
  }
  function forceIonSliderUpdate(slider) {
    if (slider.$cache && slider.$cache.input)
      slider.$cache.input.trigger("change");
    else
      console.log("Couldn't force ion slider to update");
  }
  function getTypePrettifyer(dataType, timeFormat, timezone) {
    var timeFormatter;
    var prettify;
    if (dataType === "date") {
      timeFormatter = window.strftime.utc();
      prettify = function prettify2(num) {
        return timeFormatter(timeFormat, new Date(num));
      };
    } else if (dataType === "datetime") {
      if (timezone)
        timeFormatter = window.strftime.timezone(timezone);
      else
        timeFormatter = window.strftime;
      prettify = function prettify2(num) {
        return timeFormatter(timeFormat, new Date(num));
      };
    } else {
      prettify = function prettify2(num) {
        return formatNumber(num, this.prettify_separator);
      };
    }
    return prettify;
  }
  function getLabelNode5(el) {
    return (0, import_jquery14.default)(el).parent().find('label[for="' + $escape(el.id) + '"]');
  }
  function numValues(el) {
    if ((0, import_jquery14.default)(el).data("ionRangeSlider").options.type === "double")
      return 2;
    else
      return 1;
  }
  var SliderInputBinding = /* @__PURE__ */ function(_TextInputBindingBase) {
    _inherits9(SliderInputBinding2, _TextInputBindingBase);
    var _super = _createSuper9(SliderInputBinding2);
    function SliderInputBinding2() {
      _classCallCheck11(this, SliderInputBinding2);
      return _super.apply(this, arguments);
    }
    _createClass11(SliderInputBinding2, [{
      key: "find",
      value: function find2(scope) {
        if (!import_jquery14.default.fn.ionRangeSlider) {
          return (0, import_jquery14.default)();
        }
        return (0, import_jquery14.default)(scope).find("input.js-range-slider");
      }
    }, {
      key: "getType",
      value: function getType(el) {
        var dataType = (0, import_jquery14.default)(el).data("data-type");
        if (dataType === "date")
          return "shiny.date";
        else if (dataType === "datetime")
          return "shiny.datetime";
        else
          return false;
      }
    }, {
      key: "getValue",
      value: function getValue(el) {
        var $el = (0, import_jquery14.default)(el);
        var result = (0, import_jquery14.default)(el).data("ionRangeSlider").result;
        var convert;
        var dataType = $el.data("data-type");
        if (dataType === "date") {
          convert = function convert2(val) {
            return formatDateUTC(new Date(Number(val)));
          };
        } else if (dataType === "datetime") {
          convert = function convert2(val) {
            return Number(val) / 1e3;
          };
        } else {
          convert = function convert2(val) {
            return Number(val);
          };
        }
        if (numValues(el) === 2) {
          return [convert(result.from), convert(result.to)];
        } else {
          return convert(result.from);
        }
      }
    }, {
      key: "setValue",
      value: function setValue(el, value) {
        var $el = (0, import_jquery14.default)(el);
        var slider = $el.data("ionRangeSlider");
        $el.data("immediate", true);
        try {
          if (numValues(el) === 2 && value instanceof Array) {
            slider.update({
              from: value[0],
              to: value[1]
            });
          } else {
            slider.update({
              from: value
            });
          }
          forceIonSliderUpdate(slider);
        } finally {
          $el.data("immediate", false);
        }
      }
    }, {
      key: "subscribe",
      value: function subscribe(el, callback) {
        (0, import_jquery14.default)(el).on("change.sliderInputBinding", function() {
          callback(!(0, import_jquery14.default)(el).data("immediate") && !(0, import_jquery14.default)(el).data("animating"));
        });
      }
    }, {
      key: "unsubscribe",
      value: function unsubscribe(el) {
        (0, import_jquery14.default)(el).off(".sliderInputBinding");
      }
    }, {
      key: "receiveMessage",
      value: function receiveMessage(el, data) {
        var $el = (0, import_jquery14.default)(el);
        var slider = $el.data("ionRangeSlider");
        var msg = {};
        if (hasOwnProperty(data, "value")) {
          if (numValues(el) === 2 && data.value instanceof Array) {
            msg.from = data.value[0];
            msg.to = data.value[1];
          } else {
            msg.from = data.value;
          }
        }
        var sliderFeatures = ["min", "max", "step"];
        for (var i = 0; i < sliderFeatures.length; i++) {
          var feats = sliderFeatures[i];
          if (hasOwnProperty(data, feats)) {
            msg[feats] = data[feats];
          }
        }
        updateLabel(data.label, getLabelNode5(el));
        var domElements = ["data-type", "time-format", "timezone"];
        for (var _i = 0; _i < domElements.length; _i++) {
          var elem = domElements[_i];
          if (hasOwnProperty(data, elem)) {
            $el.data(elem, data[elem]);
          }
        }
        var dataType = $el.data("data-type");
        var timeFormat = $el.data("time-format");
        var timezone = $el.data("timezone");
        msg.prettify = getTypePrettifyer(dataType, timeFormat, timezone);
        $el.data("immediate", true);
        try {
          slider.update(msg);
          forceIonSliderUpdate(slider);
        } finally {
          $el.data("immediate", false);
        }
      }
    }, {
      key: "getRatePolicy",
      value: function getRatePolicy(el) {
        return {
          policy: "debounce",
          delay: 250
        };
        el;
      }
    }, {
      key: "getState",
      value: function getState(el) {
        el;
      }
    }, {
      key: "initialize",
      value: function initialize(el) {
        var $el = (0, import_jquery14.default)(el);
        var dataType = $el.data("data-type");
        var timeFormat = $el.data("time-format");
        var timezone = $el.data("timezone");
        var opts = {
          prettify: getTypePrettifyer(dataType, timeFormat, timezone)
        };
        $el.ionRangeSlider(opts);
      }
    }]);
    return SliderInputBinding2;
  }(TextInputBindingBase);
  function formatNumber(num) {
    var thousandSep = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : ",";
    var decimalSep = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : ".";
    var parts = num.toString().split(".");
    parts[0] = parts[0].replace(/(\d{1,3}(?=(?:\d\d\d)+(?!\d)))/g, "$1" + thousandSep);
    if (parts.length === 1)
      return parts[0];
    else if (parts.length === 2)
      return parts[0] + decimalSep + parts[1];
    else
      return "";
  }
  (0, import_jquery14.default)(document).on("click", ".slider-animate-button", function(evt) {
    evt.preventDefault();
    var self2 = (0, import_jquery14.default)(this);
    var target = (0, import_jquery14.default)("#" + $escape(self2.attr("data-target-id")));
    var startLabel = "Play";
    var stopLabel = "Pause";
    var loop = self2.attr("data-loop") !== void 0 && !/^\s*false\s*$/i.test(self2.attr("data-loop"));
    var animInterval = self2.attr("data-interval");
    if (isNaN(animInterval))
      animInterval = 1500;
    else
      animInterval = Number(animInterval);
    if (!target.data("animTimer")) {
      var timer;
      if (target.hasClass("jslider")) {
        var slider = target.slider();
        if (!slider.canStepNext())
          slider.resetToStart();
        timer = setInterval(function() {
          if (loop && !slider.canStepNext()) {
            slider.resetToStart();
          } else {
            slider.stepNext();
            if (!loop && !slider.canStepNext()) {
              self2.click();
            }
          }
        }, animInterval);
      } else {
        var _slider = target.data("ionRangeSlider");
        var sliderCanStep = function sliderCanStep2() {
          if (_slider.options.type === "double")
            return _slider.result.to < _slider.result.max;
          else
            return _slider.result.from < _slider.result.max;
        };
        var sliderReset = function sliderReset2() {
          var val = {
            from: _slider.result.min
          };
          if (_slider.options.type === "double")
            val.to = val.from + (_slider.result.to - _slider.result.from);
          _slider.update(val);
          forceIonSliderUpdate(_slider);
        };
        var sliderStep = function sliderStep2() {
          var val = {
            from: Math.min(_slider.result.max, _slider.result.from + _slider.options.step)
          };
          if (_slider.options.type === "double")
            val.to = Math.min(_slider.result.max, _slider.result.to + _slider.options.step);
          _slider.update(val);
          forceIonSliderUpdate(_slider);
        };
        if (!sliderCanStep())
          sliderReset();
        timer = setInterval(function() {
          if (loop && !sliderCanStep()) {
            sliderReset();
          } else {
            sliderStep();
            if (!loop && !sliderCanStep()) {
              self2.click();
            }
          }
        }, animInterval);
      }
      target.data("animTimer", timer);
      self2.attr("title", stopLabel);
      self2.addClass("playing");
      target.data("animating", true);
    } else {
      clearTimeout(target.data("animTimer"));
      target.removeData("animTimer");
      self2.attr("title", startLabel);
      self2.removeClass("playing");
      target.removeData("animating");
    }
  });

  // srcts/src/bindings/input/daterange.ts
  var import_es_array_iterator10 = __toModule(require_es_array_iterator());
  var import_jquery15 = __toModule(require_jquery());
  function _typeof10(obj) {
    "@babel/helpers - typeof";
    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
      _typeof10 = function _typeof27(obj2) {
        return typeof obj2;
      };
    } else {
      _typeof10 = function _typeof27(obj2) {
        return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
      };
    }
    return _typeof10(obj);
  }
  function _classCallCheck12(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties12(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass12(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties12(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties12(Constructor, staticProps);
    return Constructor;
  }
  function _inherits10(subClass, superClass) {
    if (typeof superClass !== "function" && superClass !== null) {
      throw new TypeError("Super expression must either be null or a function");
    }
    subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });
    if (superClass)
      _setPrototypeOf10(subClass, superClass);
  }
  function _setPrototypeOf10(o, p) {
    _setPrototypeOf10 = Object.setPrototypeOf || function _setPrototypeOf26(o2, p2) {
      o2.__proto__ = p2;
      return o2;
    };
    return _setPrototypeOf10(o, p);
  }
  function _createSuper10(Derived) {
    var hasNativeReflectConstruct = _isNativeReflectConstruct10();
    return function _createSuperInternal() {
      var Super = _getPrototypeOf10(Derived), result;
      if (hasNativeReflectConstruct) {
        var NewTarget = _getPrototypeOf10(this).constructor;
        result = Reflect.construct(Super, arguments, NewTarget);
      } else {
        result = Super.apply(this, arguments);
      }
      return _possibleConstructorReturn10(this, result);
    };
  }
  function _possibleConstructorReturn10(self2, call) {
    if (call && (_typeof10(call) === "object" || typeof call === "function")) {
      return call;
    }
    return _assertThisInitialized10(self2);
  }
  function _assertThisInitialized10(self2) {
    if (self2 === void 0) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }
    return self2;
  }
  function _isNativeReflectConstruct10() {
    if (typeof Reflect === "undefined" || !Reflect.construct)
      return false;
    if (Reflect.construct.sham)
      return false;
    if (typeof Proxy === "function")
      return true;
    try {
      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
      }));
      return true;
    } catch (e) {
      return false;
    }
  }
  function _getPrototypeOf10(o) {
    _getPrototypeOf10 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf26(o2) {
      return o2.__proto__ || Object.getPrototypeOf(o2);
    };
    return _getPrototypeOf10(o);
  }
  function getLabelNode6(el) {
    return (0, import_jquery15.default)(el).find('label[for="' + $escape(el.id) + '"]');
  }
  var DateRangeInputBinding = /* @__PURE__ */ function(_DateInputBindingBase) {
    _inherits10(DateRangeInputBinding2, _DateInputBindingBase);
    var _super = _createSuper10(DateRangeInputBinding2);
    function DateRangeInputBinding2() {
      _classCallCheck12(this, DateRangeInputBinding2);
      return _super.apply(this, arguments);
    }
    _createClass12(DateRangeInputBinding2, [{
      key: "find",
      value: function find2(scope) {
        return (0, import_jquery15.default)(scope).find(".shiny-date-range-input");
      }
    }, {
      key: "getValue",
      value: function getValue(el) {
        var $inputs = (0, import_jquery15.default)(el).find("input");
        var start = $inputs.eq(0).bsDatepicker("getUTCDate");
        var end = $inputs.eq(1).bsDatepicker("getUTCDate");
        return [formatDateUTC(start), formatDateUTC(end)];
      }
    }, {
      key: "setValue",
      value: function setValue(el, value) {
        if (!(value instanceof Object)) {
          return;
        }
        var $inputs = (0, import_jquery15.default)(el).find("input");
        if (value.start !== void 0) {
          if (value.start === null) {
            $inputs.eq(0).val("").bsDatepicker("update");
          } else {
            var start = this._newDate(value.start);
            $inputs.eq(0).bsDatepicker("setUTCDate", start);
          }
        }
        if (value.end !== void 0) {
          if (value.end === null) {
            $inputs.eq(1).val("").bsDatepicker("update");
          } else {
            var end = this._newDate(value.end);
            $inputs.eq(1).bsDatepicker("setUTCDate", end);
          }
        }
      }
    }, {
      key: "getState",
      value: function getState(el) {
        var $el = (0, import_jquery15.default)(el);
        var $inputs = $el.find("input");
        var $startinput = $inputs.eq(0);
        var $endinput = $inputs.eq(1);
        var min4 = $startinput.bsDatepicker("getStartDate");
        var max4 = $startinput.bsDatepicker("getEndDate");
        var minStr = min4 === -Infinity ? null : formatDateUTC(min4);
        var maxStr = max4 === Infinity ? null : formatDateUTC(max4);
        var startview = $startinput.data("datepicker").startView;
        if (startview === 2)
          startview = "decade";
        else if (startview === 1)
          startview = "year";
        else if (startview === 0)
          startview = "month";
        return {
          label: getLabelNode6(el).text(),
          value: this.getValue(el),
          valueString: [$startinput.val(), $endinput.val()],
          min: minStr,
          max: maxStr,
          weekstart: $startinput.data("datepicker").weekStart,
          format: this._formatToString($startinput.data("datepicker").format),
          language: $startinput.data("datepicker").language,
          startview: startview
        };
      }
    }, {
      key: "receiveMessage",
      value: function receiveMessage(el, data) {
        var $el = (0, import_jquery15.default)(el);
        var $inputs = $el.find("input");
        var $startinput = $inputs.eq(0);
        var $endinput = $inputs.eq(1);
        updateLabel(data.label, getLabelNode6(el));
        if (hasOwnProperty(data, "min")) {
          this._setMin($startinput[0], data.min);
          this._setMin($endinput[0], data.min);
        }
        if (hasOwnProperty(data, "max")) {
          this._setMax($startinput[0], data.max);
          this._setMax($endinput[0], data.max);
        }
        if (hasOwnProperty(data, "value"))
          this.setValue(el, data.value);
        $el.trigger("change");
      }
    }, {
      key: "initialize",
      value: function initialize(el) {
        var $el = (0, import_jquery15.default)(el);
        var $inputs = $el.find("input");
        var $startinput = $inputs.eq(0);
        var $endinput = $inputs.eq(1);
        var start = $startinput.data("initial-date");
        var end = $endinput.data("initial-date");
        if (start === void 0 || start === null)
          start = this._dateAsUTC(new Date());
        if (end === void 0 || end === null)
          end = this._dateAsUTC(new Date());
        this.setValue(el, {
          start: start,
          end: end
        });
        this._setMin($startinput[0], $startinput.data("min-date"));
        this._setMin($endinput[0], $startinput.data("min-date"));
        this._setMax($startinput[0], $endinput.data("max-date"));
        this._setMax($endinput[0], $endinput.data("max-date"));
      }
    }, {
      key: "subscribe",
      value: function subscribe(el, callback) {
        (0, import_jquery15.default)(el).on("keyup.dateRangeInputBinding input.dateRangeInputBinding", function() {
          callback(true);
        });
        (0, import_jquery15.default)(el).on("changeDate.dateRangeInputBinding change.dateRangeInputBinding", function() {
          callback(false);
        });
      }
    }, {
      key: "unsubscribe",
      value: function unsubscribe(el) {
        (0, import_jquery15.default)(el).off(".dateRangeInputBinding");
      }
    }]);
    return DateRangeInputBinding2;
  }(DateInputBindingBase);

  // srcts/src/bindings/input/selectInput.ts
  var import_es_array_iterator11 = __toModule(require_es_array_iterator());
  var import_jquery16 = __toModule(require_jquery());

  // srcts/src/utils/eval.ts
  var indirectEval = eval;

  // srcts/src/bindings/input/selectInput.ts
  function _typeof11(obj) {
    "@babel/helpers - typeof";
    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
      _typeof11 = function _typeof27(obj2) {
        return typeof obj2;
      };
    } else {
      _typeof11 = function _typeof27(obj2) {
        return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
      };
    }
    return _typeof11(obj);
  }
  function _classCallCheck13(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties13(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass13(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties13(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties13(Constructor, staticProps);
    return Constructor;
  }
  function _inherits11(subClass, superClass) {
    if (typeof superClass !== "function" && superClass !== null) {
      throw new TypeError("Super expression must either be null or a function");
    }
    subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });
    if (superClass)
      _setPrototypeOf11(subClass, superClass);
  }
  function _setPrototypeOf11(o, p) {
    _setPrototypeOf11 = Object.setPrototypeOf || function _setPrototypeOf26(o2, p2) {
      o2.__proto__ = p2;
      return o2;
    };
    return _setPrototypeOf11(o, p);
  }
  function _createSuper11(Derived) {
    var hasNativeReflectConstruct = _isNativeReflectConstruct11();
    return function _createSuperInternal() {
      var Super = _getPrototypeOf11(Derived), result;
      if (hasNativeReflectConstruct) {
        var NewTarget = _getPrototypeOf11(this).constructor;
        result = Reflect.construct(Super, arguments, NewTarget);
      } else {
        result = Super.apply(this, arguments);
      }
      return _possibleConstructorReturn11(this, result);
    };
  }
  function _possibleConstructorReturn11(self2, call) {
    if (call && (_typeof11(call) === "object" || typeof call === "function")) {
      return call;
    }
    return _assertThisInitialized11(self2);
  }
  function _assertThisInitialized11(self2) {
    if (self2 === void 0) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }
    return self2;
  }
  function _isNativeReflectConstruct11() {
    if (typeof Reflect === "undefined" || !Reflect.construct)
      return false;
    if (Reflect.construct.sham)
      return false;
    if (typeof Proxy === "function")
      return true;
    try {
      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
      }));
      return true;
    } catch (e) {
      return false;
    }
  }
  function _getPrototypeOf11(o) {
    _getPrototypeOf11 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf26(o2) {
      return o2.__proto__ || Object.getPrototypeOf(o2);
    };
    return _getPrototypeOf11(o);
  }
  function getLabelNode7(el) {
    var escapedId = $escape(el.id);
    if (isSelectize(el)) {
      escapedId += "-selectized";
    }
    return (0, import_jquery16.default)(el).parent().parent().find('label[for="' + escapedId + '"]');
  }
  function isSelectize(el) {
    var config = (0, import_jquery16.default)(el).parent().find('script[data-for="' + $escape(el.id) + '"]');
    return config.length > 0;
  }
  var SelectInputBinding = /* @__PURE__ */ function(_InputBinding) {
    _inherits11(SelectInputBinding2, _InputBinding);
    var _super = _createSuper11(SelectInputBinding2);
    function SelectInputBinding2() {
      _classCallCheck13(this, SelectInputBinding2);
      return _super.apply(this, arguments);
    }
    _createClass13(SelectInputBinding2, [{
      key: "find",
      value: function find2(scope) {
        return (0, import_jquery16.default)(scope).find("select");
      }
    }, {
      key: "getType",
      value: function getType(el) {
        var $el = (0, import_jquery16.default)(el);
        if (!$el.hasClass("symbol")) {
          return null;
        }
        if ($el.attr("multiple") === "multiple") {
          return "shiny.symbolList";
        } else {
          return "shiny.symbol";
        }
      }
    }, {
      key: "getId",
      value: function getId(el) {
        return InputBinding.prototype.getId.call(this, el) || el.name;
      }
    }, {
      key: "getValue",
      value: function getValue(el) {
        return (0, import_jquery16.default)(el).val();
      }
    }, {
      key: "setValue",
      value: function setValue(el, value) {
        if (!isSelectize(el)) {
          (0, import_jquery16.default)(el).val(value);
        } else {
          var selectize = this._selectize(el);
          if (selectize) {
            selectize.setValue(value);
          }
        }
      }
    }, {
      key: "getState",
      value: function getState(el) {
        var options = new Array(el.length);
        for (var i = 0; i < el.length; i++) {
          options[i] = {
            value: el[i].value,
            label: el[i].label
          };
        }
        return {
          label: getLabelNode7(el),
          value: this.getValue(el),
          options: options
        };
      }
    }, {
      key: "receiveMessage",
      value: function receiveMessage(el, data) {
        var $el = (0, import_jquery16.default)(el);
        var selectize;
        if (hasOwnProperty(data, "options")) {
          selectize = this._selectize(el);
          if (selectize)
            selectize.destroy();
          $el.empty().append(data.options);
          this._selectize(el);
        }
        if (hasOwnProperty(data, "config")) {
          $el.parent().find('script[data-for="' + $escape(el.id) + '"]').replaceWith(data.config);
          this._selectize(el, true);
        }
        if (hasOwnProperty(data, "url")) {
          selectize = this._selectize(el);
          selectize.clearOptions();
          var loaded = false;
          selectize.settings.load = function(query, callback) {
            var settings = selectize.settings;
            import_jquery16.default.ajax({
              url: data.url,
              data: {
                query: query,
                field: JSON.stringify([settings.searchField]),
                value: settings.valueField,
                conju: settings.searchConjunction,
                maxop: settings.maxOptions
              },
              type: "GET",
              error: function error() {
                callback();
              },
              success: function success(res) {
                import_jquery16.default.each(res, function(index, elem) {
                  var optgroupId = elem[settings.optgroupField || "optgroup"];
                  var optgroup = {};
                  optgroup[settings.optgroupLabelField || "label"] = optgroupId;
                  optgroup[settings.optgroupValueField || "value"] = optgroupId;
                  selectize.addOptionGroup(optgroupId, optgroup);
                });
                callback(res);
                if (!loaded) {
                  if (hasOwnProperty(data, "value")) {
                    selectize.setValue(data.value);
                  } else if (settings.maxItems === 1) {
                    selectize.setValue(res[0].value);
                  }
                }
                loaded = true;
              }
            });
          };
          selectize.load(function(callback) {
            selectize.settings.load.apply(selectize, ["", callback]);
          });
        } else if (hasOwnProperty(data, "value")) {
          this.setValue(el, data.value);
        }
        updateLabel(data.label, getLabelNode7(el));
        (0, import_jquery16.default)(el).trigger("change");
      }
    }, {
      key: "subscribe",
      value: function subscribe(el, callback) {
        var _this = this;
        (0, import_jquery16.default)(el).on("change.selectInputBinding", function() {
          if (el.nonempty && _this.getValue(el) === "") {
            return;
          }
          callback(false);
        });
      }
    }, {
      key: "unsubscribe",
      value: function unsubscribe(el) {
        (0, import_jquery16.default)(el).off(".selectInputBinding");
      }
    }, {
      key: "initialize",
      value: function initialize(el) {
        this._selectize(el);
      }
    }, {
      key: "_selectize",
      value: function _selectize(el) {
        var update = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
        if (!import_jquery16.default.fn.selectize)
          return void 0;
        var $el = (0, import_jquery16.default)(el);
        var config = $el.parent().find('script[data-for="' + $escape(el.id) + '"]');
        if (config.length === 0)
          return void 0;
        var options = import_jquery16.default.extend({
          labelField: "label",
          valueField: "value",
          searchField: ["label"]
        }, JSON.parse(config.html()));
        if (typeof config.data("nonempty") !== "undefined") {
          el.nonempty = true;
          options = import_jquery16.default.extend(options, {
            onItemRemove: function onItemRemove(value) {
              if (this.getValue() === "")
                (0, import_jquery16.default)("select#" + $escape(el.id)).empty().append((0, import_jquery16.default)("<option/>", {
                  value: value,
                  selected: true
                })).trigger("change");
            },
            onDropdownClose: function onDropdownClose() {
              if (this.getValue() === "")
                this.setValue((0, import_jquery16.default)("select#" + $escape(el.id)).val());
            }
          });
        } else {
          el.nonempty = false;
        }
        if (config.data("eval") instanceof Array)
          import_jquery16.default.each(config.data("eval"), function(i, x) {
            options[x] = indirectEval("(" + options[x] + ")");
          });
        var control = $el.selectize(options)[0].selectize;
        if (update) {
          var settings = import_jquery16.default.extend(control.settings, options);
          control.destroy();
          control = $el.selectize(settings)[0].selectize;
        }
        return control;
      }
    }]);
    return SelectInputBinding2;
  }(InputBinding);

  // srcts/src/bindings/input/actionbutton.ts
  var import_es_array_iterator12 = __toModule(require_es_array_iterator());
  var import_jquery17 = __toModule(require_jquery());
  function _typeof12(obj) {
    "@babel/helpers - typeof";
    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
      _typeof12 = function _typeof27(obj2) {
        return typeof obj2;
      };
    } else {
      _typeof12 = function _typeof27(obj2) {
        return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
      };
    }
    return _typeof12(obj);
  }
  function _classCallCheck14(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties14(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass14(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties14(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties14(Constructor, staticProps);
    return Constructor;
  }
  function _inherits12(subClass, superClass) {
    if (typeof superClass !== "function" && superClass !== null) {
      throw new TypeError("Super expression must either be null or a function");
    }
    subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });
    if (superClass)
      _setPrototypeOf12(subClass, superClass);
  }
  function _setPrototypeOf12(o, p) {
    _setPrototypeOf12 = Object.setPrototypeOf || function _setPrototypeOf26(o2, p2) {
      o2.__proto__ = p2;
      return o2;
    };
    return _setPrototypeOf12(o, p);
  }
  function _createSuper12(Derived) {
    var hasNativeReflectConstruct = _isNativeReflectConstruct12();
    return function _createSuperInternal() {
      var Super = _getPrototypeOf12(Derived), result;
      if (hasNativeReflectConstruct) {
        var NewTarget = _getPrototypeOf12(this).constructor;
        result = Reflect.construct(Super, arguments, NewTarget);
      } else {
        result = Super.apply(this, arguments);
      }
      return _possibleConstructorReturn12(this, result);
    };
  }
  function _possibleConstructorReturn12(self2, call) {
    if (call && (_typeof12(call) === "object" || typeof call === "function")) {
      return call;
    }
    return _assertThisInitialized12(self2);
  }
  function _assertThisInitialized12(self2) {
    if (self2 === void 0) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }
    return self2;
  }
  function _isNativeReflectConstruct12() {
    if (typeof Reflect === "undefined" || !Reflect.construct)
      return false;
    if (Reflect.construct.sham)
      return false;
    if (typeof Proxy === "function")
      return true;
    try {
      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
      }));
      return true;
    } catch (e) {
      return false;
    }
  }
  function _getPrototypeOf12(o) {
    _getPrototypeOf12 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf26(o2) {
      return o2.__proto__ || Object.getPrototypeOf(o2);
    };
    return _getPrototypeOf12(o);
  }
  var ActionButtonInputBinding = /* @__PURE__ */ function(_InputBinding) {
    _inherits12(ActionButtonInputBinding2, _InputBinding);
    var _super = _createSuper12(ActionButtonInputBinding2);
    function ActionButtonInputBinding2() {
      _classCallCheck14(this, ActionButtonInputBinding2);
      return _super.apply(this, arguments);
    }
    _createClass14(ActionButtonInputBinding2, [{
      key: "find",
      value: function find2(scope) {
        return (0, import_jquery17.default)(scope).find(".action-button");
      }
    }, {
      key: "getValue",
      value: function getValue(el) {
        return (0, import_jquery17.default)(el).data("val") || 0;
      }
    }, {
      key: "setValue",
      value: function setValue(el, value) {
        (0, import_jquery17.default)(el).data("val", value);
      }
    }, {
      key: "getType",
      value: function getType(el) {
        return "shiny.action";
        el;
      }
    }, {
      key: "subscribe",
      value: function subscribe(el, callback) {
        (0, import_jquery17.default)(el).on("click.actionButtonInputBinding", function() {
          var $el = (0, import_jquery17.default)(this);
          var val = $el.data("val") || 0;
          $el.data("val", val + 1);
          callback(false);
        });
      }
    }, {
      key: "getState",
      value: function getState(el) {
        return {
          value: this.getValue(el)
        };
      }
    }, {
      key: "receiveMessage",
      value: function receiveMessage(el, data) {
        var $el = (0, import_jquery17.default)(el);
        var label = $el.text();
        var icon = "";
        if ($el.find("i[class]").length > 0) {
          var iconHtml = $el.find("i[class]")[0];
          if (iconHtml === $el.children()[0]) {
            icon = (0, import_jquery17.default)(iconHtml).prop("outerHTML");
          }
        }
        if (hasOwnProperty(data, "label"))
          label = data.label;
        if (hasOwnProperty(data, "icon")) {
          icon = data.icon;
          if (icon.length === 0)
            icon = "";
        }
        $el.html(icon + " " + label);
      }
    }, {
      key: "unsubscribe",
      value: function unsubscribe(el) {
        (0, import_jquery17.default)(el).off(".actionButtonInputBinding");
      }
    }]);
    return ActionButtonInputBinding2;
  }(InputBinding);
  (0, import_jquery17.default)(document).on("click", "a.action-button", function(e) {
    e.preventDefault();
  });

  // srcts/src/bindings/input/tabinput.ts
  var import_es_array_iterator13 = __toModule(require_es_array_iterator());
  var import_jquery18 = __toModule(require_jquery());
  function _typeof13(obj) {
    "@babel/helpers - typeof";
    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
      _typeof13 = function _typeof27(obj2) {
        return typeof obj2;
      };
    } else {
      _typeof13 = function _typeof27(obj2) {
        return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
      };
    }
    return _typeof13(obj);
  }
  function _classCallCheck15(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties15(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass15(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties15(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties15(Constructor, staticProps);
    return Constructor;
  }
  function _inherits13(subClass, superClass) {
    if (typeof superClass !== "function" && superClass !== null) {
      throw new TypeError("Super expression must either be null or a function");
    }
    subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });
    if (superClass)
      _setPrototypeOf13(subClass, superClass);
  }
  function _setPrototypeOf13(o, p) {
    _setPrototypeOf13 = Object.setPrototypeOf || function _setPrototypeOf26(o2, p2) {
      o2.__proto__ = p2;
      return o2;
    };
    return _setPrototypeOf13(o, p);
  }
  function _createSuper13(Derived) {
    var hasNativeReflectConstruct = _isNativeReflectConstruct13();
    return function _createSuperInternal() {
      var Super = _getPrototypeOf13(Derived), result;
      if (hasNativeReflectConstruct) {
        var NewTarget = _getPrototypeOf13(this).constructor;
        result = Reflect.construct(Super, arguments, NewTarget);
      } else {
        result = Super.apply(this, arguments);
      }
      return _possibleConstructorReturn13(this, result);
    };
  }
  function _possibleConstructorReturn13(self2, call) {
    if (call && (_typeof13(call) === "object" || typeof call === "function")) {
      return call;
    }
    return _assertThisInitialized13(self2);
  }
  function _assertThisInitialized13(self2) {
    if (self2 === void 0) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }
    return self2;
  }
  function _isNativeReflectConstruct13() {
    if (typeof Reflect === "undefined" || !Reflect.construct)
      return false;
    if (Reflect.construct.sham)
      return false;
    if (typeof Proxy === "function")
      return true;
    try {
      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
      }));
      return true;
    } catch (e) {
      return false;
    }
  }
  function _getPrototypeOf13(o) {
    _getPrototypeOf13 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf26(o2) {
      return o2.__proto__ || Object.getPrototypeOf(o2);
    };
    return _getPrototypeOf13(o);
  }
  function getTabName(anchor) {
    return anchor.attr("data-value") || anchor.text();
  }
  var BootstrapTabInputBinding = /* @__PURE__ */ function(_InputBinding) {
    _inherits13(BootstrapTabInputBinding2, _InputBinding);
    var _super = _createSuper13(BootstrapTabInputBinding2);
    function BootstrapTabInputBinding2() {
      _classCallCheck15(this, BootstrapTabInputBinding2);
      return _super.apply(this, arguments);
    }
    _createClass15(BootstrapTabInputBinding2, [{
      key: "find",
      value: function find2(scope) {
        return (0, import_jquery18.default)(scope).find("ul.nav.shiny-tab-input");
      }
    }, {
      key: "getValue",
      value: function getValue(el) {
        var anchor = isBS3() ? (0, import_jquery18.default)(el).find("li:not(.dropdown).active > a") : (0, import_jquery18.default)(el).find(".nav-link:not(.dropdown-toggle).active, .dropdown-menu .dropdown-item.active");
        if (anchor.length === 1)
          return getTabName(anchor);
        return null;
      }
    }, {
      key: "setValue",
      value: function setValue(el, value) {
        var success = false;
        if (value) {
          var anchors = isBS3() ? (0, import_jquery18.default)(el).find("li:not(.dropdown) > a") : (0, import_jquery18.default)(el).find(".nav-link:not(.dropdown-toggle), .dropdown-menu .dropdown-item");
          anchors.each(function() {
            if (getTabName((0, import_jquery18.default)(this)) === value) {
              (0, import_jquery18.default)(this).tab("show");
              success = true;
              return false;
            }
            return;
          });
        }
        if (!success) {
          (0, import_jquery18.default)(el).trigger("change");
        }
      }
    }, {
      key: "getState",
      value: function getState(el) {
        return {
          value: this.getValue(el)
        };
      }
    }, {
      key: "receiveMessage",
      value: function receiveMessage(el, data) {
        if (hasOwnProperty(data, "value"))
          this.setValue(el, data.value);
        (0, import_jquery18.default)(el).trigger("change");
      }
    }, {
      key: "subscribe",
      value: function subscribe(el, callback) {
        (0, import_jquery18.default)(el).on("change shown.bootstrapTabInputBinding shown.bs.tab.bootstrapTabInputBinding", function() {
          callback(false);
        });
      }
    }, {
      key: "unsubscribe",
      value: function unsubscribe(el) {
        (0, import_jquery18.default)(el).off(".bootstrapTabInputBinding");
      }
    }]);
    return BootstrapTabInputBinding2;
  }(InputBinding);

  // srcts/src/bindings/input/fileinput.ts
  var import_es_array_iterator15 = __toModule(require_es_array_iterator());
  var import_jquery21 = __toModule(require_jquery());

  // node_modules/core-js/modules/es.array.map.js
  "use strict";
  var $36 = require_export();
  var $map = require_array_iteration().map;
  var arrayMethodHasSpeciesSupport4 = require_array_method_has_species_support();
  var HAS_SPECIES_SUPPORT3 = arrayMethodHasSpeciesSupport4("map");
  $36({ target: "Array", proto: true, forced: !HAS_SPECIES_SUPPORT3 }, {
    map: function map(callbackfn) {
      return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : void 0);
    }
  });

  // srcts/src/file/fileProcessor.ts
  var import_es_array_iterator14 = __toModule(require_es_array_iterator());
  var import_jquery20 = __toModule(require_jquery());

  // srcts/src/events/inputChanged.ts
  var import_jquery19 = __toModule(require_jquery());
  function triggerFileInputChanged(name, value, binding, el, inputType, onEl) {
    var evt = import_jquery19.default.Event("shiny:inputchanged");
    evt.name = name;
    evt.value = value;
    evt.binding = binding;
    evt.el = el;
    evt.inputType = inputType;
    (0, import_jquery19.default)(onEl).trigger(evt);
    return evt;
  }

  // srcts/src/shiny/initedMethods.ts
  var fullShinyObj = null;
  function setShinyObj(shiny) {
    fullShinyObj = shiny;
  }
  function shinySetInputValue(name, value, opts) {
    fullShinyObj.setInputValue(name, value, opts);
  }
  function shinyShinyApp() {
    return fullShinyObj.shinyapp;
  }
  function setShinyUser(user) {
    fullShinyObj.user = user;
  }
  function shinyForgetLastInputValue(name) {
    fullShinyObj.forgetLastInputValue(name);
  }
  function shinyBindAll(scope) {
    fullShinyObj.bindAll(scope);
  }
  function shinyUnbindAll(scope) {
    var includeSelf = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
    fullShinyObj.unbindAll(scope, includeSelf);
  }
  function shinyInitializeInputs(scope) {
    fullShinyObj.initializeInputs(scope);
  }
  function shinyAppBindOutput(id, binding) {
    fullShinyObj.shinyapp.bindOutput(id, binding);
  }
  function shinyAppUnbindOutput(id, binding) {
    return fullShinyObj.shinyapp.unbindOutput(id, binding);
  }
  function getShinyOnCustomMessage() {
    return fullShinyObj.oncustommessage;
  }
  var fileInputBinding;
  function getFileInputBinding() {
    return fileInputBinding;
  }
  function setFileInputBinding(fileInputBinding_) {
    fileInputBinding = fileInputBinding_;
  }
  function getShinyCreateWebsocket() {
    return fullShinyObj.createSocket;
  }

  // srcts/src/file/fileProcessor.ts
  function _typeof14(obj) {
    "@babel/helpers - typeof";
    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
      _typeof14 = function _typeof27(obj2) {
        return typeof obj2;
      };
    } else {
      _typeof14 = function _typeof27(obj2) {
        return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
      };
    }
    return _typeof14(obj);
  }
  function _inherits14(subClass, superClass) {
    if (typeof superClass !== "function" && superClass !== null) {
      throw new TypeError("Super expression must either be null or a function");
    }
    subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });
    if (superClass)
      _setPrototypeOf14(subClass, superClass);
  }
  function _setPrototypeOf14(o, p) {
    _setPrototypeOf14 = Object.setPrototypeOf || function _setPrototypeOf26(o2, p2) {
      o2.__proto__ = p2;
      return o2;
    };
    return _setPrototypeOf14(o, p);
  }
  function _createSuper14(Derived) {
    var hasNativeReflectConstruct = _isNativeReflectConstruct14();
    return function _createSuperInternal() {
      var Super = _getPrototypeOf14(Derived), result;
      if (hasNativeReflectConstruct) {
        var NewTarget = _getPrototypeOf14(this).constructor;
        result = Reflect.construct(Super, arguments, NewTarget);
      } else {
        result = Super.apply(this, arguments);
      }
      return _possibleConstructorReturn14(this, result);
    };
  }
  function _possibleConstructorReturn14(self2, call) {
    if (call && (_typeof14(call) === "object" || typeof call === "function")) {
      return call;
    }
    return _assertThisInitialized14(self2);
  }
  function _assertThisInitialized14(self2) {
    if (self2 === void 0) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }
    return self2;
  }
  function _isNativeReflectConstruct14() {
    if (typeof Reflect === "undefined" || !Reflect.construct)
      return false;
    if (Reflect.construct.sham)
      return false;
    if (typeof Proxy === "function")
      return true;
    try {
      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
      }));
      return true;
    } catch (e) {
      return false;
    }
  }
  function _getPrototypeOf14(o) {
    _getPrototypeOf14 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf26(o2) {
      return o2.__proto__ || Object.getPrototypeOf(o2);
    };
    return _getPrototypeOf14(o);
  }
  function _classCallCheck16(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties16(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass16(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties16(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties16(Constructor, staticProps);
    return Constructor;
  }
  function _defineProperty3(obj, key, value) {
    if (key in obj) {
      Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });
    } else {
      obj[key] = value;
    }
    return obj;
  }
  var FileProcessor = /* @__PURE__ */ function() {
    function FileProcessor2(files) {
      var exec$run = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;
      _classCallCheck16(this, FileProcessor2);
      _defineProperty3(this, "files", void 0);
      _defineProperty3(this, "fileIndex", -1);
      _defineProperty3(this, "aborted", false);
      _defineProperty3(this, "completed", false);
      this.files = files;
      if (exec$run) {
        this.$run();
      }
    }
    _createClass16(FileProcessor2, [{
      key: "onBegin",
      value: function onBegin(files, cont) {
        files;
        setTimeout(cont, 0);
      }
    }, {
      key: "onFile",
      value: function onFile(file, cont) {
        file;
        setTimeout(cont, 0);
      }
    }, {
      key: "onComplete",
      value: function onComplete() {
        return;
      }
    }, {
      key: "onAbort",
      value: function onAbort() {
        return;
      }
    }, {
      key: "abort",
      value: function abort() {
        if (this.completed || this.aborted)
          return;
        this.aborted = true;
        this.onAbort();
      }
    }, {
      key: "$getRun",
      value: function $getRun() {
        var _this = this;
        var called = false;
        return function() {
          if (called)
            return;
          called = true;
          _this.$run();
        };
      }
    }, {
      key: "$run",
      value: function $run() {
        if (this.aborted || this.completed)
          return;
        if (this.fileIndex < 0) {
          this.fileIndex = 0;
          this.onBegin(this.files, this.$getRun());
          return;
        }
        if (this.fileIndex === this.files.length) {
          this.completed = true;
          this.onComplete();
          return;
        }
        var file = this.files[this.fileIndex++];
        this.onFile(file, this.$getRun());
      }
    }]);
    return FileProcessor2;
  }();
  var FileUploader = /* @__PURE__ */ function(_FileProcessor) {
    _inherits14(FileUploader2, _FileProcessor);
    var _super = _createSuper14(FileUploader2);
    function FileUploader2(shinyapp, id, files, el) {
      var _this2;
      _classCallCheck16(this, FileUploader2);
      _this2 = _super.call(this, files, false);
      _defineProperty3(_assertThisInitialized14(_this2), "shinyapp", void 0);
      _defineProperty3(_assertThisInitialized14(_this2), "id", void 0);
      _defineProperty3(_assertThisInitialized14(_this2), "el", void 0);
      _defineProperty3(_assertThisInitialized14(_this2), "jobId", void 0);
      _defineProperty3(_assertThisInitialized14(_this2), "uploadUrl", void 0);
      _defineProperty3(_assertThisInitialized14(_this2), "progressBytes", void 0);
      _defineProperty3(_assertThisInitialized14(_this2), "totalBytes", void 0);
      _this2.shinyapp = shinyapp;
      _this2.id = id;
      _this2.el = el;
      _this2.$run();
      return _this2;
    }
    _createClass16(FileUploader2, [{
      key: "makeRequest",
      value: function makeRequest(method, args, onSuccess, onFailure, blobs) {
        this.shinyapp.makeRequest(method, args, onSuccess, onFailure, blobs);
      }
    }, {
      key: "onBegin",
      value: function onBegin(files, cont) {
        var _this3 = this;
        this.$setError(null);
        this.$setActive(true);
        this.$setVisible(true);
        this.onProgress(null, 0);
        this.totalBytes = 0;
        this.progressBytes = 0;
        import_jquery20.default.each(files, function(i, file) {
          _this3.totalBytes += file.size;
        });
        var fileInfo = import_jquery20.default.map(files, function(file, i) {
          return {
            name: file.name,
            size: file.size,
            type: file.type
          };
          i;
        });
        this.makeRequest("uploadInit", [fileInfo], function(response) {
          _this3.jobId = response.jobId;
          _this3.uploadUrl = response.uploadUrl;
          cont();
        }, function(error) {
          _this3.onError(error);
        }, void 0);
      }
    }, {
      key: "onFile",
      value: function onFile(file, cont) {
        var _this4 = this;
        this.onProgress(file, 0);
        import_jquery20.default.ajax(this.uploadUrl, {
          type: "POST",
          cache: false,
          xhr: function xhr() {
            var xhrVal = import_jquery20.default.ajaxSettings.xhr();
            if (xhrVal.upload) {
              xhrVal.upload.onprogress = function(e) {
                if (e.lengthComputable) {
                  _this4.onProgress(file, (_this4.progressBytes + e.loaded) / _this4.totalBytes);
                }
              };
            }
            return xhrVal;
          },
          data: file,
          contentType: "application/octet-stream",
          processData: false,
          success: function success() {
            _this4.progressBytes += file.size;
            cont();
          },
          error: function error(jqXHR, textStatus, errorThrown) {
            errorThrown;
            _this4.onError(jqXHR.responseText || textStatus);
          }
        });
      }
    }, {
      key: "onComplete",
      value: function onComplete() {
        var _this5 = this;
        var fileInfo = import_jquery20.default.map(this.files, function(file, i) {
          return {
            name: file.name,
            size: file.size,
            type: file.type
          };
          i;
        });
        var evt = triggerFileInputChanged(this.id, fileInfo, getFileInputBinding(), this.el, "shiny.fileupload", document);
        this.makeRequest("uploadEnd", [this.jobId, this.id], function() {
          _this5.$setActive(false);
          _this5.onProgress(null, 1);
          _this5.$bar().text("Upload complete");
          (0, import_jquery20.default)(evt.el).val("");
        }, function(error) {
          _this5.onError(error);
        }, void 0);
        this.$bar().text("Finishing upload");
      }
    }, {
      key: "onError",
      value: function onError(message) {
        this.$setError(message || "");
        this.$setActive(false);
      }
    }, {
      key: "onAbort",
      value: function onAbort() {
        this.$setVisible(false);
      }
    }, {
      key: "onProgress",
      value: function onProgress(file, completed) {
        this.$bar().width(Math.round(completed * 100) + "%");
        this.$bar().text(file ? file.name : "");
      }
    }, {
      key: "$container",
      value: function $container() {
        return (0, import_jquery20.default)("#" + $escape(this.id) + "_progress.shiny-file-input-progress");
      }
    }, {
      key: "$bar",
      value: function $bar() {
        return (0, import_jquery20.default)("#" + $escape(this.id) + "_progress.shiny-file-input-progress .progress-bar");
      }
    }, {
      key: "$setVisible",
      value: function $setVisible(visible) {
        this.$container().css("visibility", visible ? "visible" : "hidden");
      }
    }, {
      key: "$setError",
      value: function $setError(error) {
        this.$bar().toggleClass("progress-bar-danger", error !== null);
        if (error !== null) {
          this.onProgress(null, 1);
          this.$bar().text(error);
        }
      }
    }, {
      key: "$setActive",
      value: function $setActive(active) {
        this.$container().toggleClass("active", !!active);
      }
    }]);
    return FileUploader2;
  }(FileProcessor);

  // srcts/src/bindings/input/fileinput.ts
  function _typeof15(obj) {
    "@babel/helpers - typeof";
    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
      _typeof15 = function _typeof27(obj2) {
        return typeof obj2;
      };
    } else {
      _typeof15 = function _typeof27(obj2) {
        return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
      };
    }
    return _typeof15(obj);
  }
  function _classCallCheck17(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties17(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass17(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties17(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties17(Constructor, staticProps);
    return Constructor;
  }
  function _inherits15(subClass, superClass) {
    if (typeof superClass !== "function" && superClass !== null) {
      throw new TypeError("Super expression must either be null or a function");
    }
    subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });
    if (superClass)
      _setPrototypeOf15(subClass, superClass);
  }
  function _setPrototypeOf15(o, p) {
    _setPrototypeOf15 = Object.setPrototypeOf || function _setPrototypeOf26(o2, p2) {
      o2.__proto__ = p2;
      return o2;
    };
    return _setPrototypeOf15(o, p);
  }
  function _createSuper15(Derived) {
    var hasNativeReflectConstruct = _isNativeReflectConstruct15();
    return function _createSuperInternal() {
      var Super = _getPrototypeOf15(Derived), result;
      if (hasNativeReflectConstruct) {
        var NewTarget = _getPrototypeOf15(this).constructor;
        result = Reflect.construct(Super, arguments, NewTarget);
      } else {
        result = Super.apply(this, arguments);
      }
      return _possibleConstructorReturn15(this, result);
    };
  }
  function _possibleConstructorReturn15(self2, call) {
    if (call && (_typeof15(call) === "object" || typeof call === "function")) {
      return call;
    }
    return _assertThisInitialized15(self2);
  }
  function _assertThisInitialized15(self2) {
    if (self2 === void 0) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }
    return self2;
  }
  function _isNativeReflectConstruct15() {
    if (typeof Reflect === "undefined" || !Reflect.construct)
      return false;
    if (Reflect.construct.sham)
      return false;
    if (typeof Proxy === "function")
      return true;
    try {
      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
      }));
      return true;
    } catch (e) {
      return false;
    }
  }
  function _getPrototypeOf15(o) {
    _getPrototypeOf15 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf26(o2) {
      return o2.__proto__ || Object.getPrototypeOf(o2);
    };
    return _getPrototypeOf15(o);
  }
  var zoneActive = "shiny-file-input-active";
  var zoneOver = "shiny-file-input-over";
  function zoneOf(el) {
    return (0, import_jquery21.default)(el).closest("div.input-group");
  }
  function enableDraghover(el) {
    var $el = (0, import_jquery21.default)(el);
    var childCounter = 0;
    $el.on({
      "dragenter.draghover": function dragenterDraghover(e) {
        if (childCounter++ === 0) {
          $el.trigger("draghover:enter", e);
        }
      },
      "dragleave.draghover": function dragleaveDraghover(e) {
        if (--childCounter === 0) {
          $el.trigger("draghover:leave", e);
        }
        if (childCounter < 0) {
          console.error("draghover childCounter is negative somehow");
        }
      },
      "dragover.draghover": function dragoverDraghover(e) {
        e.preventDefault();
      },
      "drop.draghover": function dropDraghover(e) {
        childCounter = 0;
        $el.trigger("draghover:drop", e);
        e.preventDefault();
      }
    });
    return $el;
  }
  function disableDraghover(el) {
    return (0, import_jquery21.default)(el).off(".draghover");
  }
  function enableDocumentEvents() {
    var $doc = (0, import_jquery21.default)("html");
    enableDraghover($doc).on({
      "draghover:enter.draghover": function draghoverEnterDraghover() {
        zoneOf($fileInputs).addClass(zoneActive);
      },
      "draghover:leave.draghover": function draghoverLeaveDraghover() {
        zoneOf($fileInputs).removeClass(zoneActive);
      },
      "draghover:drop.draghover": function draghoverDropDraghover() {
        zoneOf($fileInputs).removeClass(zoneOver).removeClass(zoneActive);
      }
    });
  }
  function disableDocumentEvents() {
    var $doc = (0, import_jquery21.default)("html");
    $doc.off(".draghover");
    disableDraghover($doc);
  }
  function canSetFiles(fileList) {
    var testEl = document.createElement("input");
    testEl.type = "file";
    try {
      testEl.files = fileList;
    } catch (e) {
      return false;
    }
    return true;
  }
  function handleDrop(e, el) {
    var files = e.originalEvent.dataTransfer.files, $el = (0, import_jquery21.default)(el);
    if (files === void 0 || files === null) {
      console.log("Dropping files is not supported on this browser. (no FileList)");
    } else if (!canSetFiles(files)) {
      $el.val("");
      uploadDroppedFilesIE10Plus(el, files);
    } else {
      $el.val("");
      el.files = e.originalEvent.dataTransfer.files;
      $el.trigger("change");
    }
  }
  function setFileText($el, files) {
    var $fileText = $el.closest("div.input-group").find("input[type=text]");
    if (files.length === 1) {
      $fileText.val(files[0].name);
    } else {
      $fileText.val(files.length + " files");
    }
  }
  function abortCurrentUpload($el) {
    var uploader = $el.data("currentUploader");
    if (uploader)
      uploader.abort();
    $el.removeAttr("data-restore");
  }
  function uploadDroppedFilesIE10Plus(el, files) {
    var $el = (0, import_jquery21.default)(el);
    abortCurrentUpload($el);
    setFileText($el, files);
    $el.data("currentUploader", new FileUploader(shinyShinyApp(), fileInputBindingGetId(el), files, el));
  }
  function uploadFiles(evt) {
    var $el = (0, import_jquery21.default)(evt.target);
    abortCurrentUpload($el);
    var files = evt.target.files;
    var id = fileInputBindingGetId(evt.target);
    if (files.length === 0)
      return;
    setFileText($el, files);
    $el.data("currentUploader", new FileUploader(shinyShinyApp(), id, files, evt.target));
  }
  var $fileInputs = (0, import_jquery21.default)();
  function fileInputBindingGetId(el) {
    return InputBinding.prototype.getId.call(this, el) || el.name;
  }
  var FileInputBinding = /* @__PURE__ */ function(_InputBinding) {
    _inherits15(FileInputBinding2, _InputBinding);
    var _super = _createSuper15(FileInputBinding2);
    function FileInputBinding2() {
      _classCallCheck17(this, FileInputBinding2);
      return _super.apply(this, arguments);
    }
    _createClass17(FileInputBinding2, [{
      key: "find",
      value: function find2(scope) {
        return (0, import_jquery21.default)(scope).find('input[type="file"]');
      }
    }, {
      key: "getId",
      value: function getId(el) {
        return fileInputBindingGetId(el);
      }
    }, {
      key: "getValue",
      value: function getValue(el) {
        var data = (0, import_jquery21.default)(el).attr("data-restore");
        if (data) {
          var dataParsed = JSON.parse(data);
          var $fileText = (0, import_jquery21.default)(el).closest("div.input-group").find("input[type=text]");
          if (dataParsed.name.length === 1) {
            $fileText.val(dataParsed.name[0]);
          } else {
            $fileText.val(dataParsed.name.length + " files");
          }
          var $progress = (0, import_jquery21.default)(el).closest("div.form-group").find(".progress");
          var $bar = $progress.find(".progress-bar");
          $progress.removeClass("active");
          $bar.width("100%");
          $bar.css("visibility", "visible");
          return dataParsed;
        } else {
          return null;
        }
      }
    }, {
      key: "setValue",
      value: function setValue(el, value) {
        el;
        value;
      }
    }, {
      key: "getType",
      value: function getType(el) {
        return "shiny.file";
        el;
      }
    }, {
      key: "subscribe",
      value: function subscribe(el, callback) {
        callback;
        (0, import_jquery21.default)(el).on("change.fileInputBinding", uploadFiles);
        if ($fileInputs.length === 0)
          enableDocumentEvents();
        $fileInputs = $fileInputs.add(el);
        var $zone = zoneOf(el);
        enableDraghover($zone).on({
          "draghover:enter.draghover": function draghoverEnterDraghover(e) {
            e;
            $zone.addClass(zoneOver);
          },
          "draghover:leave.draghover": function draghoverLeaveDraghover(e) {
            $zone.removeClass(zoneOver);
            e.stopPropagation();
          },
          "draghover:drop.draghover": function draghoverDropDraghover(e, dropEvent) {
            e;
            handleDrop(dropEvent, el);
          }
        });
      }
    }, {
      key: "unsubscribe",
      value: function unsubscribe(el) {
        var $el = (0, import_jquery21.default)(el), $zone = zoneOf(el);
        $zone.removeClass(zoneOver).removeClass(zoneActive);
        disableDraghover($zone);
        $el.off(".fileInputBinding");
        $zone.off(".draghover");
        $fileInputs = $fileInputs.not(el);
        if ($fileInputs.length === 0)
          disableDocumentEvents();
      }
    }]);
    return FileInputBinding2;
  }(InputBinding);

  // srcts/src/bindings/input/index.ts
  function initInputBindings() {
    var inputBindings = new BindingRegistry();
    inputBindings.register(new TextInputBinding(), "shiny.textInput");
    inputBindings.register(new TextareaInputBinding(), "shiny.textareaInput");
    inputBindings.register(new PasswordInputBinding(), "shiny.passwordInput");
    inputBindings.register(new NumberInputBinding(), "shiny.numberInput");
    inputBindings.register(new CheckboxInputBinding(), "shiny.checkboxInput");
    inputBindings.register(new CheckboxGroupInputBinding(), "shiny.checkboxGroupInput");
    inputBindings.register(new RadioInputBinding(), "shiny.radioInput");
    inputBindings.register(new SliderInputBinding(), "shiny.sliderInput");
    inputBindings.register(new DateInputBinding(), "shiny.dateInput");
    inputBindings.register(new DateRangeInputBinding(), "shiny.dateRangeInput");
    inputBindings.register(new SelectInputBinding(), "shiny.selectInput");
    inputBindings.register(new ActionButtonInputBinding(), "shiny.actionButtonInput");
    inputBindings.register(new BootstrapTabInputBinding(), "shiny.bootstrapTabInput");
    var fileInputBinding2 = new FileInputBinding();
    inputBindings.register(fileInputBinding2, "shiny.fileInputBinding");
    return {
      inputBindings: inputBindings,
      fileInputBinding: fileInputBinding2
    };
  }

  // srcts/src/bindings/output/text.ts
  var import_es_array_iterator16 = __toModule(require_es_array_iterator());
  var import_jquery23 = __toModule(require_jquery());

  // node_modules/core-js/modules/es.array.join.js
  "use strict";
  var $40 = require_export();
  var IndexedObject = require_indexed_object();
  var toIndexedObject4 = require_to_indexed_object();
  var arrayMethodIsStrict2 = require_array_method_is_strict();
  var nativeJoin = [].join;
  var ES3_STRINGS = IndexedObject != Object;
  var STRICT_METHOD2 = arrayMethodIsStrict2("join", ",");
  $40({ target: "Array", proto: true, forced: ES3_STRINGS || !STRICT_METHOD2 }, {
    join: function join(separator) {
      return nativeJoin.call(toIndexedObject4(this), separator === void 0 ? "," : separator);
    }
  });

  // srcts/src/bindings/output/outputBinding.ts
  var import_es_regexp_exec3 = __toModule(require_es_regexp_exec());
  var import_jquery22 = __toModule(require_jquery());
  function _classCallCheck18(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties18(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass18(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties18(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties18(Constructor, staticProps);
    return Constructor;
  }
  function _defineProperty4(obj, key, value) {
    if (key in obj) {
      Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });
    } else {
      obj[key] = value;
    }
    return obj;
  }
  var OutputBinding = /* @__PURE__ */ function() {
    function OutputBinding2() {
      _classCallCheck18(this, OutputBinding2);
      _defineProperty4(this, "name", void 0);
    }
    _createClass18(OutputBinding2, [{
      key: "find",
      value: function find2(scope) {
        throw "Not implemented";
        scope;
      }
    }, {
      key: "renderValue",
      value: function renderValue(el, data) {
        throw "Not implemented";
        el;
        data;
      }
    }, {
      key: "getId",
      value: function getId(el) {
        return el.getAttribute("data-input-id") || el.id;
      }
    }, {
      key: "onValueChange",
      value: function onValueChange(el, data) {
        this.clearError(el);
        this.renderValue(el, data);
      }
    }, {
      key: "onValueError",
      value: function onValueError(el, err) {
        this.renderError(el, err);
      }
    }, {
      key: "renderError",
      value: function renderError(el, err) {
        this.clearError(el);
        if (err.message === "") {
          (0, import_jquery22.default)(el).empty();
          return;
        }
        var errClass = "shiny-output-error";
        if (err.type !== null) {
          errClass = errClass + " " + import_jquery22.default.map(asArray(err.type), function(type) {
            return errClass + "-" + type;
          }).join(" ");
        }
        (0, import_jquery22.default)(el).addClass(errClass).text(err.message);
      }
    }, {
      key: "clearError",
      value: function clearError(el) {
        (0, import_jquery22.default)(el).attr("class", function(i, c) {
          return c.replace(/(^|\s)shiny-output-error\S*/g, "");
        });
      }
    }, {
      key: "showProgress",
      value: function showProgress(el, show3) {
        var recalcClass = "recalculating";
        if (show3)
          (0, import_jquery22.default)(el).addClass(recalcClass);
        else
          (0, import_jquery22.default)(el).removeClass(recalcClass);
      }
    }]);
    return OutputBinding2;
  }();

  // srcts/src/bindings/output/text.ts
  function _typeof16(obj) {
    "@babel/helpers - typeof";
    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
      _typeof16 = function _typeof27(obj2) {
        return typeof obj2;
      };
    } else {
      _typeof16 = function _typeof27(obj2) {
        return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
      };
    }
    return _typeof16(obj);
  }
  function _classCallCheck19(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties19(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass19(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties19(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties19(Constructor, staticProps);
    return Constructor;
  }
  function _inherits16(subClass, superClass) {
    if (typeof superClass !== "function" && superClass !== null) {
      throw new TypeError("Super expression must either be null or a function");
    }
    subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });
    if (superClass)
      _setPrototypeOf16(subClass, superClass);
  }
  function _setPrototypeOf16(o, p) {
    _setPrototypeOf16 = Object.setPrototypeOf || function _setPrototypeOf26(o2, p2) {
      o2.__proto__ = p2;
      return o2;
    };
    return _setPrototypeOf16(o, p);
  }
  function _createSuper16(Derived) {
    var hasNativeReflectConstruct = _isNativeReflectConstruct16();
    return function _createSuperInternal() {
      var Super = _getPrototypeOf16(Derived), result;
      if (hasNativeReflectConstruct) {
        var NewTarget = _getPrototypeOf16(this).constructor;
        result = Reflect.construct(Super, arguments, NewTarget);
      } else {
        result = Super.apply(this, arguments);
      }
      return _possibleConstructorReturn16(this, result);
    };
  }
  function _possibleConstructorReturn16(self2, call) {
    if (call && (_typeof16(call) === "object" || typeof call === "function")) {
      return call;
    }
    return _assertThisInitialized16(self2);
  }
  function _assertThisInitialized16(self2) {
    if (self2 === void 0) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }
    return self2;
  }
  function _isNativeReflectConstruct16() {
    if (typeof Reflect === "undefined" || !Reflect.construct)
      return false;
    if (Reflect.construct.sham)
      return false;
    if (typeof Proxy === "function")
      return true;
    try {
      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
      }));
      return true;
    } catch (e) {
      return false;
    }
  }
  function _getPrototypeOf16(o) {
    _getPrototypeOf16 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf26(o2) {
      return o2.__proto__ || Object.getPrototypeOf(o2);
    };
    return _getPrototypeOf16(o);
  }
  var TextOutputBinding = /* @__PURE__ */ function(_OutputBinding) {
    _inherits16(TextOutputBinding2, _OutputBinding);
    var _super = _createSuper16(TextOutputBinding2);
    function TextOutputBinding2() {
      _classCallCheck19(this, TextOutputBinding2);
      return _super.apply(this, arguments);
    }
    _createClass19(TextOutputBinding2, [{
      key: "find",
      value: function find2(scope) {
        return (0, import_jquery23.default)(scope).find(".shiny-text-output");
      }
    }, {
      key: "renderValue",
      value: function renderValue(el, data) {
        (0, import_jquery23.default)(el).text(data);
      }
    }]);
    return TextOutputBinding2;
  }(OutputBinding);

  // srcts/src/bindings/output/downloadlink.ts
  var import_es_array_iterator17 = __toModule(require_es_array_iterator());
  var import_jquery24 = __toModule(require_jquery());
  function _typeof17(obj) {
    "@babel/helpers - typeof";
    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
      _typeof17 = function _typeof27(obj2) {
        return typeof obj2;
      };
    } else {
      _typeof17 = function _typeof27(obj2) {
        return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
      };
    }
    return _typeof17(obj);
  }
  function _classCallCheck20(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties20(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass20(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties20(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties20(Constructor, staticProps);
    return Constructor;
  }
  function _inherits17(subClass, superClass) {
    if (typeof superClass !== "function" && superClass !== null) {
      throw new TypeError("Super expression must either be null or a function");
    }
    subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });
    if (superClass)
      _setPrototypeOf17(subClass, superClass);
  }
  function _setPrototypeOf17(o, p) {
    _setPrototypeOf17 = Object.setPrototypeOf || function _setPrototypeOf26(o2, p2) {
      o2.__proto__ = p2;
      return o2;
    };
    return _setPrototypeOf17(o, p);
  }
  function _createSuper17(Derived) {
    var hasNativeReflectConstruct = _isNativeReflectConstruct17();
    return function _createSuperInternal() {
      var Super = _getPrototypeOf17(Derived), result;
      if (hasNativeReflectConstruct) {
        var NewTarget = _getPrototypeOf17(this).constructor;
        result = Reflect.construct(Super, arguments, NewTarget);
      } else {
        result = Super.apply(this, arguments);
      }
      return _possibleConstructorReturn17(this, result);
    };
  }
  function _possibleConstructorReturn17(self2, call) {
    if (call && (_typeof17(call) === "object" || typeof call === "function")) {
      return call;
    }
    return _assertThisInitialized17(self2);
  }
  function _assertThisInitialized17(self2) {
    if (self2 === void 0) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }
    return self2;
  }
  function _isNativeReflectConstruct17() {
    if (typeof Reflect === "undefined" || !Reflect.construct)
      return false;
    if (Reflect.construct.sham)
      return false;
    if (typeof Proxy === "function")
      return true;
    try {
      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
      }));
      return true;
    } catch (e) {
      return false;
    }
  }
  function _getPrototypeOf17(o) {
    _getPrototypeOf17 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf26(o2) {
      return o2.__proto__ || Object.getPrototypeOf(o2);
    };
    return _getPrototypeOf17(o);
  }
  var DownloadLinkOutputBinding = /* @__PURE__ */ function(_OutputBinding) {
    _inherits17(DownloadLinkOutputBinding2, _OutputBinding);
    var _super = _createSuper17(DownloadLinkOutputBinding2);
    function DownloadLinkOutputBinding2() {
      _classCallCheck20(this, DownloadLinkOutputBinding2);
      return _super.apply(this, arguments);
    }
    _createClass20(DownloadLinkOutputBinding2, [{
      key: "find",
      value: function find2(scope) {
        return (0, import_jquery24.default)(scope).find("a.shiny-download-link");
      }
    }, {
      key: "renderValue",
      value: function renderValue(el, data) {
        (0, import_jquery24.default)(el).attr("href", data);
      }
    }]);
    return DownloadLinkOutputBinding2;
  }(OutputBinding);
  (0, import_jquery24.default)(document).on("click.shinyDownloadLink", "a.shiny-download-link", function(e) {
    e;
    var evt = jQuery.Event("shiny:filedownload");
    evt.name = this.id;
    evt.href = this.href;
    (0, import_jquery24.default)(document).trigger(evt);
  });

  // srcts/src/bindings/output/datatable.ts
  var import_es_regexp_exec4 = __toModule(require_es_regexp_exec());

  // node_modules/core-js/modules/es.string.search.js
  "use strict";
  var fixRegExpWellKnownSymbolLogic3 = require_fix_regexp_well_known_symbol_logic();
  var anObject7 = require_an_object();
  var requireObjectCoercible3 = require_require_object_coercible();
  var sameValue = require_same_value();
  var regExpExec2 = require_regexp_exec_abstract();
  fixRegExpWellKnownSymbolLogic3("search", 1, function(SEARCH, nativeSearch, maybeCallNative) {
    return [
      function search(regexp) {
        var O = requireObjectCoercible3(this);
        var searcher = regexp == void 0 ? void 0 : regexp[SEARCH];
        return searcher !== void 0 ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));
      },
      function(regexp) {
        var res = maybeCallNative(nativeSearch, regexp, this);
        if (res.done)
          return res.value;
        var rx = anObject7(regexp);
        var S = String(this);
        var previousLastIndex = rx.lastIndex;
        if (!sameValue(previousLastIndex, 0))
          rx.lastIndex = 0;
        var result = regExpExec2(rx, S);
        if (!sameValue(rx.lastIndex, previousLastIndex))
          rx.lastIndex = previousLastIndex;
        return result === null ? -1 : result.index;
      }
    ];
  });

  // srcts/src/bindings/output/datatable.ts
  var import_es_array_iterator18 = __toModule(require_es_array_iterator());
  var import_jquery25 = __toModule(require_jquery());

  // srcts/src/time/debounce.ts
  function _classCallCheck21(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties21(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass21(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties21(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties21(Constructor, staticProps);
    return Constructor;
  }
  function _defineProperty5(obj, key, value) {
    if (key in obj) {
      Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });
    } else {
      obj[key] = value;
    }
    return obj;
  }
  var Debouncer = /* @__PURE__ */ function() {
    function Debouncer2(target, func, delayMs) {
      _classCallCheck21(this, Debouncer2);
      _defineProperty5(this, "target", void 0);
      _defineProperty5(this, "func", void 0);
      _defineProperty5(this, "delayMs", void 0);
      _defineProperty5(this, "timerId", void 0);
      _defineProperty5(this, "args", void 0);
      this.target = target;
      this.func = func;
      this.delayMs = delayMs;
      this.timerId = null;
      this.args = null;
    }
    _createClass21(Debouncer2, [{
      key: "normalCall",
      value: function normalCall() {
        var _this = this;
        this.$clearTimer();
        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
          args[_key] = arguments[_key];
        }
        this.args = args;
        this.timerId = setTimeout(function() {
          if (_this.timerId === null)
            return;
          _this.$clearTimer();
          _this.$invoke();
        }, this.delayMs);
      }
    }, {
      key: "immediateCall",
      value: function immediateCall() {
        this.$clearTimer();
        for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
          args[_key2] = arguments[_key2];
        }
        this.args = args;
        this.$invoke();
      }
    }, {
      key: "isPending",
      value: function isPending() {
        return this.timerId !== null;
      }
    }, {
      key: "$clearTimer",
      value: function $clearTimer() {
        if (this.timerId !== null) {
          clearTimeout(this.timerId);
          this.timerId = null;
        }
      }
    }, {
      key: "$invoke",
      value: function $invoke() {
        this.func.apply(this.target, this.args);
        this.args = null;
      }
    }]);
    return Debouncer2;
  }();
  function debounce(threshold, func) {
    var timerId = null;
    return function() {
      var _this2 = this;
      for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
        args[_key3] = arguments[_key3];
      }
      if (timerId !== null) {
        clearTimeout(timerId);
        timerId = null;
      }
      timerId = setTimeout(function() {
        if (timerId === null)
          return;
        timerId = null;
        func.apply(_this2, args);
      }, threshold);
    };
  }

  // srcts/src/time/invoke.ts
  function _classCallCheck22(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties22(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass22(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties22(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties22(Constructor, staticProps);
    return Constructor;
  }
  function _defineProperty6(obj, key, value) {
    if (key in obj) {
      Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });
    } else {
      obj[key] = value;
    }
    return obj;
  }
  var Invoker = /* @__PURE__ */ function() {
    function Invoker2(target, func) {
      _classCallCheck22(this, Invoker2);
      _defineProperty6(this, "target", void 0);
      _defineProperty6(this, "func", void 0);
      this.target = target;
      this.func = func;
    }
    _createClass22(Invoker2, [{
      key: "normalCall",
      value: function normalCall() {
        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
          args[_key] = arguments[_key];
        }
        this.func.apply(this.target, args);
      }
    }, {
      key: "immediateCall",
      value: function immediateCall() {
        for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
          args[_key2] = arguments[_key2];
        }
        this.func.apply(this.target, args);
      }
    }]);
    return Invoker2;
  }();

  // srcts/src/time/throttle.ts
  function _classCallCheck23(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties23(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass23(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties23(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties23(Constructor, staticProps);
    return Constructor;
  }
  function _defineProperty7(obj, key, value) {
    if (key in obj) {
      Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });
    } else {
      obj[key] = value;
    }
    return obj;
  }
  var Throttler = /* @__PURE__ */ function() {
    function Throttler2(target, func, delayMs) {
      _classCallCheck23(this, Throttler2);
      _defineProperty7(this, "target", void 0);
      _defineProperty7(this, "func", void 0);
      _defineProperty7(this, "delayMs", void 0);
      _defineProperty7(this, "timerId", void 0);
      _defineProperty7(this, "args", void 0);
      this.target = target;
      this.func = func;
      this.delayMs = delayMs;
      this.timerId = null;
      this.args = null;
    }
    _createClass23(Throttler2, [{
      key: "normalCall",
      value: function normalCall() {
        var _this = this;
        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
          args[_key] = arguments[_key];
        }
        this.args = args;
        if (this.timerId === null) {
          this.$invoke();
          this.timerId = setTimeout(function() {
            var _this$normalCall;
            if (_this.timerId === null)
              return;
            _this.$clearTimer();
            if (args.length > 0)
              (_this$normalCall = _this.normalCall).apply.apply(_this$normalCall, [_this].concat(args));
          }, this.delayMs);
        }
      }
    }, {
      key: "immediateCall",
      value: function immediateCall() {
        this.$clearTimer();
        for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
          args[_key2] = arguments[_key2];
        }
        this.args = args;
        this.$invoke();
      }
    }, {
      key: "isPending",
      value: function isPending() {
        return this.timerId !== null;
      }
    }, {
      key: "$clearTimer",
      value: function $clearTimer() {
        if (this.timerId !== null) {
          clearTimeout(this.timerId);
          this.timerId = null;
        }
      }
    }, {
      key: "$invoke",
      value: function $invoke() {
        this.func.apply(this.target, this.args);
        this.args = null;
      }
    }]);
    return Throttler2;
  }();

  // srcts/src/bindings/output/datatable.ts
  function _typeof18(obj) {
    "@babel/helpers - typeof";
    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
      _typeof18 = function _typeof27(obj2) {
        return typeof obj2;
      };
    } else {
      _typeof18 = function _typeof27(obj2) {
        return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
      };
    }
    return _typeof18(obj);
  }
  function _classCallCheck24(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties24(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass24(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties24(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties24(Constructor, staticProps);
    return Constructor;
  }
  function _inherits18(subClass, superClass) {
    if (typeof superClass !== "function" && superClass !== null) {
      throw new TypeError("Super expression must either be null or a function");
    }
    subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });
    if (superClass)
      _setPrototypeOf18(subClass, superClass);
  }
  function _setPrototypeOf18(o, p) {
    _setPrototypeOf18 = Object.setPrototypeOf || function _setPrototypeOf26(o2, p2) {
      o2.__proto__ = p2;
      return o2;
    };
    return _setPrototypeOf18(o, p);
  }
  function _createSuper18(Derived) {
    var hasNativeReflectConstruct = _isNativeReflectConstruct18();
    return function _createSuperInternal() {
      var Super = _getPrototypeOf18(Derived), result;
      if (hasNativeReflectConstruct) {
        var NewTarget = _getPrototypeOf18(this).constructor;
        result = Reflect.construct(Super, arguments, NewTarget);
      } else {
        result = Super.apply(this, arguments);
      }
      return _possibleConstructorReturn18(this, result);
    };
  }
  function _possibleConstructorReturn18(self2, call) {
    if (call && (_typeof18(call) === "object" || typeof call === "function")) {
      return call;
    }
    return _assertThisInitialized18(self2);
  }
  function _assertThisInitialized18(self2) {
    if (self2 === void 0) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }
    return self2;
  }
  function _isNativeReflectConstruct18() {
    if (typeof Reflect === "undefined" || !Reflect.construct)
      return false;
    if (Reflect.construct.sham)
      return false;
    if (typeof Proxy === "function")
      return true;
    try {
      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
      }));
      return true;
    } catch (e) {
      return false;
    }
  }
  function _getPrototypeOf18(o) {
    _getPrototypeOf18 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf26(o2) {
      return o2.__proto__ || Object.getPrototypeOf(o2);
    };
    return _getPrototypeOf18(o);
  }
  var DatatableOutputBinding = /* @__PURE__ */ function(_OutputBinding) {
    _inherits18(DatatableOutputBinding2, _OutputBinding);
    var _super = _createSuper18(DatatableOutputBinding2);
    function DatatableOutputBinding2() {
      _classCallCheck24(this, DatatableOutputBinding2);
      return _super.apply(this, arguments);
    }
    _createClass24(DatatableOutputBinding2, [{
      key: "find",
      value: function find2(scope) {
        return (0, import_jquery25.default)(scope).find(".shiny-datatable-output");
      }
    }, {
      key: "onValueError",
      value: function onValueError(el, err) {
        shinyUnbindAll(el);
        this.renderError(el, err);
      }
    }, {
      key: "renderValue",
      value: function renderValue(el, _data) {
        var $el = (0, import_jquery25.default)(el).empty();
        if (!_data || !_data.colnames)
          return;
        var colnames = import_jquery25.default.makeArray(_data.colnames);
        var header = import_jquery25.default.map(colnames, function(x) {
          return "<th>" + x + "</th>";
        }).join("");
        header = "<thead><tr>" + header + "</tr></thead>";
        var footer = "";
        if (_data.options === null || _data.options.searching !== false) {
          footer = import_jquery25.default.map(colnames, function(x) {
            return '<th><input type="text" placeholder="' + escapeHTML(x.replace(/(<([^>]+)>)/gi, "")) + '" /></th>';
          }).join("");
          footer = "<tfoot>" + footer + "</tfoot>";
        }
        var content = '<table class="table table-striped table-hover">' + header + footer + "</table>";
        $el.append(content);
        if (_data.evalOptions)
          import_jquery25.default.each(_data.evalOptions, function(i, x) {
            _data.options[x] = indirectEval("(" + _data.options[x] + ")");
          });
        var searchCI = _data.options === null || typeof _data.options.search === "undefined" || _data.options.search.caseInsensitive !== false;
        var oTable = (0, import_jquery25.default)(el).children("table").DataTable(import_jquery25.default.extend({
          processing: true,
          serverSide: true,
          order: [],
          orderClasses: false,
          pageLength: 25,
          ajax: {
            url: _data.action,
            type: "POST",
            data: function data(d) {
              d.search.caseInsensitive = searchCI;
              d.escape = _data.escape;
            }
          }
        }, _data.options));
        if (typeof _data.callback === "string") {
          var callback = indirectEval("(" + _data.callback + ")");
          if (typeof callback === "function")
            callback(oTable);
        }
        $el.find("label input").first().unbind("keyup").keyup(debounce(_data.searchDelay, function() {
          oTable.search(this.value).draw();
        }));
        var searchInputs = $el.find("tfoot input");
        if (searchInputs.length > 0) {
          import_jquery25.default.each(oTable.settings()[0].aoColumns, function(i, x) {
            if (!x.bSearchable)
              searchInputs.eq(i).hide();
          });
          searchInputs.keyup(debounce(_data.searchDelay, function() {
            oTable.column(searchInputs.index(this)).search(this.value).draw();
          }));
        }
        $el.parents(".tab-content").css("overflow", "visible");
      }
    }]);
    return DatatableOutputBinding2;
  }(OutputBinding);

  // srcts/src/bindings/output/html.ts
  var import_es_array_iterator20 = __toModule(require_es_array_iterator());
  var import_jquery28 = __toModule(require_jquery());

  // node_modules/core-js/modules/es.array.for-each.js
  "use strict";
  var $45 = require_export();
  var forEach = require_array_for_each();
  $45({ target: "Array", proto: true, forced: [].forEach != forEach }, {
    forEach: forEach
  });

  // node_modules/core-js/modules/web.dom-collections.for-each.js
  var global6 = require_global();
  var DOMIterables2 = require_dom_iterables();
  var forEach2 = require_array_for_each();
  var createNonEnumerableProperty3 = require_create_non_enumerable_property();
  for (var COLLECTION_NAME in DOMIterables2) {
    Collection = global6[COLLECTION_NAME];
    CollectionPrototype = Collection && Collection.prototype;
    if (CollectionPrototype && CollectionPrototype.forEach !== forEach2)
      try {
        createNonEnumerableProperty3(CollectionPrototype, "forEach", forEach2);
      } catch (error) {
        CollectionPrototype.forEach = forEach2;
      }
  }
  var Collection;
  var CollectionPrototype;

  // node_modules/core-js/modules/es.object.entries.js
  var $46 = require_export();
  var $entries = require_object_to_array().entries;
  $46({ target: "Object", stat: true }, {
    entries: function entries(O) {
      return $entries(O);
    }
  });

  // srcts/src/shiny/render.ts
  var import_es_regexp_exec6 = __toModule(require_es_regexp_exec());
  var import_es_array_iterator19 = __toModule(require_es_array_iterator());

  // node_modules/core-js/modules/es.array.from.js
  var $47 = require_export();
  var from = require_array_from();
  var checkCorrectnessOfIteration = require_check_correctness_of_iteration();
  var INCORRECT_ITERATION = !checkCorrectnessOfIteration(function(iterable) {
    Array.from(iterable);
  });
  $47({ target: "Array", stat: true, forced: INCORRECT_ITERATION }, {
    from: from
  });

  // srcts/src/shiny/render.ts
  var import_jquery27 = __toModule(require_jquery());

  // srcts/src/shiny/sendImageSize.ts
  function _classCallCheck25(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties25(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass25(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties25(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties25(Constructor, staticProps);
    return Constructor;
  }
  function _defineProperty8(obj, key, value) {
    if (key in obj) {
      Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });
    } else {
      obj[key] = value;
    }
    return obj;
  }
  var SendImageSize = /* @__PURE__ */ function() {
    function SendImageSize2() {
      _classCallCheck25(this, SendImageSize2);
      _defineProperty8(this, "regular", void 0);
      _defineProperty8(this, "transitioned", void 0);
    }
    _createClass25(SendImageSize2, [{
      key: "setImageSend",
      value: function setImageSend(inputBatchSender, doSendImageSize) {
        var sendImageSizeDebouncer = new Debouncer(null, doSendImageSize, 0);
        this.regular = function() {
          sendImageSizeDebouncer.normalCall();
        };
        inputBatchSender.lastChanceCallback.push(function() {
          if (sendImageSizeDebouncer.isPending())
            sendImageSizeDebouncer.immediateCall();
        });
        this.transitioned = debounce(200, this.regular);
        return sendImageSizeDebouncer;
      }
    }]);
    return SendImageSize2;
  }();
  var sendImageSizeFns = new SendImageSize();

  // srcts/src/shiny/singletons.ts
  var import_es_regexp_exec5 = __toModule(require_es_regexp_exec());
  var import_jquery26 = __toModule(require_jquery());
  var reSingleton = /<!--(SHINY.SINGLETON\[([\w]+)\])-->([\s\S]*?)<!--\/\1-->/;
  var reHead = /<head(?:\s[^>]*)?>([\s\S]*?)<\/head>/;
  var knownSingletons = {};
  function renderHtml(html, el, where) {
    var processed = processHtml(html);
    addToHead(processed.head);
    register(processed.singletons);
    if (where === "replace") {
      (0, import_jquery26.default)(el).html(processed.html);
    } else {
      var elElements;
      if (el instanceof HTMLElement) {
        elElements = [el];
      } else {
        elElements = el.toArray();
      }
      import_jquery26.default.each(elElements, function(i, el2) {
        el2.insertAdjacentHTML(toLowerCase(where), processed.html);
      });
    }
    return processed;
  }
  function register(s) {
    import_jquery26.default.extend(knownSingletons, s);
  }
  function registerNames(s) {
    if (typeof s === "string") {
      knownSingletons[s] = true;
    } else if (s instanceof Array) {
      for (var i = 0; i < s.length; i++) {
        knownSingletons[s[i]] = true;
      }
    }
  }
  function addToHead(head) {
    if (head.length > 0) {
      var tempDiv = (0, import_jquery26.default)("<div>" + head + "</div>").get(0);
      var $head = (0, import_jquery26.default)("head");
      while (tempDiv.hasChildNodes()) {
        $head.append(tempDiv.firstChild);
      }
    }
  }
  function processHtml(val) {
    var newSingletons = {};
    var newVal;
    var findNewPayload = function findNewPayload2(match, p1, sig, payload) {
      if (knownSingletons[sig] || newSingletons[sig])
        return "";
      newSingletons[sig] = true;
      return payload;
    };
    while (true) {
      newVal = val.replace(reSingleton, findNewPayload);
      if (val.length === newVal.length)
        break;
      val = newVal;
    }
    var heads = [];
    var headAddPayload = function headAddPayload2(match, payload) {
      heads.push(payload);
      return "";
    };
    while (true) {
      newVal = val.replace(reHead, headAddPayload);
      if (val.length === newVal.length)
        break;
      val = newVal;
    }
    return {
      html: val,
      head: heads.join("\n"),
      singletons: newSingletons
    };
  }

  // srcts/src/shiny/render.ts
  function _slicedToArray(arr, i) {
    return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
  }
  function _nonIterableRest() {
    throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }
  function _unsupportedIterableToArray(o, minLen) {
    if (!o)
      return;
    if (typeof o === "string")
      return _arrayLikeToArray(o, minLen);
    var n = Object.prototype.toString.call(o).slice(8, -1);
    if (n === "Object" && o.constructor)
      n = o.constructor.name;
    if (n === "Map" || n === "Set")
      return Array.from(o);
    if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
      return _arrayLikeToArray(o, minLen);
  }
  function _arrayLikeToArray(arr, len) {
    if (len == null || len > arr.length)
      len = arr.length;
    for (var i = 0, arr2 = new Array(len); i < len; i++) {
      arr2[i] = arr[i];
    }
    return arr2;
  }
  function _iterableToArrayLimit(arr, i) {
    var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]);
    if (_i == null)
      return;
    var _arr = [];
    var _n = true;
    var _d = false;
    var _s, _e;
    try {
      for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
        _arr.push(_s.value);
        if (i && _arr.length === i)
          break;
      }
    } catch (err) {
      _d = true;
      _e = err;
    } finally {
      try {
        if (!_n && _i["return"] != null)
          _i["return"]();
      } finally {
        if (_d)
          throw _e;
      }
    }
    return _arr;
  }
  function _arrayWithHoles(arr) {
    if (Array.isArray(arr))
      return arr;
  }
  function _typeof19(obj) {
    "@babel/helpers - typeof";
    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
      _typeof19 = function _typeof27(obj2) {
        return typeof obj2;
      };
    } else {
      _typeof19 = function _typeof27(obj2) {
        return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
      };
    }
    return _typeof19(obj);
  }
  function renderDependencies(dependencies) {
    if (dependencies) {
      dependencies.forEach(renderDependency);
    }
  }
  function renderContent(el, content) {
    var where = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "replace";
    if (where === "replace") {
      shinyUnbindAll(el);
    }
    var html = "";
    var dependencies = [];
    if (content === null) {
      html = "";
    } else if (typeof content === "string") {
      html = content;
    } else if (_typeof19(content) === "object") {
      html = content.html;
      dependencies = content.deps || [];
    }
    renderHtml2(html, el, dependencies, where);
    var scope = el;
    if (where === "replace") {
      shinyInitializeInputs(el);
      shinyBindAll(el);
    } else {
      var $parent = (0, import_jquery27.default)(el).parent();
      if ($parent.length > 0) {
        scope = $parent;
        if (where === "beforeBegin" || where === "afterEnd") {
          var $grandparent = $parent.parent();
          if ($grandparent.length > 0)
            scope = $grandparent;
        }
      }
      shinyInitializeInputs(scope);
      shinyBindAll(scope);
    }
  }
  function renderHtml2(html, el, dependencies) {
    var where = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : "replace";
    renderDependencies(dependencies);
    return renderHtml(html, el, where);
  }
  var htmlDependencies = {};
  function registerDependency(name, version) {
    htmlDependencies[name] = version;
  }
  function needsRestyle(dep) {
    if (!dep.restyle) {
      return false;
    }
    var names = Object.keys(htmlDependencies);
    var idx = names.indexOf(dep.name);
    if (idx === -1) {
      return false;
    }
    return htmlDependencies[names[idx]] === dep.version;
  }
  function renderDependency(dep_) {
    var dep = normalizeHtmlDependency(dep_);
    var stylesheetLinks = dep.stylesheet.map(function(x) {
      if (!hasOwnProperty(x, "rel"))
        x.rel = "stylesheet";
      if (!hasOwnProperty(x, "type"))
        x.type = "text/css";
      var link = document.createElement("link");
      Object.entries(x).forEach(function(_ref) {
        var _ref2 = _slicedToArray(_ref, 2), attr = _ref2[0], val = _ref2[1];
        if (attr === "href") {
          val = encodeURI(val);
        }
        link.setAttribute(attr, val ? val : "");
      });
      return link;
    });
    if (needsRestyle(dep)) {
      addStylesheetsAndRestyle(stylesheetLinks);
      return true;
    }
    if (hasOwnProperty(htmlDependencies, dep.name))
      return false;
    registerDependency(dep.name, dep.version);
    var $head = (0, import_jquery27.default)("head").first();
    dep.meta.forEach(function(x) {
      var meta = document.createElement("meta");
      for (var _i2 = 0, _Object$entries = Object.entries(x); _i2 < _Object$entries.length; _i2++) {
        var _Object$entries$_i = _slicedToArray(_Object$entries[_i2], 2), attr = _Object$entries$_i[0], val = _Object$entries$_i[1];
        meta.setAttribute(attr, val);
      }
      $head.append(meta);
    });
    if (stylesheetLinks.length !== 0) {
      $head.append(stylesheetLinks);
    }
    dep.script.forEach(function(x) {
      var script = document.createElement("script");
      Object.entries(x).forEach(function(_ref3) {
        var _ref4 = _slicedToArray(_ref3, 2), attr = _ref4[0], val = _ref4[1];
        if (attr === "src") {
          val = encodeURI(val);
        }
        script.setAttribute(attr, val ? val : "");
      });
      $head.append(script);
    });
    dep.attachment.forEach(function(x) {
      var link = (0, import_jquery27.default)("<link rel='attachment'>").attr("id", dep.name + "-" + x.key + "-attachment").attr("href", encodeURI(x.href));
      $head.append(link);
    });
    if (dep.head) {
      var $newHead = (0, import_jquery27.default)("<head></head>");
      $newHead.html(dep.head);
      $head.append($newHead.children());
    }
    return true;
  }
  function addStylesheetsAndRestyle(links) {
    var $head = (0, import_jquery27.default)("head").first();
    var refreshStyle = function refreshStyle2(href, oldSheet) {
      var xhr = new XMLHttpRequest();
      xhr.open("GET", href);
      xhr.onload = function() {
        var id = "shiny_restyle_" + href.split("?restyle")[0].replace(/\W/g, "_");
        var oldStyle = $head.find("style#" + id);
        var newStyle = (0, import_jquery27.default)("<style>").attr("id", id).html(xhr.responseText);
        $head.append(newStyle);
        oldStyle.remove();
        removeSheet(oldSheet);
        sendImageSizeFns.transitioned();
      };
      xhr.send();
    };
    var findSheet = function findSheet2(href) {
      if (!href)
        return null;
      for (var i = 0; i < document.styleSheets.length; i++) {
        var sheet = document.styleSheets[i];
        if (typeof sheet.href === "string" && sheet.href.indexOf(href) > -1) {
          return sheet;
        }
      }
      return null;
    };
    var removeSheet = function removeSheet2(sheet) {
      if (!sheet)
        return;
      sheet.disabled = true;
      if (isIE())
        sheet.cssText = "";
      if (sheet.ownerNode instanceof Element) {
        (0, import_jquery27.default)(sheet.ownerNode).remove();
      }
    };
    links.map(function(link) {
      var $link = (0, import_jquery27.default)(link);
      var oldSheet = findSheet($link.attr("href"));
      var href = $link.attr("href") + "?restyle=" + new Date().getTime();
      if (isIE()) {
        refreshStyle(href, oldSheet);
      } else {
        $link.attr("href", href);
        $link.attr("onload", function() {
          var $dummyEl = (0, import_jquery27.default)("<div>").css("transition", "0.1s all").css("position", "absolute").css("top", "-1000px").css("left", "0");
          $dummyEl.one("transitionend", function() {
            $dummyEl.remove();
            removeSheet(oldSheet);
            sendImageSizeFns.transitioned();
          });
          (0, import_jquery27.default)(document.body).append($dummyEl);
          var color = "#" + Math.floor(Math.random() * 16777215).toString(16);
          setTimeout(function() {
            return $dummyEl.css("color", color);
          }, 10);
        });
        $head.append(link);
      }
    });
  }
  function normalizeHtmlDependency(dep) {
    var _dep$src;
    var hrefPrefix = (_dep$src = dep.src) === null || _dep$src === void 0 ? void 0 : _dep$src.href;
    var result = {
      name: dep.name,
      version: dep.version,
      restyle: dep.restyle,
      meta: [],
      stylesheet: [],
      script: [],
      attachment: [],
      head: dep.head
    };
    if (dep.meta) {
      if (Array.isArray(dep.meta)) {
        result.meta = dep.meta;
      } else {
        result.meta = Object.entries(dep.meta).map(function(_ref5) {
          var _ref6 = _slicedToArray(_ref5, 2), attr = _ref6[0], val = _ref6[1];
          return {
            name: attr,
            content: val
          };
        });
      }
    }
    result.stylesheet = asArray(dep.stylesheet).map(function(s) {
      if (typeof s === "string") {
        s = {
          href: s
        };
      }
      if (hrefPrefix) {
        s.href = hrefPrefix + "/" + s.href;
      }
      return s;
    });
    result.script = asArray(dep.script).map(function(s) {
      if (typeof s === "string") {
        s = {
          src: s
        };
      }
      if (hrefPrefix) {
        s.src = hrefPrefix + "/" + s.src;
      }
      return s;
    });
    var attachments = dep.attachment;
    if (!attachments)
      attachments = [];
    if (typeof attachments === "string")
      attachments = [attachments];
    if (Array.isArray(attachments)) {
      var tmp = attachments;
      attachments = tmp.map(function(attachment, index) {
        if (typeof attachment === "string") {
          return {
            key: (index + 1).toString(),
            href: attachment
          };
        } else {
          return attachment;
        }
      });
    } else {
      attachments = Object.entries(attachments).map(function(_ref7) {
        var _ref8 = _slicedToArray(_ref7, 2), attr = _ref8[0], val = _ref8[1];
        return {
          key: attr,
          href: val
        };
      });
    }
    result.attachment = attachments.map(function(s) {
      if (hrefPrefix) {
        s.href = hrefPrefix + "/" + s.href;
      }
      return s;
    });
    return result;
  }

  // srcts/src/bindings/output/html.ts
  function _typeof20(obj) {
    "@babel/helpers - typeof";
    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
      _typeof20 = function _typeof27(obj2) {
        return typeof obj2;
      };
    } else {
      _typeof20 = function _typeof27(obj2) {
        return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
      };
    }
    return _typeof20(obj);
  }
  function _classCallCheck26(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties26(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass26(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties26(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties26(Constructor, staticProps);
    return Constructor;
  }
  function _inherits19(subClass, superClass) {
    if (typeof superClass !== "function" && superClass !== null) {
      throw new TypeError("Super expression must either be null or a function");
    }
    subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });
    if (superClass)
      _setPrototypeOf19(subClass, superClass);
  }
  function _setPrototypeOf19(o, p) {
    _setPrototypeOf19 = Object.setPrototypeOf || function _setPrototypeOf26(o2, p2) {
      o2.__proto__ = p2;
      return o2;
    };
    return _setPrototypeOf19(o, p);
  }
  function _createSuper19(Derived) {
    var hasNativeReflectConstruct = _isNativeReflectConstruct19();
    return function _createSuperInternal() {
      var Super = _getPrototypeOf19(Derived), result;
      if (hasNativeReflectConstruct) {
        var NewTarget = _getPrototypeOf19(this).constructor;
        result = Reflect.construct(Super, arguments, NewTarget);
      } else {
        result = Super.apply(this, arguments);
      }
      return _possibleConstructorReturn19(this, result);
    };
  }
  function _possibleConstructorReturn19(self2, call) {
    if (call && (_typeof20(call) === "object" || typeof call === "function")) {
      return call;
    }
    return _assertThisInitialized19(self2);
  }
  function _assertThisInitialized19(self2) {
    if (self2 === void 0) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }
    return self2;
  }
  function _isNativeReflectConstruct19() {
    if (typeof Reflect === "undefined" || !Reflect.construct)
      return false;
    if (Reflect.construct.sham)
      return false;
    if (typeof Proxy === "function")
      return true;
    try {
      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
      }));
      return true;
    } catch (e) {
      return false;
    }
  }
  function _getPrototypeOf19(o) {
    _getPrototypeOf19 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf26(o2) {
      return o2.__proto__ || Object.getPrototypeOf(o2);
    };
    return _getPrototypeOf19(o);
  }
  var HtmlOutputBinding = /* @__PURE__ */ function(_OutputBinding) {
    _inherits19(HtmlOutputBinding2, _OutputBinding);
    var _super = _createSuper19(HtmlOutputBinding2);
    function HtmlOutputBinding2() {
      _classCallCheck26(this, HtmlOutputBinding2);
      return _super.apply(this, arguments);
    }
    _createClass26(HtmlOutputBinding2, [{
      key: "find",
      value: function find2(scope) {
        return (0, import_jquery28.default)(scope).find(".shiny-html-output");
      }
    }, {
      key: "onValueError",
      value: function onValueError(el, err) {
        shinyUnbindAll(el);
        this.renderError(el, err);
      }
    }, {
      key: "renderValue",
      value: function renderValue(el, data) {
        renderContent(el, data);
      }
    }]);
    return HtmlOutputBinding2;
  }(OutputBinding);

  // node_modules/core-js/modules/es.array.filter.js
  "use strict";
  var $51 = require_export();
  var $filter = require_array_iteration().filter;
  var arrayMethodHasSpeciesSupport5 = require_array_method_has_species_support();
  var HAS_SPECIES_SUPPORT4 = arrayMethodHasSpeciesSupport5("filter");
  $51({ target: "Array", proto: true, forced: !HAS_SPECIES_SUPPORT4 }, {
    filter: function filter(callbackfn) {
      return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : void 0);
    }
  });

  // srcts/src/bindings/output/image.ts
  var import_es_array_iterator21 = __toModule(require_es_array_iterator());
  var import_jquery33 = __toModule(require_jquery());

  // srcts/src/imageutils/createBrush.ts
  var import_jquery30 = __toModule(require_jquery());

  // srcts/src/imageutils/initCoordmap.ts
  var import_jquery29 = __toModule(require_jquery());

  // srcts/src/imageutils/initPanelScales.ts
  function mapLinear(x, domainMin, domainMax, rangeMin, rangeMax) {
    var clip = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : true;
    clip = clip || true;
    var factor = (rangeMax - rangeMin) / (domainMax - domainMin);
    var val = x - domainMin;
    var newval = val * factor + rangeMin;
    if (clip) {
      var max4 = Math.max(rangeMax, rangeMin);
      var min4 = Math.min(rangeMax, rangeMin);
      if (newval > max4)
        newval = max4;
      else if (newval < min4)
        newval = min4;
    }
    return newval;
  }
  function scaler1D(domainMin, domainMax, rangeMin, rangeMax, logbase) {
    return {
      scale: function scale(val, clip) {
        if (logbase)
          val = Math.log(val) / Math.log(logbase);
        return mapLinear(val, domainMin, domainMax, rangeMin, rangeMax, clip);
      },
      scaleInv: function scaleInv(val, clip) {
        var res = mapLinear(val, rangeMin, rangeMax, domainMin, domainMax, clip);
        if (logbase)
          res = Math.pow(logbase, res);
        return res;
      }
    };
  }
  function addScaleFuns(panel) {
    var d = panel.domain;
    var r = panel.range;
    var xlog = panel.log && panel.log.x ? panel.log.x : null;
    var ylog = panel.log && panel.log.y ? panel.log.y : null;
    var xscaler = scaler1D(d.left, d.right, r.left, r.right, xlog);
    var yscaler = scaler1D(d.bottom, d.top, r.bottom, r.top, ylog);
    panel.scaleDataToImg = function(val, clip) {
      return mapValues(val, function(value, key) {
        var prefix = key.substring(0, 1);
        if (prefix === "x") {
          return xscaler.scale(value, clip);
        } else if (prefix === "y") {
          return yscaler.scale(value, clip);
        }
        return null;
      });
    };
    function scaleImgToData(val, clip) {
      return mapValues(val, function(value, key) {
        var prefix = key.substring(0, 1);
        if (prefix === "x") {
          return xscaler.scaleInv(value, clip);
        } else if (prefix === "y") {
          return yscaler.scaleInv(value, clip);
        }
        return null;
      });
    }
    panel.scaleImgToData = scaleImgToData;
    panel.clipImg = function(offsetImg) {
      var newOffset = {
        x: offsetImg.x,
        y: offsetImg.y
      };
      var bounds = panel.range;
      if (offsetImg.x > bounds.right)
        newOffset.x = bounds.right;
      else if (offsetImg.x < bounds.left)
        newOffset.x = bounds.left;
      if (offsetImg.y > bounds.bottom)
        newOffset.y = bounds.bottom;
      else if (offsetImg.y < bounds.top)
        newOffset.y = bounds.top;
      return newOffset;
    };
  }
  function initPanelScales(panels) {
    for (var i = 0; i < panels.length; i++) {
      var panel = panels[i];
      addScaleFuns(panel);
    }
  }

  // srcts/src/imageutils/initCoordmap.ts
  function findScalingRatio($el) {
    var boundingRect = $el[0].getBoundingClientRect();
    return {
      x: boundingRect.width / $el.outerWidth(),
      y: boundingRect.height / $el.outerHeight()
    };
  }
  function findOrigin($el) {
    var offset = $el.offset();
    var scalingRatio = findScalingRatio($el);
    var paddingBorder = {
      left: parseInt($el.css("border-left-width")) + parseInt($el.css("padding-left")),
      top: parseInt($el.css("border-top-width")) + parseInt($el.css("padding-top"))
    };
    return {
      x: offset.left + scalingRatio.x * paddingBorder.left,
      y: offset.top + scalingRatio.y * paddingBorder.top
    };
  }
  function findDims($el) {
    var contentRatio = {
      x: $el.width() / $el.outerWidth(),
      y: $el.height() / $el.outerHeight()
    };
    var boundingRect = $el[0].getBoundingClientRect();
    return {
      x: contentRatio.x * boundingRect.width,
      y: contentRatio.y * boundingRect.height
    };
  }
  function initCoordmap($el, coordmap_) {
    var coordmap = coordmap_;
    var $img = $el.find("img");
    var img = $img[0];
    if (coordmap.panels.length === 0) {
      var bounds = {
        top: 0,
        left: 0,
        right: img.clientWidth - 1,
        bottom: img.clientHeight - 1
      };
      coordmap.panels[0] = {
        domain: bounds,
        range: bounds,
        mapping: {}
      };
    }
    coordmap.dims.height = coordmap.dims.height || img.naturalHeight;
    coordmap.dims.width = coordmap.dims.width || img.naturalWidth;
    initPanelScales(coordmap.panels);
    coordmap.mouseOffsetCss = function(mouseEvent) {
      var imgOrigin = findOrigin($img);
      return {
        x: mouseEvent.pageX - imgOrigin.x,
        y: mouseEvent.pageY - imgOrigin.y
      };
    };
    function scaleCssToImg(offsetCss) {
      var pixelScaling = coordmap.imgToCssScalingRatio();
      var result = mapValues(offsetCss, function(value, key) {
        var prefix = key.substring(0, 1);
        if (prefix === "x") {
          return offsetCss[key] / pixelScaling.x;
        } else if (prefix === "y") {
          return offsetCss[key] / pixelScaling.y;
        }
        return null;
      });
      return result;
    }
    coordmap.scaleCssToImg = scaleCssToImg;
    function scaleImgToCss(offsetImg) {
      var pixelScaling = coordmap.imgToCssScalingRatio();
      var result = mapValues(offsetImg, function(value, key) {
        var prefix = key.substring(0, 1);
        if (prefix === "x") {
          return offsetImg[key] * pixelScaling.x;
        } else if (prefix === "y") {
          return offsetImg[key] * pixelScaling.y;
        }
        return null;
      });
      return result;
    }
    coordmap.scaleImgToCss = scaleImgToCss;
    coordmap.imgToCssScalingRatio = function() {
      var imgDims = findDims($img);
      return {
        x: imgDims.x / coordmap.dims.width,
        y: imgDims.y / coordmap.dims.height
      };
    };
    coordmap.cssToImgScalingRatio = function() {
      var res = coordmap.imgToCssScalingRatio();
      return {
        x: 1 / res.x,
        y: 1 / res.y
      };
    };
    coordmap.getPanelCss = function(offsetCss) {
      var expand = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
      var offsetImg = coordmap.scaleCssToImg(offsetCss);
      var x = offsetImg.x;
      var y = offsetImg.y;
      var cssToImgRatio = coordmap.cssToImgScalingRatio();
      var expandImg = {
        x: expand * cssToImgRatio.x,
        y: expand * cssToImgRatio.y
      };
      var matches = [];
      var dists = [];
      var b;
      var i;
      for (i = 0; i < coordmap.panels.length; i++) {
        b = coordmap.panels[i].range;
        if (x <= b.right + expandImg.x && x >= b.left - expandImg.x && y <= b.bottom + expandImg.y && y >= b.top - expandImg.y) {
          matches.push(coordmap.panels[i]);
          var xdist = 0;
          var ydist = 0;
          if (x > b.right && x <= b.right + expandImg.x) {
            xdist = x - b.right;
          } else if (x < b.left && x >= b.left - expandImg.x) {
            xdist = x - b.left;
          }
          if (y > b.bottom && y <= b.bottom + expandImg.y) {
            ydist = y - b.bottom;
          } else if (y < b.top && y >= b.top - expandImg.y) {
            ydist = y - b.top;
          }
          dists.push(Math.sqrt(Math.pow(xdist, 2) + Math.pow(ydist, 2)));
        }
      }
      if (matches.length) {
        var minDist = Math.min.apply(null, dists);
        for (i = 0; i < matches.length; i++) {
          if (dists[i] === minDist) {
            return matches[i];
          }
        }
      }
      return null;
    };
    coordmap.isInPanelCss = function(offsetCss) {
      var expand = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
      if (coordmap.getPanelCss(offsetCss, expand))
        return true;
      return false;
    };
    coordmap.mouseCoordinateSender = function(inputId) {
      var clip = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;
      var nullOutside = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
      return function(e) {
        if (e === null) {
          shinySetInputValue(inputId, null);
          return;
        }
        var coordsCss = coordmap.mouseOffsetCss(e);
        if (!coordmap.isInPanelCss(coordsCss)) {
          if (nullOutside) {
            shinySetInputValue(inputId, null);
            return;
          }
          if (clip)
            return;
          var _coords = {
            coords_css: coordsCss,
            coords_img: coordmap.scaleCssToImg(coordsCss)
          };
          shinySetInputValue(inputId, _coords, {
            priority: "event"
          });
          return;
        }
        var panel = coordmap.getPanelCss(coordsCss);
        var coordsImg = coordmap.scaleCssToImg(coordsCss);
        var coordsData = panel.scaleImgToData(coordsImg);
        var coords = {
          x: coordsData.x,
          y: coordsData.y,
          coords_css: coordsCss,
          coords_img: coordsImg,
          img_css_ratio: coordmap.cssToImgScalingRatio()
        };
        import_jquery29.default.extend(coords, panel.panel_vars);
        coords.mapping = panel.mapping;
        coords.domain = panel.domain;
        coords.range = panel.range;
        coords.log = panel.log;
        shinySetInputValue(inputId, coords, {
          priority: "event"
        });
      };
    };
    return coordmap;
  }

  // srcts/src/imageutils/findbox.ts
  function findBox(offset1, offset2) {
    return {
      xmin: Math.min(offset1.x, offset2.x),
      xmax: Math.max(offset1.x, offset2.x),
      ymin: Math.min(offset1.y, offset2.y),
      ymax: Math.max(offset1.y, offset2.y)
    };
  }

  // srcts/src/imageutils/shiftToRange.ts
  function shiftToRange(vals, min4, max4) {
    if (!(vals instanceof Array))
      vals = [vals];
    var maxval = Math.max.apply(null, vals);
    var minval = Math.min.apply(null, vals);
    var shiftAmount = 0;
    if (maxval > max4) {
      shiftAmount = max4 - maxval;
    } else if (minval < min4) {
      shiftAmount = min4 - minval;
    }
    var newvals = [];
    for (var i = 0; i < vals.length; i++) {
      newvals[i] = vals[i] + shiftAmount;
    }
    return newvals;
  }

  // srcts/src/imageutils/createBrush.ts
  function createBrush($el, opts, coordmap, expandPixels) {
    var resizeExpand = 10;
    var el = $el[0];
    var $div = null;
    var state = {};
    var cssToImg = coordmap.scaleCssToImg;
    var imgToCss = coordmap.scaleImgToCss;
    reset();
    function reset() {
      state.brushing = false;
      state.dragging = false;
      state.resizing = false;
      state.down = {
        x: NaN,
        y: NaN
      };
      state.up = {
        x: NaN,
        y: NaN
      };
      state.resizeSides = {
        left: false,
        right: false,
        top: false,
        bottom: false
      };
      state.boundsCss = {
        xmin: NaN,
        xmax: NaN,
        ymin: NaN,
        ymax: NaN
      };
      state.boundsData = {
        xmin: NaN,
        xmax: NaN,
        ymin: NaN,
        ymax: NaN
      };
      state.panel = null;
      state.changeStartBounds = {
        xmin: NaN,
        xmax: NaN,
        ymin: NaN,
        ymax: NaN
      };
      if ($div)
        $div.remove();
    }
    function importOldBrush() {
      var oldDiv = $el.find("#" + el.id + "_brush");
      if (oldDiv.length === 0)
        return;
      var oldBoundsData = oldDiv.data("bounds-data");
      var oldPanel = oldDiv.data("panel");
      if (!oldBoundsData || !oldPanel)
        return;
      for (var i = 0; i < coordmap.panels.length; i++) {
        var curPanel = coordmap.panels[i];
        if (equal(oldPanel.mapping, curPanel.mapping) && equal(oldPanel.panel_vars, curPanel.panel_vars)) {
          state.panel = coordmap.panels[i];
          break;
        }
      }
      if (state.panel === null) {
        oldDiv.remove();
        return;
      }
      $div = oldDiv;
      boundsData(oldBoundsData);
      updateDiv();
    }
    function onResize() {
      var boundsDataVal = boundsData();
      for (var val in boundsDataVal) {
        if (isnan(boundsDataVal[val]))
          return;
      }
      boundsData(boundsDataVal);
      updateDiv();
    }
    function isInsideBrush(offsetCss) {
      var bounds = state.boundsCss;
      return offsetCss.x <= bounds.xmax && offsetCss.x >= bounds.xmin && offsetCss.y <= bounds.ymax && offsetCss.y >= bounds.ymin;
    }
    function isInResizeArea(offsetCss) {
      var sides = whichResizeSides(offsetCss);
      return sides.left || sides.right || sides.top || sides.bottom;
    }
    function whichResizeSides(offsetCss) {
      var b = state.boundsCss;
      var e = {
        xmin: b.xmin - resizeExpand,
        xmax: b.xmax + resizeExpand,
        ymin: b.ymin - resizeExpand,
        ymax: b.ymax + resizeExpand
      };
      var res = {
        left: false,
        right: false,
        top: false,
        bottom: false
      };
      if ((opts.brushDirection === "xy" || opts.brushDirection === "x") && offsetCss.y <= e.ymax && offsetCss.y >= e.ymin) {
        if (offsetCss.x < b.xmin && offsetCss.x >= e.xmin)
          res.left = true;
        else if (offsetCss.x > b.xmax && offsetCss.x <= e.xmax)
          res.right = true;
      }
      if ((opts.brushDirection === "xy" || opts.brushDirection === "y") && offsetCss.x <= e.xmax && offsetCss.x >= e.xmin) {
        if (offsetCss.y < b.ymin && offsetCss.y >= e.ymin)
          res.top = true;
        else if (offsetCss.y > b.ymax && offsetCss.y <= e.ymax)
          res.bottom = true;
      }
      return res;
    }
    function boundsCss(boxCss) {
      if (boxCss === void 0) {
        return import_jquery30.default.extend({}, state.boundsCss);
      }
      var minCss = {
        x: boxCss.xmin,
        y: boxCss.ymin
      };
      var maxCss = {
        x: boxCss.xmax,
        y: boxCss.ymax
      };
      var panel = state.panel;
      var panelBoundsImg = panel.range;
      if (opts.brushClip) {
        minCss = imgToCss(panel.clipImg(cssToImg(minCss)));
        maxCss = imgToCss(panel.clipImg(cssToImg(maxCss)));
      }
      if (opts.brushDirection === "xy") {
      } else if (opts.brushDirection === "x") {
        minCss.y = imgToCss({
          y: panelBoundsImg.top
        }).y;
        maxCss.y = imgToCss({
          y: panelBoundsImg.bottom
        }).y;
      } else if (opts.brushDirection === "y") {
        minCss.x = imgToCss({
          x: panelBoundsImg.left
        }).x;
        maxCss.x = imgToCss({
          x: panelBoundsImg.right
        }).x;
      }
      state.boundsCss = {
        xmin: minCss.x,
        xmax: maxCss.x,
        ymin: minCss.y,
        ymax: maxCss.y
      };
      var minData = state.panel.scaleImgToData(cssToImg(minCss));
      var maxData = state.panel.scaleImgToData(cssToImg(maxCss));
      state.boundsData = findBox(minData, maxData);
      state.boundsData = mapValues(state.boundsData, function(val) {
        return roundSignif(val, 14);
      });
      $div.data("bounds-data", state.boundsData);
      $div.data("panel", state.panel);
      return void 0;
    }
    function boundsData(boxData) {
      if (boxData === void 0) {
        return import_jquery30.default.extend({}, state.boundsData);
      }
      var boxCss = imgToCss(state.panel.scaleDataToImg(boxData));
      boxCss = mapValues(boxCss, function(val) {
        return roundSignif(val, 13);
      });
      boundsCss({
        xmin: Math.min(boxCss.xmin, boxCss.xmax),
        xmax: Math.max(boxCss.xmin, boxCss.xmax),
        ymin: Math.min(boxCss.ymin, boxCss.ymax),
        ymax: Math.max(boxCss.ymin, boxCss.ymax)
      });
      return void 0;
    }
    function getPanel2() {
      return state.panel;
    }
    function addDiv() {
      if ($div)
        $div.remove();
      $div = (0, import_jquery30.default)(document.createElement("div")).attr("id", el.id + "_brush").css({
        "background-color": opts.brushFill,
        opacity: opts.brushOpacity,
        "pointer-events": "none",
        position: "absolute"
      }).hide();
      var borderStyle = "1px solid " + opts.brushStroke;
      if (opts.brushDirection === "xy") {
        $div.css({
          border: borderStyle
        });
      } else if (opts.brushDirection === "x") {
        $div.css({
          "border-left": borderStyle,
          "border-right": borderStyle
        });
      } else if (opts.brushDirection === "y") {
        $div.css({
          "border-top": borderStyle,
          "border-bottom": borderStyle
        });
      }
      $el.append($div);
      $div.offset({
        x: 0,
        y: 0
      }).width(0).outerHeight(0);
    }
    function updateDiv() {
      var imgOffsetCss = findOrigin($el.find("img"));
      var b = state.boundsCss;
      $div.offset({
        top: imgOffsetCss.y + b.ymin,
        left: imgOffsetCss.x + b.xmin
      }).outerWidth(b.xmax - b.xmin + 1).outerHeight(b.ymax - b.ymin + 1);
    }
    function down(offsetCss) {
      if (offsetCss === void 0)
        return state.down;
      state.down = offsetCss;
      return void 0;
    }
    function up(offsetCss) {
      if (offsetCss === void 0)
        return state.up;
      state.up = offsetCss;
      return void 0;
    }
    function isBrushing() {
      return state.brushing;
    }
    function startBrushing() {
      state.brushing = true;
      addDiv();
      state.panel = coordmap.getPanelCss(state.down, expandPixels);
      boundsCss(findBox(state.down, state.down));
      updateDiv();
    }
    function brushTo(offsetCss) {
      boundsCss(findBox(state.down, offsetCss));
      $div.show();
      updateDiv();
    }
    function stopBrushing() {
      state.brushing = false;
      boundsCss(findBox(state.down, state.up));
    }
    function isDragging() {
      return state.dragging;
    }
    function startDragging() {
      state.dragging = true;
      state.changeStartBounds = import_jquery30.default.extend({}, state.boundsCss);
    }
    function dragTo(offsetCss) {
      var dx = offsetCss.x - state.down.x;
      var dy = offsetCss.y - state.down.y;
      var start = state.changeStartBounds;
      var newBoundsCss = {
        xmin: start.xmin + dx,
        xmax: start.xmax + dx,
        ymin: start.ymin + dy,
        ymax: start.ymax + dy
      };
      if (opts.brushClip) {
        var panelBoundsImg = state.panel.range;
        var newBoundsImg = cssToImg(newBoundsCss);
        var xvalsImg = [newBoundsImg.xmin, newBoundsImg.xmax];
        var yvalsImg = [newBoundsImg.ymin, newBoundsImg.ymax];
        xvalsImg = shiftToRange(xvalsImg, panelBoundsImg.left, panelBoundsImg.right);
        yvalsImg = shiftToRange(yvalsImg, panelBoundsImg.top, panelBoundsImg.bottom);
        newBoundsCss = imgToCss({
          xmin: xvalsImg[0],
          xmax: xvalsImg[1],
          ymin: yvalsImg[0],
          ymax: yvalsImg[1]
        });
      }
      boundsCss(newBoundsCss);
      updateDiv();
    }
    function stopDragging() {
      state.dragging = false;
    }
    function isResizing() {
      return state.resizing;
    }
    function startResizing() {
      state.resizing = true;
      state.changeStartBounds = import_jquery30.default.extend({}, state.boundsCss);
      state.resizeSides = whichResizeSides(state.down);
    }
    function resizeTo(offsetCss) {
      var dCss = {
        x: offsetCss.x - state.down.x,
        y: offsetCss.y - state.down.y
      };
      var dImg = cssToImg(dCss);
      var bImg = cssToImg(state.changeStartBounds);
      var panelBoundsImg = state.panel.range;
      if (state.resizeSides.left) {
        var xminImg = shiftToRange(bImg.xmin + dImg.x, panelBoundsImg.left, bImg.xmax)[0];
        bImg.xmin = xminImg;
      } else if (state.resizeSides.right) {
        var xmaxImg = shiftToRange(bImg.xmax + dImg.x, bImg.xmin, panelBoundsImg.right)[0];
        bImg.xmax = xmaxImg;
      }
      if (state.resizeSides.top) {
        var yminImg = shiftToRange(bImg.ymin + dImg.y, panelBoundsImg.top, bImg.ymax)[0];
        bImg.ymin = yminImg;
      } else if (state.resizeSides.bottom) {
        var ymaxImg = shiftToRange(bImg.ymax + dImg.y, bImg.ymin, panelBoundsImg.bottom)[0];
        bImg.ymax = ymaxImg;
      }
      boundsCss(imgToCss(bImg));
      updateDiv();
    }
    function stopResizing() {
      state.resizing = false;
    }
    return {
      reset: reset,
      importOldBrush: importOldBrush,
      isInsideBrush: isInsideBrush,
      isInResizeArea: isInResizeArea,
      whichResizeSides: whichResizeSides,
      onResize: onResize,
      boundsCss: boundsCss,
      boundsData: boundsData,
      getPanel: getPanel2,
      down: down,
      up: up,
      isBrushing: isBrushing,
      startBrushing: startBrushing,
      brushTo: brushTo,
      stopBrushing: stopBrushing,
      isDragging: isDragging,
      startDragging: startDragging,
      dragTo: dragTo,
      stopDragging: stopDragging,
      isResizing: isResizing,
      startResizing: startResizing,
      resizeTo: resizeTo,
      stopResizing: stopResizing
    };
  }

  // srcts/src/imageutils/createClickInfo.ts
  var import_jquery31 = __toModule(require_jquery());
  function createClickInfo($el, dblclickId, dblclickDelay) {
    var clickTimer = null;
    var pendingE = null;
    function triggerEvent(newEventType, e) {
      var e2 = import_jquery31.default.Event(newEventType, {
        which: e.which,
        pageX: e.pageX,
        pageY: e.pageY
      });
      $el.trigger(e2);
    }
    function triggerPendingMousedown2() {
      if (pendingE) {
        triggerEvent("mousedown2", pendingE);
        pendingE = null;
      }
    }
    function scheduleMousedown2(e) {
      pendingE = e;
      clickTimer = setTimeout(function() {
        triggerPendingMousedown2();
      }, dblclickDelay);
    }
    function mousedown(e) {
      if (e.which !== 1)
        return;
      if (!dblclickId) {
        triggerEvent("mousedown2", e);
        return;
      }
      if (pendingE === null) {
        scheduleMousedown2(e);
      } else {
        clearTimeout(clickTimer);
        if (pendingE && Math.abs(pendingE.pageX - e.pageX) > 2 || Math.abs(pendingE.pageY - e.pageY) > 2) {
          triggerPendingMousedown2();
          scheduleMousedown2(e);
        } else {
          pendingE = null;
          triggerEvent("dblclick2", e);
        }
      }
    }
    function dblclickIE8(e) {
      e.which = 1;
      triggerEvent("dblclick2", e);
    }
    return {
      mousedown: mousedown,
      dblclickIE8: dblclickIE8
    };
  }

  // srcts/src/imageutils/createHandlers.ts
  var import_jquery32 = __toModule(require_jquery());
  function createClickHandler(inputId, clip, coordmap) {
    var clickInfoSender = coordmap.mouseCoordinateSender(inputId, clip);
    return {
      mousedown: function mousedown(e) {
        if (e.which !== 1)
          return;
        clickInfoSender(e);
      },
      onResetImg: function onResetImg() {
        clickInfoSender(null);
      },
      onResize: null
    };
  }
  function createHoverHandler(inputId, delay, delayType, clip, nullOutside, coordmap) {
    var sendHoverInfo = coordmap.mouseCoordinateSender(inputId, clip, nullOutside);
    var hoverInfoSender;
    if (delayType === "throttle")
      hoverInfoSender = new Throttler(null, sendHoverInfo, delay);
    else
      hoverInfoSender = new Debouncer(null, sendHoverInfo, delay);
    var mouseout;
    if (nullOutside)
      mouseout = function mouseout2() {
        hoverInfoSender.normalCall(null);
      };
    else
      mouseout = function mouseout2() {
      };
    return {
      mousemove: function mousemove(e) {
        hoverInfoSender.normalCall(e);
      },
      mouseout: mouseout,
      onResetImg: function onResetImg() {
        hoverInfoSender.immediateCall(null);
      },
      onResize: null
    };
  }
  function createBrushHandler(inputId, $el, opts, coordmap, outputId) {
    var expandPixels = 20;
    var brush = createBrush($el, opts, coordmap, expandPixels);
    $el.on("shiny-internal:brushed.image_output", function(e, coords) {
      if (coords.brushId === inputId && coords.outputId !== outputId) {
        $el.data("mostRecentBrush", false);
        brush.reset();
      }
    });
    function setCursorStyle(style) {
      $el.removeClass("crosshair grabbable grabbing ns-resize ew-resize nesw-resize nwse-resize");
      if (style)
        $el.addClass(style);
    }
    function sendBrushInfo() {
      var coords = brush.boundsData();
      if (isNaN(coords.xmin)) {
        shinySetInputValue(inputId, null);
        imageOutputBinding.find(document.documentElement).trigger("shiny-internal:brushed", {
          brushId: inputId,
          outputId: null
        });
        return;
      }
      var panel = brush.getPanel();
      import_jquery32.default.extend(coords, panel.panel_vars);
      coords.coords_css = brush.boundsCss();
      coords.coords_img = coordmap.scaleCssToImg(coords.coords_css);
      coords.img_css_ratio = coordmap.cssToImgScalingRatio();
      coords.mapping = panel.mapping;
      coords.domain = panel.domain;
      coords.range = panel.range;
      coords.log = panel.log;
      coords.direction = opts.brushDirection;
      coords.brushId = inputId;
      coords.outputId = outputId;
      shinySetInputValue(inputId, coords);
      $el.data("mostRecentBrush", true);
      imageOutputBinding.find(document.documentElement).trigger("shiny-internal:brushed", coords);
    }
    var brushInfoSender;
    if (opts.brushDelayType === "throttle") {
      brushInfoSender = new Throttler(null, sendBrushInfo, opts.brushDelay);
    } else {
      brushInfoSender = new Debouncer(null, sendBrushInfo, opts.brushDelay);
    }
    function mousedown(e) {
      if (brush.isBrushing() || brush.isDragging() || brush.isResizing())
        return;
      if (e.which !== 1)
        return;
      var offsetCss = coordmap.mouseOffsetCss(e);
      if (opts.brushClip && !coordmap.isInPanelCss(offsetCss, expandPixels))
        return;
      brush.up({
        x: NaN,
        y: NaN
      });
      brush.down(offsetCss);
      if (brush.isInResizeArea(offsetCss)) {
        brush.startResizing(offsetCss);
        (0, import_jquery32.default)(document).on("mousemove.image_brush", mousemoveResizing).on("mouseup.image_brush", mouseupResizing);
      } else if (brush.isInsideBrush(offsetCss)) {
        brush.startDragging(offsetCss);
        setCursorStyle("grabbing");
        (0, import_jquery32.default)(document).on("mousemove.image_brush", mousemoveDragging).on("mouseup.image_brush", mouseupDragging);
      } else {
        var panel = coordmap.getPanelCss(offsetCss, expandPixels);
        brush.startBrushing(panel.clipImg(coordmap.scaleCssToImg(offsetCss)));
        (0, import_jquery32.default)(document).on("mousemove.image_brush", mousemoveBrushing).on("mouseup.image_brush", mouseupBrushing);
      }
    }
    function mousemove(e) {
      var offsetCss = coordmap.mouseOffsetCss(e);
      if (!(brush.isBrushing() || brush.isDragging() || brush.isResizing())) {
        if (brush.isInResizeArea(offsetCss)) {
          var r = brush.whichResizeSides(offsetCss);
          if (r.left && r.top || r.right && r.bottom) {
            setCursorStyle("nwse-resize");
          } else if (r.left && r.bottom || r.right && r.top) {
            setCursorStyle("nesw-resize");
          } else if (r.left || r.right) {
            setCursorStyle("ew-resize");
          } else if (r.top || r.bottom) {
            setCursorStyle("ns-resize");
          }
        } else if (brush.isInsideBrush(offsetCss)) {
          setCursorStyle("grabbable");
        } else if (coordmap.isInPanelCss(offsetCss, expandPixels)) {
          setCursorStyle("crosshair");
        } else {
          setCursorStyle(null);
        }
      }
    }
    function mousemoveBrushing(e) {
      brush.brushTo(coordmap.mouseOffsetCss(e));
      brushInfoSender.normalCall();
    }
    function mousemoveDragging(e) {
      brush.dragTo(coordmap.mouseOffsetCss(e));
      brushInfoSender.normalCall();
    }
    function mousemoveResizing(e) {
      brush.resizeTo(coordmap.mouseOffsetCss(e));
      brushInfoSender.normalCall();
    }
    function mouseupBrushing(e) {
      if (e.which !== 1)
        return;
      (0, import_jquery32.default)(document).off("mousemove.image_brush").off("mouseup.image_brush");
      brush.up(coordmap.mouseOffsetCss(e));
      brush.stopBrushing();
      setCursorStyle("crosshair");
      if (brush.down().x === brush.up().x && brush.down().y === brush.up().y) {
        brush.reset();
        brushInfoSender.immediateCall();
        return;
      }
      if (brushInfoSender.isPending())
        brushInfoSender.immediateCall();
    }
    function mouseupDragging(e) {
      if (e.which !== 1)
        return;
      (0, import_jquery32.default)(document).off("mousemove.image_brush").off("mouseup.image_brush");
      brush.up(coordmap.mouseOffsetCss(e));
      brush.stopDragging();
      setCursorStyle("grabbable");
      if (brushInfoSender.isPending())
        brushInfoSender.immediateCall();
    }
    function mouseupResizing(e) {
      if (e.which !== 1)
        return;
      (0, import_jquery32.default)(document).off("mousemove.image_brush").off("mouseup.image_brush");
      brush.up(coordmap.mouseOffsetCss(e));
      brush.stopResizing();
      if (brushInfoSender.isPending())
        brushInfoSender.immediateCall();
    }
    function onResetImg() {
      if (opts.brushResetOnNew) {
        if ($el.data("mostRecentBrush")) {
          brush.reset();
          brushInfoSender.immediateCall();
        }
      }
    }
    if (!opts.brushResetOnNew) {
      if ($el.data("mostRecentBrush")) {
        brush.importOldBrush();
        brushInfoSender.immediateCall();
      }
    }
    function onResize() {
      brush.onResize();
      brushInfoSender.immediateCall();
    }
    return {
      mousedown: mousedown,
      mousemove: mousemove,
      onResetImg: onResetImg,
      onResize: onResize
    };
  }

  // srcts/src/imageutils/disableDrag.ts
  function disableDrag($el, $img) {
    $img.css("-webkit-user-drag", "none");
    $img.off("dragstart.image_output");
    $img.on("dragstart.image_output", function() {
      return false;
    });
    $el.off("selectstart.image_output");
    $el.on("selectstart.image_output", function() {
      return false;
    });
  }

  // srcts/src/bindings/output/image.ts
  function _typeof21(obj) {
    "@babel/helpers - typeof";
    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
      _typeof21 = function _typeof27(obj2) {
        return typeof obj2;
      };
    } else {
      _typeof21 = function _typeof27(obj2) {
        return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
      };
    }
    return _typeof21(obj);
  }
  function _classCallCheck27(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties27(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass27(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties27(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties27(Constructor, staticProps);
    return Constructor;
  }
  function _inherits20(subClass, superClass) {
    if (typeof superClass !== "function" && superClass !== null) {
      throw new TypeError("Super expression must either be null or a function");
    }
    subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });
    if (superClass)
      _setPrototypeOf20(subClass, superClass);
  }
  function _setPrototypeOf20(o, p) {
    _setPrototypeOf20 = Object.setPrototypeOf || function _setPrototypeOf26(o2, p2) {
      o2.__proto__ = p2;
      return o2;
    };
    return _setPrototypeOf20(o, p);
  }
  function _createSuper20(Derived) {
    var hasNativeReflectConstruct = _isNativeReflectConstruct20();
    return function _createSuperInternal() {
      var Super = _getPrototypeOf20(Derived), result;
      if (hasNativeReflectConstruct) {
        var NewTarget = _getPrototypeOf20(this).constructor;
        result = Reflect.construct(Super, arguments, NewTarget);
      } else {
        result = Super.apply(this, arguments);
      }
      return _possibleConstructorReturn20(this, result);
    };
  }
  function _possibleConstructorReturn20(self2, call) {
    if (call && (_typeof21(call) === "object" || typeof call === "function")) {
      return call;
    }
    return _assertThisInitialized20(self2);
  }
  function _assertThisInitialized20(self2) {
    if (self2 === void 0) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }
    return self2;
  }
  function _isNativeReflectConstruct20() {
    if (typeof Reflect === "undefined" || !Reflect.construct)
      return false;
    if (Reflect.construct.sham)
      return false;
    if (typeof Proxy === "function")
      return true;
    try {
      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
      }));
      return true;
    } catch (e) {
      return false;
    }
  }
  function _getPrototypeOf20(o) {
    _getPrototypeOf20 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf26(o2) {
      return o2.__proto__ || Object.getPrototypeOf(o2);
    };
    return _getPrototypeOf20(o);
  }
  var ImageOutputBinding = /* @__PURE__ */ function(_OutputBinding) {
    _inherits20(ImageOutputBinding2, _OutputBinding);
    var _super = _createSuper20(ImageOutputBinding2);
    function ImageOutputBinding2() {
      _classCallCheck27(this, ImageOutputBinding2);
      return _super.apply(this, arguments);
    }
    _createClass27(ImageOutputBinding2, [{
      key: "find",
      value: function find2(scope) {
        return (0, import_jquery33.default)(scope).find(".shiny-image-output, .shiny-plot-output");
      }
    }, {
      key: "renderValue",
      value: function renderValue(el, data) {
        var outputId = this.getId(el);
        var $el = (0, import_jquery33.default)(el);
        var img;
        var $img = $el.find("img");
        if ($img.length === 0) {
          img = document.createElement("img");
          $el.append(img);
          $img = (0, import_jquery33.default)(img);
        } else {
          img = $img[0];
          $img.trigger("reset");
        }
        if (!data) {
          $el.empty();
          return;
        }
        function ifUndefined(value, alternate) {
          if (value === void 0)
            return alternate;
          return value;
        }
        var opts = {
          clickId: $el.data("click-id"),
          clickClip: ifUndefined(strToBool($el.data("click-clip")), true),
          dblclickId: $el.data("dblclick-id"),
          dblclickClip: ifUndefined(strToBool($el.data("dblclick-clip")), true),
          dblclickDelay: ifUndefined($el.data("dblclick-delay"), 400),
          hoverId: $el.data("hover-id"),
          hoverClip: ifUndefined(strToBool($el.data("hover-clip")), true),
          hoverDelayType: ifUndefined($el.data("hover-delay-type"), "debounce"),
          hoverDelay: ifUndefined($el.data("hover-delay"), 300),
          hoverNullOutside: ifUndefined(strToBool($el.data("hover-null-outside")), false),
          brushId: $el.data("brush-id"),
          brushClip: ifUndefined(strToBool($el.data("brush-clip")), true),
          brushDelayType: ifUndefined($el.data("brush-delay-type"), "debounce"),
          brushDelay: ifUndefined($el.data("brush-delay"), 300),
          brushFill: ifUndefined($el.data("brush-fill"), "#666"),
          brushStroke: ifUndefined($el.data("brush-stroke"), "#000"),
          brushOpacity: ifUndefined($el.data("brush-opacity"), 0.3),
          brushDirection: ifUndefined($el.data("brush-direction"), "xy"),
          brushResetOnNew: ifUndefined(strToBool($el.data("brush-reset-on-new")), false),
          coordmap: data.coordmap
        };
        if (opts.brushFill === "auto") {
          opts.brushFill = getComputedLinkColor($el[0]);
        }
        if (opts.brushStroke === "auto") {
          opts.brushStroke = getStyle($el[0], "color");
        }
        import_jquery33.default.each(data, function(key, value) {
          if (value === null || key === "coordmap") {
            return;
          }
          if (key === "src" && value === img.getAttribute("src")) {
            img.removeAttribute("src");
          }
          img.setAttribute(key, value);
        });
        for (var i = 0; i < img.attributes.length; i++) {
          var attrib = img.attributes[i];
          if (attrib.specified && !hasOwnProperty(data, attrib.name)) {
            img.removeAttribute(attrib.name);
          }
        }
        if (!opts.coordmap) {
          opts.coordmap = {
            panels: [],
            dims: {
              height: null,
              width: null
            }
          };
        }
        $el.off(".image_output");
        $img.off(".image_output");
        $img.off("load.shiny_image_interaction");
        $img.one("load.shiny_image_interaction", function() {
          var optsCoordmap = opts.coordmap = initCoordmap($el, opts.coordmap);
          var clickInfo = createClickInfo($el, opts.dblclickId, opts.dblclickDelay);
          $el.on("mousedown.image_output", clickInfo.mousedown);
          if (isIE() && IEVersion() === 8) {
            $el.on("dblclick.image_output", clickInfo.dblclickIE8);
          }
          if (opts.clickId) {
            disableDrag($el, $img);
            var clickHandler = createClickHandler(opts.clickId, opts.clickClip, optsCoordmap);
            $el.on("mousedown2.image_output", clickHandler.mousedown);
            $el.on("resize.image_output", clickHandler.onResize);
            $img.on("reset.image_output", clickHandler.onResetImg);
          }
          if (opts.dblclickId) {
            disableDrag($el, $img);
            var dblclickHandler = createClickHandler(opts.dblclickId, opts.clickClip, optsCoordmap);
            $el.on("dblclick2.image_output", dblclickHandler.mousedown);
            $el.on("resize.image_output", dblclickHandler.onResize);
            $img.on("reset.image_output", dblclickHandler.onResetImg);
          }
          if (opts.hoverId) {
            disableDrag($el, $img);
            var hoverHandler = createHoverHandler(opts.hoverId, opts.hoverDelay, opts.hoverDelayType, opts.hoverClip, opts.hoverNullOutside, optsCoordmap);
            $el.on("mousemove.image_output", hoverHandler.mousemove);
            $el.on("mouseout.image_output", hoverHandler.mouseout);
            $el.on("resize.image_output", hoverHandler.onResize);
            $img.on("reset.image_output", hoverHandler.onResetImg);
          }
          if (opts.brushId) {
            disableDrag($el, $img);
            var brushHandler = createBrushHandler(opts.brushId, $el, opts, optsCoordmap, outputId);
            $el.on("mousedown.image_output", brushHandler.mousedown);
            $el.on("mousemove.image_output", brushHandler.mousemove);
            $el.on("resize.image_output", brushHandler.onResize);
            $img.on("reset.image_output", brushHandler.onResetImg);
          }
          if (opts.clickId || opts.dblclickId || opts.hoverId || opts.brushId) {
            $el.addClass("crosshair");
          }
          if (data.error)
            console.log("Error on server extracting coordmap: " + data.error);
        });
      }
    }, {
      key: "renderError",
      value: function renderError(el, err) {
        (0, import_jquery33.default)(el).find("img").trigger("reset");
        OutputBinding.prototype.renderError.call(this, el, err);
      }
    }, {
      key: "clearError",
      value: function clearError(el) {
        (0, import_jquery33.default)(el).contents().filter(function() {
          return !(this instanceof HTMLElement && (this.tagName === "IMG" || this.id === el.id + "_brush"));
        }).remove();
        OutputBinding.prototype.clearError.call(this, el);
      }
    }, {
      key: "resize",
      value: function resize(el, width, height) {
        (0, import_jquery33.default)(el).find("img").trigger("resize");
        return;
        width;
        height;
      }
    }]);
    return ImageOutputBinding2;
  }(OutputBinding);
  var imageOutputBinding = new ImageOutputBinding();

  // srcts/src/bindings/output/index.ts
  function initOutputBindings() {
    var outputBindings = new BindingRegistry();
    outputBindings.register(new TextOutputBinding(), "shiny.textOutput");
    outputBindings.register(new DownloadLinkOutputBinding(), "shiny.downloadLink");
    outputBindings.register(new DatatableOutputBinding(), "shiny.datatableOutput");
    outputBindings.register(new HtmlOutputBinding(), "shiny.htmlOutput");
    outputBindings.register(imageOutputBinding, "shiny.imageOutput");
    return {
      outputBindings: outputBindings
    };
  }

  // srcts/src/imageutils/resetBrush.ts
  function resetBrush(brushId) {
    shinySetInputValue(brushId, null);
    imageOutputBinding.find(document.documentElement).trigger("shiny-internal:brushed", {
      brushId: brushId,
      outputId: null
    });
  }

  // srcts/src/shiny/notifications.ts
  var import_es_regexp_exec7 = __toModule(require_es_regexp_exec());

  // node_modules/core-js/modules/es.string.match.js
  "use strict";
  var fixRegExpWellKnownSymbolLogic4 = require_fix_regexp_well_known_symbol_logic();
  var anObject8 = require_an_object();
  var toLength6 = require_to_length();
  var requireObjectCoercible4 = require_require_object_coercible();
  var advanceStringIndex3 = require_advance_string_index();
  var regExpExec3 = require_regexp_exec_abstract();
  fixRegExpWellKnownSymbolLogic4("match", 1, function(MATCH, nativeMatch, maybeCallNative) {
    return [
      function match(regexp) {
        var O = requireObjectCoercible4(this);
        var matcher = regexp == void 0 ? void 0 : regexp[MATCH];
        return matcher !== void 0 ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));
      },
      function(regexp) {
        var res = maybeCallNative(nativeMatch, regexp, this);
        if (res.done)
          return res.value;
        var rx = anObject8(regexp);
        var S = String(this);
        if (!rx.global)
          return regExpExec3(rx, S);
        var fullUnicode = rx.unicode;
        rx.lastIndex = 0;
        var A = [];
        var n = 0;
        var result;
        while ((result = regExpExec3(rx, S)) !== null) {
          var matchStr = String(result[0]);
          A[n] = matchStr;
          if (matchStr === "")
            rx.lastIndex = advanceStringIndex3(S, toLength6(rx.lastIndex), fullUnicode);
          n++;
        }
        return n === 0 ? null : A;
      }
    ];
  });

  // srcts/src/shiny/notifications.ts
  var import_jquery34 = __toModule(require_jquery());
  var fadeDuration = 250;
  function show() {
    var _ref = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, _ref$html = _ref.html, html = _ref$html === void 0 ? "" : _ref$html, _ref$action = _ref.action, action = _ref$action === void 0 ? "" : _ref$action, _ref$deps = _ref.deps, deps = _ref$deps === void 0 ? [] : _ref$deps, _ref$duration = _ref.duration, duration = _ref$duration === void 0 ? 5e3 : _ref$duration, _ref$id = _ref.id, id = _ref$id === void 0 ? null : _ref$id, _ref$closeButton = _ref.closeButton, closeButton = _ref$closeButton === void 0 ? true : _ref$closeButton, _ref$type = _ref.type, type = _ref$type === void 0 ? null : _ref$type;
    if (!id)
      id = randomId();
    createPanel();
    var $notification = get2(id);
    if ($notification.length === 0)
      $notification = create4(id);
    var newHtml = '<div class="shiny-notification-content-text">'.concat(html, "</div>") + '<div class="shiny-notification-content-action">'.concat(action, "</div>");
    var $content = $notification.find(".shiny-notification-content");
    renderContent($content, {
      html: newHtml,
      deps: deps
    });
    var classes = $notification.attr("class").split(/\s+/).filter(function(cls) {
      return cls.match(/^shiny-notification-/);
    }).join(" ");
    $notification.removeClass(classes);
    if (type && type !== "default")
      $notification.addClass("shiny-notification-" + type);
    var $close = $notification.find(".shiny-notification-close");
    if (closeButton && $close.length === 0) {
      $notification.append('<div class="shiny-notification-close">&times;</div>');
    } else if (!closeButton && $close.length !== 0) {
      $close.remove();
    }
    if (duration)
      addRemovalCallback(id, duration);
    else
      clearRemovalCallback(id);
    return id;
  }
  function remove(id) {
    get2(id).fadeOut(fadeDuration, function() {
      shinyUnbindAll(this);
      (0, import_jquery34.default)(this).remove();
      if (ids().length === 0) {
        getPanel().remove();
      }
    });
  }
  function get2(id) {
    if (!id)
      return null;
    return getPanel().find("#shiny-notification-" + $escape(id));
  }
  function ids() {
    return getPanel().find(".shiny-notification").map(function() {
      return this.id.replace(/shiny-notification-/, "");
    }).get();
  }
  function getPanel() {
    return (0, import_jquery34.default)("#shiny-notification-panel");
  }
  function createPanel() {
    var $panel = getPanel();
    if ($panel.length > 0)
      return $panel;
    (0, import_jquery34.default)(document.body).append('<div id="shiny-notification-panel">');
    return $panel;
  }
  function create4(id) {
    var $notification = get2(id);
    if ($notification.length === 0) {
      $notification = (0, import_jquery34.default)('<div id="shiny-notification-'.concat(id, '" class="shiny-notification">') + '<div class="shiny-notification-close">&times;</div><div class="shiny-notification-content"></div></div>');
      $notification.find(".shiny-notification-close").on("click", function(e) {
        e.preventDefault();
        e.stopPropagation();
        remove(id);
      });
      getPanel().append($notification);
    }
    return $notification;
  }
  function addRemovalCallback(id, delay) {
    clearRemovalCallback(id);
    var removalCallback = setTimeout(function() {
      remove(id);
    }, delay);
    get2(id).data("removalCallback", removalCallback);
  }
  function clearRemovalCallback(id) {
    var $notification = get2(id);
    var oldRemovalCallback = $notification.data("removalCallback");
    if (oldRemovalCallback) {
      clearTimeout(oldRemovalCallback);
    }
  }

  // srcts/src/shiny/modal.ts
  var import_jquery35 = __toModule(require_jquery());
  function show2() {
    var _ref = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, _ref$html = _ref.html, html = _ref$html === void 0 ? "" : _ref$html, _ref$deps = _ref.deps, deps = _ref$deps === void 0 ? [] : _ref$deps;
    (0, import_jquery35.default)(".modal-backdrop").remove();
    var $modal = (0, import_jquery35.default)("#shiny-modal-wrapper");
    if ($modal.length === 0) {
      $modal = (0, import_jquery35.default)('<div id="shiny-modal-wrapper"></div>');
      (0, import_jquery35.default)(document.body).append($modal);
      $modal.on("hidden.bs.modal", function(e) {
        if (e.target === (0, import_jquery35.default)("#shiny-modal")[0]) {
          shinyUnbindAll($modal);
          $modal.remove();
        }
      });
    }
    $modal.on("keydown.shinymodal", function(e) {
      if ((0, import_jquery35.default)("#shiny-modal").data("keyboard") === false)
        return;
      if (e.keyCode === 27) {
        e.stopPropagation();
        e.preventDefault();
      }
    });
    renderContent($modal, {
      html: html,
      deps: deps
    });
  }
  function remove2() {
    var $modal = (0, import_jquery35.default)("#shiny-modal-wrapper");
    $modal.off("keydown.shinymodal");
    if ($modal.find(".modal").length > 0) {
      $modal.find(".modal").modal("hide");
    } else {
      shinyUnbindAll($modal);
      $modal.remove();
    }
  }

  // srcts/src/shiny/reconnectDialog.ts
  var import_jquery36 = __toModule(require_jquery());
  function updateTime(reconnectTime) {
    var $time = (0, import_jquery36.default)("#shiny-reconnect-time");
    if ($time.length === 0)
      return;
    var seconds = Math.floor((reconnectTime - new Date().getTime()) / 1e3);
    if (seconds > 0) {
      $time.text(" in " + seconds + "s");
    } else {
      $time.text("...");
    }
    setTimeout(function() {
      updateTime(reconnectTime);
    }, 1e3);
  }
  function showReconnectDialog(delay) {
    var reconnectTime = new Date().getTime() + delay;
    if ((0, import_jquery36.default)("#shiny-reconnect-text").length > 0)
      return;
    var html = '<span id="shiny-reconnect-text">Attempting to reconnect</span><span id="shiny-reconnect-time"></span>';
    var action = '<a id="shiny-reconnect-now" href="#" onclick="Shiny.shinyapp.reconnect();">Try now</a>';
    show({
      id: "reconnect",
      html: html,
      action: action,
      duration: null,
      closeButton: false,
      type: "warning"
    });
    updateTime(reconnectTime);
  }
  function hideReconnectDialog() {
    remove("reconnect");
  }

  // srcts/src/shiny/init.ts
  var import_es_regexp_exec10 = __toModule(require_es_regexp_exec());
  var import_jquery42 = __toModule(require_jquery());

  // srcts/src/inputPolicies/inputBatchSender.ts
  var import_es_array_iterator22 = __toModule(require_es_array_iterator());
  var import_jquery37 = __toModule(require_jquery());

  // srcts/src/inputPolicies/inputPolicy.ts
  function _classCallCheck28(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties28(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass28(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties28(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties28(Constructor, staticProps);
    return Constructor;
  }
  function _defineProperty9(obj, key, value) {
    if (key in obj) {
      Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });
    } else {
      obj[key] = value;
    }
    return obj;
  }
  var InputPolicy = /* @__PURE__ */ function() {
    function InputPolicy2() {
      _classCallCheck28(this, InputPolicy2);
      _defineProperty9(this, "target", void 0);
    }
    _createClass28(InputPolicy2, [{
      key: "setInput",
      value: function setInput(name, value, opts) {
        throw "not implemented";
        name;
        value;
        opts;
      }
    }]);
    return InputPolicy2;
  }();

  // srcts/src/inputPolicies/inputBatchSender.ts
  function _typeof22(obj) {
    "@babel/helpers - typeof";
    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
      _typeof22 = function _typeof27(obj2) {
        return typeof obj2;
      };
    } else {
      _typeof22 = function _typeof27(obj2) {
        return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
      };
    }
    return _typeof22(obj);
  }
  function _classCallCheck29(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties29(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass29(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties29(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties29(Constructor, staticProps);
    return Constructor;
  }
  function _inherits21(subClass, superClass) {
    if (typeof superClass !== "function" && superClass !== null) {
      throw new TypeError("Super expression must either be null or a function");
    }
    subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });
    if (superClass)
      _setPrototypeOf21(subClass, superClass);
  }
  function _setPrototypeOf21(o, p) {
    _setPrototypeOf21 = Object.setPrototypeOf || function _setPrototypeOf26(o2, p2) {
      o2.__proto__ = p2;
      return o2;
    };
    return _setPrototypeOf21(o, p);
  }
  function _createSuper21(Derived) {
    var hasNativeReflectConstruct = _isNativeReflectConstruct21();
    return function _createSuperInternal() {
      var Super = _getPrototypeOf21(Derived), result;
      if (hasNativeReflectConstruct) {
        var NewTarget = _getPrototypeOf21(this).constructor;
        result = Reflect.construct(Super, arguments, NewTarget);
      } else {
        result = Super.apply(this, arguments);
      }
      return _possibleConstructorReturn21(this, result);
    };
  }
  function _possibleConstructorReturn21(self2, call) {
    if (call && (_typeof22(call) === "object" || typeof call === "function")) {
      return call;
    }
    return _assertThisInitialized21(self2);
  }
  function _assertThisInitialized21(self2) {
    if (self2 === void 0) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }
    return self2;
  }
  function _isNativeReflectConstruct21() {
    if (typeof Reflect === "undefined" || !Reflect.construct)
      return false;
    if (Reflect.construct.sham)
      return false;
    if (typeof Proxy === "function")
      return true;
    try {
      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
      }));
      return true;
    } catch (e) {
      return false;
    }
  }
  function _getPrototypeOf21(o) {
    _getPrototypeOf21 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf26(o2) {
      return o2.__proto__ || Object.getPrototypeOf(o2);
    };
    return _getPrototypeOf21(o);
  }
  function _defineProperty10(obj, key, value) {
    if (key in obj) {
      Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });
    } else {
      obj[key] = value;
    }
    return obj;
  }
  var InputBatchSender = /* @__PURE__ */ function(_InputPolicy) {
    _inherits21(InputBatchSender2, _InputPolicy);
    var _super = _createSuper21(InputBatchSender2);
    function InputBatchSender2(shinyapp) {
      var _this;
      _classCallCheck29(this, InputBatchSender2);
      _this = _super.call(this);
      _defineProperty10(_assertThisInitialized21(_this), "shinyapp", void 0);
      _defineProperty10(_assertThisInitialized21(_this), "timerId", null);
      _defineProperty10(_assertThisInitialized21(_this), "pendingData", {});
      _defineProperty10(_assertThisInitialized21(_this), "reentrant", false);
      _defineProperty10(_assertThisInitialized21(_this), "lastChanceCallback", []);
      _this.shinyapp = shinyapp;
      return _this;
    }
    _createClass29(InputBatchSender2, [{
      key: "setInput",
      value: function setInput(nameType, value, opts) {
        this.pendingData[nameType] = value;
        if (!this.reentrant) {
          if (opts.priority === "event") {
            this._sendNow();
          } else if (!this.timerId) {
            this.timerId = setTimeout(this._sendNow.bind(this), 0);
          }
        }
      }
    }, {
      key: "_sendNow",
      value: function _sendNow() {
        if (this.reentrant) {
          console.trace("Unexpected reentrancy in InputBatchSender!");
        }
        this.reentrant = true;
        try {
          this.timerId = null;
          import_jquery37.default.each(this.lastChanceCallback, function(i, callback) {
            callback();
          });
          var currentData = this.pendingData;
          this.pendingData = {};
          this.shinyapp.sendInput(currentData);
        } finally {
          this.reentrant = false;
        }
      }
    }]);
    return InputBatchSender2;
  }(InputPolicy);

  // srcts/src/inputPolicies/inputNoResendDecorator.ts
  var import_es_array_iterator23 = __toModule(require_es_array_iterator());

  // srcts/src/inputPolicies/splitInputNameType.ts
  var import_es_regexp_exec8 = __toModule(require_es_regexp_exec());
  function splitInputNameType(nameType) {
    var name2 = nameType.split(":");
    return {
      name: name2[0],
      inputType: name2.length > 1 ? name2[1] : ""
    };
  }

  // srcts/src/inputPolicies/inputNoResendDecorator.ts
  function _typeof23(obj) {
    "@babel/helpers - typeof";
    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
      _typeof23 = function _typeof27(obj2) {
        return typeof obj2;
      };
    } else {
      _typeof23 = function _typeof27(obj2) {
        return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
      };
    }
    return _typeof23(obj);
  }
  function _classCallCheck30(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties30(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass30(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties30(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties30(Constructor, staticProps);
    return Constructor;
  }
  function _inherits22(subClass, superClass) {
    if (typeof superClass !== "function" && superClass !== null) {
      throw new TypeError("Super expression must either be null or a function");
    }
    subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });
    if (superClass)
      _setPrototypeOf22(subClass, superClass);
  }
  function _setPrototypeOf22(o, p) {
    _setPrototypeOf22 = Object.setPrototypeOf || function _setPrototypeOf26(o2, p2) {
      o2.__proto__ = p2;
      return o2;
    };
    return _setPrototypeOf22(o, p);
  }
  function _createSuper22(Derived) {
    var hasNativeReflectConstruct = _isNativeReflectConstruct22();
    return function _createSuperInternal() {
      var Super = _getPrototypeOf22(Derived), result;
      if (hasNativeReflectConstruct) {
        var NewTarget = _getPrototypeOf22(this).constructor;
        result = Reflect.construct(Super, arguments, NewTarget);
      } else {
        result = Super.apply(this, arguments);
      }
      return _possibleConstructorReturn22(this, result);
    };
  }
  function _possibleConstructorReturn22(self2, call) {
    if (call && (_typeof23(call) === "object" || typeof call === "function")) {
      return call;
    }
    return _assertThisInitialized22(self2);
  }
  function _assertThisInitialized22(self2) {
    if (self2 === void 0) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }
    return self2;
  }
  function _isNativeReflectConstruct22() {
    if (typeof Reflect === "undefined" || !Reflect.construct)
      return false;
    if (Reflect.construct.sham)
      return false;
    if (typeof Proxy === "function")
      return true;
    try {
      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
      }));
      return true;
    } catch (e) {
      return false;
    }
  }
  function _getPrototypeOf22(o) {
    _getPrototypeOf22 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf26(o2) {
      return o2.__proto__ || Object.getPrototypeOf(o2);
    };
    return _getPrototypeOf22(o);
  }
  function _defineProperty11(obj, key, value) {
    if (key in obj) {
      Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });
    } else {
      obj[key] = value;
    }
    return obj;
  }
  var InputNoResendDecorator = /* @__PURE__ */ function(_InputPolicy) {
    _inherits22(InputNoResendDecorator2, _InputPolicy);
    var _super = _createSuper22(InputNoResendDecorator2);
    function InputNoResendDecorator2(target) {
      var _this;
      var initialValues = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
      _classCallCheck30(this, InputNoResendDecorator2);
      _this = _super.call(this);
      _defineProperty11(_assertThisInitialized22(_this), "lastSentValues", void 0);
      _this.target = target;
      _this.reset(initialValues);
      return _this;
    }
    _createClass30(InputNoResendDecorator2, [{
      key: "setInput",
      value: function setInput(nameType, value, opts) {
        var _splitInputNameType = splitInputNameType(nameType), inputName = _splitInputNameType.name, inputType = _splitInputNameType.inputType;
        var jsonValue = JSON.stringify(value);
        if (opts.priority !== "event" && this.lastSentValues[inputName] && this.lastSentValues[inputName].jsonValue === jsonValue && this.lastSentValues[inputName].inputType === inputType) {
          return;
        }
        this.lastSentValues[inputName] = {
          jsonValue: jsonValue,
          inputType: inputType
        };
        this.target.setInput(nameType, value, opts);
      }
    }, {
      key: "reset",
      value: function reset() {
        var values = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
        var cacheValues = {};
        for (var inputName in values) {
          if (hasOwnProperty(values, inputName)) {
            var _splitInputNameType2 = splitInputNameType(inputName), name = _splitInputNameType2.name, inputType = _splitInputNameType2.inputType;
            cacheValues[name] = {
              jsonValue: JSON.stringify(values[inputName]),
              inputType: inputType
            };
          }
        }
        this.lastSentValues = cacheValues;
      }
    }, {
      key: "forget",
      value: function forget(name) {
        delete this.lastSentValues[name];
      }
    }]);
    return InputNoResendDecorator2;
  }(InputPolicy);

  // srcts/src/inputPolicies/inputEventDecorator.ts
  var import_es_array_iterator24 = __toModule(require_es_array_iterator());
  var import_jquery38 = __toModule(require_jquery());
  function _typeof24(obj) {
    "@babel/helpers - typeof";
    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
      _typeof24 = function _typeof27(obj2) {
        return typeof obj2;
      };
    } else {
      _typeof24 = function _typeof27(obj2) {
        return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
      };
    }
    return _typeof24(obj);
  }
  function _classCallCheck31(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties31(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass31(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties31(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties31(Constructor, staticProps);
    return Constructor;
  }
  function _inherits23(subClass, superClass) {
    if (typeof superClass !== "function" && superClass !== null) {
      throw new TypeError("Super expression must either be null or a function");
    }
    subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });
    if (superClass)
      _setPrototypeOf23(subClass, superClass);
  }
  function _setPrototypeOf23(o, p) {
    _setPrototypeOf23 = Object.setPrototypeOf || function _setPrototypeOf26(o2, p2) {
      o2.__proto__ = p2;
      return o2;
    };
    return _setPrototypeOf23(o, p);
  }
  function _createSuper23(Derived) {
    var hasNativeReflectConstruct = _isNativeReflectConstruct23();
    return function _createSuperInternal() {
      var Super = _getPrototypeOf23(Derived), result;
      if (hasNativeReflectConstruct) {
        var NewTarget = _getPrototypeOf23(this).constructor;
        result = Reflect.construct(Super, arguments, NewTarget);
      } else {
        result = Super.apply(this, arguments);
      }
      return _possibleConstructorReturn23(this, result);
    };
  }
  function _possibleConstructorReturn23(self2, call) {
    if (call && (_typeof24(call) === "object" || typeof call === "function")) {
      return call;
    }
    return _assertThisInitialized23(self2);
  }
  function _assertThisInitialized23(self2) {
    if (self2 === void 0) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }
    return self2;
  }
  function _isNativeReflectConstruct23() {
    if (typeof Reflect === "undefined" || !Reflect.construct)
      return false;
    if (Reflect.construct.sham)
      return false;
    if (typeof Proxy === "function")
      return true;
    try {
      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
      }));
      return true;
    } catch (e) {
      return false;
    }
  }
  function _getPrototypeOf23(o) {
    _getPrototypeOf23 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf26(o2) {
      return o2.__proto__ || Object.getPrototypeOf(o2);
    };
    return _getPrototypeOf23(o);
  }
  var InputEventDecorator = /* @__PURE__ */ function(_InputPolicy) {
    _inherits23(InputEventDecorator2, _InputPolicy);
    var _super = _createSuper23(InputEventDecorator2);
    function InputEventDecorator2(target) {
      var _this;
      _classCallCheck31(this, InputEventDecorator2);
      _this = _super.call(this);
      _this.target = target;
      return _this;
    }
    _createClass31(InputEventDecorator2, [{
      key: "setInput",
      value: function setInput(nameType, value, opts) {
        var evt = jQuery.Event("shiny:inputchanged");
        var input = splitInputNameType(nameType);
        evt.name = input.name;
        evt.inputType = input.inputType;
        evt.value = value;
        evt.binding = opts.binding;
        evt.el = opts.el;
        evt.priority = opts.priority;
        (0, import_jquery38.default)(opts.el).trigger(evt);
        if (!evt.isDefaultPrevented()) {
          var name = evt.name;
          if (evt.inputType !== "")
            name += ":" + evt.inputType;
          this.target.setInput(name, evt.value, {
            priority: opts.priority
          });
        }
      }
    }]);
    return InputEventDecorator2;
  }(InputPolicy);

  // srcts/src/inputPolicies/inputRateDecorator.ts
  var import_es_array_iterator25 = __toModule(require_es_array_iterator());
  function _typeof25(obj) {
    "@babel/helpers - typeof";
    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
      _typeof25 = function _typeof27(obj2) {
        return typeof obj2;
      };
    } else {
      _typeof25 = function _typeof27(obj2) {
        return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
      };
    }
    return _typeof25(obj);
  }
  function _classCallCheck32(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties32(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass32(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties32(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties32(Constructor, staticProps);
    return Constructor;
  }
  function _inherits24(subClass, superClass) {
    if (typeof superClass !== "function" && superClass !== null) {
      throw new TypeError("Super expression must either be null or a function");
    }
    subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });
    if (superClass)
      _setPrototypeOf24(subClass, superClass);
  }
  function _setPrototypeOf24(o, p) {
    _setPrototypeOf24 = Object.setPrototypeOf || function _setPrototypeOf26(o2, p2) {
      o2.__proto__ = p2;
      return o2;
    };
    return _setPrototypeOf24(o, p);
  }
  function _createSuper24(Derived) {
    var hasNativeReflectConstruct = _isNativeReflectConstruct24();
    return function _createSuperInternal() {
      var Super = _getPrototypeOf24(Derived), result;
      if (hasNativeReflectConstruct) {
        var NewTarget = _getPrototypeOf24(this).constructor;
        result = Reflect.construct(Super, arguments, NewTarget);
      } else {
        result = Super.apply(this, arguments);
      }
      return _possibleConstructorReturn24(this, result);
    };
  }
  function _possibleConstructorReturn24(self2, call) {
    if (call && (_typeof25(call) === "object" || typeof call === "function")) {
      return call;
    }
    return _assertThisInitialized24(self2);
  }
  function _assertThisInitialized24(self2) {
    if (self2 === void 0) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }
    return self2;
  }
  function _isNativeReflectConstruct24() {
    if (typeof Reflect === "undefined" || !Reflect.construct)
      return false;
    if (Reflect.construct.sham)
      return false;
    if (typeof Proxy === "function")
      return true;
    try {
      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
      }));
      return true;
    } catch (e) {
      return false;
    }
  }
  function _getPrototypeOf24(o) {
    _getPrototypeOf24 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf26(o2) {
      return o2.__proto__ || Object.getPrototypeOf(o2);
    };
    return _getPrototypeOf24(o);
  }
  function _defineProperty12(obj, key, value) {
    if (key in obj) {
      Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });
    } else {
      obj[key] = value;
    }
    return obj;
  }
  var InputRateDecorator = /* @__PURE__ */ function(_InputPolicy) {
    _inherits24(InputRateDecorator2, _InputPolicy);
    var _super = _createSuper24(InputRateDecorator2);
    function InputRateDecorator2(target) {
      var _this;
      _classCallCheck32(this, InputRateDecorator2);
      _this = _super.call(this);
      _defineProperty12(_assertThisInitialized24(_this), "inputRatePolicies", {});
      _this.target = target;
      return _this;
    }
    _createClass32(InputRateDecorator2, [{
      key: "setInput",
      value: function setInput(nameType, value, opts) {
        var _splitInputNameType = splitInputNameType(nameType), inputName = _splitInputNameType.name;
        this._ensureInit(inputName);
        if (opts.priority !== "deferred")
          this.inputRatePolicies[inputName].immediateCall(nameType, value, opts);
        else
          this.inputRatePolicies[inputName].normalCall(nameType, value, opts);
      }
    }, {
      key: "setRatePolicy",
      value: function setRatePolicy(nameType, mode, millis) {
        var _splitInputNameType2 = splitInputNameType(nameType), inputName = _splitInputNameType2.name;
        if (mode === "direct") {
          this.inputRatePolicies[inputName] = new Invoker(this, this._doSetInput);
        } else if (mode === "debounce") {
          this.inputRatePolicies[inputName] = new Debouncer(this, this._doSetInput, millis);
        } else if (mode === "throttle") {
          this.inputRatePolicies[inputName] = new Throttler(this, this._doSetInput, millis);
        }
      }
    }, {
      key: "_ensureInit",
      value: function _ensureInit(name) {
        if (!(name in this.inputRatePolicies))
          this.setRatePolicy(name, "direct");
      }
    }, {
      key: "_doSetInput",
      value: function _doSetInput(nameType, value, opts) {
        this.target.setInput(nameType, value, opts);
      }
    }]);
    return InputRateDecorator2;
  }(InputPolicy);

  // srcts/src/inputPolicies/inputDeferDecorator.ts
  var import_es_array_iterator26 = __toModule(require_es_array_iterator());
  function _typeof26(obj) {
    "@babel/helpers - typeof";
    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
      _typeof26 = function _typeof27(obj2) {
        return typeof obj2;
      };
    } else {
      _typeof26 = function _typeof27(obj2) {
        return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
      };
    }
    return _typeof26(obj);
  }
  function _classCallCheck33(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties33(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass33(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties33(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties33(Constructor, staticProps);
    return Constructor;
  }
  function _inherits25(subClass, superClass) {
    if (typeof superClass !== "function" && superClass !== null) {
      throw new TypeError("Super expression must either be null or a function");
    }
    subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });
    if (superClass)
      _setPrototypeOf25(subClass, superClass);
  }
  function _setPrototypeOf25(o, p) {
    _setPrototypeOf25 = Object.setPrototypeOf || function _setPrototypeOf26(o2, p2) {
      o2.__proto__ = p2;
      return o2;
    };
    return _setPrototypeOf25(o, p);
  }
  function _createSuper25(Derived) {
    var hasNativeReflectConstruct = _isNativeReflectConstruct25();
    return function _createSuperInternal() {
      var Super = _getPrototypeOf25(Derived), result;
      if (hasNativeReflectConstruct) {
        var NewTarget = _getPrototypeOf25(this).constructor;
        result = Reflect.construct(Super, arguments, NewTarget);
      } else {
        result = Super.apply(this, arguments);
      }
      return _possibleConstructorReturn25(this, result);
    };
  }
  function _possibleConstructorReturn25(self2, call) {
    if (call && (_typeof26(call) === "object" || typeof call === "function")) {
      return call;
    }
    return _assertThisInitialized25(self2);
  }
  function _assertThisInitialized25(self2) {
    if (self2 === void 0) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }
    return self2;
  }
  function _isNativeReflectConstruct25() {
    if (typeof Reflect === "undefined" || !Reflect.construct)
      return false;
    if (Reflect.construct.sham)
      return false;
    if (typeof Proxy === "function")
      return true;
    try {
      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
      }));
      return true;
    } catch (e) {
      return false;
    }
  }
  function _getPrototypeOf25(o) {
    _getPrototypeOf25 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf26(o2) {
      return o2.__proto__ || Object.getPrototypeOf(o2);
    };
    return _getPrototypeOf25(o);
  }
  function _defineProperty13(obj, key, value) {
    if (key in obj) {
      Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });
    } else {
      obj[key] = value;
    }
    return obj;
  }
  var InputDeferDecorator = /* @__PURE__ */ function(_InputPolicy) {
    _inherits25(InputDeferDecorator2, _InputPolicy);
    var _super = _createSuper25(InputDeferDecorator2);
    function InputDeferDecorator2(target) {
      var _this;
      _classCallCheck33(this, InputDeferDecorator2);
      _this = _super.call(this);
      _defineProperty13(_assertThisInitialized25(_this), "pendingInput", {});
      _this.target = target;
      return _this;
    }
    _createClass33(InputDeferDecorator2, [{
      key: "setInput",
      value: function setInput(nameType, value, opts) {
        if (/^\./.test(nameType))
          this.target.setInput(nameType, value, opts);
        else
          this.pendingInput[nameType] = {
            value: value,
            opts: opts
          };
      }
    }, {
      key: "submit",
      value: function submit() {
        for (var nameType in this.pendingInput) {
          if (hasOwnProperty(this.pendingInput, nameType)) {
            var _this$pendingInput$na = this.pendingInput[nameType], value = _this$pendingInput$na.value, opts = _this$pendingInput$na.opts;
            this.target.setInput(nameType, value, opts);
          }
        }
      }
    }]);
    return InputDeferDecorator2;
  }(InputPolicy);

  // srcts/src/inputPolicies/inputValidateDecorator.ts
  var import_jquery39 = __toModule(require_jquery());
  function _classCallCheck34(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperty14(obj, key, value) {
    if (key in obj) {
      Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });
    } else {
      obj[key] = value;
    }
    return obj;
  }
  function addDefaultInputOpts(opts) {
    var newOpts = import_jquery39.default.extend({
      priority: "immediate",
      binding: null,
      el: null
    }, opts);
    if (newOpts && typeof newOpts.priority !== "undefined") {
      switch (newOpts.priority) {
        case "deferred":
        case "immediate":
        case "event":
          break;
        default:
          throw new Error("Unexpected input value mode: '" + newOpts.priority + "'");
      }
    }
    return newOpts;
  }
  var InputValidateDecorator = function InputValidateDecorator2(target) {
    _classCallCheck34(this, InputValidateDecorator2);
    _defineProperty14(this, "target", void 0);
    _defineProperty14(this, "setInput", function(nameType, value, opts) {
      if (!nameType)
        throw "Can't set input with empty name.";
      var newOpts = addDefaultInputOpts(opts);
      this.target.setInput(nameType, value, newOpts);
    });
    this.target = target;
  };

  // srcts/src/shiny/bind.ts
  var import_jquery40 = __toModule(require_jquery());

  // srcts/src/bindings/outputAdapter.ts
  function _classCallCheck35(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties34(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass34(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties34(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties34(Constructor, staticProps);
    return Constructor;
  }
  function _defineProperty15(obj, key, value) {
    if (key in obj) {
      Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });
    } else {
      obj[key] = value;
    }
    return obj;
  }
  var OutputBindingAdapter = /* @__PURE__ */ function() {
    function OutputBindingAdapter2(el, binding) {
      _classCallCheck35(this, OutputBindingAdapter2);
      _defineProperty15(this, "el", void 0);
      _defineProperty15(this, "binding", void 0);
      this.el = el;
      this.binding = binding;
      if (binding.resize) {
        this.onResize = makeResizeFilter(el, function(width, height) {
          binding.resize(el, width, height);
        });
      }
    }
    _createClass34(OutputBindingAdapter2, [{
      key: "getId",
      value: function getId() {
        return this.binding.getId(this.el);
      }
    }, {
      key: "onValueChange",
      value: function onValueChange(data) {
        this.binding.onValueChange(this.el, data);
      }
    }, {
      key: "onValueError",
      value: function onValueError(err) {
        this.binding.onValueError(this.el, err);
      }
    }, {
      key: "showProgress",
      value: function showProgress(show3) {
        this.binding.showProgress(this.el, show3);
      }
    }, {
      key: "onResize",
      value: function onResize() {
      }
    }]);
    return OutputBindingAdapter2;
  }();

  // srcts/src/shiny/bind.ts
  var boundInputs = {};
  function valueChangeCallback(inputs, binding, el, allowDeferred) {
    var id = binding.getId(el);
    if (id) {
      var value = binding.getValue(el);
      var type = binding.getType(el);
      if (type)
        id = id + ":" + type;
      var opts = {
        priority: allowDeferred ? "deferred" : "immediate",
        binding: binding,
        el: el
      };
      inputs.setInput(id, value, opts);
    }
  }
  function bindInputs(shinyCtx) {
    var scope = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : document.documentElement;
    var inputs = shinyCtx.inputs, inputsRate = shinyCtx.inputsRate, inputBindings = shinyCtx.inputBindings;
    var bindings = inputBindings.getBindings();
    var inputItems = {};
    var _loop = function _loop2(i2) {
      var binding = bindings[i2].binding;
      var matches = binding.find(scope) || [];
      var _loop22 = function _loop23(j2) {
        var el = matches[j2];
        var id = binding.getId(el);
        if (!id || boundInputs[id])
          return "continue";
        var type = binding.getType(el);
        var effectiveId = type ? id + ":" + type : id;
        inputItems[effectiveId] = {
          value: binding.getValue(el),
          opts: {
            immediate: true,
            binding: binding,
            el: el
          }
        };
        var thisCallback = function() {
          var thisBinding = binding;
          var thisEl = el;
          return function(allowDeferred) {
            valueChangeCallback(inputs, thisBinding, thisEl, allowDeferred);
          };
        }();
        binding.subscribe(el, thisCallback);
        (0, import_jquery40.default)(el).data("shiny-input-binding", binding);
        (0, import_jquery40.default)(el).addClass("shiny-bound-input");
        var ratePolicy = binding.getRatePolicy(el);
        if (ratePolicy !== null) {
          inputsRate.setRatePolicy(effectiveId, ratePolicy.policy, ratePolicy.delay);
        }
        boundInputs[id] = {
          binding: binding,
          node: el
        };
        (0, import_jquery40.default)(el).trigger({
          type: "shiny:bound",
          binding: binding,
          bindingType: "input"
        });
      };
      for (var j = 0; j < matches.length; j++) {
        var _ret = _loop22(j);
        if (_ret === "continue")
          continue;
      }
    };
    for (var i = 0; i < bindings.length; i++) {
      _loop(i);
    }
    return inputItems;
  }
  function bindOutputs(_ref) {
    var sendOutputHiddenState = _ref.sendOutputHiddenState, maybeAddThemeObserver = _ref.maybeAddThemeObserver, outputBindings = _ref.outputBindings;
    var scope = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : document.documentElement;
    var $scope = (0, import_jquery40.default)(scope);
    var bindings = outputBindings.getBindings();
    for (var i = 0; i < bindings.length; i++) {
      var binding = bindings[i].binding;
      var matches = binding.find($scope) || [];
      for (var j = 0; j < matches.length; j++) {
        var _el = matches[j];
        var id = binding.getId(_el);
        if (!id)
          continue;
        if (!import_jquery40.default.contains(document.documentElement, _el))
          continue;
        var $el = (0, import_jquery40.default)(_el);
        if ($el.hasClass("shiny-bound-output")) {
          continue;
        }
        maybeAddThemeObserver(_el);
        var bindingAdapter = new OutputBindingAdapter(_el, binding);
        shinyAppBindOutput(id, bindingAdapter);
        $el.data("shiny-output-binding", bindingAdapter);
        $el.addClass("shiny-bound-output");
        if (!$el.attr("aria-live"))
          $el.attr("aria-live", "polite");
        $el.trigger({
          type: "shiny:bound",
          binding: binding,
          bindingType: "output"
        });
      }
    }
    setTimeout(sendImageSizeFns.regular, 0);
    setTimeout(sendOutputHiddenState, 0);
  }
  function unbindInputs() {
    var scope = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : document.documentElement;
    var includeSelf = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
    var inputs = (0, import_jquery40.default)(scope).find(".shiny-bound-input").toArray();
    if (includeSelf && (0, import_jquery40.default)(scope).hasClass("shiny-bound-input")) {
      inputs.push(scope);
    }
    for (var i = 0; i < inputs.length; i++) {
      var _el2 = inputs[i];
      var binding = (0, import_jquery40.default)(_el2).data("shiny-input-binding");
      if (!binding)
        continue;
      var id = binding.getId(_el2);
      (0, import_jquery40.default)(_el2).removeClass("shiny-bound-input");
      delete boundInputs[id];
      binding.unsubscribe(_el2);
      (0, import_jquery40.default)(_el2).trigger({
        type: "shiny:unbound",
        binding: binding,
        bindingType: "input"
      });
    }
  }
  function unbindOutputs(_ref2) {
    var sendOutputHiddenState = _ref2.sendOutputHiddenState;
    var scope = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : document.documentElement;
    var includeSelf = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
    var outputs = (0, import_jquery40.default)(scope).find(".shiny-bound-output").toArray();
    if (includeSelf && (0, import_jquery40.default)(scope).hasClass("shiny-bound-output")) {
      outputs.push(scope);
    }
    for (var i = 0; i < outputs.length; i++) {
      var $el = (0, import_jquery40.default)(outputs[i]);
      var bindingAdapter = $el.data("shiny-output-binding");
      if (!bindingAdapter)
        continue;
      var id = bindingAdapter.binding.getId(outputs[i]);
      shinyAppUnbindOutput(id, bindingAdapter);
      $el.removeClass("shiny-bound-output");
      $el.removeData("shiny-output-binding");
      $el.trigger({
        type: "shiny:unbound",
        binding: bindingAdapter.binding,
        bindingType: "output"
      });
    }
    setTimeout(sendImageSizeFns.regular, 0);
    setTimeout(sendOutputHiddenState, 0);
  }
  function _bindAll(shinyCtx, scope) {
    bindOutputs(shinyCtx, scope);
    return bindInputs(shinyCtx, scope);
  }
  function unbindAll(shinyCtx, scope) {
    var includeSelf = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
    unbindInputs(scope, includeSelf);
    unbindOutputs(shinyCtx, scope, includeSelf);
  }
  function bindAll(shinyCtx, scope) {
    var currentInputItems = _bindAll(shinyCtx, scope);
    var inputs = shinyCtx.inputs;
    import_jquery40.default.each(currentInputItems, function(name, item) {
      inputs.setInput(name, item.value, item.opts);
    });
    shinyCtx.initDeferredIframes();
  }

  // node_modules/core-js/modules/es.array-buffer.constructor.js
  "use strict";
  var $64 = require_export();
  var global7 = require_global();
  var arrayBufferModule = require_array_buffer();
  var setSpecies = require_set_species();
  var ARRAY_BUFFER = "ArrayBuffer";
  var ArrayBuffer2 = arrayBufferModule[ARRAY_BUFFER];
  var NativeArrayBuffer = global7[ARRAY_BUFFER];
  $64({ global: true, forced: NativeArrayBuffer !== ArrayBuffer2 }, {
    ArrayBuffer: ArrayBuffer2
  });
  setSpecies(ARRAY_BUFFER);

  // node_modules/core-js/modules/es.array-buffer.slice.js
  "use strict";
  var $65 = require_export();
  var fails10 = require_fails();
  var ArrayBufferModule = require_array_buffer();
  var anObject9 = require_an_object();
  var toAbsoluteIndex3 = require_to_absolute_index();
  var toLength7 = require_to_length();
  var speciesConstructor2 = require_species_constructor();
  var ArrayBuffer3 = ArrayBufferModule.ArrayBuffer;
  var DataView2 = ArrayBufferModule.DataView;
  var nativeArrayBufferSlice = ArrayBuffer3.prototype.slice;
  var INCORRECT_SLICE = fails10(function() {
    return !new ArrayBuffer3(2).slice(1, void 0).byteLength;
  });
  $65({ target: "ArrayBuffer", proto: true, unsafe: true, forced: INCORRECT_SLICE }, {
    slice: function slice2(start, end) {
      if (nativeArrayBufferSlice !== void 0 && end === void 0) {
        return nativeArrayBufferSlice.call(anObject9(this), start);
      }
      var length = anObject9(this).byteLength;
      var first = toAbsoluteIndex3(start, length);
      var fin = toAbsoluteIndex3(end === void 0 ? length : end, length);
      var result = new (speciesConstructor2(this, ArrayBuffer3))(toLength7(fin - first));
      var viewSource = new DataView2(this);
      var viewTarget = new DataView2(result);
      var index = 0;
      while (first < fin) {
        viewTarget.setUint8(index++, viewSource.getUint8(first++));
      }
      return result;
    }
  });

  // node_modules/core-js/modules/es.data-view.js
  var $66 = require_export();
  var ArrayBufferModule2 = require_array_buffer();
  var NATIVE_ARRAY_BUFFER = require_array_buffer_native();
  $66({ global: true, forced: !NATIVE_ARRAY_BUFFER }, {
    DataView: ArrayBufferModule2.DataView
  });

  // node_modules/core-js/modules/es.array.reduce.js
  "use strict";
  var $67 = require_export();
  var $reduce = require_array_reduce().left;
  var arrayMethodIsStrict3 = require_array_method_is_strict();
  var CHROME_VERSION = require_engine_v8_version();
  var IS_NODE = require_engine_is_node();
  var STRICT_METHOD3 = arrayMethodIsStrict3("reduce");
  var CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;
  $67({ target: "Array", proto: true, forced: !STRICT_METHOD3 || CHROME_BUG }, {
    reduce: function reduce(callbackfn) {
      return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : void 0);
    }
  });

  // srcts/src/shiny/shinyapp.ts
  var import_es_regexp_exec9 = __toModule(require_es_regexp_exec());
  var import_jquery41 = __toModule(require_jquery());
  function _classCallCheck36(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }
  function _defineProperties35(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor)
        descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }
  function _createClass35(Constructor, protoProps, staticProps) {
    if (protoProps)
      _defineProperties35(Constructor.prototype, protoProps);
    if (staticProps)
      _defineProperties35(Constructor, staticProps);
    return Constructor;
  }
  function _defineProperty16(obj, key, value) {
    if (key in obj) {
      Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });
    } else {
      obj[key] = value;
    }
    return obj;
  }
  var messageHandlerOrder = [];
  var messageHandlers = {};
  var customMessageHandlerOrder = [];
  var customMessageHandlers = {};
  function addMessageHandler(type, handler) {
    if (messageHandlers[type]) {
      throw 'handler for message of type "' + type + '" already added.';
    }
    if (typeof handler !== "function") {
      throw "handler must be a function.";
    }
    if (handler.length !== 1) {
      throw "handler must be a function that takes one argument.";
    }
    messageHandlerOrder.push(type);
    messageHandlers[type] = handler;
  }
  function addCustomMessageHandler(type, handler) {
    if (customMessageHandlers[type]) {
      var typeIdx = customMessageHandlerOrder.indexOf(type);
      if (typeIdx !== -1) {
        customMessageHandlerOrder.splice(typeIdx, 1);
        delete customMessageHandlers[type];
      }
    }
    if (typeof handler !== "function") {
      throw "handler must be a function.";
    }
    if (handler.length !== 1) {
      throw "handler must be a function that takes one argument.";
    }
    customMessageHandlerOrder.push(type);
    customMessageHandlers[type] = handler;
  }
  var ShinyApp = /* @__PURE__ */ function() {
    function ShinyApp2() {
      _classCallCheck36(this, ShinyApp2);
      _defineProperty16(this, "$socket", null);
      _defineProperty16(this, "config", null);
      _defineProperty16(this, "$inputValues", {});
      _defineProperty16(this, "$initialInput", void 0);
      _defineProperty16(this, "$bindings", {});
      _defineProperty16(this, "$values", {});
      _defineProperty16(this, "$errors", {});
      _defineProperty16(this, "$conditionals", {});
      _defineProperty16(this, "$pendingMessages", []);
      _defineProperty16(this, "$activeRequests", {});
      _defineProperty16(this, "$nextRequestId", 0);
      _defineProperty16(this, "$allowReconnect", false);
      _defineProperty16(this, "scheduledReconnect", null);
      _defineProperty16(this, "reconnectDelay", function() {
        var attempts = 0;
        var delays = [1500, 1500, 2500, 2500, 5500, 5500, 10500];
        return {
          next: function next2() {
            var i = attempts;
            if (i >= delays.length) {
              i = delays.length - 1;
            }
            attempts++;
            return delays[i];
          },
          reset: function reset() {
            attempts = 0;
          }
        };
      }());
      _defineProperty16(this, "progressHandlers", {
        binding: function binding(message) {
          var key = message.id;
          var binding2 = this.$bindings[key];
          if (binding2) {
            (0, import_jquery41.default)(binding2.el).trigger({
              type: "shiny:outputinvalidated",
              binding: binding2,
              name: key
            });
            if (binding2.showProgress)
              binding2.showProgress(true);
          }
        },
        open: function open(message) {
          if (message.style === "notification") {
            show({
              html: '<div id="shiny-progress-'.concat(message.id, '" class="shiny-progress-notification">') + '<div class="progress active" style="display: none;"><div class="progress-bar"></div></div><div class="progress-text"><span class="progress-message">message</span> <span class="progress-detail"></span></div></div>',
              id: message.id,
              duration: null
            });
          } else if (message.style === "old") {
            var $container = (0, import_jquery41.default)(".shiny-progress-container");
            if ($container.length === 0) {
              $container = (0, import_jquery41.default)('<div class="shiny-progress-container"></div>');
              (0, import_jquery41.default)(document.body).append($container);
            }
            var depth = (0, import_jquery41.default)(".shiny-progress.open").length;
            var $progress = (0, import_jquery41.default)('<div class="shiny-progress open"><div class="progress active"><div class="progress-bar bar"></div></div><div class="progress-text"><span class="progress-message">message</span><span class="progress-detail"></span></div></div>');
            $progress.attr("id", message.id);
            $container.append($progress);
            var $progressBar = $progress.find(".progress");
            $progressBar.css("top", depth * $progressBar.height() + "px");
            var $progressText = $progress.find(".progress-text");
            $progressText.css("top", 3 * $progressBar.height() + depth * $progressText.outerHeight() + "px");
            $progress.hide();
          }
        },
        update: function update(message) {
          if (message.style === "notification") {
            var $progress = (0, import_jquery41.default)("#shiny-progress-" + message.id);
            if ($progress.length === 0)
              return;
            if (typeof message.message !== "undefined") {
              $progress.find(".progress-message").text(message.message);
            }
            if (typeof message.detail !== "undefined") {
              $progress.find(".progress-detail").text(message.detail);
            }
            if (typeof message.value !== "undefined" && message.value !== null) {
              $progress.find(".progress").show();
              $progress.find(".progress-bar").width(message.value * 100 + "%");
            }
          } else if (message.style === "old") {
            var _$progress = (0, import_jquery41.default)("#" + message.id + ".shiny-progress");
            if (typeof message.message !== "undefined") {
              _$progress.find(".progress-message").text(message.message);
            }
            if (typeof message.detail !== "undefined") {
              _$progress.find(".progress-detail").text(message.detail);
            }
            if (typeof message.value !== "undefined" && message.value !== null) {
              _$progress.find(".progress").show();
              _$progress.find(".bar").width(message.value * 100 + "%");
            }
            _$progress.fadeIn();
          }
        },
        close: function close(message) {
          if (message.style === "notification") {
            remove(message.id);
          } else if (message.style === "old") {
            var $progress = (0, import_jquery41.default)("#" + message.id + ".shiny-progress");
            $progress.removeClass("open");
            $progress.fadeOut({
              complete: function complete() {
                $progress.remove();
                if ((0, import_jquery41.default)(".shiny-progress").length === 0)
                  (0, import_jquery41.default)(".shiny-progress-container").remove();
              }
            });
          }
        }
      });
      this._init();
    }
    _createClass35(ShinyApp2, [{
      key: "connect",
      value: function connect(initialInput) {
        if (this.$socket)
          throw "Connect was already called on this application object";
        this.$socket = this.createSocket();
        this.$initialInput = initialInput;
        import_jquery41.default.extend(this.$inputValues, initialInput);
        this.$updateConditionals();
      }
    }, {
      key: "isConnected",
      value: function isConnected() {
        return !!this.$socket;
      }
    }, {
      key: "reconnect",
      value: function reconnect() {
        clearTimeout(this.scheduledReconnect);
        if (this.isConnected())
          throw "Attempted to reconnect, but already connected.";
        this.$socket = this.createSocket();
        this.$initialInput = import_jquery41.default.extend({}, this.$inputValues);
        this.$updateConditionals();
      }
    }, {
      key: "createSocket",
      value: function createSocket() {
        var _this = this;
        var createSocketFunc = getShinyCreateWebsocket() || function() {
          var protocol = "ws:";
          if (window.location.protocol === "https:")
            protocol = "wss:";
          var defaultPath = window.location.pathname;
          if (!/^([$#!&-;=?-[\]_a-z~]|%[0-9a-fA-F]{2})+$/.test(defaultPath)) {
            defaultPath = encodeURI(defaultPath);
            if (isQt()) {
              defaultPath = encodeURI(defaultPath);
            }
          }
          if (!/\/$/.test(defaultPath))
            defaultPath += "/";
          defaultPath += "websocket/";
          var ws = new WebSocket(protocol + "//" + window.location.host + defaultPath);
          ws.binaryType = "arraybuffer";
          return ws;
        };
        var socket = createSocketFunc();
        var hasOpened = false;
        socket.onopen = function() {
          hasOpened = true;
          (0, import_jquery41.default)(document).trigger({
            type: "shiny:connected",
            socket: socket
          });
          _this.onConnected();
          socket.send(JSON.stringify({
            method: "init",
            data: _this.$initialInput
          }));
          while (_this.$pendingMessages.length) {
            var msg = _this.$pendingMessages.shift();
            socket.send(msg);
          }
        };
        socket.onmessage = function(e) {
          _this.dispatchMessage(e.data);
        };
        socket.onclose = function() {
          if (hasOpened) {
            (0, import_jquery41.default)(document).trigger({
              type: "shiny:disconnected",
              socket: socket
            });
            _this.$notifyDisconnected();
          }
          _this.onDisconnected();
          _this.$removeSocket();
        };
        return socket;
      }
    }, {
      key: "sendInput",
      value: function sendInput(values) {
        var msg = JSON.stringify({
          method: "update",
          data: values
        });
        this.$sendMsg(msg);
        import_jquery41.default.extend(this.$inputValues, values);
        this.$updateConditionals();
      }
    }, {
      key: "$notifyDisconnected",
      value: function $notifyDisconnected() {
        if (window.parent) {
          window.parent.postMessage("disconnected", "*");
        }
      }
    }, {
      key: "$removeSocket",
      value: function $removeSocket() {
        this.$socket = null;
      }
    }, {
      key: "$scheduleReconnect",
      value: function $scheduleReconnect(delay) {
        var _this2 = this;
        this.scheduledReconnect = setTimeout(function() {
          _this2.reconnect();
        }, delay);
      }
    }, {
      key: "onDisconnected",
      value: function onDisconnected() {
        var $overlay = (0, import_jquery41.default)("#shiny-disconnected-overlay");
        if ($overlay.length === 0) {
          (0, import_jquery41.default)(document.body).append('<div id="shiny-disconnected-overlay"></div>');
        }
        if (this.$allowReconnect === true && this.$socket.allowReconnect === true || this.$allowReconnect === "force") {
          var delay = this.reconnectDelay.next();
          showReconnectDialog(delay);
          this.$scheduleReconnect(delay);
        }
      }
    }, {
      key: "onConnected",
      value: function onConnected() {
        (0, import_jquery41.default)("#shiny-disconnected-overlay").remove();
        hideReconnectDialog();
        this.reconnectDelay.reset();
      }
    }, {
      key: "makeRequest",
      value: function makeRequest(method, args, onSuccess, onError, blobs) {
        var requestId = this.$nextRequestId;
        while (this.$activeRequests[requestId]) {
          requestId = (requestId + 1) % 1e9;
        }
        this.$nextRequestId = requestId + 1;
        this.$activeRequests[requestId] = {
          onSuccess: onSuccess,
          onError: onError
        };
        var msg = JSON.stringify({
          method: method,
          args: args,
          tag: requestId
        });
        if (blobs) {
          var uint32ToBuf = function uint32ToBuf2(val) {
            var buffer = new ArrayBuffer(4);
            var view = new DataView(buffer);
            view.setUint32(0, val, true);
            return buffer;
          };
          var payload = [];
          payload.push(uint32ToBuf(16908802));
          var jsonBuf = makeBlob([msg]);
          payload.push(uint32ToBuf(jsonBuf.size));
          payload.push(jsonBuf);
          for (var i = 0; i < blobs.length; i++) {
            var _blob = blobs[i];
            payload.push(uint32ToBuf(_blob.byteLength || _blob.size || 0));
            payload.push(_blob);
          }
          var blob = makeBlob(payload);
          msg = blob;
        }
        this.$sendMsg(msg);
      }
    }, {
      key: "$sendMsg",
      value: function $sendMsg(msg) {
        if (!this.$socket.readyState) {
          this.$pendingMessages.push(msg);
        } else {
          this.$socket.send(msg);
        }
      }
    }, {
      key: "receiveError",
      value: function receiveError(name, error) {
        if (this.$errors[name] === error)
          return;
        this.$errors[name] = error;
        delete this.$values[name];
        var binding = this.$bindings[name];
        var evt = jQuery.Event("shiny:error");
        evt.name = name;
        evt.error = error;
        evt.binding = binding;
        (0, import_jquery41.default)(binding ? binding.el : document).trigger(evt);
        if (!evt.isDefaultPrevented() && binding && binding.onValueError) {
          binding.onValueError(evt.error);
        }
      }
    }, {
      key: "receiveOutput",
      value: function receiveOutput(name, value) {
        var binding = this.$bindings[name];
        var evt = jQuery.Event("shiny:value");
        evt.name = name;
        evt.value = value;
        evt.binding = binding;
        if (this.$values[name] === value) {
          (0, import_jquery41.default)(binding ? binding.el : document).trigger(evt);
          return void 0;
        }
        this.$values[name] = value;
        delete this.$errors[name];
        (0, import_jquery41.default)(binding ? binding.el : document).trigger(evt);
        if (!evt.isDefaultPrevented() && binding) {
          binding.onValueChange(evt.value);
        }
        return value;
      }
    }, {
      key: "bindOutput",
      value: function bindOutput(id, binding) {
        if (!id)
          throw "Can't bind an element with no ID";
        if (this.$bindings[id])
          throw "Duplicate binding for ID " + id;
        this.$bindings[id] = binding;
        if (this.$values[id] !== void 0)
          binding.onValueChange(this.$values[id]);
        else if (this.$errors[id] !== void 0)
          binding.onValueError(this.$errors[id]);
        return binding;
      }
    }, {
      key: "unbindOutput",
      value: function unbindOutput(id, binding) {
        if (this.$bindings[id] === binding) {
          delete this.$bindings[id];
          return true;
        } else {
          return false;
        }
      }
    }, {
      key: "_narrowScopeComponent",
      value: function _narrowScopeComponent(scopeComponent, nsPrefix) {
        return Object.keys(scopeComponent).filter(function(k) {
          return k.indexOf(nsPrefix) === 0;
        }).map(function(k) {
          return _defineProperty16({}, k.substring(nsPrefix.length), scopeComponent[k]);
        }).reduce(function(obj, pair) {
          return import_jquery41.default.extend(obj, pair);
        }, {});
      }
    }, {
      key: "_narrowScope",
      value: function _narrowScope(scope, nsPrefix) {
        if (nsPrefix) {
          return {
            input: this._narrowScopeComponent(scope.input, nsPrefix),
            output: this._narrowScopeComponent(scope.output, nsPrefix)
          };
        }
        return scope;
      }
    }, {
      key: "$updateConditionals",
      value: function $updateConditionals() {
        (0, import_jquery41.default)(document).trigger({
          type: "shiny:conditional"
        });
        var inputs = {};
        for (var name in this.$inputValues) {
          if (hasOwnProperty(this.$inputValues, name)) {
            var shortName = name.replace(/:.*/, "");
            inputs[shortName] = this.$inputValues[name];
          }
        }
        var scope = {
          input: inputs,
          output: this.$values
        };
        var conditionals = (0, import_jquery41.default)(document).find("[data-display-if]");
        for (var i = 0; i < conditionals.length; i++) {
          var el = (0, import_jquery41.default)(conditionals[i]);
          var condFunc = el.data("data-display-if-func");
          if (!condFunc) {
            var condExpr = el.attr("data-display-if");
            condFunc = scopeExprToFunc(condExpr);
            el.data("data-display-if-func", condFunc);
          }
          var nsPrefix = el.attr("data-ns-prefix");
          var nsScope = this._narrowScope(scope, nsPrefix);
          var show3 = condFunc(nsScope);
          var showing = el.css("display") !== "none";
          if (show3 !== showing) {
            if (show3) {
              el.trigger("show");
              el.show();
              el.trigger("shown");
            } else {
              el.trigger("hide");
              el.hide();
              el.trigger("hidden");
            }
          }
        }
      }
    }, {
      key: "dispatchMessage",
      value: function dispatchMessage(data) {
        var msgObj = {};
        if (typeof data === "string") {
          msgObj = JSON.parse(data);
        } else {
          var len = new DataView(data, 0, 1).getUint8(0);
          var typedv = new DataView(data, 1, len);
          var typebuf = [];
          for (var i = 0; i < len; i++) {
            typebuf.push(String.fromCharCode(typedv.getUint8(i)));
          }
          var type = typebuf.join("");
          data = data.slice(len + 1);
          msgObj.custom = {};
          msgObj.custom[type] = data;
        }
        var evt = jQuery.Event("shiny:message");
        evt.message = msgObj;
        (0, import_jquery41.default)(document).trigger(evt);
        if (evt.isDefaultPrevented())
          return;
        this._sendMessagesToHandlers(evt.message, messageHandlers, messageHandlerOrder);
        this.$updateConditionals();
      }
    }, {
      key: "_sendMessagesToHandlers",
      value: function _sendMessagesToHandlers(msgObj, handlers, handlerOrder) {
        for (var i = 0; i < handlerOrder.length; i++) {
          var msgType = handlerOrder[i];
          if (hasOwnProperty(msgObj, msgType)) {
            handlers[msgType].call(this, msgObj[msgType]);
          }
        }
      }
    }, {
      key: "_init",
      value: function _init() {
        var _this3 = this;
        addMessageHandler("values", function(message) {
          for (var name in _this3.$bindings) {
            if (hasOwnProperty(_this3.$bindings, name))
              _this3.$bindings[name].showProgress(false);
          }
          for (var _key in message) {
            if (hasOwnProperty(message, _key)) {
              _this3.receiveOutput(_key, message[_key]);
            }
          }
        });
        addMessageHandler("errors", function(message) {
          for (var _key2 in message) {
            if (hasOwnProperty(message, _key2))
              this.receiveError(_key2, message[_key2]);
          }
        });
        addMessageHandler("inputMessages", function(message) {
          for (var i = 0; i < message.length; i++) {
            var $obj = (0, import_jquery41.default)(".shiny-bound-input#" + $escape(message[i].id));
            var inputBinding = $obj.data("shiny-input-binding");
            if ($obj.length > 0) {
              if (!$obj.attr("aria-live"))
                $obj.attr("aria-live", "polite");
              var el = $obj[0];
              var evt = jQuery.Event("shiny:updateinput");
              evt.message = message[i].message;
              evt.binding = inputBinding;
              (0, import_jquery41.default)(el).trigger(evt);
              if (!evt.isDefaultPrevented())
                inputBinding.receiveMessage(el, evt.message);
            }
          }
        });
        addMessageHandler("javascript", function(message) {
          indirectEval(message);
        });
        addMessageHandler("console", function(message) {
          for (var i = 0; i < message.length; i++) {
            if (console.log)
              console.log(message[i]);
          }
        });
        addMessageHandler("progress", function(message) {
          if (message.type && message.message) {
            var handler = _this3.progressHandlers[message.type];
            if (handler)
              handler.call(_this3, message.message);
          }
        });
        addMessageHandler("notification", function(message) {
          if (message.type === "show")
            show(message.message);
          else if (message.type === "remove")
            remove(message.message);
          else
            throw "Unkown notification type: " + message.type;
        });
        addMessageHandler("modal", function(message) {
          if (message.type === "show")
            show2(message.message);
          else if (message.type === "remove")
            remove2();
          else
            throw "Unkown modal type: " + message.type;
        });
        addMessageHandler("response", function(message) {
          var requestId = message.tag;
          var request = _this3.$activeRequests[requestId];
          if (request) {
            delete _this3.$activeRequests[requestId];
            if ("value" in message)
              request.onSuccess(message.value);
            else
              request.onError(message.error);
          }
        });
        addMessageHandler("allowReconnect", function(message) {
          switch (message) {
            case true:
            case false:
            case "force":
              _this3.$allowReconnect = message;
              break;
            default:
              throw "Invalid value for allowReconnect: " + message;
          }
        });
        addMessageHandler("custom", function(message) {
          var shinyOnCustomMessage = getShinyOnCustomMessage();
          if (shinyOnCustomMessage)
            shinyOnCustomMessage(message);
          _this3._sendMessagesToHandlers(message, customMessageHandlers, customMessageHandlerOrder);
        });
        addMessageHandler("config", function(message) {
          _this3.config = {
            workerId: message.workerId,
            sessionId: message.sessionId
          };
          if (message.user)
            setShinyUser(message.user);
          (0, import_jquery41.default)(document).trigger("shiny:sessioninitialized");
        });
        addMessageHandler("busy", function(message) {
          if (message === "busy") {
            (0, import_jquery41.default)(document.documentElement).addClass("shiny-busy");
            (0, import_jquery41.default)(document).trigger("shiny:busy");
          } else if (message === "idle") {
            (0, import_jquery41.default)(document.documentElement).removeClass("shiny-busy");
            (0, import_jquery41.default)(document).trigger("shiny:idle");
          }
        });
        addMessageHandler("recalculating", function(message) {
          if (hasOwnProperty(message, "name") && hasOwnProperty(message, "status")) {
            var binding = _this3.$bindings[message.name];
            (0, import_jquery41.default)(binding ? binding.el : null).trigger({
              type: "shiny:" + message.status
            });
          }
        });
        addMessageHandler("reload", function(message) {
          window.location.reload();
          return;
          message;
        });
        addMessageHandler("shiny-insert-ui", function(message) {
          var targets = (0, import_jquery41.default)(message.selector);
          if (targets.length === 0) {
            console.warn('The selector you chose ("' + message.selector + '") could not be found in the DOM.');
            renderHtml2(message.content.html, (0, import_jquery41.default)([]).get(0), message.content.deps);
          } else {
            targets.each(function(i, target) {
              renderContent(target, message.content, message.where);
              return message.multiple;
            });
          }
        });
        addMessageHandler("shiny-remove-ui", function(message) {
          var els = (0, import_jquery41.default)(message.selector);
          els.each(function(i, el) {
            shinyUnbindAll(el, true);
            (0, import_jquery41.default)(el).remove();
            return message.multiple;
          });
        });
        addMessageHandler("frozen", function(message) {
          for (var i = 0; i < message.ids.length; i++) {
            shinyForgetLastInputValue(message.ids[i]);
          }
        });
        function getTabset(id) {
          var $tabset = (0, import_jquery41.default)("#" + $escape(id));
          if ($tabset.length === 0)
            throw "There is no tabsetPanel (or navbarPage or navlistPanel) with id equal to '" + id + "'";
          return $tabset;
        }
        function getTabContent($tabset) {
          var tabsetId = $tabset.attr("data-tabsetid");
          var $tabContent = (0, import_jquery41.default)("div.tab-content[data-tabsetid='" + $escape(tabsetId) + "']");
          return $tabContent;
        }
        function getTargetTabs($tabset, $tabContent, target) {
          var dataValue = "[data-value='" + $escape(target) + "']";
          var $aTag = $tabset.find("a" + dataValue);
          var $liTag = $aTag.parent();
          if ($liTag.length === 0) {
            throw "There is no tabPanel (or navbarMenu) with value (or menuName) equal to '" + target + "'";
          }
          var $liTags = [];
          var $divTags = [];
          if ($aTag.attr("data-toggle") === "dropdown") {
            var $dropdownTabset = $aTag.find("+ ul.dropdown-menu");
            var dropdownId = $dropdownTabset.attr("data-tabsetid");
            var $dropdownLiTags = $dropdownTabset.find("a[data-toggle='tab']").parent("li");
            $dropdownLiTags.each(function(i, el) {
              $liTags.push((0, import_jquery41.default)(el));
            });
            var selector = "div.tab-pane[id^='tab-" + $escape(dropdownId) + "']";
            var $dropdownDivs = $tabContent.find(selector);
            $dropdownDivs.each(function(i, el) {
              $divTags.push((0, import_jquery41.default)(el));
            });
          } else {
            $divTags.push($tabContent.find("div" + dataValue));
          }
          return {
            $liTag: $liTag,
            $liTags: $liTags,
            $divTags: $divTags
          };
        }
        addMessageHandler("shiny-insert-tab", function(message) {
          var $parentTabset = getTabset(message.inputId);
          var $tabset = $parentTabset;
          var $tabContent = getTabContent($tabset);
          var tabsetId = $parentTabset.attr("data-tabsetid");
          var $divTag = (0, import_jquery41.default)(message.divTag.html);
          var $liTag = (0, import_jquery41.default)(message.liTag.html);
          var $aTag = $liTag.find("> a");
          var target = null;
          var $targetLiTag = null;
          if (message.target !== null) {
            target = getTargetTabs($tabset, $tabContent, message.target);
            $targetLiTag = target.$liTag;
          }
          var dropdown = getDropdown();
          if (dropdown !== null) {
            if ($aTag.attr("data-toggle") === "dropdown")
              throw "Cannot insert a navbarMenu inside another one";
            $tabset = dropdown.$tabset;
            tabsetId = dropdown.id;
            $liTag.removeClass("nav-item").find(".nav-link").removeClass("nav-link").addClass("dropdown-item");
          }
          if ($aTag.attr("data-toggle") === "tab") {
            var index = getTabIndex($tabset, tabsetId);
            var tabId = "tab-" + tabsetId + "-" + index;
            $liTag.find("> a").attr("href", "#" + tabId);
            $divTag.attr("id", tabId);
          }
          if (message.position === "before") {
            if ($targetLiTag) {
              $targetLiTag.before($liTag);
            } else {
              $tabset.prepend($liTag);
            }
          } else if (message.position === "after") {
            if ($targetLiTag) {
              $targetLiTag.after($liTag);
            } else {
              $tabset.append($liTag);
            }
          }
          renderContent($liTag[0], {
            html: $liTag.html(),
            deps: message.liTag.deps
          });
          renderContent($tabContent[0], {
            html: "",
            deps: message.divTag.deps
          }, "beforeend");
          $divTag.get().forEach(function(el) {
            $tabContent[0].appendChild(el);
            renderContent(el, el.innerHTML || el.textContent);
          });
          if (message.select) {
            $liTag.find("a").tab("show");
          }
          function getTabIndex($tabset2, tabsetId2) {
            var existingTabIds = [0];
            $tabset2.find("> li").each(function() {
              var $tab = (0, import_jquery41.default)(this).find("> a[data-toggle='tab']");
              if ($tab.length > 0) {
                var href = $tab.attr("href").replace(/.*(?=#[^\s]+$)/, "");
                var _index = href.replace("#tab-" + tabsetId2 + "-", "");
                existingTabIds.push(Number(_index));
              }
            });
            return Math.max.apply(null, existingTabIds) + 1;
          }
          function getDropdown() {
            if (message.menuName !== null) {
              var $dropdownATag = (0, import_jquery41.default)("a.dropdown-toggle[data-value='" + $escape(message.menuName) + "']");
              if ($dropdownATag.length === 0) {
                throw "There is no navbarMenu with menuName equal to '" + message.menuName + "'";
              }
              var $dropdownTabset = $dropdownATag.find("+ ul.dropdown-menu");
              var dropdownId = $dropdownTabset.attr("data-tabsetid");
              return {
                $tabset: $dropdownTabset,
                id: dropdownId
              };
            } else if (message.target !== null) {
              var $uncleTabset = $targetLiTag.parent("ul");
              if ($uncleTabset.hasClass("dropdown-menu")) {
                var uncleId = $uncleTabset.attr("data-tabsetid");
                return {
                  $tabset: $uncleTabset,
                  id: uncleId
                };
              }
            }
            return null;
          }
        });
        function ensureTabsetHasVisibleTab($tabset) {
          var inputBinding = $tabset.data("shiny-input-binding");
          if (!inputBinding.getValue($tabset)) {
            var destTabValue = getFirstTab($tabset);
            var evt = jQuery.Event("shiny:updateinput");
            evt.binding = inputBinding;
            $tabset.trigger(evt);
            inputBinding.setValue($tabset[0], destTabValue);
          }
        }
        function getFirstTab($ul) {
          return $ul.find("li:visible a[data-toggle='tab']").first().attr("data-value") || null;
        }
        function tabApplyFunction(target, func) {
          var liTags = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
          import_jquery41.default.each(target, function(key, el) {
            if (key === "$liTag") {
              func(el);
            } else if (key === "$divTags") {
              import_jquery41.default.each(el, function(i, div) {
                func(div);
              });
            } else if (liTags && key === "$liTags") {
              import_jquery41.default.each(el, function(i, div) {
                func(div);
              });
            }
          });
        }
        addMessageHandler("shiny-remove-tab", function(message) {
          var $tabset = getTabset(message.inputId);
          var $tabContent = getTabContent($tabset);
          var target = getTargetTabs($tabset, $tabContent, message.target);
          tabApplyFunction(target, removeEl);
          ensureTabsetHasVisibleTab($tabset);
          function removeEl($el) {
            shinyUnbindAll($el, true);
            $el.remove();
          }
        });
        addMessageHandler("shiny-change-tab-visibility", function(message) {
          var $tabset = getTabset(message.inputId);
          var $tabContent = getTabContent($tabset);
          var target = getTargetTabs($tabset, $tabContent, message.target);
          tabApplyFunction(target, changeVisibility, true);
          ensureTabsetHasVisibleTab($tabset);
          function changeVisibility($el) {
            if (message.type === "show")
              $el.css("display", "");
            else if (message.type === "hide") {
              $el.hide();
              $el.removeClass("active");
            }
          }
        });
        addMessageHandler("updateQueryString", function(message) {
          if (message.mode === "replace") {
            window.history.replaceState(null, null, message.queryString);
            return;
          }
          var what = null;
          if (message.queryString.charAt(0) === "#")
            what = "hash";
          else if (message.queryString.charAt(0) === "?")
            what = "query";
          else
            throw "The 'query' string must start with either '?' (to update the query string) or with '#' (to update the hash).";
          var path = window.location.pathname;
          var oldQS = window.location.search;
          var oldHash = window.location.hash;
          var relURL = path;
          if (what === "query")
            relURL += message.queryString;
          else
            relURL += oldQS + message.queryString;
          window.history.pushState(null, null, relURL);
          if (message.queryString.indexOf("#") !== -1)
            what = "hash";
          if (window.location.hash !== oldHash)
            what = "hash";
          if (what === "hash")
            (0, import_jquery41.default)(document).trigger("hashchange");
        });
        addMessageHandler("resetBrush", function(message) {
          resetBrush(message.brushId);
        });
      }
    }, {
      key: "getTestSnapshotBaseUrl",
      value: function getTestSnapshotBaseUrl() {
        var _ref2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, _ref2$fullUrl = _ref2.fullUrl, fullUrl = _ref2$fullUrl === void 0 ? true : _ref2$fullUrl;
        var loc = window.location;
        var url = "";
        if (fullUrl) {
          url = loc.origin + loc.pathname.replace(/\/[^/]*$/, "");
        }
        url += "/session/" + encodeURIComponent(this.config.sessionId) + "/dataobj/shinytest?w=" + encodeURIComponent(this.config.workerId) + "&nonce=" + randomId();
        return url;
      }
    }]);
    return ShinyApp2;
  }();

  // srcts/src/shiny/init.ts
  function initShiny(windowShiny3) {
    setShinyObj(windowShiny3);
    var shinyapp = windowShiny3.shinyapp = new ShinyApp();
    windowShiny3.progressHandlers = shinyapp.progressHandlers;
    var inputBatchSender = new InputBatchSender(shinyapp);
    var inputsNoResend = new InputNoResendDecorator(inputBatchSender);
    var inputsEvent = new InputEventDecorator(inputsNoResend);
    var inputsRate = new InputRateDecorator(inputsEvent);
    var inputsDefer = new InputDeferDecorator(inputsEvent);
    var target;
    if ((0, import_jquery42.default)('input[type="submit"], button[type="submit"]').length > 0) {
      target = inputsDefer;
      (0, import_jquery42.default)('input[type="submit"], button[type="submit"]').each(function() {
        (0, import_jquery42.default)(this).click(function(event) {
          event.preventDefault();
          inputsDefer.submit();
        });
      });
    } else {
      target = inputsRate;
    }
    var inputs = new InputValidateDecorator(target);
    windowShiny3.setInputValue = windowShiny3.onInputChange = function(name, value, opts) {
      var newOpts = addDefaultInputOpts(opts);
      inputs.setInput(name, value, newOpts);
    };
    windowShiny3.forgetLastInputValue = function(name) {
      inputsNoResend.forget(name);
    };
    var inputBindings = windowShiny3.inputBindings;
    var outputBindings = windowShiny3.outputBindings;
    function shinyBindCtx() {
      return {
        inputs: inputs,
        inputsRate: inputsRate,
        sendOutputHiddenState: sendOutputHiddenState,
        maybeAddThemeObserver: maybeAddThemeObserver,
        inputBindings: inputBindings,
        outputBindings: outputBindings,
        initDeferredIframes: initDeferredIframes
      };
    }
    windowShiny3.bindAll = function(scope) {
      bindAll(shinyBindCtx(), scope);
    };
    windowShiny3.unbindAll = function(scope) {
      var includeSelf = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
      unbindAll(shinyBindCtx(), scope, includeSelf);
    };
    function initializeInputs() {
      var scope = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : document.documentElement;
      var bindings = inputBindings.getBindings();
      for (var i = 0; i < bindings.length; i++) {
        var binding = bindings[i].binding;
        var inputObjects = binding.find(scope);
        if (inputObjects) {
          for (var j = 0; j < inputObjects.length; j++) {
            var $inputObjectJ = (0, import_jquery42.default)(inputObjects[j]);
            if (!$inputObjectJ.data("_shiny_initialized")) {
              $inputObjectJ.data("_shiny_initialized", true);
              binding.initialize(inputObjects[j]);
            }
          }
        }
      }
    }
    windowShiny3.initializeInputs = initializeInputs;
    function getIdFromEl(el) {
      var $el = (0, import_jquery42.default)(el);
      var bindingAdapter = $el.data("shiny-output-binding");
      if (!bindingAdapter)
        return null;
      else
        return bindingAdapter.getId();
    }
    initializeInputs(document.documentElement);
    var initialValues = mapValues(_bindAll(shinyBindCtx(), document.documentElement), function(x) {
      return x.value;
    });
    (0, import_jquery42.default)(".shiny-image-output, .shiny-plot-output, .shiny-report-size").each(function() {
      var id = getIdFromEl(this);
      if (this.offsetWidth !== 0 || this.offsetHeight !== 0) {
        initialValues[".clientdata_output_" + id + "_width"] = this.offsetWidth;
        initialValues[".clientdata_output_" + id + "_height"] = this.offsetHeight;
      }
    });
    function getComputedBgColor(el) {
      if (!el) {
        return null;
      }
      var bgColor = getStyle(el, "background-color");
      var m = bgColor.match(/^rgba\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*\)$/);
      if (bgColor === "transparent" || m && parseFloat(m[4]) === 0) {
        var bgImage = getStyle(el, "background-image");
        if (bgImage && bgImage !== "none") {
          return null;
        } else {
          return getComputedBgColor(el.parentElement);
        }
      }
      return bgColor;
    }
    function getComputedFont(el) {
      var fontFamily = getStyle(el, "font-family");
      var fontSize = getStyle(el, "font-size");
      return {
        families: fontFamily.replace(/"/g, "").split(", "),
        size: fontSize
      };
    }
    (0, import_jquery42.default)(".shiny-image-output, .shiny-plot-output, .shiny-report-theme").each(function() {
      var el = this;
      var id = getIdFromEl(el);
      initialValues[".clientdata_output_" + id + "_bg"] = getComputedBgColor(el);
      initialValues[".clientdata_output_" + id + "_fg"] = getStyle(el, "color");
      initialValues[".clientdata_output_" + id + "_accent"] = getComputedLinkColor(el);
      initialValues[".clientdata_output_" + id + "_font"] = getComputedFont(el);
      maybeAddThemeObserver(el);
    });
    function maybeAddThemeObserver(el) {
      if (!window.MutationObserver) {
        return;
      }
      var cl = el.classList;
      var reportTheme = cl.contains("shiny-image-output") || cl.contains("shiny-plot-output") || cl.contains("shiny-report-theme");
      if (!reportTheme) {
        return;
      }
      var $el = (0, import_jquery42.default)(el);
      if ($el.data("shiny-theme-observer")) {
        return;
      }
      var observerCallback = new Debouncer(null, function() {
        return doSendTheme(el);
      }, 100);
      var observer = new MutationObserver(function() {
        return observerCallback.normalCall();
      });
      var config = {
        attributes: true,
        attributeFilter: ["style", "class"]
      };
      observer.observe(el, config);
      $el.data("shiny-theme-observer", observer);
    }
    function doSendTheme(el) {
      if (el.classList.contains("shiny-output-error")) {
        return;
      }
      var id = getIdFromEl(el);
      inputs.setInput(".clientdata_output_" + id + "_bg", getComputedBgColor(el));
      inputs.setInput(".clientdata_output_" + id + "_fg", getStyle(el, "color"));
      inputs.setInput(".clientdata_output_" + id + "_accent", getComputedLinkColor(el));
      inputs.setInput(".clientdata_output_" + id + "_font", getComputedFont(el));
    }
    function doSendImageSize() {
      (0, import_jquery42.default)(".shiny-image-output, .shiny-plot-output, .shiny-report-size").each(function() {
        var id = getIdFromEl(this);
        if (this.offsetWidth !== 0 || this.offsetHeight !== 0) {
          inputs.setInput(".clientdata_output_" + id + "_width", this.offsetWidth);
          inputs.setInput(".clientdata_output_" + id + "_height", this.offsetHeight);
        }
      });
      (0, import_jquery42.default)(".shiny-image-output, .shiny-plot-output, .shiny-report-theme").each(function() {
        doSendTheme(this);
      });
      (0, import_jquery42.default)(".shiny-bound-output").each(function() {
        var $this = (0, import_jquery42.default)(this), binding = $this.data("shiny-output-binding");
        $this.trigger({
          type: "shiny:visualchange",
          visible: !isHidden(this),
          binding: binding
        });
        binding.onResize();
      });
    }
    sendImageSizeFns.setImageSend(inputBatchSender, doSendImageSize);
    function isHidden(obj) {
      if (obj === null || obj.offsetWidth !== 0 || obj.offsetHeight !== 0) {
        return false;
      } else if (getStyle(obj, "display") === "none") {
        return true;
      } else {
        return isHidden(obj.parentNode);
      }
    }
    var lastKnownVisibleOutputs = {};
    (0, import_jquery42.default)(".shiny-bound-output").each(function() {
      var id = getIdFromEl(this);
      if (isHidden(this)) {
        initialValues[".clientdata_output_" + id + "_hidden"] = true;
      } else {
        lastKnownVisibleOutputs[id] = true;
        initialValues[".clientdata_output_" + id + "_hidden"] = false;
      }
    });
    function doSendOutputHiddenState() {
      var visibleOutputs = {};
      (0, import_jquery42.default)(".shiny-bound-output").each(function() {
        var id = getIdFromEl(this);
        delete lastKnownVisibleOutputs[id];
        var hidden = isHidden(this), evt = {
          type: "shiny:visualchange",
          visible: !hidden
        };
        if (hidden) {
          inputs.setInput(".clientdata_output_" + id + "_hidden", true);
        } else {
          visibleOutputs[id] = true;
          inputs.setInput(".clientdata_output_" + id + "_hidden", false);
        }
        var $this = (0, import_jquery42.default)(this);
        evt.binding = $this.data("shiny-output-binding");
        $this.trigger(evt);
      });
      for (var name in lastKnownVisibleOutputs) {
        if (hasOwnProperty(lastKnownVisibleOutputs, name))
          inputs.setInput(".clientdata_output_" + name + "_hidden", true);
      }
      lastKnownVisibleOutputs = visibleOutputs;
    }
    var sendOutputHiddenStateDebouncer = new Debouncer(null, doSendOutputHiddenState, 0);
    function sendOutputHiddenState() {
      sendOutputHiddenStateDebouncer.normalCall();
    }
    inputBatchSender.lastChanceCallback.push(function() {
      if (sendOutputHiddenStateDebouncer.isPending())
        sendOutputHiddenStateDebouncer.immediateCall();
    });
    function filterEventsByNamespace(namespace, handler) {
      for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
        args[_key - 2] = arguments[_key];
      }
      namespace = namespace.split(".");
      return function(e) {
        var eventNamespace = e.namespace.split(".");
        for (var i = 0; i < namespace.length; i++) {
          if (eventNamespace.indexOf(namespace[i]) === -1)
            return;
        }
        handler.apply(this, [namespace, handler].concat(args));
      };
    }
    (0, import_jquery42.default)(window).resize(debounce(500, sendImageSizeFns.regular));
    var bs3classes = ["modal", "dropdown", "tab", "tooltip", "popover", "collapse"];
    import_jquery42.default.each(bs3classes, function(idx, classname) {
      (0, import_jquery42.default)(document.body).on("shown.bs." + classname + ".sendImageSize", "*", filterEventsByNamespace("bs", sendImageSizeFns.regular));
      (0, import_jquery42.default)(document.body).on("shown.bs." + classname + ".sendOutputHiddenState hidden.bs." + classname + ".sendOutputHiddenState", "*", filterEventsByNamespace("bs", sendOutputHiddenState));
    });
    (0, import_jquery42.default)(document.body).on("shown.sendImageSize", "*", sendImageSizeFns.regular);
    (0, import_jquery42.default)(document.body).on("shown.sendOutputHiddenState hidden.sendOutputHiddenState", "*", sendOutputHiddenState);
    initialValues[".clientdata_pixelratio"] = pixelRatio();
    (0, import_jquery42.default)(window).resize(function() {
      inputs.setInput(".clientdata_pixelratio", pixelRatio());
    });
    initialValues[".clientdata_url_protocol"] = window.location.protocol;
    initialValues[".clientdata_url_hostname"] = window.location.hostname;
    initialValues[".clientdata_url_port"] = window.location.port;
    initialValues[".clientdata_url_pathname"] = window.location.pathname;
    initialValues[".clientdata_url_search"] = window.location.search;
    (0, import_jquery42.default)(window).on("pushstate", function(e) {
      inputs.setInput(".clientdata_url_search", window.location.search);
      return;
      e;
    });
    (0, import_jquery42.default)(window).on("popstate", function(e) {
      inputs.setInput(".clientdata_url_search", window.location.search);
      return;
      e;
    });
    initialValues[".clientdata_url_hash_initial"] = window.location.hash;
    initialValues[".clientdata_url_hash"] = window.location.hash;
    (0, import_jquery42.default)(window).on("hashchange", function(e) {
      inputs.setInput(".clientdata_url_hash", window.location.hash);
      return;
      e;
    });
    var singletonText = initialValues[".clientdata_singletons"] = (0, import_jquery42.default)('script[type="application/shiny-singletons"]').text();
    registerNames(singletonText.split(/,/));
    var dependencyText = (0, import_jquery42.default)('script[type="application/html-dependencies"]').text();
    import_jquery42.default.each(dependencyText.split(/;/), function(i, depStr) {
      var match = /\s*^(.+)\[(.+)\]\s*$/.exec(depStr);
      if (match) {
        registerDependency(match[1], match[2]);
      }
    });
    inputsNoResend.reset(initialValues);
    shinyapp.connect(initialValues);
    (0, import_jquery42.default)(document).one("shiny:connected", function() {
      initDeferredIframes();
    });
  }
  function initDeferredIframes() {
    if (!window.Shiny || !window.Shiny.shinyapp || !window.Shiny.shinyapp.isConnected()) {
      return;
    }
    (0, import_jquery42.default)(".shiny-frame-deferred").each(function(i, el) {
      var $el = (0, import_jquery42.default)(el);
      $el.removeClass("shiny-frame-deferred");
      $el.attr("src", $el.attr("data-deferred-src"));
      $el.attr("data-deferred-src", null);
    });
  }

  // srcts/src/shiny/index.ts
  var windowShiny2;
  function setShiny(windowShiny_) {
    windowShiny2 = windowShiny_;
    windowShiny2.version = "1.7.1.9001";
    var _initInputBindings = initInputBindings(), inputBindings = _initInputBindings.inputBindings, fileInputBinding2 = _initInputBindings.fileInputBinding;
    var _initOutputBindings = initOutputBindings(), outputBindings = _initOutputBindings.outputBindings;
    setFileInputBinding(fileInputBinding2);
    windowShiny2.$escape = $escape;
    windowShiny2.compareVersion = compareVersion;
    windowShiny2.inputBindings = inputBindings;
    windowShiny2.InputBinding = InputBinding;
    windowShiny2.outputBindings = outputBindings;
    windowShiny2.OutputBinding = OutputBinding;
    windowShiny2.resetBrush = resetBrush;
    windowShiny2.notifications = {
      show: show,
      remove: remove
    };
    windowShiny2.modal = {
      show: show2,
      remove: remove2
    };
    windowShiny2.addCustomMessageHandler = addCustomMessageHandler;
    windowShiny2.showReconnectDialog = showReconnectDialog;
    windowShiny2.hideReconnectDialog = hideReconnectDialog;
    windowShiny2.renderDependencies = renderDependencies;
    windowShiny2.renderContent = renderContent;
    windowShiny2.renderHtml = renderHtml2;
    (0, import_jquery43.default)(function() {
      setTimeout(function() {
        initShiny(windowShiny2);
      }, 1);
    });
  }

  // srcts/src/window/blobBuilder.ts
  function windowBlobBuilder() {
    var blob = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;
    return blob;
  }

  // srcts/src/window/userAgent.ts
  function windowUserAgent() {
    return window.navigator.userAgent;
  }

  // srcts/src/shiny/reactlog.ts
  var import_jquery44 = __toModule(require_jquery());
  function initReactlog() {
    (0, import_jquery44.default)(document).on("keydown", function(e) {
      if (e.which !== 114 || !e.ctrlKey && !e.metaKey || e.shiftKey || e.altKey)
        return;
      var url = "reactlog?w=" + window.escape(shinyShinyApp().config.workerId) + "&s=" + window.escape(shinyShinyApp().config.sessionId);
      window.open(url);
      e.preventDefault();
    });
    (0, import_jquery44.default)(document).on("keydown", function(e) {
      if (!(e.which === 115 && (e.ctrlKey || e.metaKey) && !e.shiftKey && !e.altKey || e.which === 114 && (e.ctrlKey || e.metaKey) && e.shiftKey && !e.altKey)) {
        return;
      }
      var url = "reactlog/mark?w=" + window.escape(shinyShinyApp().config.workerId) + "&s=" + window.escape(shinyShinyApp().config.sessionId);
      import_jquery44.default.get(url, function(result) {
        if (result !== "marked")
          return;
        var html = '<span id="shiny-reactlog-mark-text">Marked time point in reactlog</span>';
        show({
          html: html,
          closeButton: true
        });
      }).fail(function() {
        window.open(url);
      });
      e.preventDefault();
    });
  }

  // srcts/src/initialize/index.ts
  function init() {
    setShiny(windowShiny());
    setUserAgent(windowUserAgent());
    determineBrowserInfo();
    trackHistory();
    disableFormSubmission();
    setBlobBuilder(windowBlobBuilder());
    initReactlog();
  }

  // srcts/src/index.ts
  init();
})();
//# sourceMappingURL=shiny.js.map

shiny/www/shared/shiny-testmode.js METASEP
/*! shiny 1.7.1.9001 | (c) 2012-2021 RStudio, PBC. | License: GPL-3 | file LICENSE */
(function(){var a=eval;window.addEventListener("message",function(i){var e=i.data;e.code&&a(e.code)});})();
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjdHMvc3JjL3V0aWxzL2V2YWwudHMiLCAiLi4vLi4vLi4vc3JjdHMvZXh0cmFzL3NoaW55LXRlc3Rtb2RlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvL2VzYnVpbGQuZ2l0aHViLmlvL2NvbnRlbnQtdHlwZXMvI2RpcmVjdC1ldmFsXG4vL3RsL2RyO1xuLy8gKiBEaXJlY3QgdXNhZ2Ugb2YgYGV2YWwoXCJ4XCIpYCBpcyBiYWQgd2l0aCBidW5kbGVkIGNvZGUuXG4vLyAqIEluc3RlYWQsIHVzZSBpbmRpcmVjdCBjYWxscyB0byBgZXZhbGAgc3VjaCBhcyBgaW5kaXJlY3RFdmFsKFwieFwiKWBcbi8vICAgKiBFdmVuIGp1c3QgcmVuYW1pbmcgdGhlIGZ1bmN0aW9uIHdvcmtzIHdlbGwgZW5vdWdoLlxuLy8gPiBUaGlzIGlzIGtub3duIGFzIFwiaW5kaXJlY3QgZXZhbFwiIGJlY2F1c2UgZXZhbCBpcyBub3QgYmVpbmcgY2FsbGVkIGRpcmVjdGx5LCBhbmQgc28gZG9lcyBub3QgdHJpZ2dlciB0aGUgZ3JhbW1hdGljYWwgc3BlY2lhbCBjYXNlIGZvciBkaXJlY3QgZXZhbCBpbiB0aGUgSmF2YVNjcmlwdCBWTS4gWW91IGNhbiBjYWxsIGluZGlyZWN0IGV2YWwgdXNpbmcgYW55IHN5bnRheCBhdCBhbGwgZXhjZXB0IGZvciBhbiBleHByZXNzaW9uIG9mIHRoZSBleGFjdCBmb3JtIGV2YWwoJ3gnKS4gRm9yIGV4YW1wbGUsIHZhciBldmFsMiA9IGV2YWw7IGV2YWwyKCd4JykgYW5kIFtldmFsXVswXSgneCcpIGFuZCB3aW5kb3cuZXZhbCgneCcpIGFyZSBhbGwgaW5kaXJlY3QgZXZhbCBjYWxscy5cbi8vID4gV2hlbiB5b3UgdXNlIGluZGlyZWN0IGV2YWwsIHRoZSBjb2RlIGlzIGV2YWx1YXRlZCBpbiB0aGUgZ2xvYmFsIHNjb3BlIGluc3RlYWQgb2YgaW4gdGhlIGlubGluZSBzY29wZSBvZiB0aGUgY2FsbGVyLlxudmFyIGluZGlyZWN0RXZhbCA9IGV2YWw7XG5leHBvcnQgeyBpbmRpcmVjdEV2YWwgfTsiLCAiLyogZXNsaW50LWRpc2FibGUgdW5pY29ybi9maWxlbmFtZS1jYXNlICovXG5pbXBvcnQgeyBpbmRpcmVjdEV2YWwgfSBmcm9tIFwiLi4vc3JjL3V0aWxzL2V2YWxcIjsgLy8gTGlzdGVuIGZvciBtZXNzYWdlcyBmcm9tIHBhcmVudCBmcmFtZS4gVGhpcyBmaWxlIGlzIG9ubHkgYWRkZWQgd2hlbiB0aGVcbi8vIHNoaW55LnRlc3Rtb2RlIG9wdGlvbiBpcyBUUlVFLlxuXG53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgZnVuY3Rpb24gKGUpIHtcbiAgdmFyIG1lc3NhZ2UgPSBlLmRhdGE7XG4gIGlmIChtZXNzYWdlLmNvZGUpIGluZGlyZWN0RXZhbChtZXNzYWdlLmNvZGUpO1xufSk7Il0sCiAgIm1hcHBpbmdzIjogIjtZQU9BLEdBQUksR0FBZSxLQ0huQixPQUFPLGlCQUFpQixVQUFXLFNBQVUsRUFBRyxDQUM5QyxHQUFJLEdBQVUsRUFBRSxLQUNoQixBQUFJLEVBQVEsTUFBTSxFQUFhLEVBQVEiLAogICJuYW1lcyI6IFtdCn0K

shiny/www/shared/shiny-showcase.js METASEP
/*! shiny 1.7.1.9001 | (c) 2012-2021 RStudio, PBC. | License: GPL-3 | file LICENSE */
(function(){var en=Object.create;var ee=Object.defineProperty;var rn=Object.getOwnPropertyDescriptor;var tn=Object.getOwnPropertyNames;var nn=Object.getPrototypeOf,an=Object.prototype.hasOwnProperty;var on=function(e){return ee(e,"__esModule",{value:!0})};var l=function(e,r){return function(){return r||e((r={exports:{}}).exports,r),r.exports}};var ln=function(e,r,t){if(r&&typeof r=="object"||typeof r=="function")for(var n=tn(r),i=0,a=n.length,o;i<a;i++)o=n[i],!an.call(e,o)&&o!=="default"&&ee(e,o,{get:function(s){return r[s]}.bind(null,o),enumerable:!(t=rn(r,o))||t.enumerable});return e},sn=function(e){return ln(on(ee(e!=null?en(nn(e)):{},"default",e&&e.__esModule&&"default"in e?{get:function(){return e.default},enumerable:!0}:{value:e,enumerable:!0})),e)};var g=l(function(ka,Be){var M=function(e){return e&&e.Math==Math&&e};Be.exports=M(typeof globalThis=="object"&&globalThis)||M(typeof window=="object"&&window)||M(typeof self=="object"&&self)||M(typeof global=="object"&&global)||function(){return this}()||Function("return this")()});var b=l(function(Wa,Le){Le.exports=function(e){try{return!!e()}catch(r){return!0}}});var I=l(function(Ha,Fe){var un=b();Fe.exports=!un(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!=7})});var We=l(function(ke){"use strict";var $e={}.propertyIsEnumerable,Ue=Object.getOwnPropertyDescriptor,cn=Ue&&!$e.call({1:2},1);ke.f=cn?function(r){var t=Ue(this,r);return!!t&&t.enumerable}:$e});var re=l(function(Ka,He){He.exports=function(e,r){return{enumerable:!(e&1),configurable:!(e&2),writable:!(e&4),value:r}}});var te=l(function(za,Ge){var fn={}.toString;Ge.exports=function(e){return fn.call(e).slice(8,-1)}});var ze=l(function(Xa,Ke){var vn=b(),dn=te(),pn="".split;Ke.exports=vn(function(){return!Object("z").propertyIsEnumerable(0)})?function(e){return dn(e)=="String"?pn.call(e,""):Object(e)}:Object});var P=l(function(Ya,Xe){Xe.exports=function(e){if(e==null)throw TypeError("Can't call method on "+e);return e}});var B=l(function(Ja,Ye){var gn=ze(),yn=P();Ye.exports=function(e){return gn(yn(e))}});var O=l(function(Za,Je){Je.exports=function(e){return typeof e=="object"?e!==null:typeof e=="function"}});var ne=l(function(Qa,Ze){var L=O();Ze.exports=function(e,r){if(!L(e))return e;var t,n;if(r&&typeof(t=e.toString)=="function"&&!L(n=t.call(e))||typeof(t=e.valueOf)=="function"&&!L(n=t.call(e))||!r&&typeof(t=e.toString)=="function"&&!L(n=t.call(e)))return n;throw TypeError("Can't convert object to primitive value")}});var ie=l(function(Va,Qe){var hn=P();Qe.exports=function(e){return Object(hn(e))}});var m=l(function(eo,Ve){var bn=ie(),xn={}.hasOwnProperty;Ve.exports=Object.hasOwn||function(r,t){return xn.call(bn(r),t)}});var tr=l(function(ro,rr){var mn=g(),er=O(),ae=mn.document,En=er(ae)&&er(ae.createElement);rr.exports=function(e){return En?ae.createElement(e):{}}});var oe=l(function(to,nr){var qn=I(),Sn=b(),wn=tr();nr.exports=!qn&&!Sn(function(){return Object.defineProperty(wn("div"),"a",{get:function(){return 7}}).a!=7})});var le=l(function(ar){var In=I(),Pn=We(),On=re(),jn=B(),Tn=ne(),_n=m(),Cn=oe(),ir=Object.getOwnPropertyDescriptor;ar.f=In?ir:function(r,t){if(r=jn(r),t=Tn(t,!0),Cn)try{return ir(r,t)}catch(n){}if(_n(r,t))return On(!Pn.f.call(r,t),r[t])}});var j=l(function(io,or){var Rn=O();or.exports=function(e){if(!Rn(e))throw TypeError(String(e)+" is not an object");return e}});var se=l(function(ur){var An=I(),Nn=oe(),lr=j(),Dn=ne(),sr=Object.defineProperty;ur.f=An?sr:function(r,t,n){if(lr(r),t=Dn(t,!0),lr(n),Nn)try{return sr(r,t,n)}catch(i){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(r[t]=n.value),r}});var q=l(function(oo,cr){var Mn=I(),Bn=se(),Ln=re();cr.exports=Mn?function(e,r,t){return Bn.f(e,r,Ln(1,t))}:function(e,r,t){return e[r]=t,e}});var F=l(function(lo,vr){var fr=g(),Fn=q();vr.exports=function(e,r){try{Fn(fr,e,r)}catch(t){fr[e]=r}return r}});var U=l(function(so,pr){var $n=g(),Un=F(),dr="__core-js_shared__",kn=$n[dr]||Un(dr,{});pr.exports=kn});var ce=l(function(uo,gr){var ue=U(),Wn=Function.toString;typeof ue.inspectSource!="function"&&(ue.inspectSource=function(e){return Wn.call(e)});gr.exports=ue.inspectSource});var br=l(function(co,hr){var Hn=g(),Gn=ce(),yr=Hn.WeakMap;hr.exports=typeof yr=="function"&&/native code/.test(Gn(yr))});var mr=l(function(fo,xr){xr.exports=!1});var k=l(function(vo,qr){var Kn=mr(),Er=U();(qr.exports=function(e,r){return Er[e]||(Er[e]=r!==void 0?r:{})})("versions",[]).push({version:"3.14.0",mode:Kn?"pure":"global",copyright:"\xA9 2021 Denis Pushkarev (zloirock.ru)"})});var fe=l(function(po,Sr){var zn=0,Xn=Math.random();Sr.exports=function(e){return"Symbol("+String(e===void 0?"":e)+")_"+(++zn+Xn).toString(36)}});var Pr=l(function(go,Ir){var Yn=k(),Jn=fe(),wr=Yn("keys");Ir.exports=function(e){return wr[e]||(wr[e]=Jn(e))}});var ve=l(function(yo,Or){Or.exports={}});var Rr=l(function(ho,Cr){var Zn=br(),Qn=g(),Vn=O(),ei=q(),de=m(),pe=U(),ri=Pr(),ti=ve(),jr="Object already initialized",ni=Qn.WeakMap,W,T,H,ii=function(e){return H(e)?T(e):W(e,{})},ai=function(e){return function(r){var t;if(!Vn(r)||(t=T(r)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return t}};Zn||pe.state?(x=pe.state||(pe.state=new ni),Tr=x.get,ge=x.has,_r=x.set,W=function(e,r){if(ge.call(x,e))throw new TypeError(jr);return r.facade=e,_r.call(x,e,r),r},T=function(e){return Tr.call(x,e)||{}},H=function(e){return ge.call(x,e)}):(E=ri("state"),ti[E]=!0,W=function(e,r){if(de(e,E))throw new TypeError(jr);return r.facade=e,ei(e,E,r),r},T=function(e){return de(e,E)?e[E]:{}},H=function(e){return de(e,E)});var x,Tr,ge,_r,E;Cr.exports={set:W,get:T,has:H,enforce:ii,getterFor:ai}});var ye=l(function(bo,Dr){var oi=g(),Ar=q(),li=m(),si=F(),ui=ce(),Nr=Rr(),ci=Nr.get,fi=Nr.enforce,vi=String(String).split("String");(Dr.exports=function(e,r,t,n){var i=n?!!n.unsafe:!1,a=n?!!n.enumerable:!1,o=n?!!n.noTargetGet:!1,s;if(typeof t=="function"&&(typeof r=="string"&&!li(t,"name")&&Ar(t,"name",r),s=fi(t),s.source||(s.source=vi.join(typeof r=="string"?r:""))),e===oi){a?e[r]=t:si(r,t);return}else i?!o&&e[r]&&(a=!0):delete e[r];a?e[r]=t:Ar(e,r,t)})(Function.prototype,"toString",function(){return typeof this=="function"&&ci(this).source||ui(this)})});var Br=l(function(xo,Mr){var di=g();Mr.exports=di});var xe=l(function(mo,Fr){var he=Br(),be=g(),Lr=function(e){return typeof e=="function"?e:void 0};Fr.exports=function(e,r){return arguments.length<2?Lr(he[e])||Lr(be[e]):he[e]&&he[e][r]||be[e]&&be[e][r]}});var _=l(function(Eo,$r){var pi=Math.ceil,gi=Math.floor;$r.exports=function(e){return isNaN(e=+e)?0:(e>0?gi:pi)(e)}});var me=l(function(qo,Ur){var yi=_(),hi=Math.min;Ur.exports=function(e){return e>0?hi(yi(e),9007199254740991):0}});var Wr=l(function(So,kr){var bi=_(),xi=Math.max,mi=Math.min;kr.exports=function(e,r){var t=bi(e);return t<0?xi(t+r,0):mi(t,r)}});var Kr=l(function(wo,Gr){var Ei=B(),qi=me(),Si=Wr(),Hr=function(e){return function(r,t,n){var i=Ei(r),a=qi(i.length),o=Si(n,a),s;if(e&&t!=t){for(;a>o;)if(s=i[o++],s!=s)return!0}else for(;a>o;o++)if((e||o in i)&&i[o]===t)return e||o||0;return!e&&-1}};Gr.exports={includes:Hr(!0),indexOf:Hr(!1)}});var Xr=l(function(Io,zr){var Ee=m(),wi=B(),Ii=Kr().indexOf,Pi=ve();zr.exports=function(e,r){var t=wi(e),n=0,i=[],a;for(a in t)!Ee(Pi,a)&&Ee(t,a)&&i.push(a);for(;r.length>n;)Ee(t,a=r[n++])&&(~Ii(i,a)||i.push(a));return i}});var Jr=l(function(Po,Yr){Yr.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]});var Qr=l(function(Zr){var Oi=Xr(),ji=Jr(),Ti=ji.concat("length","prototype");Zr.f=Object.getOwnPropertyNames||function(r){return Oi(r,Ti)}});var et=l(function(Vr){Vr.f=Object.getOwnPropertySymbols});var tt=l(function(To,rt){var _i=xe(),Ci=Qr(),Ri=et(),Ai=j();rt.exports=_i("Reflect","ownKeys")||function(r){var t=Ci.f(Ai(r)),n=Ri.f;return n?t.concat(n(r)):t}});var it=l(function(_o,nt){var Ni=m(),Di=tt(),Mi=le(),Bi=se();nt.exports=function(e,r){for(var t=Di(r),n=Bi.f,i=Mi.f,a=0;a<t.length;a++){var o=t[a];Ni(e,o)||n(e,o,i(r,o))}}});var ot=l(function(Co,at){var Li=b(),Fi=/#|\.prototype\./,C=function(e,r){var t=Ui[$i(e)];return t==Wi?!0:t==ki?!1:typeof r=="function"?Li(r):!!r},$i=C.normalize=function(e){return String(e).replace(Fi,".").toLowerCase()},Ui=C.data={},ki=C.NATIVE="N",Wi=C.POLYFILL="P";at.exports=C});var st=l(function(Ro,lt){var qe=g(),Hi=le().f,Gi=q(),Ki=ye(),zi=F(),Xi=it(),Yi=ot();lt.exports=function(e,r){var t=e.target,n=e.global,i=e.stat,a,o,s,u,f,v;if(n?o=qe:i?o=qe[t]||zi(t,{}):o=(qe[t]||{}).prototype,o)for(s in r){if(f=r[s],e.noTargetGet?(v=Hi(o,s),u=v&&v.value):u=o[s],a=Yi(n?s:t+(i?".":"#")+s,e.forced),!a&&u!==void 0){if(typeof f==typeof u)continue;Xi(f,u)}(e.sham||u&&u.sham)&&Gi(f,"sham",!0),Ki(o,s,f,e)}}});var ct=l(function(Ao,ut){"use strict";var Ji=j();ut.exports=function(){var e=Ji(this),r="";return e.global&&(r+="g"),e.ignoreCase&&(r+="i"),e.multiline&&(r+="m"),e.dotAll&&(r+="s"),e.unicode&&(r+="u"),e.sticky&&(r+="y"),r}});var dt=l(function(Se){"use strict";var ft=b();function vt(e,r){return RegExp(e,r)}Se.UNSUPPORTED_Y=ft(function(){var e=vt("a","y");return e.lastIndex=2,e.exec("abcd")!=null});Se.BROKEN_CARET=ft(function(){var e=vt("^r","gy");return e.lastIndex=2,e.exec("str")!=null})});var K=l(function(Do,ht){"use strict";var Zi=ct(),pt=dt(),Qi=k(),G=RegExp.prototype.exec,Vi=Qi("native-string-replace",String.prototype.replace),gt=G,we=function(){var e=/a/,r=/b*/g;return G.call(e,"a"),G.call(r,"a"),e.lastIndex!==0||r.lastIndex!==0}(),yt=pt.UNSUPPORTED_Y||pt.BROKEN_CARET,Ie=/()??/.exec("")[1]!==void 0,ea=we||Ie||yt;ea&&(gt=function(r){var t=this,n,i,a,o,s=yt&&t.sticky,u=Zi.call(t),f=t.source,v=0,c=r;return s&&(u=u.replace("y",""),u.indexOf("g")===-1&&(u+="g"),c=String(r).slice(t.lastIndex),t.lastIndex>0&&(!t.multiline||t.multiline&&r[t.lastIndex-1]!=="\n")&&(f="(?: "+f+")",c=" "+c,v++),i=new RegExp("^(?:"+f+")",u)),Ie&&(i=new RegExp("^"+f+"$(?!\\s)",u)),we&&(n=t.lastIndex),a=G.call(s?i:t,c),s?a?(a.input=a.input.slice(v),a[0]=a[0].slice(v),a.index=t.lastIndex,t.lastIndex+=a[0].length):t.lastIndex=0:we&&a&&(t.lastIndex=t.global?a.index+a[0].length:n),Ie&&a&&a.length>1&&Vi.call(a[0],i,function(){for(o=1;o<arguments.length-2;o++)arguments[o]===void 0&&(a[o]=void 0)}),a});ht.exports=gt});var Pe=l(function(){"use strict";var ra=st(),bt=K();ra({target:"RegExp",proto:!0,forced:/./.exec!==bt},{exec:bt})});var mt=l(function(Lo,xt){var ta=xe();xt.exports=ta("navigator","userAgent")||""});var It=l(function(Fo,wt){var na=g(),Oe=mt(),Et=na.process,qt=Et&&Et.versions,St=qt&&qt.v8,h,z;St?(h=St.split("."),z=h[0]<4?1:h[0]+h[1]):Oe&&(h=Oe.match(/Edge\/(\d+)/),(!h||h[1]>=74)&&(h=Oe.match(/Chrome\/(\d+)/),h&&(z=h[1])));wt.exports=z&&+z});var je=l(function($o,Ot){var Pt=It(),ia=b();Ot.exports=!!Object.getOwnPropertySymbols&&!ia(function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&Pt&&Pt<41})});var Tt=l(function(Uo,jt){var aa=je();jt.exports=aa&&!Symbol.sham&&typeof Symbol.iterator=="symbol"});var At=l(function(ko,Rt){var oa=g(),la=k(),_t=m(),sa=fe(),Ct=je(),ua=Tt(),R=la("wks"),A=oa.Symbol,ca=ua?A:A&&A.withoutSetter||sa;Rt.exports=function(e){return(!_t(R,e)||!(Ct||typeof R[e]=="string"))&&(Ct&&_t(A,e)?R[e]=A[e]:R[e]=ca("Symbol."+e)),R[e]}});var Ft=l(function(Wo,Lt){"use strict";Pe();var Nt=ye(),fa=K(),X=b(),Te=At(),va=q(),da=Te("species"),_e=RegExp.prototype,pa=!X(function(){var e=/./;return e.exec=function(){var r=[];return r.groups={a:"7"},r},"".replace(e,"$<a>")!=="7"}),Dt=function(){return"a".replace(/./,"$0")==="$0"}(),Mt=Te("replace"),Bt=function(){return/./[Mt]?/./[Mt]("a","$0")==="":!1}(),ga=!X(function(){var e=/(?:)/,r=e.exec;e.exec=function(){return r.apply(this,arguments)};var t="ab".split(e);return t.length!==2||t[0]!=="a"||t[1]!=="b"});Lt.exports=function(e,r,t,n){var i=Te(e),a=!X(function(){var c={};return c[i]=function(){return 7},""[e](c)!=7}),o=a&&!X(function(){var c=!1,d=/a/;return e==="split"&&(d={},d.constructor={},d.constructor[da]=function(){return d},d.flags="",d[i]=/./[i]),d.exec=function(){return c=!0,null},d[i](""),!c});if(!a||!o||e==="replace"&&!(pa&&Dt&&!Bt)||e==="split"&&!ga){var s=/./[i],u=t(i,""[e],function(c,d,y,N,S){var p=d.exec;return p===fa||p===_e.exec?a&&!S?{done:!0,value:s.call(d,y,N)}:{done:!0,value:c.call(y,d,N)}:{done:!1}},{REPLACE_KEEPS_$0:Dt,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:Bt}),f=u[0],v=u[1];Nt(String.prototype,e,f),Nt(_e,i,r==2?function(c,d){return v.call(c,this,d)}:function(c){return v.call(c,this)})}n&&va(_e[i],"sham",!0)}});var kt=l(function(Ho,Ut){var ya=_(),ha=P(),$t=function(e){return function(r,t){var n=String(ha(r)),i=ya(t),a=n.length,o,s;return i<0||i>=a?e?"":void 0:(o=n.charCodeAt(i),o<55296||o>56319||i+1===a||(s=n.charCodeAt(i+1))<56320||s>57343?e?n.charAt(i):o:e?n.slice(i,i+2):(o-55296<<10)+(s-56320)+65536)}};Ut.exports={codeAt:$t(!1),charAt:$t(!0)}});var Ht=l(function(Go,Wt){"use strict";var ba=kt().charAt;Wt.exports=function(e,r,t){return r+(t?ba(e,r).length:1)}});var Kt=l(function(Ko,Gt){var xa=ie(),ma=Math.floor,Ea="".replace,qa=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,Sa=/\$([$&'`]|\d{1,2})/g;Gt.exports=function(e,r,t,n,i,a){var o=t+e.length,s=n.length,u=Sa;return i!==void 0&&(i=xa(i),u=qa),Ea.call(a,u,function(f,v){var c;switch(v.charAt(0)){case"$":return"$";case"&":return e;case"`":return r.slice(0,t);case"'":return r.slice(o);case"<":c=i[v.slice(1,-1)];break;default:var d=+v;if(d===0)return f;if(d>s){var y=ma(d/10);return y===0?f:y<=s?n[y-1]===void 0?v.charAt(1):n[y-1]+v.charAt(1):f}c=n[d-1]}return c===void 0?"":c})}});var Xt=l(function(zo,zt){var wa=te(),Ia=K();zt.exports=function(e,r){var t=e.exec;if(typeof t=="function"){var n=t.call(e,r);if(typeof n!="object")throw TypeError("RegExp exec method returned something other than an Object or null");return n}if(wa(e)!=="RegExp")throw TypeError("RegExp#exec called on incompatible receiver");return Ia.call(e,r)}});var Jo=sn(Pe());"use strict";var Pa=Ft(),Oa=j(),ja=me(),Ta=_(),_a=P(),Ca=Ht(),Ra=Kt(),Aa=Xt(),Na=Math.max,Da=Math.min,Ma=function(e){return e===void 0?e:String(e)};Pa("replace",2,function(e,r,t,n){var i=n.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,a=n.REPLACE_KEEPS_$0,o=i?"$":"$0";return[function(u,f){var v=_a(this),c=u==null?void 0:u[e];return c!==void 0?c.call(u,v,f):r.call(String(v),u,f)},function(s,u){if(!i&&a||typeof u=="string"&&u.indexOf(o)===-1){var f=t(r,s,this,u);if(f.done)return f.value}var v=Oa(s),c=String(this),d=typeof u=="function";d||(u=String(u));var y=v.global;if(y){var N=v.unicode;v.lastIndex=0}for(var S=[];;){var p=Aa(v,c);if(p===null||(S.push(p),!y))break;var Vt=String(p[0]);Vt===""&&(v.lastIndex=Ca(c,ja(v.lastIndex),N))}for(var Ne="",D=0,Y=0;Y<S.length;Y++){p=S[Y];for(var J=String(p[0]),w=Na(Da(Ta(p.index),c.length),0),Z=[],Q=1;Q<p.length;Q++)Z.push(Ma(p[Q]));var V=p.groups;if(d){var De=[J].concat(Z,w,c);V!==void 0&&De.push(V);var Me=String(u.apply(void 0,De))}else Me=Ra(J,c,w,Z,V,u);w>=D&&(Ne+=c.slice(D,w)+Me,D=w+J.length)}return Ne+c.slice(D)}]});var Yt=400;function Ce(e,r){var t=0;if(e.nodeType===3){var n=e.nodeValue.replace(/\n/g,"").length;if(n>=r)return{element:e,offset:r};t+=n}else if(e.nodeType===1&&e.firstChild){var i=Ce(e.firstChild,r);if(i.element!==null)return i;t+=i.offset}return e.nextSibling?Ce(e.nextSibling,r-t):{element:null,offset:t}}function Re(e,r,t){for(var n=0,i=0;i<e.childNodes.length;i++){var a=e.childNodes[i];if(a.nodeType===3){for(var o=/\n/g,s=void 0;(s=o.exec(a.nodeValue))!==null;)if(n++,n===r)return Ce(a,s.index+t+1)}else if(a.nodeType===1){var u=Re(a,r-n,t);if(u.element!==null)return u;n+=u.offset}}return{element:null,offset:n}}function Ba(e,r){if(!!document.createRange){var t=document.getElementById("srcref_"+e);if(!t){t=document.createElement("span"),t.id="srcref_"+e;var n=e,i=document.getElementById(r.replace(/\./g,"_")+"_code");if(!i)return;var a=Re(i,n[0],n[4]),o=Re(i,n[2],n[5]);if(a.element===null||o.element===null)return;var s=document.createRange();a.element.parentNode.nodeName==="SPAN"&&a.element!==o.element?s.setStartBefore(a.element.parentNode):s.setStart(a.element,a.offset),o.element.parentNode.nodeName==="SPAN"&&a.element!==o.element?s.setEndAfter(o.element.parentNode):s.setEnd(o.element,o.offset),s.surroundContents(t)}$(t).stop(!0,!0).effect("highlight",null,1600)}}Shiny&&Shiny.addCustomMessageHandler("showcase-src",function(e){e.srcref&&e.srcfile&&Ba(e.srcref,e.srcfile)});var Ae=!1,Jt=function(r,t){var n=t?Yt:1,i=r?document.getElementById("showcase-sxs-code"):document.getElementById("showcase-code-inline"),a=r?document.getElementById("showcase-code-inline"):document.getElementById("showcase-sxs-code"),o=document.getElementById("showcase-app-metadata");if(o===null){var s=$("#showcase-well");r?s.fadeOut(n):s.fadeIn(n)}$(i).hide(),$(a).fadeOut(n,function(){var u=document.getElementById("showcase-code-tabs");a.removeChild(u),i.appendChild(u),r?Qt():document.getElementById("showcase-code-content").removeAttribute("style"),$(i).fadeIn(n),r||(document.getElementById("showcase-app-container").removeAttribute("style"),t&&$(document.body).animate({scrollTop:$(i).offset().top}));var f=document.getElementById("readme-md");f!==null&&(f.parentElement.removeChild(f),r?(a.appendChild(f),$(a).fadeIn(n)):document.getElementById("showcase-app-metadata").appendChild(f)),document.getElementById("showcase-code-position-toggle").innerHTML=r?'<i class="fa fa-level-down"></i> show below':'<i class="fa fa-level-up"></i> show with app'}),r&&$(document.body).animate({scrollTop:0},n),Ae=r,Zt(r&&t),$(window).trigger("resize")};function Zt(e){var r=960,t=r,n=1,i=document.getElementById("showcase-app-code").offsetWidth;i/2>r?t=i/2:i*.66>r?t=960:(t=i*.66,n=t/r);var a=document.getElementById("showcase-app-container");$(a).animate({width:t+"px",zoom:n*100+"%"},e?Yt:0)}var La=function(){Jt(!Ae,!0)},Fa=function(){document.body.offsetWidth>1350&&Jt(!0,!1)};function Qt(){document.getElementById("showcase-code-content").style.height=$(window).height()+"px"}function $a(){var e=document.getElementById("showcase-markdown-content");if(e!==null){var r=e.innerText||e.innerHTML,t=window.Showdown.converter;document.getElementById("readme-md").innerHTML=new t().makeHtml(r)}}$(window).resize(function(){Ae&&(Zt(!1),Qt())});window.toggleCodePosition=La;$(window).on("load",Fa);$(window).on("load",$a);window.hljs&&window.hljs.initHighlightingOnLoad();})();
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Rlc2NyaXB0b3JzLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZS5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NsYXNzb2YtcmF3LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbmRleGVkLW9iamVjdC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtb2JqZWN0LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1wcmltaXRpdmUuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLW9iamVjdC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLW9iamVjdC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eS5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtZ2xvYmFsLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQtc3RvcmUuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9uYXRpdmUtd2Vhay1tYXAuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXB1cmUuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdWlkLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQta2V5LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oaWRkZW4ta2V5cy5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZGVmaW5lLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9wYXRoLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtYnVpbHQtaW4uanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWludGVnZXIuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWxlbmd0aC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXguanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWluY2x1ZGVzLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW51bS1idWcta2V5cy5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL293bi1rZXlzLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jb3B5LWNvbnN0cnVjdG9yLXByb3BlcnRpZXMuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWZvcmNlZC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWdleHAtZmxhZ3MuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC1zdGlja3ktaGVscGVycy5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYy5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9uYXRpdmUtc3ltYm9sLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZpeC1yZWdleHAtd2VsbC1rbm93bi1zeW1ib2wtbG9naWMuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N0cmluZy1tdWx0aWJ5dGUuanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FkdmFuY2Utc3RyaW5nLWluZGV4LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtc3Vic3RpdHV0aW9uLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWdleHAtZXhlYy1hYnN0cmFjdC5qcyIsICIuLi8uLi8uLi9zcmN0cy9leHRyYXMvc2hpbnktc2hvd2Nhc2UudHMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcucmVwbGFjZS5qcyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsidmFyIGNoZWNrID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCAmJiBpdC5NYXRoID09IE1hdGggJiYgaXQ7XG59O1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvODYjaXNzdWVjb21tZW50LTExNTc1OTAyOFxubW9kdWxlLmV4cG9ydHMgPVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tZ2xvYmFsLXRoaXMgLS0gc2FmZVxuICBjaGVjayh0eXBlb2YgZ2xvYmFsVGhpcyA9PSAnb2JqZWN0JyAmJiBnbG9iYWxUaGlzKSB8fFxuICBjaGVjayh0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnICYmIHdpbmRvdykgfHxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtZ2xvYmFscyAtLSBzYWZlXG4gIGNoZWNrKHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYpIHx8XG4gIGNoZWNrKHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsKSB8fFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmMgLS0gZmFsbGJhY2tcbiAgKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pKCkgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbiIsICJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICEhZXhlYygpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuIiwgInZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG4vLyBEZXRlY3QgSUU4J3MgaW5jb21wbGV0ZSBkZWZpbmVQcm9wZXJ0eSBpbXBsZW1lbnRhdGlvblxubW9kdWxlLmV4cG9ydHMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sIDEsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pWzFdICE9IDc7XG59KTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgJHByb3BlcnR5SXNFbnVtZXJhYmxlID0ge30ucHJvcGVydHlJc0VudW1lcmFibGU7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuLy8gTmFzaG9ybiB+IEpESzggYnVnXG52YXIgTkFTSE9STl9CVUcgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgJiYgISRwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHsgMTogMiB9LCAxKTtcblxuLy8gYE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGVgIG1ldGhvZCBpbXBsZW1lbnRhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QucHJvdG90eXBlLnByb3BlcnR5aXNlbnVtZXJhYmxlXG5leHBvcnRzLmYgPSBOQVNIT1JOX0JVRyA/IGZ1bmN0aW9uIHByb3BlcnR5SXNFbnVtZXJhYmxlKFYpIHtcbiAgdmFyIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcywgVik7XG4gIHJldHVybiAhIWRlc2NyaXB0b3IgJiYgZGVzY3JpcHRvci5lbnVtZXJhYmxlO1xufSA6ICRwcm9wZXJ0eUlzRW51bWVyYWJsZTtcbiIsICJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuIiwgInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChpdCkuc2xpY2UoOCwgLTEpO1xufTtcbiIsICJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG5cbnZhciBzcGxpdCA9ICcnLnNwbGl0O1xuXG4vLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5nc1xubW9kdWxlLmV4cG9ydHMgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIHRocm93cyBhbiBlcnJvciBpbiByaGlubywgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL3JoaW5vL2lzc3Vlcy8zNDZcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGlucyAtLSBzYWZlXG4gIHJldHVybiAhT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCk7XG59KSA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gY2xhc3NvZihpdCkgPT0gJ1N0cmluZycgPyBzcGxpdC5jYWxsKGl0LCAnJykgOiBPYmplY3QoaXQpO1xufSA6IE9iamVjdDtcbiIsICIvLyBgUmVxdWlyZU9iamVjdENvZXJjaWJsZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlcXVpcmVvYmplY3Rjb2VyY2libGVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCA9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwgIi8vIHRvT2JqZWN0IHdpdGggZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzXG52YXIgSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCcpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJbmRleGVkT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoaXQpKTtcbn07XG4iLCAibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG4iLCAidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG4vLyBgVG9QcmltaXRpdmVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b3ByaW1pdGl2ZVxuLy8gaW5zdGVhZCBvZiB0aGUgRVM2IHNwZWMgdmVyc2lvbiwgd2UgZGlkbid0IGltcGxlbWVudCBAQHRvUHJpbWl0aXZlIGNhc2Vcbi8vIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IC0gZmxhZyAtIHByZWZlcnJlZCB0eXBlIGlzIGEgc3RyaW5nXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCwgUFJFRkVSUkVEX1NUUklORykge1xuICBpZiAoIWlzT2JqZWN0KGlucHV0KSkgcmV0dXJuIGlucHV0O1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKFBSRUZFUlJFRF9TVFJJTkcgJiYgdHlwZW9mIChmbiA9IGlucHV0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGlucHV0KSkpIHJldHVybiB2YWw7XG4gIGlmICh0eXBlb2YgKGZuID0gaW5wdXQudmFsdWVPZikgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpbnB1dCkpKSByZXR1cm4gdmFsO1xuICBpZiAoIVBSRUZFUlJFRF9TVFJJTkcgJiYgdHlwZW9mIChmbiA9IGlucHV0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGlucHV0KSkpIHJldHVybiB2YWw7XG4gIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbn07XG4iLCAidmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbi8vIGBUb09iamVjdGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvb2JqZWN0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpKTtcbn07XG4iLCAidmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xuXG52YXIgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuaGFzT3duIHx8IGZ1bmN0aW9uIGhhc093bihpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKHRvT2JqZWN0KGl0KSwga2V5KTtcbn07XG4iLCAidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxudmFyIGRvY3VtZW50ID0gZ2xvYmFsLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgRVhJU1RTID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gRVhJU1RTID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG4iLCAidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBjcmVhdGVFbGVtZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50Jyk7XG5cbi8vIFRoYW5rJ3MgSUU4IGZvciBoaXMgZnVubnkgZGVmaW5lUHJvcGVydHlcbm1vZHVsZS5leHBvcnRzID0gIURFU0NSSVBUT1JTICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gcmVxdWllZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGNyZWF0ZUVsZW1lbnQoJ2RpdicpLCAnYScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH1cbiAgfSkuYSAhPSA3O1xufSk7XG4iLCAidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgcHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcmltaXRpdmUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG4vLyBgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3JcbmV4cG9ydHMuZiA9IERFU0NSSVBUT1JTID8gJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA6IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKSB7XG4gIE8gPSB0b0luZGV4ZWRPYmplY3QoTyk7XG4gIFAgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIGlmIChoYXMoTywgUCkpIHJldHVybiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoIXByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlLmYuY2FsbChPLCBQKSwgT1tQXSk7XG59O1xuIiwgInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoU3RyaW5nKGl0KSArICcgaXMgbm90IGFuIG9iamVjdCcpO1xuICB9IHJldHVybiBpdDtcbn07XG4iLCAidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcmltaXRpdmUnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSBzYWZlXG52YXIgJGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG4vLyBgT2JqZWN0LmRlZmluZVByb3BlcnR5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmRlZmluZXByb3BlcnR5XG5leHBvcnRzLmYgPSBERVNDUklQVE9SUyA/ICRkZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gJGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIGlmICgnZ2V0JyBpbiBBdHRyaWJ1dGVzIHx8ICdzZXQnIGluIEF0dHJpYnV0ZXMpIHRocm93IFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiIsICJ2YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gREVTQ1JJUFRPUlMgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKG9iamVjdCwga2V5LCBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMSwgdmFsdWUpKTtcbn0gOiBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIHJldHVybiBvYmplY3Q7XG59O1xuIiwgInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KGdsb2JhbCwga2V5LCB2YWx1ZSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgZ2xvYmFsW2tleV0gPSB2YWx1ZTtcbiAgfSByZXR1cm4gdmFsdWU7XG59O1xuIiwgInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgc2V0R2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1nbG9iYWwnKTtcblxudmFyIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nO1xudmFyIHN0b3JlID0gZ2xvYmFsW1NIQVJFRF0gfHwgc2V0R2xvYmFsKFNIQVJFRCwge30pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHN0b3JlO1xuIiwgInZhciBzdG9yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQtc3RvcmUnKTtcblxudmFyIGZ1bmN0aW9uVG9TdHJpbmcgPSBGdW5jdGlvbi50b1N0cmluZztcblxuLy8gdGhpcyBoZWxwZXIgYnJva2VuIGluIGBjb3JlLWpzQDMuNC4xLTMuNC40YCwgc28gd2UgY2FuJ3QgdXNlIGBzaGFyZWRgIGhlbHBlclxuaWYgKHR5cGVvZiBzdG9yZS5pbnNwZWN0U291cmNlICE9ICdmdW5jdGlvbicpIHtcbiAgc3RvcmUuaW5zcGVjdFNvdXJjZSA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBmdW5jdGlvblRvU3RyaW5nLmNhbGwoaXQpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0b3JlLmluc3BlY3RTb3VyY2U7XG4iLCAidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpbnNwZWN0U291cmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlJyk7XG5cbnZhciBXZWFrTWFwID0gZ2xvYmFsLldlYWtNYXA7XG5cbm1vZHVsZS5leHBvcnRzID0gdHlwZW9mIFdlYWtNYXAgPT09ICdmdW5jdGlvbicgJiYgL25hdGl2ZSBjb2RlLy50ZXN0KGluc3BlY3RTb3VyY2UoV2Vha01hcCkpO1xuIiwgIm1vZHVsZS5leHBvcnRzID0gZmFsc2U7XG4iLCAidmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIHN0b3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xuXG4obW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IHt9KTtcbn0pKCd2ZXJzaW9ucycsIFtdKS5wdXNoKHtcbiAgdmVyc2lvbjogJzMuMTQuMCcsXG4gIG1vZGU6IElTX1BVUkUgPyAncHVyZScgOiAnZ2xvYmFsJyxcbiAgY29weXJpZ2h0OiAnXHUwMEE5IDIwMjEgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknXG59KTtcbiIsICJ2YXIgaWQgPSAwO1xudmFyIHBvc3RmaXggPSBNYXRoLnJhbmRvbSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuICdTeW1ib2woJyArIFN0cmluZyhrZXkgPT09IHVuZGVmaW5lZCA/ICcnIDoga2V5KSArICcpXycgKyAoKytpZCArIHBvc3RmaXgpLnRvU3RyaW5nKDM2KTtcbn07XG4iLCAidmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG5cbnZhciBrZXlzID0gc2hhcmVkKCdrZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4ga2V5c1trZXldIHx8IChrZXlzW2tleV0gPSB1aWQoa2V5KSk7XG59O1xuIiwgIm1vZHVsZS5leHBvcnRzID0ge307XG4iLCAidmFyIE5BVElWRV9XRUFLX01BUCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uYXRpdmUtd2Vhay1tYXAnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIG9iamVjdEhhcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMnKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG52YXIgc2hhcmVkS2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1rZXknKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG5cbnZhciBPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCA9ICdPYmplY3QgYWxyZWFkeSBpbml0aWFsaXplZCc7XG52YXIgV2Vha01hcCA9IGdsb2JhbC5XZWFrTWFwO1xudmFyIHNldCwgZ2V0LCBoYXM7XG5cbnZhciBlbmZvcmNlID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBoYXMoaXQpID8gZ2V0KGl0KSA6IHNldChpdCwge30pO1xufTtcblxudmFyIGdldHRlckZvciA9IGZ1bmN0aW9uIChUWVBFKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoaXQpIHtcbiAgICB2YXIgc3RhdGU7XG4gICAgaWYgKCFpc09iamVjdChpdCkgfHwgKHN0YXRlID0gZ2V0KGl0KSkudHlwZSAhPT0gVFlQRSkge1xuICAgICAgdGhyb3cgVHlwZUVycm9yKCdJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICcgKyBUWVBFICsgJyByZXF1aXJlZCcpO1xuICAgIH0gcmV0dXJuIHN0YXRlO1xuICB9O1xufTtcblxuaWYgKE5BVElWRV9XRUFLX01BUCB8fCBzaGFyZWQuc3RhdGUpIHtcbiAgdmFyIHN0b3JlID0gc2hhcmVkLnN0YXRlIHx8IChzaGFyZWQuc3RhdGUgPSBuZXcgV2Vha01hcCgpKTtcbiAgdmFyIHdtZ2V0ID0gc3RvcmUuZ2V0O1xuICB2YXIgd21oYXMgPSBzdG9yZS5oYXM7XG4gIHZhciB3bXNldCA9IHN0b3JlLnNldDtcbiAgc2V0ID0gZnVuY3Rpb24gKGl0LCBtZXRhZGF0YSkge1xuICAgIGlmICh3bWhhcy5jYWxsKHN0b3JlLCBpdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQpO1xuICAgIG1ldGFkYXRhLmZhY2FkZSA9IGl0O1xuICAgIHdtc2V0LmNhbGwoc3RvcmUsIGl0LCBtZXRhZGF0YSk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9O1xuICBnZXQgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gd21nZXQuY2FsbChzdG9yZSwgaXQpIHx8IHt9O1xuICB9O1xuICBoYXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gd21oYXMuY2FsbChzdG9yZSwgaXQpO1xuICB9O1xufSBlbHNlIHtcbiAgdmFyIFNUQVRFID0gc2hhcmVkS2V5KCdzdGF0ZScpO1xuICBoaWRkZW5LZXlzW1NUQVRFXSA9IHRydWU7XG4gIHNldCA9IGZ1bmN0aW9uIChpdCwgbWV0YWRhdGEpIHtcbiAgICBpZiAob2JqZWN0SGFzKGl0LCBTVEFURSkpIHRocm93IG5ldyBUeXBlRXJyb3IoT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQpO1xuICAgIG1ldGFkYXRhLmZhY2FkZSA9IGl0O1xuICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShpdCwgU1RBVEUsIG1ldGFkYXRhKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG4gIGdldCA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBvYmplY3RIYXMoaXQsIFNUQVRFKSA/IGl0W1NUQVRFXSA6IHt9O1xuICB9O1xuICBoYXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gb2JqZWN0SGFzKGl0LCBTVEFURSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldCxcbiAgZ2V0OiBnZXQsXG4gIGhhczogaGFzLFxuICBlbmZvcmNlOiBlbmZvcmNlLFxuICBnZXR0ZXJGb3I6IGdldHRlckZvclxufTtcbiIsICJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgc2V0R2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1nbG9iYWwnKTtcbnZhciBpbnNwZWN0U291cmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xuXG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0O1xudmFyIGVuZm9yY2VJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5lbmZvcmNlO1xudmFyIFRFTVBMQVRFID0gU3RyaW5nKFN0cmluZykuc3BsaXQoJ1N0cmluZycpO1xuXG4obW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywga2V5LCB2YWx1ZSwgb3B0aW9ucykge1xuICB2YXIgdW5zYWZlID0gb3B0aW9ucyA/ICEhb3B0aW9ucy51bnNhZmUgOiBmYWxzZTtcbiAgdmFyIHNpbXBsZSA9IG9wdGlvbnMgPyAhIW9wdGlvbnMuZW51bWVyYWJsZSA6IGZhbHNlO1xuICB2YXIgbm9UYXJnZXRHZXQgPSBvcHRpb25zID8gISFvcHRpb25zLm5vVGFyZ2V0R2V0IDogZmFsc2U7XG4gIHZhciBzdGF0ZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nKSB7XG4gICAgaWYgKHR5cGVvZiBrZXkgPT0gJ3N0cmluZycgJiYgIWhhcyh2YWx1ZSwgJ25hbWUnKSkge1xuICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KHZhbHVlLCAnbmFtZScsIGtleSk7XG4gICAgfVxuICAgIHN0YXRlID0gZW5mb3JjZUludGVybmFsU3RhdGUodmFsdWUpO1xuICAgIGlmICghc3RhdGUuc291cmNlKSB7XG4gICAgICBzdGF0ZS5zb3VyY2UgPSBURU1QTEFURS5qb2luKHR5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyBrZXkgOiAnJyk7XG4gICAgfVxuICB9XG4gIGlmIChPID09PSBnbG9iYWwpIHtcbiAgICBpZiAoc2ltcGxlKSBPW2tleV0gPSB2YWx1ZTtcbiAgICBlbHNlIHNldEdsb2JhbChrZXksIHZhbHVlKTtcbiAgICByZXR1cm47XG4gIH0gZWxzZSBpZiAoIXVuc2FmZSkge1xuICAgIGRlbGV0ZSBPW2tleV07XG4gIH0gZWxzZSBpZiAoIW5vVGFyZ2V0R2V0ICYmIE9ba2V5XSkge1xuICAgIHNpbXBsZSA9IHRydWU7XG4gIH1cbiAgaWYgKHNpbXBsZSkgT1trZXldID0gdmFsdWU7XG4gIGVsc2UgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KE8sIGtleSwgdmFsdWUpO1xuLy8gYWRkIGZha2UgRnVuY3Rpb24jdG9TdHJpbmcgZm9yIGNvcnJlY3Qgd29yayB3cmFwcGVkIG1ldGhvZHMgLyBjb25zdHJ1Y3RvcnMgd2l0aCBtZXRob2RzIGxpa2UgTG9EYXNoIGlzTmF0aXZlXG59KShGdW5jdGlvbi5wcm90b3R5cGUsICd0b1N0cmluZycsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gdHlwZW9mIHRoaXMgPT0gJ2Z1bmN0aW9uJyAmJiBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpLnNvdXJjZSB8fCBpbnNwZWN0U291cmNlKHRoaXMpO1xufSk7XG4iLCAidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBnbG9iYWw7XG4iLCAidmFyIHBhdGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcGF0aCcpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcblxudmFyIGFGdW5jdGlvbiA9IGZ1bmN0aW9uICh2YXJpYWJsZSkge1xuICByZXR1cm4gdHlwZW9mIHZhcmlhYmxlID09ICdmdW5jdGlvbicgPyB2YXJpYWJsZSA6IHVuZGVmaW5lZDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWVzcGFjZSwgbWV0aG9kKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IGFGdW5jdGlvbihwYXRoW25hbWVzcGFjZV0pIHx8IGFGdW5jdGlvbihnbG9iYWxbbmFtZXNwYWNlXSlcbiAgICA6IHBhdGhbbmFtZXNwYWNlXSAmJiBwYXRoW25hbWVzcGFjZV1bbWV0aG9kXSB8fCBnbG9iYWxbbmFtZXNwYWNlXSAmJiBnbG9iYWxbbmFtZXNwYWNlXVttZXRob2RdO1xufTtcbiIsICJ2YXIgY2VpbCA9IE1hdGguY2VpbDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5cbi8vIGBUb0ludGVnZXJgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b2ludGVnZXJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiBpc05hTihhcmd1bWVudCA9ICthcmd1bWVudCkgPyAwIDogKGFyZ3VtZW50ID4gMCA/IGZsb29yIDogY2VpbCkoYXJndW1lbnQpO1xufTtcbiIsICJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXInKTtcblxudmFyIG1pbiA9IE1hdGgubWluO1xuXG4vLyBgVG9MZW5ndGhgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b2xlbmd0aFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGFyZ3VtZW50ID4gMCA/IG1pbih0b0ludGVnZXIoYXJndW1lbnQpLCAweDFGRkZGRkZGRkZGRkZGKSA6IDA7IC8vIDIgKiogNTMgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07XG4iLCAidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyJyk7XG5cbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcblxuLy8gSGVscGVyIGZvciBhIHBvcHVsYXIgcmVwZWF0aW5nIGNhc2Ugb2YgdGhlIHNwZWM6XG4vLyBMZXQgaW50ZWdlciBiZSA/IFRvSW50ZWdlcihpbmRleCkuXG4vLyBJZiBpbnRlZ2VyIDwgMCwgbGV0IHJlc3VsdCBiZSBtYXgoKGxlbmd0aCArIGludGVnZXIpLCAwKTsgZWxzZSBsZXQgcmVzdWx0IGJlIG1pbihpbnRlZ2VyLCBsZW5ndGgpLlxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5kZXgsIGxlbmd0aCkge1xuICB2YXIgaW50ZWdlciA9IHRvSW50ZWdlcihpbmRleCk7XG4gIHJldHVybiBpbnRlZ2VyIDwgMCA/IG1heChpbnRlZ2VyICsgbGVuZ3RoLCAwKSA6IG1pbihpbnRlZ2VyLCBsZW5ndGgpO1xufTtcbiIsICJ2YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4Jyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUueyBpbmRleE9mLCBpbmNsdWRlcyB9YCBtZXRob2RzIGltcGxlbWVudGF0aW9uXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgICBpZiAoSVNfSU5DTFVERVMgJiYgZWwgIT0gZWwpIHdoaWxlIChsZW5ndGggPiBpbmRleCkge1xuICAgICAgdmFsdWUgPSBPW2luZGV4KytdO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgICAgaWYgKChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSAmJiBPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBgQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuaW5jbHVkZXNcbiAgaW5jbHVkZXM6IGNyZWF0ZU1ldGhvZCh0cnVlKSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5pbmRleE9mYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuaW5kZXhvZlxuICBpbmRleE9mOiBjcmVhdGVNZXRob2QoZmFsc2UpXG59O1xuIiwgInZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgaW5kZXhPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pbmNsdWRlcycpLmluZGV4T2Y7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIG5hbWVzKSB7XG4gIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KG9iamVjdCk7XG4gIHZhciBpID0gMDtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIga2V5O1xuICBmb3IgKGtleSBpbiBPKSAhaGFzKGhpZGRlbktleXMsIGtleSkgJiYgaGFzKE8sIGtleSkgJiYgcmVzdWx0LnB1c2goa2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhcyhPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5pbmRleE9mKHJlc3VsdCwga2V5KSB8fCByZXN1bHQucHVzaChrZXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwgIi8vIElFOC0gZG9uJ3QgZW51bSBidWcga2V5c1xubW9kdWxlLmV4cG9ydHMgPSBbXG4gICdjb25zdHJ1Y3RvcicsXG4gICdoYXNPd25Qcm9wZXJ0eScsXG4gICdpc1Byb3RvdHlwZU9mJyxcbiAgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJyxcbiAgJ3RvTG9jYWxlU3RyaW5nJyxcbiAgJ3RvU3RyaW5nJyxcbiAgJ3ZhbHVlT2YnXG5dO1xuIiwgInZhciBpbnRlcm5hbE9iamVjdEtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzJyk7XG5cbnZhciBoaWRkZW5LZXlzID0gZW51bUJ1Z0tleXMuY29uY2F0KCdsZW5ndGgnLCAncHJvdG90eXBlJyk7XG5cbi8vIGBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eW5hbWVzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5bmFtZXMgLS0gc2FmZVxuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgfHwgZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhPKSB7XG4gIHJldHVybiBpbnRlcm5hbE9iamVjdEtleXMoTywgaGlkZGVuS2V5cyk7XG59O1xuIiwgIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlzeW1ib2xzIC0tIHNhZmVcbmV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG4iLCAidmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcycpO1xudmFyIGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbi8vIGFsbCBvYmplY3Qga2V5cywgaW5jbHVkZXMgbm9uLWVudW1lcmFibGUgYW5kIHN5bWJvbHNcbm1vZHVsZS5leHBvcnRzID0gZ2V0QnVpbHRJbignUmVmbGVjdCcsICdvd25LZXlzJykgfHwgZnVuY3Rpb24gb3duS2V5cyhpdCkge1xuICB2YXIga2V5cyA9IGdldE93blByb3BlcnR5TmFtZXNNb2R1bGUuZihhbk9iamVjdChpdCkpO1xuICB2YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlLmY7XG4gIHJldHVybiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPyBrZXlzLmNvbmNhdChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpKSA6IGtleXM7XG59O1xuIiwgInZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgb3duS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vd24ta2V5cycpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSkge1xuICB2YXIga2V5cyA9IG93bktleXMoc291cmNlKTtcbiAgdmFyIGRlZmluZVByb3BlcnR5ID0gZGVmaW5lUHJvcGVydHlNb2R1bGUuZjtcbiAgdmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZS5mO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICBpZiAoIWhhcyh0YXJnZXQsIGtleSkpIGRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTtcbiAgfVxufTtcbiIsICJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxudmFyIHJlcGxhY2VtZW50ID0gLyN8XFwucHJvdG90eXBlXFwuLztcblxudmFyIGlzRm9yY2VkID0gZnVuY3Rpb24gKGZlYXR1cmUsIGRldGVjdGlvbikge1xuICB2YXIgdmFsdWUgPSBkYXRhW25vcm1hbGl6ZShmZWF0dXJlKV07XG4gIHJldHVybiB2YWx1ZSA9PSBQT0xZRklMTCA/IHRydWVcbiAgICA6IHZhbHVlID09IE5BVElWRSA/IGZhbHNlXG4gICAgOiB0eXBlb2YgZGV0ZWN0aW9uID09ICdmdW5jdGlvbicgPyBmYWlscyhkZXRlY3Rpb24pXG4gICAgOiAhIWRldGVjdGlvbjtcbn07XG5cbnZhciBub3JtYWxpemUgPSBpc0ZvcmNlZC5ub3JtYWxpemUgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHJldHVybiBTdHJpbmcoc3RyaW5nKS5yZXBsYWNlKHJlcGxhY2VtZW50LCAnLicpLnRvTG93ZXJDYXNlKCk7XG59O1xuXG52YXIgZGF0YSA9IGlzRm9yY2VkLmRhdGEgPSB7fTtcbnZhciBOQVRJVkUgPSBpc0ZvcmNlZC5OQVRJVkUgPSAnTic7XG52YXIgUE9MWUZJTEwgPSBpc0ZvcmNlZC5QT0xZRklMTCA9ICdQJztcblxubW9kdWxlLmV4cG9ydHMgPSBpc0ZvcmNlZDtcbiIsICJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJykuZjtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUnKTtcbnZhciBzZXRHbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWdsb2JhbCcpO1xudmFyIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29weS1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzJyk7XG52YXIgaXNGb3JjZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtZm9yY2VkJyk7XG5cbi8qXG4gIG9wdGlvbnMudGFyZ2V0ICAgICAgLSBuYW1lIG9mIHRoZSB0YXJnZXQgb2JqZWN0XG4gIG9wdGlvbnMuZ2xvYmFsICAgICAgLSB0YXJnZXQgaXMgdGhlIGdsb2JhbCBvYmplY3RcbiAgb3B0aW9ucy5zdGF0ICAgICAgICAtIGV4cG9ydCBhcyBzdGF0aWMgbWV0aG9kcyBvZiB0YXJnZXRcbiAgb3B0aW9ucy5wcm90byAgICAgICAtIGV4cG9ydCBhcyBwcm90b3R5cGUgbWV0aG9kcyBvZiB0YXJnZXRcbiAgb3B0aW9ucy5yZWFsICAgICAgICAtIHJlYWwgcHJvdG90eXBlIG1ldGhvZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMuZm9yY2VkICAgICAgLSBleHBvcnQgZXZlbiBpZiB0aGUgbmF0aXZlIGZlYXR1cmUgaXMgYXZhaWxhYmxlXG4gIG9wdGlvbnMuYmluZCAgICAgICAgLSBiaW5kIG1ldGhvZHMgdG8gdGhlIHRhcmdldCwgcmVxdWlyZWQgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLndyYXAgICAgICAgIC0gd3JhcCBjb25zdHJ1Y3RvcnMgdG8gcHJldmVudGluZyBnbG9iYWwgcG9sbHV0aW9uLCByZXF1aXJlZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMudW5zYWZlICAgICAgLSB1c2UgdGhlIHNpbXBsZSBhc3NpZ25tZW50IG9mIHByb3BlcnR5IGluc3RlYWQgb2YgZGVsZXRlICsgZGVmaW5lUHJvcGVydHlcbiAgb3B0aW9ucy5zaGFtICAgICAgICAtIGFkZCBhIGZsYWcgdG8gbm90IGNvbXBsZXRlbHkgZnVsbCBwb2x5ZmlsbHNcbiAgb3B0aW9ucy5lbnVtZXJhYmxlICAtIGV4cG9ydCBhcyBlbnVtZXJhYmxlIHByb3BlcnR5XG4gIG9wdGlvbnMubm9UYXJnZXRHZXQgLSBwcmV2ZW50IGNhbGxpbmcgYSBnZXR0ZXIgb24gdGFyZ2V0XG4qL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3B0aW9ucywgc291cmNlKSB7XG4gIHZhciBUQVJHRVQgPSBvcHRpb25zLnRhcmdldDtcbiAgdmFyIEdMT0JBTCA9IG9wdGlvbnMuZ2xvYmFsO1xuICB2YXIgU1RBVElDID0gb3B0aW9ucy5zdGF0O1xuICB2YXIgRk9SQ0VELCB0YXJnZXQsIGtleSwgdGFyZ2V0UHJvcGVydHksIHNvdXJjZVByb3BlcnR5LCBkZXNjcmlwdG9yO1xuICBpZiAoR0xPQkFMKSB7XG4gICAgdGFyZ2V0ID0gZ2xvYmFsO1xuICB9IGVsc2UgaWYgKFNUQVRJQykge1xuICAgIHRhcmdldCA9IGdsb2JhbFtUQVJHRVRdIHx8IHNldEdsb2JhbChUQVJHRVQsIHt9KTtcbiAgfSBlbHNlIHtcbiAgICB0YXJnZXQgPSAoZ2xvYmFsW1RBUkdFVF0gfHwge30pLnByb3RvdHlwZTtcbiAgfVxuICBpZiAodGFyZ2V0KSBmb3IgKGtleSBpbiBzb3VyY2UpIHtcbiAgICBzb3VyY2VQcm9wZXJ0eSA9IHNvdXJjZVtrZXldO1xuICAgIGlmIChvcHRpb25zLm5vVGFyZ2V0R2V0KSB7XG4gICAgICBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KTtcbiAgICAgIHRhcmdldFByb3BlcnR5ID0gZGVzY3JpcHRvciAmJiBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIH0gZWxzZSB0YXJnZXRQcm9wZXJ0eSA9IHRhcmdldFtrZXldO1xuICAgIEZPUkNFRCA9IGlzRm9yY2VkKEdMT0JBTCA/IGtleSA6IFRBUkdFVCArIChTVEFUSUMgPyAnLicgOiAnIycpICsga2V5LCBvcHRpb25zLmZvcmNlZCk7XG4gICAgLy8gY29udGFpbmVkIGluIHRhcmdldFxuICAgIGlmICghRk9SQ0VEICYmIHRhcmdldFByb3BlcnR5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0eXBlb2Ygc291cmNlUHJvcGVydHkgPT09IHR5cGVvZiB0YXJnZXRQcm9wZXJ0eSkgY29udGludWU7XG4gICAgICBjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzKHNvdXJjZVByb3BlcnR5LCB0YXJnZXRQcm9wZXJ0eSk7XG4gICAgfVxuICAgIC8vIGFkZCBhIGZsYWcgdG8gbm90IGNvbXBsZXRlbHkgZnVsbCBwb2x5ZmlsbHNcbiAgICBpZiAob3B0aW9ucy5zaGFtIHx8ICh0YXJnZXRQcm9wZXJ0eSAmJiB0YXJnZXRQcm9wZXJ0eS5zaGFtKSkge1xuICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KHNvdXJjZVByb3BlcnR5LCAnc2hhbScsIHRydWUpO1xuICAgIH1cbiAgICAvLyBleHRlbmQgZ2xvYmFsXG4gICAgcmVkZWZpbmUodGFyZ2V0LCBrZXksIHNvdXJjZVByb3BlcnR5LCBvcHRpb25zKTtcbiAgfVxufTtcbiIsICIndXNlIHN0cmljdCc7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbi8vIGBSZWdFeHAucHJvdG90eXBlLmZsYWdzYCBnZXR0ZXIgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZ2V0LXJlZ2V4cC5wcm90b3R5cGUuZmxhZ3Ncbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdGhhdCA9IGFuT2JqZWN0KHRoaXMpO1xuICB2YXIgcmVzdWx0ID0gJyc7XG4gIGlmICh0aGF0Lmdsb2JhbCkgcmVzdWx0ICs9ICdnJztcbiAgaWYgKHRoYXQuaWdub3JlQ2FzZSkgcmVzdWx0ICs9ICdpJztcbiAgaWYgKHRoYXQubXVsdGlsaW5lKSByZXN1bHQgKz0gJ20nO1xuICBpZiAodGhhdC5kb3RBbGwpIHJlc3VsdCArPSAncyc7XG4gIGlmICh0aGF0LnVuaWNvZGUpIHJlc3VsdCArPSAndSc7XG4gIGlmICh0aGF0LnN0aWNreSkgcmVzdWx0ICs9ICd5JztcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL2ZhaWxzJyk7XG5cbi8vIGJhYmVsLW1pbmlmeSB0cmFuc3BpbGVzIFJlZ0V4cCgnYScsICd5JykgLT4gL2EveSBhbmQgaXQgY2F1c2VzIFN5bnRheEVycm9yLFxuLy8gc28gd2UgdXNlIGFuIGludGVybWVkaWF0ZSBmdW5jdGlvbi5cbmZ1bmN0aW9uIFJFKHMsIGYpIHtcbiAgcmV0dXJuIFJlZ0V4cChzLCBmKTtcbn1cblxuZXhwb3J0cy5VTlNVUFBPUlRFRF9ZID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBiYWJlbC1taW5pZnkgdHJhbnNwaWxlcyBSZWdFeHAoJ2EnLCAneScpIC0+IC9hL3kgYW5kIGl0IGNhdXNlcyBTeW50YXhFcnJvclxuICB2YXIgcmUgPSBSRSgnYScsICd5Jyk7XG4gIHJlLmxhc3RJbmRleCA9IDI7XG4gIHJldHVybiByZS5leGVjKCdhYmNkJykgIT0gbnVsbDtcbn0pO1xuXG5leHBvcnRzLkJST0tFTl9DQVJFVCA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzczNjg3XG4gIHZhciByZSA9IFJFKCdecicsICdneScpO1xuICByZS5sYXN0SW5kZXggPSAyO1xuICByZXR1cm4gcmUuZXhlYygnc3RyJykgIT0gbnVsbDtcbn0pO1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIHJlZ2V4cC9uby1hc3NlcnRpb24tY2FwdHVyaW5nLWdyb3VwLCByZWdleHAvbm8tZW1wdHktZ3JvdXAsIHJlZ2V4cC9uby1sYXp5LWVuZHMgLS0gdGVzdGluZyAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVnZXhwL25vLXVzZWxlc3MtcXVhbnRpZmllciAtLSB0ZXN0aW5nICovXG52YXIgcmVnZXhwRmxhZ3MgPSByZXF1aXJlKCcuL3JlZ2V4cC1mbGFncycpO1xudmFyIHN0aWNreUhlbHBlcnMgPSByZXF1aXJlKCcuL3JlZ2V4cC1zdGlja3ktaGVscGVycycpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4vc2hhcmVkJyk7XG5cbnZhciBuYXRpdmVFeGVjID0gUmVnRXhwLnByb3RvdHlwZS5leGVjO1xudmFyIG5hdGl2ZVJlcGxhY2UgPSBzaGFyZWQoJ25hdGl2ZS1zdHJpbmctcmVwbGFjZScsIFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSk7XG5cbnZhciBwYXRjaGVkRXhlYyA9IG5hdGl2ZUV4ZWM7XG5cbnZhciBVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkcgPSAoZnVuY3Rpb24gKCkge1xuICB2YXIgcmUxID0gL2EvO1xuICB2YXIgcmUyID0gL2IqL2c7XG4gIG5hdGl2ZUV4ZWMuY2FsbChyZTEsICdhJyk7XG4gIG5hdGl2ZUV4ZWMuY2FsbChyZTIsICdhJyk7XG4gIHJldHVybiByZTEubGFzdEluZGV4ICE9PSAwIHx8IHJlMi5sYXN0SW5kZXggIT09IDA7XG59KSgpO1xuXG52YXIgVU5TVVBQT1JURURfWSA9IHN0aWNreUhlbHBlcnMuVU5TVVBQT1JURURfWSB8fCBzdGlja3lIZWxwZXJzLkJST0tFTl9DQVJFVDtcblxuLy8gbm9ucGFydGljaXBhdGluZyBjYXB0dXJpbmcgZ3JvdXAsIGNvcGllZCBmcm9tIGVzNS1zaGltJ3MgU3RyaW5nI3NwbGl0IHBhdGNoLlxudmFyIE5QQ0dfSU5DTFVERUQgPSAvKCk/Py8uZXhlYygnJylbMV0gIT09IHVuZGVmaW5lZDtcblxudmFyIFBBVENIID0gVVBEQVRFU19MQVNUX0lOREVYX1dST05HIHx8IE5QQ0dfSU5DTFVERUQgfHwgVU5TVVBQT1JURURfWTtcblxuaWYgKFBBVENIKSB7XG4gIHBhdGNoZWRFeGVjID0gZnVuY3Rpb24gZXhlYyhzdHIpIHtcbiAgICB2YXIgcmUgPSB0aGlzO1xuICAgIHZhciBsYXN0SW5kZXgsIHJlQ29weSwgbWF0Y2gsIGk7XG4gICAgdmFyIHN0aWNreSA9IFVOU1VQUE9SVEVEX1kgJiYgcmUuc3RpY2t5O1xuICAgIHZhciBmbGFncyA9IHJlZ2V4cEZsYWdzLmNhbGwocmUpO1xuICAgIHZhciBzb3VyY2UgPSByZS5zb3VyY2U7XG4gICAgdmFyIGNoYXJzQWRkZWQgPSAwO1xuICAgIHZhciBzdHJDb3B5ID0gc3RyO1xuXG4gICAgaWYgKHN0aWNreSkge1xuICAgICAgZmxhZ3MgPSBmbGFncy5yZXBsYWNlKCd5JywgJycpO1xuICAgICAgaWYgKGZsYWdzLmluZGV4T2YoJ2cnKSA9PT0gLTEpIHtcbiAgICAgICAgZmxhZ3MgKz0gJ2cnO1xuICAgICAgfVxuXG4gICAgICBzdHJDb3B5ID0gU3RyaW5nKHN0cikuc2xpY2UocmUubGFzdEluZGV4KTtcbiAgICAgIC8vIFN1cHBvcnQgYW5jaG9yZWQgc3RpY2t5IGJlaGF2aW9yLlxuICAgICAgaWYgKHJlLmxhc3RJbmRleCA+IDAgJiYgKCFyZS5tdWx0aWxpbmUgfHwgcmUubXVsdGlsaW5lICYmIHN0cltyZS5sYXN0SW5kZXggLSAxXSAhPT0gJ1xcbicpKSB7XG4gICAgICAgIHNvdXJjZSA9ICcoPzogJyArIHNvdXJjZSArICcpJztcbiAgICAgICAgc3RyQ29weSA9ICcgJyArIHN0ckNvcHk7XG4gICAgICAgIGNoYXJzQWRkZWQrKztcbiAgICAgIH1cbiAgICAgIC8vIF4oPyArIHJ4ICsgKSBpcyBuZWVkZWQsIGluIGNvbWJpbmF0aW9uIHdpdGggc29tZSBzdHIgc2xpY2luZywgdG9cbiAgICAgIC8vIHNpbXVsYXRlIHRoZSAneScgZmxhZy5cbiAgICAgIHJlQ29weSA9IG5ldyBSZWdFeHAoJ14oPzonICsgc291cmNlICsgJyknLCBmbGFncyk7XG4gICAgfVxuXG4gICAgaWYgKE5QQ0dfSU5DTFVERUQpIHtcbiAgICAgIHJlQ29weSA9IG5ldyBSZWdFeHAoJ14nICsgc291cmNlICsgJyQoPyFcXFxccyknLCBmbGFncyk7XG4gICAgfVxuICAgIGlmIChVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkcpIGxhc3RJbmRleCA9IHJlLmxhc3RJbmRleDtcblxuICAgIG1hdGNoID0gbmF0aXZlRXhlYy5jYWxsKHN0aWNreSA/IHJlQ29weSA6IHJlLCBzdHJDb3B5KTtcblxuICAgIGlmIChzdGlja3kpIHtcbiAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICBtYXRjaC5pbnB1dCA9IG1hdGNoLmlucHV0LnNsaWNlKGNoYXJzQWRkZWQpO1xuICAgICAgICBtYXRjaFswXSA9IG1hdGNoWzBdLnNsaWNlKGNoYXJzQWRkZWQpO1xuICAgICAgICBtYXRjaC5pbmRleCA9IHJlLmxhc3RJbmRleDtcbiAgICAgICAgcmUubGFzdEluZGV4ICs9IG1hdGNoWzBdLmxlbmd0aDtcbiAgICAgIH0gZWxzZSByZS5sYXN0SW5kZXggPSAwO1xuICAgIH0gZWxzZSBpZiAoVVBEQVRFU19MQVNUX0lOREVYX1dST05HICYmIG1hdGNoKSB7XG4gICAgICByZS5sYXN0SW5kZXggPSByZS5nbG9iYWwgPyBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCA6IGxhc3RJbmRleDtcbiAgICB9XG4gICAgaWYgKE5QQ0dfSU5DTFVERUQgJiYgbWF0Y2ggJiYgbWF0Y2gubGVuZ3RoID4gMSkge1xuICAgICAgLy8gRml4IGJyb3dzZXJzIHdob3NlIGBleGVjYCBtZXRob2RzIGRvbid0IGNvbnNpc3RlbnRseSByZXR1cm4gYHVuZGVmaW5lZGBcbiAgICAgIC8vIGZvciBOUENHLCBsaWtlIElFOC4gTk9URTogVGhpcyBkb2Vzbicgd29yayBmb3IgLyguPyk/L1xuICAgICAgbmF0aXZlUmVwbGFjZS5jYWxsKG1hdGNoWzBdLCByZUNvcHksIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm9yIChpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGggLSAyOyBpKyspIHtcbiAgICAgICAgICBpZiAoYXJndW1lbnRzW2ldID09PSB1bmRlZmluZWQpIG1hdGNoW2ldID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWF0Y2g7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGF0Y2hlZEV4ZWM7XG4iLCAiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZXhlYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtZXhlYycpO1xuXG4vLyBgUmVnRXhwLnByb3RvdHlwZS5leGVjYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVnZXhwLnByb3RvdHlwZS5leGVjXG4kKHsgdGFyZ2V0OiAnUmVnRXhwJywgcHJvdG86IHRydWUsIGZvcmNlZDogLy4vLmV4ZWMgIT09IGV4ZWMgfSwge1xuICBleGVjOiBleGVjXG59KTtcbiIsICJ2YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRCdWlsdEluKCduYXZpZ2F0b3InLCAndXNlckFnZW50JykgfHwgJyc7XG4iLCAidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQnKTtcblxudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciB2ZXJzaW9ucyA9IHByb2Nlc3MgJiYgcHJvY2Vzcy52ZXJzaW9ucztcbnZhciB2OCA9IHZlcnNpb25zICYmIHZlcnNpb25zLnY4O1xudmFyIG1hdGNoLCB2ZXJzaW9uO1xuXG5pZiAodjgpIHtcbiAgbWF0Y2ggPSB2OC5zcGxpdCgnLicpO1xuICB2ZXJzaW9uID0gbWF0Y2hbMF0gPCA0ID8gMSA6IG1hdGNoWzBdICsgbWF0Y2hbMV07XG59IGVsc2UgaWYgKHVzZXJBZ2VudCkge1xuICBtYXRjaCA9IHVzZXJBZ2VudC5tYXRjaCgvRWRnZVxcLyhcXGQrKS8pO1xuICBpZiAoIW1hdGNoIHx8IG1hdGNoWzFdID49IDc0KSB7XG4gICAgbWF0Y2ggPSB1c2VyQWdlbnQubWF0Y2goL0Nocm9tZVxcLyhcXGQrKS8pO1xuICAgIGlmIChtYXRjaCkgdmVyc2lvbiA9IG1hdGNoWzFdO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdmVyc2lvbiAmJiArdmVyc2lvbjtcbiIsICIvKiBlc2xpbnQtZGlzYWJsZSBlcy9uby1zeW1ib2wgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmcgKi9cbnZhciBWOF9WRVJTSU9OID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eXN5bWJvbHMgLS0gcmVxdWlyZWQgZm9yIHRlc3Rpbmdcbm1vZHVsZS5leHBvcnRzID0gISFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBzeW1ib2wgPSBTeW1ib2woKTtcbiAgLy8gQ2hyb21lIDM4IFN5bWJvbCBoYXMgaW5jb3JyZWN0IHRvU3RyaW5nIGNvbnZlcnNpb25cbiAgLy8gYGdldC1vd24tcHJvcGVydHktc3ltYm9sc2AgcG9seWZpbGwgc3ltYm9scyBjb252ZXJ0ZWQgdG8gb2JqZWN0IGFyZSBub3QgU3ltYm9sIGluc3RhbmNlc1xuICByZXR1cm4gIVN0cmluZyhzeW1ib2wpIHx8ICEoT2JqZWN0KHN5bWJvbCkgaW5zdGFuY2VvZiBTeW1ib2wpIHx8XG4gICAgLy8gQ2hyb21lIDM4LTQwIHN5bWJvbHMgYXJlIG5vdCBpbmhlcml0ZWQgZnJvbSBET00gY29sbGVjdGlvbnMgcHJvdG90eXBlcyB0byBpbnN0YW5jZXNcbiAgICAhU3ltYm9sLnNoYW0gJiYgVjhfVkVSU0lPTiAmJiBWOF9WRVJTSU9OIDwgNDE7XG59KTtcbiIsICIvKiBlc2xpbnQtZGlzYWJsZSBlcy9uby1zeW1ib2wgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmcgKi9cbnZhciBOQVRJVkVfU1lNQk9MID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25hdGl2ZS1zeW1ib2wnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBOQVRJVkVfU1lNQk9MXG4gICYmICFTeW1ib2wuc2hhbVxuICAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09ICdzeW1ib2wnO1xuIiwgInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG52YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uYXRpdmUtc3ltYm9sJyk7XG52YXIgVVNFX1NZTUJPTF9BU19VSUQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdXNlLXN5bWJvbC1hcy11aWQnKTtcblxudmFyIFdlbGxLbm93blN5bWJvbHNTdG9yZSA9IHNoYXJlZCgnd2tzJyk7XG52YXIgU3ltYm9sID0gZ2xvYmFsLlN5bWJvbDtcbnZhciBjcmVhdGVXZWxsS25vd25TeW1ib2wgPSBVU0VfU1lNQk9MX0FTX1VJRCA/IFN5bWJvbCA6IFN5bWJvbCAmJiBTeW1ib2wud2l0aG91dFNldHRlciB8fCB1aWQ7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgaWYgKCFoYXMoV2VsbEtub3duU3ltYm9sc1N0b3JlLCBuYW1lKSB8fCAhKE5BVElWRV9TWU1CT0wgfHwgdHlwZW9mIFdlbGxLbm93blN5bWJvbHNTdG9yZVtuYW1lXSA9PSAnc3RyaW5nJykpIHtcbiAgICBpZiAoTkFUSVZFX1NZTUJPTCAmJiBoYXMoU3ltYm9sLCBuYW1lKSkge1xuICAgICAgV2VsbEtub3duU3ltYm9sc1N0b3JlW25hbWVdID0gU3ltYm9sW25hbWVdO1xuICAgIH0gZWxzZSB7XG4gICAgICBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV0gPSBjcmVhdGVXZWxsS25vd25TeW1ib2woJ1N5bWJvbC4nICsgbmFtZSk7XG4gICAgfVxuICB9IHJldHVybiBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV07XG59O1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8vIFRPRE86IFJlbW92ZSBmcm9tIGBjb3JlLWpzQDRgIHNpbmNlIGl0J3MgbW92ZWQgdG8gZW50cnkgcG9pbnRzXG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnJlZ2V4cC5leGVjJyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUnKTtcbnZhciByZWdleHBFeGVjID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC1leGVjJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG5cbnZhciBTUEVDSUVTID0gd2VsbEtub3duU3ltYm9sKCdzcGVjaWVzJyk7XG52YXIgUmVnRXhwUHJvdG90eXBlID0gUmVnRXhwLnByb3RvdHlwZTtcblxudmFyIFJFUExBQ0VfU1VQUE9SVFNfTkFNRURfR1JPVVBTID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gI3JlcGxhY2UgbmVlZHMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgbmFtZWQgZ3JvdXBzLlxuICAvLyAjbWF0Y2ggd29ya3MgZmluZSBiZWNhdXNlIGl0IGp1c3QgcmV0dXJuIHRoZSBleGVjIHJlc3VsdHMsIGV2ZW4gaWYgaXQgaGFzXG4gIC8vIGEgXCJncm9wc1wiIHByb3BlcnR5LlxuICB2YXIgcmUgPSAvLi87XG4gIHJlLmV4ZWMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIHJlc3VsdC5ncm91cHMgPSB7IGE6ICc3JyB9O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG4gIHJldHVybiAnJy5yZXBsYWNlKHJlLCAnJDxhPicpICE9PSAnNyc7XG59KTtcblxuLy8gSUUgPD0gMTEgcmVwbGFjZXMgJDAgd2l0aCB0aGUgd2hvbGUgbWF0Y2gsIGFzIGlmIGl0IHdhcyAkJlxuLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNjAyNDY2Ni9nZXR0aW5nLWllLXRvLXJlcGxhY2UtYS1yZWdleC13aXRoLXRoZS1saXRlcmFsLXN0cmluZy0wXG52YXIgUkVQTEFDRV9LRUVQU18kMCA9IChmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWdleHAvcHJlZmVyLWVzY2FwZS1yZXBsYWNlbWVudC1kb2xsYXItY2hhciAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gJ2EnLnJlcGxhY2UoLy4vLCAnJDAnKSA9PT0gJyQwJztcbn0pKCk7XG5cbnZhciBSRVBMQUNFID0gd2VsbEtub3duU3ltYm9sKCdyZXBsYWNlJyk7XG4vLyBTYWZhcmkgPD0gMTMuMC4zKD8pIHN1YnN0aXR1dGVzIG50aCBjYXB0dXJlIHdoZXJlIG4+bSB3aXRoIGFuIGVtcHR5IHN0cmluZ1xudmFyIFJFR0VYUF9SRVBMQUNFX1NVQlNUSVRVVEVTX1VOREVGSU5FRF9DQVBUVVJFID0gKGZ1bmN0aW9uICgpIHtcbiAgaWYgKC8uL1tSRVBMQUNFXSkge1xuICAgIHJldHVybiAvLi9bUkVQTEFDRV0oJ2EnLCAnJDAnKSA9PT0gJyc7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufSkoKTtcblxuLy8gQ2hyb21lIDUxIGhhcyBhIGJ1Z2d5IFwic3BsaXRcIiBpbXBsZW1lbnRhdGlvbiB3aGVuIFJlZ0V4cCNleGVjICE9PSBuYXRpdmVFeGVjXG4vLyBXZWV4IEpTIGhhcyBmcm96ZW4gYnVpbHQtaW4gcHJvdG90eXBlcywgc28gdXNlIHRyeSAvIGNhdGNoIHdyYXBwZXJcbnZhciBTUExJVF9XT1JLU19XSVRIX09WRVJXUklUVEVOX0VYRUMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVnZXhwL25vLWVtcHR5LWdyb3VwIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHZhciByZSA9IC8oPzopLztcbiAgdmFyIG9yaWdpbmFsRXhlYyA9IHJlLmV4ZWM7XG4gIHJlLmV4ZWMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBvcmlnaW5hbEV4ZWMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfTtcbiAgdmFyIHJlc3VsdCA9ICdhYicuc3BsaXQocmUpO1xuICByZXR1cm4gcmVzdWx0Lmxlbmd0aCAhPT0gMiB8fCByZXN1bHRbMF0gIT09ICdhJyB8fCByZXN1bHRbMV0gIT09ICdiJztcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVksIGxlbmd0aCwgZXhlYywgc2hhbSkge1xuICB2YXIgU1lNQk9MID0gd2VsbEtub3duU3ltYm9sKEtFWSk7XG5cbiAgdmFyIERFTEVHQVRFU19UT19TWU1CT0wgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIC8vIFN0cmluZyBtZXRob2RzIGNhbGwgc3ltYm9sLW5hbWVkIFJlZ0VwIG1ldGhvZHNcbiAgICB2YXIgTyA9IHt9O1xuICAgIE9bU1lNQk9MXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH07XG4gICAgcmV0dXJuICcnW0tFWV0oTykgIT0gNztcbiAgfSk7XG5cbiAgdmFyIERFTEVHQVRFU19UT19FWEVDID0gREVMRUdBVEVTX1RPX1NZTUJPTCAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIC8vIFN5bWJvbC1uYW1lZCBSZWdFeHAgbWV0aG9kcyBjYWxsIC5leGVjXG4gICAgdmFyIGV4ZWNDYWxsZWQgPSBmYWxzZTtcbiAgICB2YXIgcmUgPSAvYS87XG5cbiAgICBpZiAoS0VZID09PSAnc3BsaXQnKSB7XG4gICAgICAvLyBXZSBjYW4ndCB1c2UgcmVhbCByZWdleCBoZXJlIHNpbmNlIGl0IGNhdXNlcyBkZW9wdGltaXphdGlvblxuICAgICAgLy8gYW5kIHNlcmlvdXMgcGVyZm9ybWFuY2UgZGVncmFkYXRpb24gaW4gVjhcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8zMDZcbiAgICAgIHJlID0ge307XG4gICAgICAvLyBSZWdFeHBbQEBzcGxpdF0gZG9lc24ndCBjYWxsIHRoZSByZWdleCdzIGV4ZWMgbWV0aG9kLCBidXQgZmlyc3QgY3JlYXRlc1xuICAgICAgLy8gYSBuZXcgb25lLiBXZSBuZWVkIHRvIHJldHVybiB0aGUgcGF0Y2hlZCByZWdleCB3aGVuIGNyZWF0aW5nIHRoZSBuZXcgb25lLlxuICAgICAgcmUuY29uc3RydWN0b3IgPSB7fTtcbiAgICAgIHJlLmNvbnN0cnVjdG9yW1NQRUNJRVNdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gcmU7IH07XG4gICAgICByZS5mbGFncyA9ICcnO1xuICAgICAgcmVbU1lNQk9MXSA9IC8uL1tTWU1CT0xdO1xuICAgIH1cblxuICAgIHJlLmV4ZWMgPSBmdW5jdGlvbiAoKSB7IGV4ZWNDYWxsZWQgPSB0cnVlOyByZXR1cm4gbnVsbDsgfTtcblxuICAgIHJlW1NZTUJPTF0oJycpO1xuICAgIHJldHVybiAhZXhlY0NhbGxlZDtcbiAgfSk7XG5cbiAgaWYgKFxuICAgICFERUxFR0FURVNfVE9fU1lNQk9MIHx8XG4gICAgIURFTEVHQVRFU19UT19FWEVDIHx8XG4gICAgKEtFWSA9PT0gJ3JlcGxhY2UnICYmICEoXG4gICAgICBSRVBMQUNFX1NVUFBPUlRTX05BTUVEX0dST1VQUyAmJlxuICAgICAgUkVQTEFDRV9LRUVQU18kMCAmJlxuICAgICAgIVJFR0VYUF9SRVBMQUNFX1NVQlNUSVRVVEVTX1VOREVGSU5FRF9DQVBUVVJFXG4gICAgKSkgfHxcbiAgICAoS0VZID09PSAnc3BsaXQnICYmICFTUExJVF9XT1JLU19XSVRIX09WRVJXUklUVEVOX0VYRUMpXG4gICkge1xuICAgIHZhciBuYXRpdmVSZWdFeHBNZXRob2QgPSAvLi9bU1lNQk9MXTtcbiAgICB2YXIgbWV0aG9kcyA9IGV4ZWMoU1lNQk9MLCAnJ1tLRVldLCBmdW5jdGlvbiAobmF0aXZlTWV0aG9kLCByZWdleHAsIHN0ciwgYXJnMiwgZm9yY2VTdHJpbmdNZXRob2QpIHtcbiAgICAgIHZhciAkZXhlYyA9IHJlZ2V4cC5leGVjO1xuICAgICAgaWYgKCRleGVjID09PSByZWdleHBFeGVjIHx8ICRleGVjID09PSBSZWdFeHBQcm90b3R5cGUuZXhlYykge1xuICAgICAgICBpZiAoREVMRUdBVEVTX1RPX1NZTUJPTCAmJiAhZm9yY2VTdHJpbmdNZXRob2QpIHtcbiAgICAgICAgICAvLyBUaGUgbmF0aXZlIFN0cmluZyBtZXRob2QgYWxyZWFkeSBkZWxlZ2F0ZXMgdG8gQEBtZXRob2QgKHRoaXNcbiAgICAgICAgICAvLyBwb2x5ZmlsbGVkIGZ1bmN0aW9uKSwgbGVhc2luZyB0byBpbmZpbml0ZSByZWN1cnNpb24uXG4gICAgICAgICAgLy8gV2UgYXZvaWQgaXQgYnkgZGlyZWN0bHkgY2FsbGluZyB0aGUgbmF0aXZlIEBAbWV0aG9kIG1ldGhvZC5cbiAgICAgICAgICByZXR1cm4geyBkb25lOiB0cnVlLCB2YWx1ZTogbmF0aXZlUmVnRXhwTWV0aG9kLmNhbGwocmVnZXhwLCBzdHIsIGFyZzIpIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgZG9uZTogdHJ1ZSwgdmFsdWU6IG5hdGl2ZU1ldGhvZC5jYWxsKHN0ciwgcmVnZXhwLCBhcmcyKSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgZG9uZTogZmFsc2UgfTtcbiAgICB9LCB7XG4gICAgICBSRVBMQUNFX0tFRVBTXyQwOiBSRVBMQUNFX0tFRVBTXyQwLFxuICAgICAgUkVHRVhQX1JFUExBQ0VfU1VCU1RJVFVURVNfVU5ERUZJTkVEX0NBUFRVUkU6IFJFR0VYUF9SRVBMQUNFX1NVQlNUSVRVVEVTX1VOREVGSU5FRF9DQVBUVVJFXG4gICAgfSk7XG4gICAgdmFyIHN0cmluZ01ldGhvZCA9IG1ldGhvZHNbMF07XG4gICAgdmFyIHJlZ2V4TWV0aG9kID0gbWV0aG9kc1sxXTtcblxuICAgIHJlZGVmaW5lKFN0cmluZy5wcm90b3R5cGUsIEtFWSwgc3RyaW5nTWV0aG9kKTtcbiAgICByZWRlZmluZShSZWdFeHBQcm90b3R5cGUsIFNZTUJPTCwgbGVuZ3RoID09IDJcbiAgICAgIC8vIDIxLjIuNS44IFJlZ0V4cC5wcm90b3R5cGVbQEByZXBsYWNlXShzdHJpbmcsIHJlcGxhY2VWYWx1ZSlcbiAgICAgIC8vIDIxLjIuNS4xMSBSZWdFeHAucHJvdG90eXBlW0BAc3BsaXRdKHN0cmluZywgbGltaXQpXG4gICAgICA/IGZ1bmN0aW9uIChzdHJpbmcsIGFyZykgeyByZXR1cm4gcmVnZXhNZXRob2QuY2FsbChzdHJpbmcsIHRoaXMsIGFyZyk7IH1cbiAgICAgIC8vIDIxLjIuNS42IFJlZ0V4cC5wcm90b3R5cGVbQEBtYXRjaF0oc3RyaW5nKVxuICAgICAgLy8gMjEuMi41LjkgUmVnRXhwLnByb3RvdHlwZVtAQHNlYXJjaF0oc3RyaW5nKVxuICAgICAgOiBmdW5jdGlvbiAoc3RyaW5nKSB7IHJldHVybiByZWdleE1ldGhvZC5jYWxsKHN0cmluZywgdGhpcyk7IH1cbiAgICApO1xuICB9XG5cbiAgaWYgKHNoYW0pIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShSZWdFeHBQcm90b3R5cGVbU1lNQk9MXSwgJ3NoYW0nLCB0cnVlKTtcbn07XG4iLCAidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyJyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUueyBjb2RlUG9pbnRBdCwgYXQgfWAgbWV0aG9kcyBpbXBsZW1lbnRhdGlvblxudmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uIChDT05WRVJUX1RPX1NUUklORykge1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBwb3MpIHtcbiAgICB2YXIgUyA9IFN0cmluZyhyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKCR0aGlzKSk7XG4gICAgdmFyIHBvc2l0aW9uID0gdG9JbnRlZ2VyKHBvcyk7XG4gICAgdmFyIHNpemUgPSBTLmxlbmd0aDtcbiAgICB2YXIgZmlyc3QsIHNlY29uZDtcbiAgICBpZiAocG9zaXRpb24gPCAwIHx8IHBvc2l0aW9uID49IHNpemUpIHJldHVybiBDT05WRVJUX1RPX1NUUklORyA/ICcnIDogdW5kZWZpbmVkO1xuICAgIGZpcnN0ID0gUy5jaGFyQ29kZUF0KHBvc2l0aW9uKTtcbiAgICByZXR1cm4gZmlyc3QgPCAweEQ4MDAgfHwgZmlyc3QgPiAweERCRkYgfHwgcG9zaXRpb24gKyAxID09PSBzaXplXG4gICAgICB8fCAoc2Vjb25kID0gUy5jaGFyQ29kZUF0KHBvc2l0aW9uICsgMSkpIDwgMHhEQzAwIHx8IHNlY29uZCA+IDB4REZGRlxuICAgICAgICA/IENPTlZFUlRfVE9fU1RSSU5HID8gUy5jaGFyQXQocG9zaXRpb24pIDogZmlyc3RcbiAgICAgICAgOiBDT05WRVJUX1RPX1NUUklORyA/IFMuc2xpY2UocG9zaXRpb24sIHBvc2l0aW9uICsgMikgOiAoZmlyc3QgLSAweEQ4MDAgPDwgMTApICsgKHNlY29uZCAtIDB4REMwMCkgKyAweDEwMDAwO1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGBTdHJpbmcucHJvdG90eXBlLmNvZGVQb2ludEF0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLmNvZGVwb2ludGF0XG4gIGNvZGVBdDogY3JlYXRlTWV0aG9kKGZhbHNlKSxcbiAgLy8gYFN0cmluZy5wcm90b3R5cGUuYXRgIG1ldGhvZFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vbWF0aGlhc2J5bmVucy9TdHJpbmcucHJvdG90eXBlLmF0XG4gIGNoYXJBdDogY3JlYXRlTWV0aG9kKHRydWUpXG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbnZhciBjaGFyQXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLW11bHRpYnl0ZScpLmNoYXJBdDtcblxuLy8gYEFkdmFuY2VTdHJpbmdJbmRleGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFkdmFuY2VzdHJpbmdpbmRleFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoUywgaW5kZXgsIHVuaWNvZGUpIHtcbiAgcmV0dXJuIGluZGV4ICsgKHVuaWNvZGUgPyBjaGFyQXQoUywgaW5kZXgpLmxlbmd0aCA6IDEpO1xufTtcbiIsICJ2YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG5cbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG52YXIgcmVwbGFjZSA9ICcnLnJlcGxhY2U7XG52YXIgU1VCU1RJVFVUSU9OX1NZTUJPTFMgPSAvXFwkKFskJidgXXxcXGR7MSwyfXw8W14+XSo+KS9nO1xudmFyIFNVQlNUSVRVVElPTl9TWU1CT0xTX05PX05BTUVEID0gL1xcJChbJCYnYF18XFxkezEsMn0pL2c7XG5cbi8vIGBHZXRTdWJzdGl0dXRpb25gIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1nZXRzdWJzdGl0dXRpb25cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG1hdGNoZWQsIHN0ciwgcG9zaXRpb24sIGNhcHR1cmVzLCBuYW1lZENhcHR1cmVzLCByZXBsYWNlbWVudCkge1xuICB2YXIgdGFpbFBvcyA9IHBvc2l0aW9uICsgbWF0Y2hlZC5sZW5ndGg7XG4gIHZhciBtID0gY2FwdHVyZXMubGVuZ3RoO1xuICB2YXIgc3ltYm9scyA9IFNVQlNUSVRVVElPTl9TWU1CT0xTX05PX05BTUVEO1xuICBpZiAobmFtZWRDYXB0dXJlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgbmFtZWRDYXB0dXJlcyA9IHRvT2JqZWN0KG5hbWVkQ2FwdHVyZXMpO1xuICAgIHN5bWJvbHMgPSBTVUJTVElUVVRJT05fU1lNQk9MUztcbiAgfVxuICByZXR1cm4gcmVwbGFjZS5jYWxsKHJlcGxhY2VtZW50LCBzeW1ib2xzLCBmdW5jdGlvbiAobWF0Y2gsIGNoKSB7XG4gICAgdmFyIGNhcHR1cmU7XG4gICAgc3dpdGNoIChjaC5jaGFyQXQoMCkpIHtcbiAgICAgIGNhc2UgJyQnOiByZXR1cm4gJyQnO1xuICAgICAgY2FzZSAnJic6IHJldHVybiBtYXRjaGVkO1xuICAgICAgY2FzZSAnYCc6IHJldHVybiBzdHIuc2xpY2UoMCwgcG9zaXRpb24pO1xuICAgICAgY2FzZSBcIidcIjogcmV0dXJuIHN0ci5zbGljZSh0YWlsUG9zKTtcbiAgICAgIGNhc2UgJzwnOlxuICAgICAgICBjYXB0dXJlID0gbmFtZWRDYXB0dXJlc1tjaC5zbGljZSgxLCAtMSldO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6IC8vIFxcZFxcZD9cbiAgICAgICAgdmFyIG4gPSArY2g7XG4gICAgICAgIGlmIChuID09PSAwKSByZXR1cm4gbWF0Y2g7XG4gICAgICAgIGlmIChuID4gbSkge1xuICAgICAgICAgIHZhciBmID0gZmxvb3IobiAvIDEwKTtcbiAgICAgICAgICBpZiAoZiA9PT0gMCkgcmV0dXJuIG1hdGNoO1xuICAgICAgICAgIGlmIChmIDw9IG0pIHJldHVybiBjYXB0dXJlc1tmIC0gMV0gPT09IHVuZGVmaW5lZCA/IGNoLmNoYXJBdCgxKSA6IGNhcHR1cmVzW2YgLSAxXSArIGNoLmNoYXJBdCgxKTtcbiAgICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICAgIH1cbiAgICAgICAgY2FwdHVyZSA9IGNhcHR1cmVzW24gLSAxXTtcbiAgICB9XG4gICAgcmV0dXJuIGNhcHR1cmUgPT09IHVuZGVmaW5lZCA/ICcnIDogY2FwdHVyZTtcbiAgfSk7XG59O1xuIiwgInZhciBjbGFzc29mID0gcmVxdWlyZSgnLi9jbGFzc29mLXJhdycpO1xudmFyIHJlZ2V4cEV4ZWMgPSByZXF1aXJlKCcuL3JlZ2V4cC1leGVjJyk7XG5cbi8vIGBSZWdFeHBFeGVjYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVnZXhwZXhlY1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoUiwgUykge1xuICB2YXIgZXhlYyA9IFIuZXhlYztcbiAgaWYgKHR5cGVvZiBleGVjID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdmFyIHJlc3VsdCA9IGV4ZWMuY2FsbChSLCBTKTtcbiAgICBpZiAodHlwZW9mIHJlc3VsdCAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IFR5cGVFcnJvcignUmVnRXhwIGV4ZWMgbWV0aG9kIHJldHVybmVkIHNvbWV0aGluZyBvdGhlciB0aGFuIGFuIE9iamVjdCBvciBudWxsJyk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBpZiAoY2xhc3NvZihSKSAhPT0gJ1JlZ0V4cCcpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ1JlZ0V4cCNleGVjIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgcmVjZWl2ZXInKTtcbiAgfVxuXG4gIHJldHVybiByZWdleHBFeGVjLmNhbGwoUiwgUyk7XG59O1xuXG4iLCAiaW1wb3J0IFwiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5leGVjLmpzXCI7XG5pbXBvcnQgXCJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnJlcGxhY2UuanNcIjtcblxuLyogZXNsaW50LWRpc2FibGUgdW5pY29ybi9maWxlbmFtZS1jYXNlICovXG5pbXBvcnQgXCIuL2dsb2JhbFNoaW55XCI7XG52YXIgYW5pbWF0ZU1zID0gNDAwOyAvLyBHaXZlbiBhIERPTSBub2RlIGFuZCBhIGNvbHVtbiAoY291bnQgb2YgY2hhcmFjdGVycyksIHdhbGsgcmVjdXJzaXZlbHlcbi8vIHRocm91Z2ggdGhlIG5vZGUncyBzaWJsaW5ncyBjb3VudGluZyBjaGFyYWN0ZXJzIHVudGlsIHRoZSBnaXZlbiBudW1iZXJcbi8vIG9mIGNoYXJhY3RlcnMgaGF2ZSBiZWVuIGZvdW5kLlxuLy9cbi8vIElmIHRoZSBnaXZlbiBjb3VudCBpcyBiaWdnZXIgdGhhbiB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgY29udGFpbmVkIGJ5XG4vLyB0aGUgbm9kZSBhbmQgaXRzIHNpYmxpbmdzLCByZXR1cm5zIGEgbnVsbCBub2RlIGFuZCB0aGUgbnVtYmVyIG9mXG4vLyBjaGFyYWN0ZXJzIGZvdW5kLlxuXG5mdW5jdGlvbiBmaW5kVGV4dENvbFBvaW50KG5vZGUsIGNvbCkge1xuICB2YXIgY29scyA9IDA7XG5cbiAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDMpIHtcbiAgICB2YXIgbmNoYXIgPSBub2RlLm5vZGVWYWx1ZS5yZXBsYWNlKC9cXG4vZywgXCJcIikubGVuZ3RoO1xuXG4gICAgaWYgKG5jaGFyID49IGNvbCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZWxlbWVudDogbm9kZSxcbiAgICAgICAgb2Zmc2V0OiBjb2xcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbHMgKz0gbmNoYXI7XG4gICAgfVxuICB9IGVsc2UgaWYgKG5vZGUubm9kZVR5cGUgPT09IDEgJiYgbm9kZS5maXJzdENoaWxkKSB7XG4gICAgdmFyIHJldCA9IGZpbmRUZXh0Q29sUG9pbnQobm9kZS5maXJzdENoaWxkLCBjb2wpO1xuXG4gICAgaWYgKHJldC5lbGVtZW50ICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0gZWxzZSB7XG4gICAgICBjb2xzICs9IHJldC5vZmZzZXQ7XG4gICAgfVxuICB9XG5cbiAgaWYgKG5vZGUubmV4dFNpYmxpbmcpIHJldHVybiBmaW5kVGV4dENvbFBvaW50KG5vZGUubmV4dFNpYmxpbmcsIGNvbCAtIGNvbHMpO2Vsc2UgcmV0dXJuIHtcbiAgICBlbGVtZW50OiBudWxsLFxuICAgIG9mZnNldDogY29sc1xuICB9O1xufSAvLyBSZXR1cm5zIGFuIG9iamVjdCBpbmRpY2F0aW5nIHRoZSBlbGVtZW50IGNvbnRhaW5pbmcgdGhlIGdpdmVuIGxpbmUgYW5kXG4vLyBjb2x1bW4gb2YgdGV4dCwgYW5kIHRoZSBvZmZzZXQgaW50byB0aGF0IGVsZW1lbnQgd2hlcmUgdGhlIHRleHQgd2FzIGZvdW5kLlxuLy9cbi8vIElmIHRoZSBnaXZlbiBsaW5lIGFuZCBjb2x1bW4gYXJlIG5vdCBmb3VuZCwgcmV0dXJucyBhIG51bGwgZWxlbWVudCBhbmRcbi8vIHRoZSBudW1iZXIgb2YgbGluZXMgZm91bmQuXG5cblxuZnVuY3Rpb24gZmluZFRleHRQb2ludChlbCwgbGluZSwgY29sKSB7XG4gIHZhciBuZXdsaW5lcyA9IDA7XG5cbiAgZm9yICh2YXIgY2hpbGRJZCA9IDA7IGNoaWxkSWQgPCBlbC5jaGlsZE5vZGVzLmxlbmd0aDsgY2hpbGRJZCsrKSB7XG4gICAgdmFyIGNoaWxkID0gZWwuY2hpbGROb2Rlc1tjaGlsZElkXTsgLy8gSWYgdGhpcyBpcyBhIHRleHQgbm9kZSwgY291bnQgdGhlIG51bWJlciBvZiBuZXdsaW5lcyBpdCBjb250YWlucy5cblxuICAgIGlmIChjaGlsZC5ub2RlVHlwZSA9PT0gMykge1xuICAgICAgLy8gVEVYVF9OT0RFXG4gICAgICB2YXIgbmV3bGluZXJlID0gL1xcbi9nO1xuICAgICAgdmFyIG1hdGNoID0gdm9pZCAwO1xuXG4gICAgICB3aGlsZSAoKG1hdGNoID0gbmV3bGluZXJlLmV4ZWMoY2hpbGQubm9kZVZhbHVlKSkgIT09IG51bGwpIHtcbiAgICAgICAgbmV3bGluZXMrKzsgLy8gRm91bmQgdGhlIGRlc2lyZWQgbGluZSwgbm93IGZpbmQgdGhlIGNvbHVtbi5cblxuICAgICAgICBpZiAobmV3bGluZXMgPT09IGxpbmUpIHtcbiAgICAgICAgICByZXR1cm4gZmluZFRleHRDb2xQb2ludChjaGlsZCwgbWF0Y2guaW5kZXggKyBjb2wgKyAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gLy8gSWYgdGhpcyBpcyBub3QgYSB0ZXh0IG5vZGUsIGRlc2NlbmQgcmVjdXJzaXZlbHkgdG8gc2VlIGhvdyBtYW55XG4gICAgLy8gbGluZXMgaXQgY29udGFpbnMuXG4gICAgZWxzZSBpZiAoY2hpbGQubm9kZVR5cGUgPT09IDEpIHtcbiAgICAgICAgLy8gRUxFTUVOVF9OT0RFXG4gICAgICAgIHZhciByZXQgPSBmaW5kVGV4dFBvaW50KGNoaWxkLCBsaW5lIC0gbmV3bGluZXMsIGNvbCk7XG4gICAgICAgIGlmIChyZXQuZWxlbWVudCAhPT0gbnVsbCkgcmV0dXJuIHJldDtlbHNlIG5ld2xpbmVzICs9IHJldC5vZmZzZXQ7XG4gICAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGVsZW1lbnQ6IG51bGwsXG4gICAgb2Zmc2V0OiBuZXdsaW5lc1xuICB9O1xufSAvLyBEcmF3IGEgaGlnaGxpZ2h0IGVmZmVjdCBmb3IgdGhlIGdpdmVuIHNvdXJjZSByZWYuIHNyY3JlZiBpcyBhc3N1bWVkIHRvIGJlXG4vLyBhbiBpbnRlZ2VyIGFycmF5IG9mIGxlbmd0aCA2LCBmb2xsb3dpbmcgdGhlIHN0YW5kYXJkIFIgZm9ybWF0IGZvciBzb3VyY2Vcbi8vIHJlZnMuXG5cblxuZnVuY3Rpb24gaGlnaGxpZ2h0U3JjcmVmKHNyY3JlZiwgc3JjZmlsZSkge1xuICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIGJyb3dzZXIgc3VwcG9ydHMgdGV4dCByYW5nZXMgKElFOCBkb2Vzbid0KVxuICBpZiAoIWRvY3VtZW50LmNyZWF0ZVJhbmdlKSByZXR1cm47IC8vIENoZWNrIHRvIHNlZSBpZiB3ZSBhbHJlYWR5IGhhdmUgYSBtYXJrZXIgZm9yIHRoaXMgc291cmNlIHJlZlxuXG4gIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3JjcmVmX1wiICsgc3JjcmVmKTtcblxuICBpZiAoIWVsKSB7XG4gICAgLy8gV2UgZG9uJ3QgaGF2ZSBhIG1hcmtlciwgY3JlYXRlIG9uZVxuICAgIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7XG4gICAgZWwuaWQgPSBcInNyY3JlZl9cIiArIHNyY3JlZjtcbiAgICB2YXIgcmVmID0gc3JjcmVmO1xuICAgIHZhciBjb2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc3JjZmlsZS5yZXBsYWNlKC9cXC4vZywgXCJfXCIpICsgXCJfY29kZVwiKTsgLy8gaWYgdGhlcmUgaXMgbm8gY29kZSBmaWxlIChtaWdodCBiZSBhIHNoaW55IGZpbGUpLCBxdWl0IGVhcmx5XG5cbiAgICBpZiAoIWNvZGUpIHJldHVybjtcbiAgICB2YXIgc3RhcnQgPSBmaW5kVGV4dFBvaW50KGNvZGUsIHJlZlswXSwgcmVmWzRdKTtcbiAgICB2YXIgZW5kID0gZmluZFRleHRQb2ludChjb2RlLCByZWZbMl0sIHJlZls1XSk7IC8vIElmIHRoZSBpbnNlcnRpb24gcG9pbnQgY2FuJ3QgYmUgZm91bmQsIGJhaWwgb3V0IG5vd1xuXG4gICAgaWYgKHN0YXJ0LmVsZW1lbnQgPT09IG51bGwgfHwgZW5kLmVsZW1lbnQgPT09IG51bGwpIHJldHVybjtcbiAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOyAvLyBJZiB0aGUgdGV4dCBwb2ludHMgYXJlIGluc2lkZSBkaWZmZXJlbnQgPFNQQU4+cywgd2UgbWF5IG5vdCBiZSBhYmxlIHRvXG4gICAgLy8gc3Vycm91bmQgdGhlbSB3aXRob3V0IGJyZWFraW5nIGFwYXJ0IHRoZSBlbGVtZW50cyB0byBrZWVwIHRoZSBET00gdHJlZVxuICAgIC8vIGludGFjdC4gSnVzdCBtb3ZlIHRoZSBzZWxlY3Rpb24gcG9pbnRzIHRvIGVuY29tcGFzcyB0aGUgY29udGVudHMgb2ZcbiAgICAvLyB0aGUgU1BBTnMuXG5cbiAgICBpZiAoc3RhcnQuZWxlbWVudC5wYXJlbnROb2RlLm5vZGVOYW1lID09PSBcIlNQQU5cIiAmJiBzdGFydC5lbGVtZW50ICE9PSBlbmQuZWxlbWVudCkge1xuICAgICAgcmFuZ2Uuc2V0U3RhcnRCZWZvcmUoc3RhcnQuZWxlbWVudC5wYXJlbnROb2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmFuZ2Uuc2V0U3RhcnQoc3RhcnQuZWxlbWVudCwgc3RhcnQub2Zmc2V0KTtcbiAgICB9XG5cbiAgICBpZiAoZW5kLmVsZW1lbnQucGFyZW50Tm9kZS5ub2RlTmFtZSA9PT0gXCJTUEFOXCIgJiYgc3RhcnQuZWxlbWVudCAhPT0gZW5kLmVsZW1lbnQpIHtcbiAgICAgIHJhbmdlLnNldEVuZEFmdGVyKGVuZC5lbGVtZW50LnBhcmVudE5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByYW5nZS5zZXRFbmQoZW5kLmVsZW1lbnQsIGVuZC5vZmZzZXQpO1xuICAgIH1cblxuICAgIHJhbmdlLnN1cnJvdW5kQ29udGVudHMoZWwpO1xuICB9IC8vIEVuZCBhbnkgcHJldmlvdXMgaGlnaGxpZ2h0IGJlZm9yZSBzdGFydGluZyB0aGlzIG9uZVxuXG5cbiAgJChlbCkuc3RvcCh0cnVlLCB0cnVlKS5lZmZlY3QoXCJoaWdobGlnaHRcIiwgbnVsbCwgMTYwMCk7XG59IC8vIElmIHRoaXMgaXMgdGhlIG1haW4gU2hpbnkgd2luZG93LCB3aXJlIHVwIG91ciBjdXN0b20gbWVzc2FnZSBoYW5kbGVyLlxuLy8gVE9ETy1iYXJyZXQsIHRoaXMgc2hvdWxkIHdvcmtcblxuXG5pZiAoU2hpbnkpIHtcbiAgU2hpbnkuYWRkQ3VzdG9tTWVzc2FnZUhhbmRsZXIoXCJzaG93Y2FzZS1zcmNcIiwgZnVuY3Rpb24gKG1lc3NhZ2UpIHtcbiAgICBpZiAobWVzc2FnZS5zcmNyZWYgJiYgbWVzc2FnZS5zcmNmaWxlKSB7XG4gICAgICBoaWdobGlnaHRTcmNyZWYobWVzc2FnZS5zcmNyZWYsIG1lc3NhZ2Uuc3JjZmlsZSk7XG4gICAgfVxuICB9KTtcbn1cblxudmFyIGlzQ29kZUFib3ZlID0gZmFsc2U7XG5cbnZhciBzZXRDb2RlUG9zaXRpb24gPSBmdW5jdGlvbiBzZXRDb2RlUG9zaXRpb24oYWJvdmUsIGFuaW1hdGUpIHtcbiAgdmFyIGFuaW1hdGVDb2RlTXMgPSBhbmltYXRlID8gYW5pbWF0ZU1zIDogMTsgLy8gc2V0IHRoZSBzb3VyY2UgYW5kIHRhcmdldHMgZm9yIHRoZSB0YWIgbW92ZVxuXG4gIHZhciBuZXdIb3N0RWxlbWVudCA9IGFib3ZlID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzaG93Y2FzZS1zeHMtY29kZVwiKSA6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2hvd2Nhc2UtY29kZS1pbmxpbmVcIik7XG4gIHZhciBjdXJyZW50SG9zdEVsZW1lbnQgPSBhYm92ZSA/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2hvd2Nhc2UtY29kZS1pbmxpbmVcIikgOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNob3djYXNlLXN4cy1jb2RlXCIpO1xuICB2YXIgbWV0YWRhdGFFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzaG93Y2FzZS1hcHAtbWV0YWRhdGFcIik7XG5cbiAgaWYgKG1ldGFkYXRhRWxlbWVudCA9PT0gbnVsbCkge1xuICAgIC8vIGlmIHRoZXJlJ3Mgbm8gYXBwIG1ldGFkYXRhLCBzaG93IGFuZCBoaWRlIHRoZSBlbnRpcmUgd2VsbCBjb250YWluZXJcbiAgICAvLyB3aGVuIHRoZSBjb2RlIGNoYW5nZXMgcG9zaXRpb25cbiAgICB2YXIgd2VsbEVsZW1lbnQgPSAkKFwiI3Nob3djYXNlLXdlbGxcIik7XG5cbiAgICBpZiAoYWJvdmUpIHtcbiAgICAgIHdlbGxFbGVtZW50LmZhZGVPdXQoYW5pbWF0ZUNvZGVNcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdlbGxFbGVtZW50LmZhZGVJbihhbmltYXRlQ29kZU1zKTtcbiAgICB9XG4gIH0gLy8gaGlkZSB0aGUgbmV3IGVsZW1lbnQgYmVmb3JlIGRvaW5nIGFueXRoaW5nIHRvIGl0XG5cblxuICAkKG5ld0hvc3RFbGVtZW50KS5oaWRlKCk7XG4gICQoY3VycmVudEhvc3RFbGVtZW50KS5mYWRlT3V0KGFuaW1hdGVDb2RlTXMsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdGFicyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2hvd2Nhc2UtY29kZS10YWJzXCIpO1xuICAgIGN1cnJlbnRIb3N0RWxlbWVudC5yZW1vdmVDaGlsZCh0YWJzKTtcbiAgICBuZXdIb3N0RWxlbWVudC5hcHBlbmRDaGlsZCh0YWJzKTsgLy8gcmVtb3ZlIG9yIHNldCB0aGUgaGVpZ2h0IG9mIHRoZSBjb2RlXG5cbiAgICBpZiAoYWJvdmUpIHtcbiAgICAgIHNldENvZGVIZWlnaHRGcm9tRG9jSGVpZ2h0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2hvd2Nhc2UtY29kZS1jb250ZW50XCIpLnJlbW92ZUF0dHJpYnV0ZShcInN0eWxlXCIpO1xuICAgIH1cblxuICAgICQobmV3SG9zdEVsZW1lbnQpLmZhZGVJbihhbmltYXRlQ29kZU1zKTtcblxuICAgIGlmICghYWJvdmUpIHtcbiAgICAgIC8vIHJlbW92ZSB0aGUgYXBwbGllZCB3aWR0aCBhbmQgem9vbSBvbiB0aGUgYXBwIGNvbnRhaW5lciwgYW5kXG4gICAgICAvLyBzY3JvbGwgc21vb3RobHkgZG93biB0byB0aGUgY29kZSdzIG5ldyBob21lXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNob3djYXNlLWFwcC1jb250YWluZXJcIikucmVtb3ZlQXR0cmlidXRlKFwic3R5bGVcIik7XG4gICAgICBpZiAoYW5pbWF0ZSkgJChkb2N1bWVudC5ib2R5KS5hbmltYXRlKHtcbiAgICAgICAgc2Nyb2xsVG9wOiAkKG5ld0hvc3RFbGVtZW50KS5vZmZzZXQoKS50b3BcbiAgICAgIH0pO1xuICAgIH0gLy8gaWYgdGhlcmUncyBhIHJlYWRtZSwgbW92ZSBpdCBlaXRoZXIgYWxvbmdzaWRlIHRoZSBjb2RlIG9yIGJlbmVhdGhcbiAgICAvLyB0aGUgYXBwXG5cblxuICAgIHZhciByZWFkbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInJlYWRtZS1tZFwiKTtcblxuICAgIGlmIChyZWFkbWUgIT09IG51bGwpIHtcbiAgICAgIHJlYWRtZS5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKHJlYWRtZSk7XG5cbiAgICAgIGlmIChhYm92ZSkge1xuICAgICAgICBjdXJyZW50SG9zdEVsZW1lbnQuYXBwZW5kQ2hpbGQocmVhZG1lKTtcbiAgICAgICAgJChjdXJyZW50SG9zdEVsZW1lbnQpLmZhZGVJbihhbmltYXRlQ29kZU1zKTtcbiAgICAgIH0gZWxzZSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNob3djYXNlLWFwcC1tZXRhZGF0YVwiKS5hcHBlbmRDaGlsZChyZWFkbWUpO1xuICAgIH0gLy8gY2hhbmdlIHRoZSB0ZXh0IG9uIHRoZSB0b2dnbGUgYnV0dG9uIHRvIHJlZmxlY3QgdGhlIG5ldyBzdGF0ZVxuXG5cbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNob3djYXNlLWNvZGUtcG9zaXRpb24tdG9nZ2xlXCIpLmlubmVySFRNTCA9IGFib3ZlID8gJzxpIGNsYXNzPVwiZmEgZmEtbGV2ZWwtZG93blwiPjwvaT4gc2hvdyBiZWxvdycgOiAnPGkgY2xhc3M9XCJmYSBmYS1sZXZlbC11cFwiPjwvaT4gc2hvdyB3aXRoIGFwcCc7XG4gIH0pO1xuXG4gIGlmIChhYm92ZSkge1xuICAgICQoZG9jdW1lbnQuYm9keSkuYW5pbWF0ZSh7XG4gICAgICBzY3JvbGxUb3A6IDBcbiAgICB9LCBhbmltYXRlQ29kZU1zKTtcbiAgfVxuXG4gIGlzQ29kZUFib3ZlID0gYWJvdmU7XG4gIHNldEFwcENvZGVTeHNXaWR0aHMoYWJvdmUgJiYgYW5pbWF0ZSk7XG4gICQod2luZG93KS50cmlnZ2VyKFwicmVzaXplXCIpO1xufTtcblxuZnVuY3Rpb24gc2V0QXBwQ29kZVN4c1dpZHRocyhhbmltYXRlKSB7XG4gIHZhciBhcHBUYXJnZXRXaWR0aCA9IDk2MDtcbiAgdmFyIGFwcFdpZHRoID0gYXBwVGFyZ2V0V2lkdGg7XG4gIHZhciB6b29tID0gMS4wO1xuICB2YXIgdG90YWxXaWR0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2hvd2Nhc2UtYXBwLWNvZGVcIikub2Zmc2V0V2lkdGg7XG5cbiAgaWYgKHRvdGFsV2lkdGggLyAyID4gYXBwVGFyZ2V0V2lkdGgpIHtcbiAgICAvLyBJZiB0aGUgYXBwIGNhbiB1c2Ugb25seSBoYWxmIHRoZSBhdmFpbGFibGUgc3BhY2UgYW5kIHN0aWxsIG1lZXQgaXRzXG4gICAgLy8gdGFyZ2V0LCB0YWtlIGhhbGYgdGhlIGF2YWlsYWJsZSBzcGFjZS5cbiAgICBhcHBXaWR0aCA9IHRvdGFsV2lkdGggLyAyO1xuICB9IGVsc2UgaWYgKHRvdGFsV2lkdGggKiAwLjY2ID4gYXBwVGFyZ2V0V2lkdGgpIHtcbiAgICAvLyBJZiB0aGUgYXBwIGNhbiBtZWV0IGl0cyB0YXJnZXQgYnkgdGFraW5nIHVwIG1vcmUgc3BhY2UgKHVwIHRvIDY2JVxuICAgIC8vIG9mIGl0cyBjb250YWluZXIpLCB0YWtlIHVwIG1vcmUgc3BhY2UuXG4gICAgYXBwV2lkdGggPSA5NjA7XG4gIH0gZWxzZSB7XG4gICAgLy8gVGhlIHNwYWNlIGlzIHRvbyBuYXJyb3cgZm9yIHRoZSBhcHAgYW5kIGNvZGUgdG8gbGl2ZSBzaWRlLWJ5LXNpZGVcbiAgICAvLyBpbiBhIGZyaWVuZGx5IHdheS4gS2VlcCB0aGUgYXBwIGF0IDIvMyBvZiB0aGUgc3BhY2UgYnV0IHNjYWxlIGl0LlxuICAgIGFwcFdpZHRoID0gdG90YWxXaWR0aCAqIDAuNjY7XG4gICAgem9vbSA9IGFwcFdpZHRoIC8gYXBwVGFyZ2V0V2lkdGg7XG4gIH1cblxuICB2YXIgYXBwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzaG93Y2FzZS1hcHAtY29udGFpbmVyXCIpO1xuICAkKGFwcCkuYW5pbWF0ZSh7XG4gICAgd2lkdGg6IGFwcFdpZHRoICsgXCJweFwiLFxuICAgIHpvb206IHpvb20gKiAxMDAgKyBcIiVcIlxuICB9LCBhbmltYXRlID8gYW5pbWF0ZU1zIDogMCk7XG59XG5cbnZhciB0b2dnbGVDb2RlUG9zaXRpb24gPSBmdW5jdGlvbiB0b2dnbGVDb2RlUG9zaXRpb24oKSB7XG4gIHNldENvZGVQb3NpdGlvbighaXNDb2RlQWJvdmUsIHRydWUpO1xufTsgLy8gaWYgdGhlIGJyb3dzZXIgaXMgc2l6ZWQgdG8gd2lkZXIgdGhhbiAxMzUwcHgsIHNob3cgdGhlIGNvZGUgbmV4dCB0byB0aGVcbi8vIGFwcCBieSBkZWZhdWx0XG5cblxudmFyIHNldEluaXRpYWxDb2RlUG9zaXRpb24gPSBmdW5jdGlvbiBzZXRJbml0aWFsQ29kZVBvc2l0aW9uKCkge1xuICBpZiAoZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aCA+IDEzNTApIHtcbiAgICBzZXRDb2RlUG9zaXRpb24odHJ1ZSwgZmFsc2UpO1xuICB9XG59OyAvLyBtYWtlIHRoZSBjb2RlIHNjcm9sbGFibGUgdG8gYWJvdXQgdGhlIGhlaWdodCBvZiB0aGUgYnJvd3NlciwgbGVzcyBzcGFjZVxuLy8gZm9yIHRoZSB0YWJzXG5cblxuZnVuY3Rpb24gc2V0Q29kZUhlaWdodEZyb21Eb2NIZWlnaHQoKSB7XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2hvd2Nhc2UtY29kZS1jb250ZW50XCIpLnN0eWxlLmhlaWdodCA9ICQod2luZG93KS5oZWlnaHQoKSArIFwicHhcIjtcbn0gLy8gaWYgdGhlcmUncyBhIGJsb2NrIG9mIG1hcmtkb3duIGNvbnRlbnQsIHJlbmRlciBpdCB0byBIVE1MXG5cblxuZnVuY3Rpb24gcmVuZGVyTWFya2Rvd24oKSB7XG4gIHZhciBtZENvbnRlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNob3djYXNlLW1hcmtkb3duLWNvbnRlbnRcIik7XG5cbiAgaWYgKG1kQ29udGVudCAhPT0gbnVsbCkge1xuICAgIC8vIElFOCBwdXRzIHRoZSBjb250ZW50IG9mIDxzY3JpcHQ+IHRhZ3MgaW50byBpbm5lckhUTUwgYnV0XG4gICAgLy8gbm90IGlubmVyVGV4dFxuICAgIHZhciBjb250ZW50ID0gbWRDb250ZW50LmlubmVyVGV4dCB8fCBtZENvbnRlbnQuaW5uZXJIVE1MO1xuICAgIHZhciBzaG93ZG93bkNvbnZlcnRlciA9IHdpbmRvdy5TaG93ZG93bi5jb252ZXJ0ZXI7XG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyZWFkbWUtbWRcIikuaW5uZXJIVE1MID0gbmV3IHNob3dkb3duQ29udmVydGVyKCkubWFrZUh0bWwoY29udGVudCk7XG4gIH1cbn1cblxuJCh3aW5kb3cpLnJlc2l6ZShmdW5jdGlvbiAoKSB7XG4gIGlmIChpc0NvZGVBYm92ZSkge1xuICAgIHNldEFwcENvZGVTeHNXaWR0aHMoZmFsc2UpO1xuICAgIHNldENvZGVIZWlnaHRGcm9tRG9jSGVpZ2h0KCk7XG4gIH1cbn0pO1xud2luZG93LnRvZ2dsZUNvZGVQb3NpdGlvbiA9IHRvZ2dsZUNvZGVQb3NpdGlvbjtcbiQod2luZG93KS5vbihcImxvYWRcIiwgc2V0SW5pdGlhbENvZGVQb3NpdGlvbik7XG4kKHdpbmRvdykub24oXCJsb2FkXCIsIHJlbmRlck1hcmtkb3duKTtcbmlmICh3aW5kb3cuaGxqcykgd2luZG93LmhsanMuaW5pdEhpZ2hsaWdodGluZ09uTG9hZCgpO1xuZXhwb3J0IHt9OyIsICIndXNlIHN0cmljdCc7XG52YXIgZml4UmVnRXhwV2VsbEtub3duU3ltYm9sTG9naWMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZml4LXJlZ2V4cC13ZWxsLWtub3duLXN5bWJvbC1sb2dpYycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xudmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyJyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcbnZhciBhZHZhbmNlU3RyaW5nSW5kZXggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYWR2YW5jZS1zdHJpbmctaW5kZXgnKTtcbnZhciBnZXRTdWJzdGl0dXRpb24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LXN1YnN0aXR1dGlvbicpO1xudmFyIHJlZ0V4cEV4ZWMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMtYWJzdHJhY3QnKTtcblxudmFyIG1heCA9IE1hdGgubWF4O1xudmFyIG1pbiA9IE1hdGgubWluO1xuXG52YXIgbWF5YmVUb1N0cmluZyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/IGl0IDogU3RyaW5nKGl0KTtcbn07XG5cbi8vIEBAcmVwbGFjZSBsb2dpY1xuZml4UmVnRXhwV2VsbEtub3duU3ltYm9sTG9naWMoJ3JlcGxhY2UnLCAyLCBmdW5jdGlvbiAoUkVQTEFDRSwgbmF0aXZlUmVwbGFjZSwgbWF5YmVDYWxsTmF0aXZlLCByZWFzb24pIHtcbiAgdmFyIFJFR0VYUF9SRVBMQUNFX1NVQlNUSVRVVEVTX1VOREVGSU5FRF9DQVBUVVJFID0gcmVhc29uLlJFR0VYUF9SRVBMQUNFX1NVQlNUSVRVVEVTX1VOREVGSU5FRF9DQVBUVVJFO1xuICB2YXIgUkVQTEFDRV9LRUVQU18kMCA9IHJlYXNvbi5SRVBMQUNFX0tFRVBTXyQwO1xuICB2YXIgVU5TQUZFX1NVQlNUSVRVVEUgPSBSRUdFWFBfUkVQTEFDRV9TVUJTVElUVVRFU19VTkRFRklORURfQ0FQVFVSRSA/ICckJyA6ICckMCc7XG5cbiAgcmV0dXJuIFtcbiAgICAvLyBgU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlYCBtZXRob2RcbiAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUucmVwbGFjZVxuICAgIGZ1bmN0aW9uIHJlcGxhY2Uoc2VhcmNoVmFsdWUsIHJlcGxhY2VWYWx1ZSkge1xuICAgICAgdmFyIE8gPSByZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHRoaXMpO1xuICAgICAgdmFyIHJlcGxhY2VyID0gc2VhcmNoVmFsdWUgPT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogc2VhcmNoVmFsdWVbUkVQTEFDRV07XG4gICAgICByZXR1cm4gcmVwbGFjZXIgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IHJlcGxhY2VyLmNhbGwoc2VhcmNoVmFsdWUsIE8sIHJlcGxhY2VWYWx1ZSlcbiAgICAgICAgOiBuYXRpdmVSZXBsYWNlLmNhbGwoU3RyaW5nKE8pLCBzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlKTtcbiAgICB9LFxuICAgIC8vIGBSZWdFeHAucHJvdG90eXBlW0BAcmVwbGFjZV1gIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVnZXhwLnByb3RvdHlwZS1AQHJlcGxhY2VcbiAgICBmdW5jdGlvbiAocmVnZXhwLCByZXBsYWNlVmFsdWUpIHtcbiAgICAgIGlmIChcbiAgICAgICAgKCFSRUdFWFBfUkVQTEFDRV9TVUJTVElUVVRFU19VTkRFRklORURfQ0FQVFVSRSAmJiBSRVBMQUNFX0tFRVBTXyQwKSB8fFxuICAgICAgICAodHlwZW9mIHJlcGxhY2VWYWx1ZSA9PT0gJ3N0cmluZycgJiYgcmVwbGFjZVZhbHVlLmluZGV4T2YoVU5TQUZFX1NVQlNUSVRVVEUpID09PSAtMSlcbiAgICAgICkge1xuICAgICAgICB2YXIgcmVzID0gbWF5YmVDYWxsTmF0aXZlKG5hdGl2ZVJlcGxhY2UsIHJlZ2V4cCwgdGhpcywgcmVwbGFjZVZhbHVlKTtcbiAgICAgICAgaWYgKHJlcy5kb25lKSByZXR1cm4gcmVzLnZhbHVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgcnggPSBhbk9iamVjdChyZWdleHApO1xuICAgICAgdmFyIFMgPSBTdHJpbmcodGhpcyk7XG5cbiAgICAgIHZhciBmdW5jdGlvbmFsUmVwbGFjZSA9IHR5cGVvZiByZXBsYWNlVmFsdWUgPT09ICdmdW5jdGlvbic7XG4gICAgICBpZiAoIWZ1bmN0aW9uYWxSZXBsYWNlKSByZXBsYWNlVmFsdWUgPSBTdHJpbmcocmVwbGFjZVZhbHVlKTtcblxuICAgICAgdmFyIGdsb2JhbCA9IHJ4Lmdsb2JhbDtcbiAgICAgIGlmIChnbG9iYWwpIHtcbiAgICAgICAgdmFyIGZ1bGxVbmljb2RlID0gcngudW5pY29kZTtcbiAgICAgICAgcngubGFzdEluZGV4ID0gMDtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHRzID0gW107XG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gcmVnRXhwRXhlYyhyeCwgUyk7XG4gICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwpIGJyZWFrO1xuXG4gICAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgICAgICBpZiAoIWdsb2JhbCkgYnJlYWs7XG5cbiAgICAgICAgdmFyIG1hdGNoU3RyID0gU3RyaW5nKHJlc3VsdFswXSk7XG4gICAgICAgIGlmIChtYXRjaFN0ciA9PT0gJycpIHJ4Lmxhc3RJbmRleCA9IGFkdmFuY2VTdHJpbmdJbmRleChTLCB0b0xlbmd0aChyeC5sYXN0SW5kZXgpLCBmdWxsVW5pY29kZSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBhY2N1bXVsYXRlZFJlc3VsdCA9ICcnO1xuICAgICAgdmFyIG5leHRTb3VyY2VQb3NpdGlvbiA9IDA7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0c1tpXTtcblxuICAgICAgICB2YXIgbWF0Y2hlZCA9IFN0cmluZyhyZXN1bHRbMF0pO1xuICAgICAgICB2YXIgcG9zaXRpb24gPSBtYXgobWluKHRvSW50ZWdlcihyZXN1bHQuaW5kZXgpLCBTLmxlbmd0aCksIDApO1xuICAgICAgICB2YXIgY2FwdHVyZXMgPSBbXTtcbiAgICAgICAgLy8gTk9URTogVGhpcyBpcyBlcXVpdmFsZW50IHRvXG4gICAgICAgIC8vICAgY2FwdHVyZXMgPSByZXN1bHQuc2xpY2UoMSkubWFwKG1heWJlVG9TdHJpbmcpXG4gICAgICAgIC8vIGJ1dCBmb3Igc29tZSByZWFzb24gYG5hdGl2ZVNsaWNlLmNhbGwocmVzdWx0LCAxLCByZXN1bHQubGVuZ3RoKWAgKGNhbGxlZCBpblxuICAgICAgICAvLyB0aGUgc2xpY2UgcG9seWZpbGwgd2hlbiBzbGljaW5nIG5hdGl2ZSBhcnJheXMpIFwiZG9lc24ndCB3b3JrXCIgaW4gc2FmYXJpIDkgYW5kXG4gICAgICAgIC8vIGNhdXNlcyBhIGNyYXNoIChodHRwczovL3Bhc3RlYmluLmNvbS9OMjFRemVRQSkgd2hlbiB0cnlpbmcgdG8gZGVidWcgaXQuXG4gICAgICAgIGZvciAodmFyIGogPSAxOyBqIDwgcmVzdWx0Lmxlbmd0aDsgaisrKSBjYXB0dXJlcy5wdXNoKG1heWJlVG9TdHJpbmcocmVzdWx0W2pdKSk7XG4gICAgICAgIHZhciBuYW1lZENhcHR1cmVzID0gcmVzdWx0Lmdyb3VwcztcbiAgICAgICAgaWYgKGZ1bmN0aW9uYWxSZXBsYWNlKSB7XG4gICAgICAgICAgdmFyIHJlcGxhY2VyQXJncyA9IFttYXRjaGVkXS5jb25jYXQoY2FwdHVyZXMsIHBvc2l0aW9uLCBTKTtcbiAgICAgICAgICBpZiAobmFtZWRDYXB0dXJlcyAhPT0gdW5kZWZpbmVkKSByZXBsYWNlckFyZ3MucHVzaChuYW1lZENhcHR1cmVzKTtcbiAgICAgICAgICB2YXIgcmVwbGFjZW1lbnQgPSBTdHJpbmcocmVwbGFjZVZhbHVlLmFwcGx5KHVuZGVmaW5lZCwgcmVwbGFjZXJBcmdzKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVwbGFjZW1lbnQgPSBnZXRTdWJzdGl0dXRpb24obWF0Y2hlZCwgUywgcG9zaXRpb24sIGNhcHR1cmVzLCBuYW1lZENhcHR1cmVzLCByZXBsYWNlVmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwb3NpdGlvbiA+PSBuZXh0U291cmNlUG9zaXRpb24pIHtcbiAgICAgICAgICBhY2N1bXVsYXRlZFJlc3VsdCArPSBTLnNsaWNlKG5leHRTb3VyY2VQb3NpdGlvbiwgcG9zaXRpb24pICsgcmVwbGFjZW1lbnQ7XG4gICAgICAgICAgbmV4dFNvdXJjZVBvc2l0aW9uID0gcG9zaXRpb24gKyBtYXRjaGVkLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGFjY3VtdWxhdGVkUmVzdWx0ICsgUy5zbGljZShuZXh0U291cmNlUG9zaXRpb24pO1xuICAgIH1cbiAgXTtcbn0pO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs4dkJBQUEsMkJBQUksR0FBUSxTQUFVLEVBQUksQ0FDeEIsTUFBTyxJQUFNLEVBQUcsTUFBUSxNQUFRLEdBSWxDLEdBQU8sUUFFTCxFQUFNLE1BQU8sYUFBYyxVQUFZLGFBQ3ZDLEVBQU0sTUFBTyxTQUFVLFVBQVksU0FFbkMsRUFBTSxNQUFPLE9BQVEsVUFBWSxPQUNqQyxFQUFNLE1BQU8sU0FBVSxVQUFZLFNBRWxDLFVBQVksQ0FBRSxNQUFPLFVBQWMsU0FBUyxtQkNiL0MsMkJBQU8sUUFBVSxTQUFVLEVBQU0sQ0FDL0IsR0FBSSxDQUNGLE1BQU8sQ0FBQyxDQUFDLFVBQ0YsRUFBUCxDQUNBLE1BQU8sT0NKWCwyQkFBSSxJQUFRLElBR1osR0FBTyxRQUFVLENBQUMsR0FBTSxVQUFZLENBRWxDLE1BQU8sUUFBTyxlQUFlLEdBQUksRUFBRyxDQUFFLElBQUss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

shiny/www/shared/shiny-showcase.css METASEP
/*! shiny 1.7.1.9001 | (c) 2012-2021 RStudio, PBC. | License: GPL-3 | file LICENSE */
#showcase-well{border-radius:0}.shiny-code{background-color:#fff;margin-bottom:0}.shiny-code code{font-family:Menlo,Consolas,"Courier New",monospace}.shiny-code-container{margin-top:20px;clear:both}.shiny-code-container h3{display:inline;margin-right:15px}.showcase-header{font-size:16px;font-weight:normal}.showcase-code-link{text-align:right;padding:15px}#showcase-app-container{vertical-align:top}#showcase-code-tabs{margin-right:15px}#showcase-code-tabs pre{border:none;line-height:1em}#showcase-code-tabs .nav{margin-bottom:0}#showcase-code-tabs ul{margin-bottom:0}#showcase-code-tabs .tab-content{border-style:solid;border-color:#e5e5e5;border-width:0px 1px 1px 1px;overflow:auto;border-bottom-right-radius:4px;border-bottom-left-radius:4px}#showcase-app-code{width:100%}#showcase-code-position-toggle{float:right}#showcase-sxs-code{padding-top:20px;vertical-align:top}.showcase-code-license{display:block;text-align:right}#showcase-code-content pre{background-color:#fff}

shiny/www/shared/shiny-autoreload.js METASEP
/*! shiny 1.7.1.9001 | (c) 2012-2021 RStudio, PBC. | License: GPL-3 | file LICENSE */
(function(){var t="ws:";window.location.protocol==="https:"&&(t="wss:");var o=window.location.pathname;/\/$/.test(o)||(o+="/");o+="autoreload/";var n=new WebSocket(t+"//"+window.location.host+o);n.onmessage=function(a){a.data==="autoreload"&&window.location.reload()};})();
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjdHMvZXh0cmFzL3NoaW55LWF1dG9yZWxvYWQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIGVzbGludC1kaXNhYmxlIHVuaWNvcm4vZmlsZW5hbWUtY2FzZSAqL1xudmFyIHByb3RvY29sID0gXCJ3czpcIjtcbmlmICh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgPT09IFwiaHR0cHM6XCIpIHByb3RvY29sID0gXCJ3c3M6XCI7XG52YXIgZGVmYXVsdFBhdGggPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7XG5pZiAoIS9cXC8kLy50ZXN0KGRlZmF1bHRQYXRoKSkgZGVmYXVsdFBhdGggKz0gXCIvXCI7XG5kZWZhdWx0UGF0aCArPSBcImF1dG9yZWxvYWQvXCI7XG52YXIgd3MgPSBuZXcgV2ViU29ja2V0KHByb3RvY29sICsgXCIvL1wiICsgd2luZG93LmxvY2F0aW9uLmhvc3QgKyBkZWZhdWx0UGF0aCk7XG5cbndzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldmVudCkge1xuICBpZiAoZXZlbnQuZGF0YSA9PT0gXCJhdXRvcmVsb2FkXCIpIHtcbiAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gIH1cbn07XG5cbmV4cG9ydCB7fTsiXSwKICAibWFwcGluZ3MiOiAiO1lBQ0EsR0FBSSxHQUFXLE1BQ2YsQUFBSSxPQUFPLFNBQVMsV0FBYSxVQUFVLEdBQVcsUUFDdEQsR0FBSSxHQUFjLE9BQU8sU0FBUyxTQUNsQyxBQUFLLE1BQU0sS0FBSyxJQUFjLElBQWUsS0FDN0MsR0FBZSxjQUNmLEdBQUksR0FBSyxHQUFJLFdBQVUsRUFBVyxLQUFPLE9BQU8sU0FBUyxLQUFPLEdBRWhFLEVBQUcsVUFBWSxTQUFVLEVBQU8sQ0FDOUIsQUFBSSxFQUFNLE9BQVMsY0FDakIsT0FBTyxTQUFTIiwKICAibmFtZXMiOiBbXQp9Cg==

shiny/py.typed METASEP

scripts/htmlDependencies.R METASEP
#!/usr/bin/env Rscript

library(htmltools)
library(bslib)

www <- file.path(getwd(), "shiny", "www")
unlink(www, recursive = TRUE)
dir.create(www)

# Copy over shiny's www/shared directory
withr::with_tempdir({
  cmd <- paste("git clone --depth 1 --branch main https://github.com/rstudio/shiny")
  system(cmd)
  file.copy(
    "shiny/inst/www/shared",
    www, recursive = TRUE
  )
})

# Don't need legacy (hopefully)
unlink(file.path(www, "shared", "legacy"), recursive = TRUE)

# jQuery will come in via bslib (below)
unlink(Sys.glob(file.path(www, "shared", "jquery*")))

# Upgrade to Bootstrap 5 by default
deps <- bs_theme_dependencies(bs_theme(version = 5))
withr::with_options(
  list(htmltools.dir.version = FALSE),
  lapply(deps, copyDependencyToDir, "shiny/www/shared")
)

# For JSX based nav() implementation
bslib <- file.path(www, "shared", "bslib")
dir.create(bslib)
withr::with_tempdir({
  cmd <- paste("git clone --depth 1 --branch jsx https://github.com/rstudio/bslib")
  system(cmd)
  file.copy(
    "bslib/inst/navs/dist",
    bslib, recursive = TRUE
  )
})

tests/test_utils_async.py METASEP
"""Tests for `shiny.utils` async-related functions."""

import pytest
import asyncio
from typing import Iterator, List

from shiny.utils import run_coro_sync


def range_sync(n: int) -> Iterator[int]:
    """
    An implementation of `range()` which uses `yield`, but doesn't actually
    give up control to the event loop.
    """
    num = 0
    while num < n:
        yield num
        num += 1


async def make_list_sync(n: int) -> List[int]:
    """
    An `async` function that is in fact synchronous; it does not actually give
    up control.
    """
    x: list[int] = []
    for i in range_sync(n):
        x.append(i)
    return x


async def make_list_async(n: int) -> List[int]:
    """An `async` function that gives up control."""
    x: list[int] = []
    for i in range_sync(n):
        await asyncio.sleep(0)
        x.append(i)
    return x


def test_run_coro_sync():
    # Running a coroutine that is in fact synchronous works fine.
    res = run_coro_sync(make_list_sync(1))
    assert res == [0]

    res = run_coro_sync(make_list_sync(3))
    assert res == [0, 1, 2]

    # Should error because the asyncio.sleep() gives up control.
    with pytest.raises(RuntimeError):
        run_coro_sync(make_list_async(1))

    with pytest.raises(RuntimeError):
        run_coro_sync(make_list_async(3))

    # Same with a direct call to asyncio.sleep()
    with pytest.raises(RuntimeError):
        run_coro_sync(asyncio.sleep(0))

    with pytest.raises(RuntimeError):
        run_coro_sync(asyncio.sleep(0.1))


def test_run_coro_async():
    async def async_main():
        # awaited calls to the in-fact-synchronous function are OK.
        res = await make_list_sync(3)
        assert res == [0, 1, 2]

        # awaited calls to the async function are OK.
        res = await make_list_async(3)
        assert res == [0, 1, 2]

        await asyncio.sleep(0)

        # Calling run_coro_sync() should be the same as when called normally
        # (from a regular function, not an async function run by asyncio.run()).
        res = run_coro_sync(make_list_sync(3))
        assert res == [0, 1, 2]

        with pytest.raises(RuntimeError):
            run_coro_sync(make_list_async(3))
        with pytest.raises(RuntimeError):
            run_coro_sync(asyncio.sleep(0))

    asyncio.run(async_main())


def test_run_coro_sync_type_check():
    # Should raise an error if passed a regular generator (as opposed to a
    # coroutine object).
    with pytest.raises(TypeError):
        run_coro_sync(range_sync(0))  # type: ignore


def test_async_generator():
    # run_coro_sync() can't run async generators, but it can run async functions
    # which call async generators.

    # An async generator
    async def async_gen_range(n: int):
        for i in range(n):
            yield i

    # An async function which uses the generator
    async def main(n: int):
        x: list[int] = []
        async for i in async_gen_range(n):
            x.append(i)
        return x

    # Running the async function works fine.
    res = run_coro_sync(main(3))
    assert res == [0, 1, 2]

    # Attempting to run the async generator results in an error, because it
    # doesn't return a coroutine object.
    with pytest.raises(TypeError):
        run_coro_sync(async_gen_range(3))  # type: ignore


def test_create_task():
    # Should be OK to call create_task().
    async def create_task_wrapper():
        async def inner():
            asyncio.create_task(make_list_async(3))

        run_coro_sync(inner())

    asyncio.run(create_task_wrapper())

    # Should not be OK to await a task, because it doesn't complete immediately.
    async def create_task_wrapper2():
        async def inner():
            await asyncio.create_task(make_list_async(3))

        run_coro_sync(inner())

    with pytest.raises(RuntimeError):
        asyncio.run(create_task_wrapper2())

tests/test_shinysession.py METASEP
"""Tests for `shiny.shinysession`."""

import pytest

from shiny import *


def test_require_active_session_error_messages():
    # _require_active_session() should report the caller's name when an error occurs.
    with pytest.raises(RuntimeError, match=r"Progress\(\) must be called"):
        Progress()

    with pytest.raises(RuntimeError, match=r"notification_remove\(\) must be called.*"):
        notification_remove("abc")

tests/test_reactives.py METASEP
"""Tests for `shiny.reactives` and `shiny.reactcore`."""

import pytest
import asyncio

import shiny.reactcore as reactcore
from shiny.reactives import *


def test_flush_runs_newly_invalidated():
    """
    Make sure that a flush will also run any reactives that were invalidated
    during the flush.
    """

    v1 = ReactiveVal(1)
    v2 = ReactiveVal(2)

    v2_result = None
    # In practice, on the first flush, Observers run in the order that they were
    # created. Our test checks that o2 runs _after_ o1.
    @observe()
    def o2():
        nonlocal v2_result
        v2_result = v2()

    @observe()
    def o1():
        v2(v1())

    asyncio.run(reactcore.flush())
    assert v2_result == 1
    assert o2._exec_count == 2
    assert o1._exec_count == 1


def test_flush_runs_newly_invalidated_async():
    """
    Make sure that a flush will also run any reactives that were invalidated
    during the flush. (Same as previous test, but async.)
    """

    v1 = ReactiveVal(1)
    v2 = ReactiveVal(2)

    v2_result = None
    # In practice, on the first flush, Observers run in the order that they were
    # created. Our test checks that o2 runs _after_ o1.
    @observe_async()
    async def o2():
        nonlocal v2_result
        v2_result = v2()

    @observe_async()
    async def o1():
        v2(v1())

    asyncio.run(reactcore.flush())
    assert v2_result == 1
    assert o2._exec_count == 2
    assert o1._exec_count == 1


# ======================================================================
# Setting ReactiveVal to same value doesn't invalidate downstream
# ======================================================================
def test_reactive_val_same_no_invalidate():
    v = ReactiveVal(1)

    @observe()
    def o():
        v()

    asyncio.run(reactcore.flush())
    assert o._exec_count == 1

    v(1)
    asyncio.run(reactcore.flush())
    assert o._exec_count == 1


test_reactive_val_same_no_invalidate()

# ======================================================================
# Recursive calls to reactives
# ======================================================================
def test_recursive_reactive():
    v = ReactiveVal(5)

    @reactive()
    def r():
        if v() == 0:
            return 0
        v(v() - 1)
        r()

    @observe()
    def o():
        r()

    asyncio.run(reactcore.flush())
    assert o._exec_count == 2
    assert r._exec_count == 6
    assert isolate(v) == 0


def test_recursive_reactive_async():
    v = ReactiveVal(5)

    @reactive_async()
    async def r():
        if v() == 0:
            return 0
        v(v() - 1)
        await r()

    @observe_async()
    async def o():
        await r()

    asyncio.run(reactcore.flush())
    assert o._exec_count == 2
    assert r._exec_count == 6
    assert isolate(v) == 0


# ======================================================================
# Concurrent/sequential async
# ======================================================================
def test_async_concurrent():
    x: ReactiveVal[int] = ReactiveVal(1)
    results: list[int] = []
    exec_order: list[str] = []

    async def react_chain(n: int):
        @reactive_async()
        async def r():
            nonlocal exec_order
            exec_order.append(f"r{n}-1")
            await asyncio.sleep(0)
            exec_order.append(f"r{n}-2")
            return x() + 10

        @observe_async()
        async def _():
            nonlocal exec_order
            exec_order.append(f"o{n}-1")
            await asyncio.sleep(0)
            exec_order.append(f"o{n}-2")
            val = await r()
            exec_order.append(f"o{n}-3")
            results.append(val + n * 100)

    async def go():
        await asyncio.gather(react_chain(1), react_chain(2))

        await reactcore.flush()

        x(5)
        await reactcore.flush()

    asyncio.run(go())

    assert results == [111, 211, 115, 215]

    # fmt: off
    # This is the order of execution if async observers are run with separate
    # (interleaved) tasks. When it hits an `asyncio.sleep(0)`, it will yield
    # control and then the other observer in the other task will run.
    assert exec_order == [
        'o1-1', 'o2-1',
        'o1-2', 'o2-2',
        'r1-1', 'r2-1',
        'r1-2', 'r2-2',
        'o1-3', 'o2-3',
        'o1-1', 'o2-1',
        'o1-2', 'o2-2',
        'r1-1', 'r2-1',
        'r1-2', 'r2-2',
        'o1-3', 'o2-3'
    ]
    # fmt: on


def test_async_sequential():
    # Same as previous, but with a sequential flush, as in
    # `flush(concurrent=False)`.
    x: ReactiveVal[int] = ReactiveVal(1)
    results: list[int] = []
    exec_order: list[str] = []

    async def react_chain(n: int):
        @reactive_async()
        async def r():
            nonlocal exec_order
            exec_order.append(f"r{n}-1")
            await asyncio.sleep(0)
            exec_order.append(f"r{n}-2")
            return x() + 10

        @observe_async()
        async def _():
            nonlocal exec_order
            exec_order.append(f"o{n}-1")
            await asyncio.sleep(0)
            exec_order.append(f"o{n}-2")
            val = await r()
            exec_order.append(f"o{n}-3")
            results.append(val + n * 100)

    async def go():
        await asyncio.gather(react_chain(1), react_chain(2))

        await reactcore.flush(concurrent=False)

        x(5)
        await reactcore.flush(concurrent=False)

    asyncio.run(go())

    assert results == [111, 211, 115, 215]

    # This is the order of execution if the async observers are run
    # sequentially. The `asyncio.sleep(0)` still yields control, but since there
    # are no other observers scheduled, it will simply resume at the same point.
    # fmt: off
    assert exec_order == [
        'o1-1', 'o1-2', 'r1-1', 'r1-2', 'o1-3',
        'o2-1', 'o2-2', 'r2-1', 'r2-2', 'o2-3',
        'o1-1', 'o1-2', 'r1-1', 'r1-2', 'o1-3',
        'o2-1', 'o2-2', 'r2-1', 'r2-2', 'o2-3'
    ]
    # fmt: on


# ======================================================================
# isolate()
# ======================================================================
def test_isolate_basic_value():
    # isolate() returns basic value
    assert isolate(lambda: 123) == 123
    assert isolate(lambda: None) is None


def test_isolate_basic_without_context():
    # isolate() works with Reactive and ReactiveVal; allows executing without a
    # reactive context.
    v = ReactiveVal(1)

    @reactive()
    def r():
        return v() + 10

    def get_r():
        return r()

    assert isolate(lambda: v()) == 1
    assert isolate(v) == 1
    assert isolate(lambda: r()) == 11
    assert isolate(r) == 11
    assert isolate(get_r) == 11


def test_isolate_prevents_dependency():
    v = ReactiveVal(1)

    @reactive()
    def r():
        return v() + 10

    v_dep = ReactiveVal(1)  # Use this only for invalidating the observer
    o_val = None

    @observe()
    def o():
        nonlocal o_val
        v_dep()
        o_val = isolate(lambda: r())

    asyncio.run(reactcore.flush())
    assert o_val == 11

    # Changing v() shouldn't invalidate o
    v(2)
    asyncio.run(reactcore.flush())
    assert o_val == 11
    assert o._exec_count == 1

    # v_dep() should invalidate the observer
    v_dep(2)
    asyncio.run(reactcore.flush())
    assert o_val == 12
    assert o._exec_count == 2


# ======================================================================
# isolate_async()
# ======================================================================
def test_isolate_async_basic_value():
    async def f():
        return 123

    async def go():
        assert await isolate_async(f) == 123

    asyncio.run(go())


def test_isolate_async_basic_without_context():
    # isolate_async() works with Reactive and ReactiveVal; allows executing
    # without a reactive context.
    v = ReactiveVal(1)

    @reactive_async()
    async def r():
        return v() + 10

    async def get_r():
        return await r()

    async def go():
        assert await isolate_async(r) == 11
        assert await isolate_async(get_r) == 11

    asyncio.run(go())


def test_isolate_async_prevents_dependency():
    v = ReactiveVal(1)

    @reactive_async()
    async def r():
        return v() + 10

    v_dep = ReactiveVal(1)  # Use this only for invalidating the observer
    o_val = None

    @observe_async()
    async def o():
        nonlocal o_val
        v_dep()
        o_val = await isolate_async(r)

    asyncio.run(reactcore.flush())
    assert o_val == 11

    # Changing v() shouldn't invalidate o
    v(2)
    asyncio.run(reactcore.flush())
    assert o_val == 11
    assert o._exec_count == 1

    # v_dep() should invalidate the observer
    v_dep(2)
    asyncio.run(reactcore.flush())
    assert o_val == 12
    assert o._exec_count == 2


# ======================================================================
# Priority for observers
# ======================================================================
def test_observer_priority():
    v = ReactiveVal(1)
    results: list[int] = []

    @observe(priority=1)
    def o1():
        nonlocal results
        v()
        results.append(1)

    @observe(priority=2)
    def o2():
        nonlocal results
        v()
        results.append(2)

    @observe(priority=1)
    def o3():
        nonlocal results
        v()
        results.append(3)

    asyncio.run(reactcore.flush())
    assert results == [2, 1, 3]

    # Add another observer with priority 2. Only this one will run (until we
    # invalidate others by changing v).
    @observe(priority=2)
    def o4():
        nonlocal results
        v()
        results.append(4)

    results.clear()
    asyncio.run(reactcore.flush())
    assert results == [4]

    # Change v and run again, to make sure results are stable
    results.clear()
    v(2)
    asyncio.run(reactcore.flush())
    assert results == [2, 4, 1, 3]

    results.clear()
    v(3)
    asyncio.run(reactcore.flush())
    assert results == [2, 4, 1, 3]


# Same as previous, but with async
def test_observer_async_priority():
    v = ReactiveVal(1)
    results: list[int] = []

    @observe_async(priority=1)
    async def o1():
        nonlocal results
        v()
        results.append(1)

    @observe_async(priority=2)
    async def o2():
        nonlocal results
        v()
        results.append(2)

    @observe_async(priority=1)
    async def o3():
        nonlocal results
        v()
        results.append(3)

    asyncio.run(reactcore.flush())
    assert results == [2, 1, 3]

    # Add another observer with priority 2. Only this one will run (until we
    # invalidate others by changing v).
    @observe_async(priority=2)
    async def o4():
        nonlocal results
        v()
        results.append(4)

    results.clear()
    asyncio.run(reactcore.flush())
    assert results == [4]

    # Change v and run again, to make sure results are stable
    results.clear()
    v(2)
    asyncio.run(reactcore.flush())
    assert results == [2, 4, 1, 3]

    results.clear()
    v(3)
    asyncio.run(reactcore.flush())
    assert results == [2, 4, 1, 3]


# ======================================================================
# Destroying observers
# ======================================================================
def test_observer_destroy():
    v = ReactiveVal(1)
    results: list[int] = []

    @observe()
    def o1():
        nonlocal results
        v()
        results.append(1)

    asyncio.run(reactcore.flush())
    assert results == [1]

    v(2)
    o1.destroy()
    asyncio.run(reactcore.flush())
    assert results == [1]

    # Same as above, but destroy before running first time
    v = ReactiveVal(1)
    results: list[int] = []

    @observe()
    def o2():
        nonlocal results
        v()
        results.append(1)

    o2.destroy()
    asyncio.run(reactcore.flush())
    assert results == []

tests/test_datastructures.py METASEP
"""Tests for `shiny.datastructures`."""

from shiny.datastructures import PriorityQueueFIFO


def test_priority_queue_fifo():
    q: PriorityQueueFIFO[str] = PriorityQueueFIFO()

    # The random-seeming items are here to ensure that the value of the items
    # do not affect the order that they go into the queue.
    q.put(1, "9")
    q.put(1, "8")
    q.put(2, "6")
    q.put(2, "7")

    assert q.get() == "6"
    assert q.get() == "7"
    assert q.get() == "9"
    assert q.get() == "8"

tests/__init__.py METASEP
"""Unit test package for shiny."""

shiny/utils.py METASEP
from typing import (
    TYPE_CHECKING,
    Callable,
    Awaitable,
    TypeVar,
    Optional,
    List,
    Dict,
    Any,
)
import os
import tempfile
import importlib
import inspect
import secrets

from htmltools import TagList, TagChildArg

# ==============================================================================
# Misc utility functions
# ==============================================================================
def rand_hex(bytes: int) -> str:
    """
    Creates a random hexadecimal string of size `bytes`. The length in
    characters will be bytes*2.
    """
    format_str = "{{:0{}x}}".format(bytes * 2)
    return format_str.format(secrets.randbits(bytes * 8))


# ==============================================================================
# Async-related functions
# ==============================================================================

T = TypeVar("T")


def wrap_async(fn: Callable[[], T]) -> Callable[[], Awaitable[T]]:
    """
    Wrap a synchronous function that returns T, and return an async function
    that wraps the original function.
    """

    async def fn_async() -> T:
        return fn()

    return fn_async


def is_async_callable(obj: object) -> bool:
    """
    Returns True if `obj` is an `async def` function, or if it's an object with
    a `__call__` method which is an `async def` function.
    """
    if inspect.iscoroutinefunction(obj):
        return True
    if hasattr(obj, "__call__"):
        if inspect.iscoroutinefunction(obj.__call__):  # type: ignore
            return True

    return False


# See https://stackoverflow.com/a/59780868/412655 for an excellent explanation
# of how this stuff works.
# For a more in-depth explanation, see
# https://snarky.ca/how-the-heck-does-async-await-work-in-python-3-5/.
def run_coro_sync(coro: Awaitable[T]) -> T:
    """
    Run a coroutine that is in fact synchronous. Given a coroutine (which is
    returned by calling an `async def` function), this function will run the
    coroutine for one iteration. If the coroutine completes, then return the
    value. If it does not complete, then it will throw a `RuntimeError`.

    What it means to be "in fact synchronous": the coroutine must not yield
    control to the event loop. A coroutine may have an `await` expression in it,
    and that may call another function that has an `await`, but the chain will
    only yield control if a `yield` statement bubbles through `await`s all the
    way up. For example, `await asyncio.sleep(0)` will have a `yield` which
    bubbles up to the next level. Note that a `yield` in a generator used the
    regular way (not with `await`) will not bubble up, since it is not awaited
    on.
    """
    if not inspect.iscoroutine(coro):
        raise TypeError("run_coro_sync requires a Coroutine object.")

    try:
        coro.send(None)
    except StopIteration as e:
        return e.value

    raise RuntimeError(
        "async function yielded control; it did not finish in one iteration."
    )


# ==============================================================================
# System-related functions
# ==============================================================================

# Return directory that a package lives in.
def package_dir(package: str) -> str:
    with tempfile.TemporaryDirectory():
        pkg_file = importlib.import_module(".", package=package).__file__
        return os.path.dirname(pkg_file)

shiny/types.py METASEP
# Sentinel value - indicates a missing value in a function call.
class MISSING_TYPE:
    pass


MISSING = MISSING_TYPE()

shiny/shinysession.py METASEP
__all__ = (
    "ShinySession",
    "Outputs",
    "get_current_session",
    "session_context",
)

import sys
import json
import re
import asyncio
import warnings
import typing
import mimetypes
from contextvars import ContextVar, Token
from contextlib import contextmanager
from typing import (
    TYPE_CHECKING,
    Callable,
    Optional,
    Union,
    Awaitable,
    Dict,
    List,
    Any,
)
from starlette.requests import Request

from starlette.responses import Response, HTMLResponse, PlainTextResponse

if sys.version_info >= (3, 8):
    from typing import TypedDict
else:
    from typing_extensions import TypedDict

if TYPE_CHECKING:
    from .shinyapp import ShinyApp

from htmltools import TagChildArg, TagList, HTMLDependency

from .reactives import ReactiveValues, Observer, ObserverAsync
from .connmanager import Connection, ConnectionClosed
from . import render
from . import utils
from .fileupload import FileInfo, FileUploadManager
from .input_handlers import input_handlers

# This cast is necessary because if the type checker thinks that if
# "tag" isn't in `message`, then it's not a ClientMessage object.
# This will be fixable when TypedDict items can be marked as
# potentially missing, in Python 3.10, with PEP 655.
class ClientMessage(TypedDict):
    method: str


class ClientMessageInit(ClientMessage):
    data: Dict[str, object]


class ClientMessageUpdate(ClientMessage):
    data: Dict[str, object]


# For messages where "method" is something other than "init" or "update".
class ClientMessageOther(ClientMessage):
    args: List[object]
    tag: int


class ShinySession:
    # ==========================================================================
    # Initialization
    # ==========================================================================
    def __init__(
        self, app: "ShinyApp", id: str, conn: Connection, debug: bool = False
    ) -> None:
        self.app: ShinyApp = app
        self.id: str = id
        self._conn: Connection = conn
        self._debug: bool = debug

        self.input: ReactiveValues = ReactiveValues()
        self.output: Outputs = Outputs(self)

        self._message_queue_in: asyncio.Queue[Optional[ClientMessage]] = asyncio.Queue()
        self._message_queue_out: List[Dict[str, object]] = []

        self._message_handlers: Dict[
            str, Callable[..., Awaitable[object]]
        ] = self._create_message_handlers()
        self._file_upload_manager: FileUploadManager = FileUploadManager()
        self._on_ended_callbacks: List[Callable[[], None]] = []
        self._has_run_session_end_tasks: bool = False

        self._register_session_end_callbacks()

        with session_context(self):
            self.app.server(self)

    def _register_session_end_callbacks(self) -> None:
        # This is to be called from the initialization. It registers functions
        # that are called when a session ends.

        # Clear file upload directories, if present
        self._on_ended_callbacks.append(self._file_upload_manager.rm_upload_dir)

    def _run_session_end_tasks(self) -> None:
        if self._has_run_session_end_tasks:
            return
        self._has_run_session_end_tasks = True

        for cb in self._on_ended_callbacks:
            try:
                cb()
            except Exception as e:
                print("Error in session on_ended callback: " + str(e))

        self.app.remove_session(self)

    async def close(self, code: int = 1001) -> None:
        await self._conn.close(code, None)
        self._run_session_end_tasks()

    async def run(self) -> None:
        await self.send_message(
            {"config": {"workerId": "", "sessionId": str(self.id), "user": None}}
        )

        try:
            while True:
                message: str = await self._conn.receive()
                if self._debug:
                    print("RECV: " + message)

                try:
                    message_obj = json.loads(message)
                except json.JSONDecodeError:
                    print("ERROR: Invalid JSON message")
                    continue

                if "method" not in message_obj:
                    self._send_error_response("Message does not contain 'method'.")
                    return

                if message_obj["method"] == "init":
                    message_obj = typing.cast(ClientMessageInit, message_obj)
                    self._manage_inputs(message_obj["data"])

                elif message_obj["method"] == "update":
                    message_obj = typing.cast(ClientMessageUpdate, message_obj)
                    self._manage_inputs(message_obj["data"])

                else:
                    if "tag" not in message_obj:
                        warnings.warn(
                            "Cannot dispatch message with missing 'tag'; method: "
                            + message_obj["method"]
                        )
                        return
                    if "args" not in message_obj:
                        warnings.warn(
                            "Cannot dispatch message with missing 'args'; method: "
                            + message_obj["method"]
                        )
                        return

                    message_obj = typing.cast(ClientMessageOther, message_obj)
                    await self._dispatch(message_obj)

                self.request_flush()

                await self.app.flush_pending_sessions()

        except ConnectionClosed:
            self._run_session_end_tasks()

    def _manage_inputs(self, data: Dict[str, object]) -> None:
        for (key, val) in data.items():
            keys = key.split(":")
            if len(keys) > 2:
                raise ValueError(
                    "Input name+type is not allowed to contain more than one ':' -- "
                    + key
                )
            if len(keys) == 2:
                val = input_handlers.process_value(keys[1], val, keys[0], self)

            self.input[keys[0]] = val

    # ==========================================================================
    # Message handlers
    # ==========================================================================

    async def _dispatch(self, message: ClientMessageOther) -> None:
        try:
            func = self._message_handlers[message["method"]]
        except AttributeError:
            self._send_error_response("Unknown method: " + message["method"])
            return

        try:
            # TODO: handle `blobs`
            value: object = await func(*message["args"])
        except Exception as e:
            self._send_error_response("Error: " + str(e))
            return

        await self._send_response(message, value)

    async def _send_response(self, message: ClientMessageOther, value: object) -> None:
        await self.send_message({"response": {"tag": message["tag"], "value": value}})

    # This is called during __init__.
    def _create_message_handlers(self) -> Dict[str, Callable[..., Awaitable[object]]]:
        async def uploadInit(file_infos: List[FileInfo]) -> Dict[str, object]:
            with session_context(self):
                if self._debug:
                    print("Upload init: " + str(file_infos))

                # TODO: Don't alter message in place?
                for fi in file_infos:
                    if fi["type"] == "":
                        type = mimetypes.guess_type(fi["name"])[0]
                        fi["type"] = type if type else "application/octet-stream"

                job_id = self._file_upload_manager.create_upload_operation(file_infos)
                worker_id = ""
                return {
                    "jobId": job_id,
                    "uploadUrl": f"session/{self.id}/upload/{job_id}?w={worker_id}",
                }

        async def uploadEnd(job_id: str, input_id: str) -> None:
            upload_op = self._file_upload_manager.get_upload_operation(job_id)
            if upload_op is None:
                warnings.warn(
                    "Received uploadEnd message for non-existent upload operation."
                )
                return None
            file_data = upload_op.finish()
            self.input[input_id] = file_data
            # Explicitly return None to signal that the message was handled.
            return None

        return {
            "uploadInit": uploadInit,
            "uploadEnd": uploadEnd,
        }

    # ==========================================================================
    # Handling /session/{session_id}/{subpath} requests
    # ==========================================================================
    async def handle_request(self, request: Request) -> Response:
        subpath: str = request.path_params["subpath"]  # type: ignore
        matches = re.search("^([a-z]+)/(.*)$", subpath)

        if not matches:
            return HTMLResponse("<h1>Bad Request</h1>", 400)

        if matches[1] == "upload" and request.method == "POST":
            # check that upload operation exists
            job_id = matches[2]
            upload_op = self._file_upload_manager.get_upload_operation(job_id)
            if not upload_op:
                return HTMLResponse("<h1>Bad Request</h1>", 400)

            # The FileUploadOperation can have multiple files; each one will
            # have a separate POST request. Each call to  `with upload_op` will
            # open up each file (in sequence) for writing.
            with upload_op:
                async for chunk in request.stream():
                    upload_op.write_chunk(chunk)

            return PlainTextResponse("OK", 200)

        return HTMLResponse("<h1>Not Found</h1>", 404)

    # ==========================================================================
    # Outbound message handling
    # ==========================================================================
    def add_message_out(self, message: Dict[str, object]) -> None:
        self._message_queue_out.append(message)

    def get_messages_out(self) -> List[Dict[str, object]]:
        return self._message_queue_out

    def clear_messages_out(self) -> None:
        self._message_queue_out.clear()

    async def send_message(self, message: Dict[str, object]) -> None:
        message_str: str = json.dumps(message) + "\n"
        if self._debug:
            print(
                "SEND: "
                + re.sub("(?m)base64,[a-zA-Z0-9+/=]+", "[base64 data]", message_str),
                end="",
            )
        await self._conn.send(json.dumps(message))

    def _send_error_response(self, message_str: str) -> None:
        print("_send_error_response: " + message_str)
        pass

    # ==========================================================================
    # Flush
    # ==========================================================================
    def request_flush(self) -> None:
        self.app.request_flush(self)

    async def flush(self) -> None:
        values: Dict[str, object] = {}

        for value in self.get_messages_out():
            values.update(value)

        message: Dict[str, object] = {
            "errors": {},
            "values": values,
            "inputMessages": [],
        }

        try:
            await self.send_message(message)
        finally:
            self.clear_messages_out()

    # ==========================================================================
    # On session ended
    # ==========================================================================
    def on_ended(self, cb: Callable[[], None]) -> None:
        self._on_ended_callbacks.append(cb)

    # ==========================================================================
    # Misc
    # ==========================================================================
    async def unhandled_error(self, e: Exception) -> None:
        print("Unhandled error: " + str(e))
        await self.close()


class Outputs:
    def __init__(self, session: ShinySession) -> None:
        self._output_obervers: Dict[str, Observer] = {}
        self._session: ShinySession = session

    def __call__(
        self, name: str
    ) -> Callable[[Union[Callable[[], object], render.RenderFunction]], None]:
        def set_fn(fn: Union[Callable[[], object], render.RenderFunction]) -> None:

            # fn is either a regular function or a RenderFunction object. If
            # it's the latter, we can give it a bit of metadata, which can be
            # used by the
            if isinstance(fn, render.RenderFunction):
                fn.set_metadata(self._session, name)

            if name in self._output_obervers:
                self._output_obervers[name].destroy()

            @ObserverAsync
            async def output_obs():
                await self._session.send_message(
                    {"recalculating": {"name": name, "status": "recalculating"}}
                )

                message: Dict[str, object] = {}
                if utils.is_async_callable(fn):
                    fn2 = typing.cast(Callable[[], Awaitable[object]], fn)
                    val = await fn2()
                else:
                    val = fn()
                message[name] = val
                self._session.add_message_out(message)

                await self._session.send_message(
                    {"recalculating": {"name": name, "status": "recalculated"}}
                )

            self._output_obervers[name] = output_obs

            return None

        return set_fn


# ==============================================================================
# Context manager for current session (AKA current reactive domain)
# ==============================================================================
_current_session: ContextVar[Optional[ShinySession]] = ContextVar(
    "current_session", default=None
)


def get_current_session() -> Optional[ShinySession]:
    return _current_session.get()


@contextmanager
def session_context(session: Optional[ShinySession]):
    token: Token[Union[ShinySession, None]] = _current_session.set(session)
    try:
        yield
    finally:
        _current_session.reset(token)


def _require_active_session(session: Optional[ShinySession]) -> ShinySession:
    if session is None:
        session = get_current_session()
    if session is None:
        import inspect

        call_stack = inspect.stack()
        if len(call_stack) > 1:
            caller = call_stack[1]
        else:
            # Uncommon case: this function is called from the top-level, so the caller
            # is just _require_active_session.
            caller = call_stack[0]

        calling_fn_name = caller.function
        if calling_fn_name == "__init__":
            # If the caller is __init__, then we're most likely in the initialization of
            # an object. This will get the class name.
            calling_fn_name = caller.frame.f_locals["self"].__class__.__name__

        raise RuntimeError(
            f"{calling_fn_name}() must be called from within an active Shiny session."
        )
    return session


# ==============================================================================
# Miscellaneous functions
# ==============================================================================


class _RenderedDeps(TypedDict):
    deps: List[Dict[str, Any]]
    html: str


def _process_deps(
    ui: TagChildArg, session: Optional[ShinySession] = None
) -> _RenderedDeps:

    session = _require_active_session(session)

    res = TagList(ui).render()
    deps: List[Dict[str, Any]] = []
    for dep in res["dependencies"]:
        session.app.register_web_dependency(dep)
        dep_dict = dep.as_dict(lib_prefix=session.app.LIB_PREFIX)
        deps.append(dep_dict)

    return {"deps": deps, "html": res["html"]}

shiny/shinymodule.py METASEP
__all__ = (
    "ReactiveValuesProxy",
    "OutputsProxy",
    "ShinySessionProxy",
    "ShinyModule",
)

from typing import Optional, Union, Callable, Any

from htmltools.core import TagChildArg

from .shinysession import ShinySession, Outputs, _require_active_session
from .reactives import ReactiveValues
from .render import RenderFunction


class ReactiveValuesProxy(ReactiveValues):
    def __init__(self, ns: str, values: ReactiveValues):
        self._ns: str = ns
        self._values: ReactiveValues = values

    def _ns_key(self, key: str) -> str:
        return self._ns + "-" + key

    def __setitem__(self, key: str, value: object) -> None:
        self._values[self._ns_key(key)] = value

    def __getitem__(self, key: str) -> object:
        return self._values[self._ns_key(key)]

    def __delitem__(self, key: str) -> None:
        del self._values[self._ns_key(key)]


class OutputsProxy(Outputs):
    def __init__(self, ns: str, outputs: Outputs):
        self._ns: str = ns
        self._outputs: Outputs = outputs

    def _ns_key(self, key: str) -> str:
        return self._ns + "-" + key

    def __call__(
        self, name: str
    ) -> Callable[[Union[Callable[[], object], RenderFunction]], None]:
        return self._outputs(self._ns_key(name))


class ShinySessionProxy(ShinySession):
    def __init__(self, ns: str, parent_session: ShinySession) -> None:
        self._ns: str = ns
        self._parent: ShinySession = parent_session
        self.input: ReactiveValuesProxy = ReactiveValuesProxy(ns, parent_session.input)
        self.output: OutputsProxy = OutputsProxy(ns, parent_session.output)


class ShinyModule:
    def __init__(
        self,
        ui: Callable[..., TagChildArg],
        server: Callable[[ShinySessionProxy], None],
    ) -> None:
        self._ui: Callable[..., TagChildArg] = ui
        self._server: Callable[[ShinySessionProxy], None] = server

    def ui(self, namespace: str, *args: Any) -> TagChildArg:
        ns = ShinyModule._make_ns_fn(namespace)
        return self._ui(ns, *args)

    def server(self, ns: str, *, session: Optional[ShinySession] = None) -> None:
        self.ns: str = ns
        session = _require_active_session(session)
        session_proxy = ShinySessionProxy(ns, session)
        self._server(session_proxy)

    @staticmethod
    def _make_ns_fn(namespace: str) -> Callable[[str], str]:
        def ns_fn(id: str) -> str:
            return namespace + "-" + id

        return ns_fn

shiny/shinyapp.py METASEP
__all__ = ("ShinyApp",)

from typing import Any, List, Optional, Union, Dict, Callable, cast

from htmltools import Tag, TagList, HTMLDocument, HTMLDependency, RenderedHTML

import starlette.routing
import starlette.websockets
from starlette.types import Message, Receive, Scope, Send
from starlette.requests import Request
from starlette.responses import Response, HTMLResponse, JSONResponse

from .http_staticfiles import StaticFiles
from .shinysession import ShinySession, session_context
from . import reactcore
from .connmanager import (
    Connection,
    StarletteConnection,
)
from .html_dependencies import jquery_deps, shiny_deps


class ShinyApp:
    LIB_PREFIX = "lib/"

    def __init__(
        self,
        ui: Union[Tag, TagList],
        server: Callable[[ShinySession], None],
        *,
        debug: bool = False,
    ) -> None:
        self.ui: RenderedHTML = _render_page(ui, lib_prefix=self.LIB_PREFIX)
        self.server: Callable[[ShinySession], None] = server

        self._debug: bool = debug

        self._sessions: Dict[str, ShinySession] = {}
        self._last_session_id: int = 0  # Counter for generating session IDs

        self._sessions_needing_flush: Dict[int, ShinySession] = {}

        self._registered_dependencies: Dict[str, HTMLDependency] = {}
        self._dependency_handler: Any = starlette.routing.Router()

        self.starlette_app = starlette.routing.Router(
            routes=[
                starlette.routing.WebSocketRoute("/websocket/", self._on_connect_cb),
                starlette.routing.Route("/", self._on_root_request_cb, methods=["GET"]),
                starlette.routing.Route(
                    "/session/{session_id}/{subpath:path}",
                    self._on_session_request_cb,
                    methods=["GET", "POST"],
                ),
                starlette.routing.Mount("/", app=self._dependency_handler),
            ]
        )

    def create_session(self, conn: Connection) -> ShinySession:
        self._last_session_id += 1
        id = str(self._last_session_id)
        session = ShinySession(self, id, conn, debug=self._debug)
        self._sessions[id] = session
        return session

    def remove_session(self, session: Union[ShinySession, str]) -> None:
        if isinstance(session, ShinySession):
            session = session.id

        if self._debug:
            print(f"remove_session: {session}")
        del self._sessions[session]

    def run(self, debug: Optional[bool] = None) -> None:
        import uvicorn  # type: ignore

        if debug is not None:
            self._debug = debug
        uvicorn.run(cast(Any, self), host="0.0.0.0", port=8000)

    # ASGI entrypoint. Handles HTTP, WebSocket, and lifespan.
    async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None:
        await self.starlette_app(scope, receive, send)

    async def call_pyodide(self, scope: Scope, receive: Receive, send: Send) -> None:
        # TODO: Pretty sure there are objects that need to be destroy()'d here?
        scope = cast(Any, scope).to_py()

        # ASGI requires some values to be byte strings, not character strings. Those are
        # not that easy to create in JavaScript, so we let the JS side pass us strings
        # and we convert them to bytes here.
        if "headers" in scope:
            # JS doesn't have `bytes` so we pass as strings and convert here
            scope["headers"] = [
                [value.encode("latin-1") for value in header]
                for header in scope["headers"]
            ]
        if "query_string" in scope and scope["query_string"]:
            scope["query_string"] = scope["query_string"].encode("latin-1")
        if "raw_path" in scope and scope["raw_path"]:
            scope["raw_path"] = scope["raw_path"].encode("latin-1")

        async def rcv() -> Message:
            event = await receive()
            return cast(Message, cast(Any, event).to_py())

        async def snd(event: Message):
            await send(event)

        await self(scope, rcv, snd)

    async def stop(self) -> None:
        # Close all sessions (convert to list to avoid modifying the dict while
        # iterating over it, which throws an error).
        for session in list(self._sessions.values()):
            await session.close()

    # ==========================================================================
    # Connection callbacks
    # ==========================================================================
    async def _on_root_request_cb(self, request: Request) -> Response:
        """
        Callback passed to the ConnectionManager which is invoked when a HTTP
        request for / occurs.
        """
        self._ensure_web_dependencies(self.ui["dependencies"])
        return HTMLResponse(content=self.ui["html"])

    async def _on_connect_cb(self, ws: starlette.websockets.WebSocket) -> None:
        """
        Callback which is invoked when a new WebSocket connection is established.
        """
        await ws.accept()
        conn = StarletteConnection(ws)
        session = self.create_session(conn)

        await session.run()

    async def _on_session_request_cb(self, request: Request) -> Response:
        """
        Callback passed to the ConnectionManager which is invoked when a HTTP
        request for /session/* occurs.
        """
        session_id: str = request.path_params["session_id"]  # type: ignore
        # subpath: str = request.path_params["subpath"]

        if session_id in self._sessions:
            session: ShinySession = self._sessions[session_id]
            with session_context(session):
                return await session.handle_request(request)

        return JSONResponse({"detail": "Not Found"}, status_code=404)

    # ==========================================================================
    # Flush
    # ==========================================================================
    def request_flush(self, session: ShinySession) -> None:
        # TODO: Until we have reactive domains, because we can't yet keep track
        # of which sessions need a flush.
        pass
        # self._sessions_needing_flush[session.id] = session

    async def flush_pending_sessions(self) -> None:
        await reactcore.flush()

        # TODO: Until we have reactive domains, flush all sessions (because we
        # can't yet keep track of which ones need a flush)
        for _, session in self._sessions.items():
            await session.flush()
        # for id, session in self._sessions_needing_flush.items():
        #     await session.flush()
        #     del self._sessions_needing_flush[id]

    # ==========================================================================
    # HTML Dependency stuff
    # ==========================================================================
    def _ensure_web_dependencies(self, deps: List[HTMLDependency]) -> None:
        for dep in deps:
            self.register_web_dependency(dep)

    def register_web_dependency(self, dep: HTMLDependency) -> None:
        if (
            dep.name in self._registered_dependencies
            and dep.version >= self._registered_dependencies[dep.name].version
        ):
            return

        paths = dep.source_path_map(lib_prefix=self.LIB_PREFIX)
        self._dependency_handler.mount(
            "/" + paths["href"],
            StaticFiles(directory=paths["source"]),
            name=dep.name + "-" + str(dep.version),
        )
        self._registered_dependencies[dep.name] = dep


def _render_page(ui: Union[Tag, TagList], lib_prefix: str) -> RenderedHTML:
    doc = HTMLDocument(TagList(jquery_deps(), shiny_deps(), ui))
    return doc.render(lib_prefix=lib_prefix)

shiny/render.py METASEP
import sys
import os
import io
import base64
import mimetypes
import inspect
from typing import TYPE_CHECKING, Callable, Optional, Awaitable, Union
import typing

if sys.version_info >= (3, 8):
    from typing import Literal
else:
    from typing_extensions import Literal


if sys.version_info >= (3, 8):
    from typing import TypedDict
else:
    from typing_extensions import TypedDict

from htmltools import TagChildArg

if TYPE_CHECKING:
    from .shinysession import ShinySession

from . import utils

__all__ = (
    "render_plot",
    "render_image",
    "render_ui",
)

UserRenderFunction = Callable[[], object]
UserRenderFunctionAsync = Callable[[], Awaitable[object]]


class ImgData(TypedDict):
    src: str
    width: Union[str, float]
    height: Union[str, float]
    alt: Optional[str]


ImgRenderFunc = Callable[[], ImgData]
ImgRenderFuncAsync = Callable[[], Awaitable[ImgData]]


class RenderFunction:
    def __init__(self, fn: UserRenderFunction) -> None:
        raise NotImplementedError

    def __call__(self) -> object:
        raise NotImplementedError

    def set_metadata(self, session: "ShinySession", name: str) -> None:
        """When RenderFunctions are assigned to Output object slots, this method
        is used to pass along session and name information.
        """
        self._session: ShinySession = session
        self._name: str = name


class RenderFunctionAsync(RenderFunction):
    async def __call__(self) -> object:
        raise NotImplementedError


class RenderPlot(RenderFunction):
    _ppi: float = 96

    def __init__(self, fn: UserRenderFunction, alt: Optional[str] = None) -> None:
        self._fn: UserRenderFunctionAsync = utils.wrap_async(fn)
        self._alt: Optional[str] = alt

    def __call__(self) -> object:
        return utils.run_coro_sync(self.run())

    async def run(self) -> object:
        # Reactively read some information about the plot.
        pixelratio: float = typing.cast(
            float, self._session.input[".clientdata_pixelratio"]
        )
        width: float = typing.cast(
            float, self._session.input[f".clientdata_output_{self._name}_width"]
        )
        height: float = typing.cast(
            float, self._session.input[f".clientdata_output_{self._name}_height"]
        )

        fig = await self._fn()

        if fig is None:
            return None

        # Try each type of renderer in turn. The reason we do it this way is to avoid
        # importing modules that aren't already loaded. That could slow things down, or
        # worse, cause an error if the module isn't installed.
        #
        # Each try_render function should return either an ImgResult, None (which
        # indicates that the rendering failed), or the string "TYPE_MISMATCH" (which
        # indicate that `fig` object was not the type of object that the renderer knows
        # how to handle). In the case of a "TYPE_MISMATCH", it will move on to the next
        # renderer.
        result: Union[ImgData, None, Literal["TYPE_MISMATCH"]] = None
        if "matplotlib" in sys.modules:
            result = try_render_plot_matplotlib(
                fig, width, height, pixelratio, self._ppi
            )
            if result != "TYPE_MISMATCH":
                return result

        if "PIL" in sys.modules:
            result = try_render_plot_pil(fig, width, height, pixelratio, self._ppi)
            if result != "TYPE_MISMATCH":
                return result

        raise Exception("Unsupported figure type: " + str(type(fig)))


class RenderPlotAsync(RenderPlot, RenderFunctionAsync):
    def __init__(self, fn: UserRenderFunctionAsync, alt: Optional[str] = None) -> None:
        if not inspect.iscoroutinefunction(fn):
            raise TypeError("PlotAsync requires an async function")

        # Init the Plot base class with a placeholder synchronous function so it
        # won't throw an error, then replace it with the async function.
        super().__init__(lambda: None, alt)
        self._fn: UserRenderFunctionAsync = fn

    async def __call__(self) -> object:
        return await self.run()


def render_plot(alt: Optional[str] = None):
    def wrapper(fn: Union[UserRenderFunction, UserRenderFunctionAsync]) -> RenderPlot:
        if inspect.iscoroutinefunction(fn):
            fn = typing.cast(UserRenderFunctionAsync, fn)
            return RenderPlotAsync(fn, alt=alt)
        else:
            return RenderPlot(fn, alt=alt)

    return wrapper


# Try to render a matplotlib object. If `fig` is not a matplotlib object, return
# "TYPE_MISMATCH". If there's an error in rendering, return None. If successful in
# rendering, return an ImgData object.
def try_render_plot_matplotlib(
    fig: object,
    width: float,
    height: float,
    pixelratio: float,
    ppi: float,
    alt: Optional[str] = None,
) -> Union[ImgData, None, Literal["TYPE_MISMATCH"]]:
    import matplotlib.figure
    import matplotlib.pyplot

    if isinstance(fig, matplotlib.figure.Figure):
        try:
            fig.set_dpi(ppi * pixelratio)
            fig.set_size_inches(width / ppi, height / ppi)

            with io.BytesIO() as buf:
                fig.savefig(buf, format="png")
                buf.seek(0)
                data = base64.b64encode(buf.read())
                data_str = data.decode("utf-8")

            res: ImgData = {
                "src": "data:image/png;base64," + data_str,
                "width": width,
                "height": height,
                "alt": alt,
            }

            return res

        except Exception as e:
            # TODO: just let errors propagate?
            print("Error rendering matplotlib object: " + str(e))

        finally:
            matplotlib.pyplot.close(fig)

        return None

    else:
        return "TYPE_MISMATCH"


def try_render_plot_pil(
    fig: object,
    width: float,
    height: float,
    pixelratio: float,
    ppi: float,
    alt: Optional[str] = None,
) -> Union[ImgData, None, Literal["TYPE_MISMATCH"]]:
    import PIL.Image

    if isinstance(fig, PIL.Image.Image):
        try:
            with io.BytesIO() as buf:
                fig.save(buf, format="PNG")
                buf.seek(0)
                data = base64.b64encode(buf.read())
                data_str = data.decode("utf-8")

            res: ImgData = {
                "src": "data:image/png;base64," + data_str,
                "width": width,
                "height": height,
                "alt": alt,
            }

            return res

        except Exception as e:
            # TODO: just let errors propagate?
            print("Error rendering PIL object: " + str(e))

        return None

    else:
        return "TYPE_MISMATCH"


class RenderImage(RenderFunction):
    def __init__(self, fn: ImgRenderFunc, delete_file: bool = False) -> None:
        self._fn: ImgRenderFuncAsync = utils.wrap_async(fn)
        self._delete_file: bool = delete_file

    def __call__(self) -> object:
        return utils.run_coro_sync(self.run())

    async def run(self) -> object:
        res: ImgData = await self._fn()
        src: str = res.get("src")
        try:
            with open(src, "rb") as f:
                data = base64.b64encode(f.read())
                data_str = data.decode("utf-8")
            content_type = mimetypes.guess_type(src)[1]
            res["src"] = f"data:{content_type};base64,{data_str}"
            return res
        finally:
            if self._delete_file:
                os.remove(src)


class RenderImageAsync(RenderImage, RenderFunctionAsync):
    def __init__(self, fn: ImgRenderFuncAsync, delete_file: bool = False) -> None:
        if not inspect.iscoroutinefunction(fn):
            raise TypeError("PlotAsync requires an async function")
        # Init the Plot base class with a placeholder synchronous function so it
        # won't throw an error, then replace it with the async function.
        super().__init__(lambda: None, delete_file)
        self._fn: ImgRenderFuncAsync = fn

    async def __call__(self) -> object:
        return await self.run()


def render_image(delete_file: bool = False):
    def wrapper(fn: Union[ImgRenderFunc, ImgRenderFuncAsync]) -> RenderImage:
        if inspect.iscoroutinefunction(fn):
            fn = typing.cast(ImgRenderFuncAsync, fn)
            return RenderImageAsync(fn, delete_file=delete_file)
        else:
            fn = typing.cast(ImgRenderFunc, fn)
            return RenderImage(fn, delete_file=delete_file)

    return wrapper


UiRenderFunc = Callable[[], TagChildArg]
UiRenderFuncAsync = Callable[[], Awaitable[TagChildArg]]


class RenderUI(RenderFunction):
    def __init__(self, fn: UiRenderFunc) -> None:
        self._fn: UiRenderFuncAsync = utils.wrap_async(fn)

    def __call__(self) -> object:
        return utils.run_coro_sync(self.run())

    async def run(self) -> object:
        ui: TagChildArg = await self._fn()
        if ui is None:
            return None
        # TODO: better a better workaround for the circular dependency
        from .shinysession import _process_deps

        return _process_deps(ui, self._session)


class RenderUIAsync(RenderUI, RenderFunctionAsync):
    def __init__(self, fn: UiRenderFuncAsync) -> None:
        if not inspect.iscoroutinefunction(fn):
            raise TypeError("PlotAsync requires an async function")

        super().__init__(lambda: None)
        self._fn: UiRenderFuncAsync = fn

    async def __call__(self) -> object:
        return await self.run()


def render_ui():
    def wrapper(fn: Union[UiRenderFunc, UiRenderFuncAsync]) -> RenderUI:
        if inspect.iscoroutinefunction(fn):
            fn = typing.cast(UiRenderFuncAsync, fn)
            return RenderUIAsync(fn)
        else:
            fn = typing.cast(UiRenderFunc, fn)
            return RenderUI(fn)

    return wrapper

shiny/reactives.py METASEP
"""Reactive components"""

__all__ = (
    "ReactiveVal",
    "ReactiveValues",
    "Reactive",
    "ReactiveAsync",
    "reactive",
    "reactive_async",
    "Observer",
    "ObserverAsync",
    "observe",
    "observe_async",
    "isolate",
    "isolate_async",
)

from typing import (
    TYPE_CHECKING,
    Optional,
    Callable,
    Awaitable,
    TypeVar,
    Union,
    Generic,
    Any,
    overload,
)
import typing
import inspect

from .reactcore import Context, Dependents
from . import reactcore
from . import utils
from .types import MISSING, MISSING_TYPE

if TYPE_CHECKING:
    from .shinysession import ShinySession

T = TypeVar("T")

# ==============================================================================
# ReactiveVal and ReactiveValues
# ==============================================================================
class ReactiveVal(Generic[T]):
    def __init__(self, value: T) -> None:
        self._value: T = value
        self._dependents: Dependents = Dependents()

    @overload
    def __call__(self) -> T:
        ...

    @overload
    def __call__(self, value: T) -> bool:
        ...

    def __call__(self, value: Union[MISSING_TYPE, T] = MISSING) -> Union[T, bool]:
        if isinstance(value, MISSING_TYPE):
            return self.get()
        else:
            return self.set(value)

    def get(self) -> T:
        self._dependents.register()
        return self._value

    def set(self, value: T) -> bool:
        if self._value is value:
            return False

        self._value = value
        self._dependents.invalidate()
        return True


class ReactiveValues:
    def __init__(self, **kwargs: object) -> None:
        self._map: dict[str, ReactiveVal[Any]] = {}
        for key, value in kwargs.items():
            self._map[key] = ReactiveVal(value)

    def __setitem__(self, key: str, value: object) -> None:
        if key in self._map:
            self._map[key](value)
        else:
            self._map[key] = ReactiveVal(value)

    def __getitem__(self, key: str) -> Any:
        # Auto-populate key if accessed but not yet set. Needed to take reactive
        # dependencies on input values that haven't been received from client
        # yet.
        if key not in self._map:
            self._map[key] = ReactiveVal(None)

        return self._map[key]()

    def __delitem__(self, key: str) -> None:
        del self._map[key]


# ==============================================================================
# Reactive
# ==============================================================================
class Reactive(Generic[T]):
    def __init__(
        self,
        func: Callable[[], T],
        *,
        session: Union[MISSING_TYPE, "ShinySession", None] = MISSING,
    ) -> None:
        if inspect.iscoroutinefunction(func):
            raise TypeError("Reactive requires a non-async function")

        self._func: Callable[[], Awaitable[T]] = utils.wrap_async(func)
        self._is_async: bool = False

        self._dependents: Dependents = Dependents()
        self._invalidated: bool = True
        self._running: bool = False
        self._most_recent_ctx_id: int = -1
        self._ctx: Optional[Context] = None
        self._exec_count: int = 0

        self._session: Optional[ShinySession]
        # Use `isinstance(x, MISSING_TYPE)`` instead of `x is MISSING` because
        # the type checker doesn't know that MISSING is the only instance of
        # MISSING_TYPE; this saves us from casting later on.
        if isinstance(session, MISSING_TYPE):
            # If no session is provided, autodetect the current session (this
            # could be None if outside of a session).
            session = shinysession.get_current_session()
        self._session = session

        # Use lists to hold (optional) value and error, instead of Optional[T],
        # because it makes typing more straightforward. For example if
        # .get_value() simply returned self._value, self._value had type
        # Optional[T], then the return type for get_value() would have to be
        # Optional[T].
        self._value: list[T] = []
        self._error: list[Exception] = []

    def __call__(self) -> T:
        # Run the Coroutine (synchronously), and then return the value.
        # If the Coroutine yields control, then an error will be raised.
        return utils.run_coro_sync(self.get_value())

    async def get_value(self) -> T:
        self._dependents.register()

        if self._invalidated or self._running:
            await self.update_value()

        if self._error:
            raise self._error[0]

        return self._value[0]

    async def update_value(self) -> None:
        self._ctx = Context()
        self._most_recent_ctx_id = self._ctx.id

        self._ctx.on_invalidate(self._on_invalidate_cb)

        self._exec_count += 1
        self._invalidated = False

        was_running = self._running
        self._running = True

        with shinysession.session_context(self._session):
            try:
                await self._ctx.run(self._run_func, create_task=self._is_async)
            finally:
                self._running = was_running

    def _on_invalidate_cb(self) -> None:
        self._invalidated = True
        self._value.clear()  # Allow old value to be GC'd
        self._dependents.invalidate()
        self._ctx = None  # Allow context to be GC'd

    async def _run_func(self) -> None:
        self._error.clear()
        try:
            self._value.append(await self._func())
        except Exception as err:
            self._error.append(err)


class ReactiveAsync(Reactive[T]):
    def __init__(
        self,
        func: Callable[[], Awaitable[T]],
        *,
        session: Union[MISSING_TYPE, "ShinySession", None] = MISSING,
    ) -> None:
        if not inspect.iscoroutinefunction(func):
            raise TypeError("ReactiveAsync requires an async function")

        # Init the Reactive base class with a placeholder synchronous function
        # so it won't throw an error, then replace it with the async function.
        # Need the `cast` to satisfy the type checker.
        super().__init__(lambda: typing.cast(T, None), session=session)
        self._func: Callable[[], Awaitable[T]] = func
        self._is_async = True

    async def __call__(self) -> T:
        return await self.get_value()


def reactive(
    *, session: Union[MISSING_TYPE, "ShinySession", None] = MISSING
) -> Callable[[Callable[[], T]], Reactive[T]]:
    def create_reactive(fn: Callable[[], T]) -> Reactive[T]:
        return Reactive(fn, session=session)

    return create_reactive


def reactive_async(
    *, session: Union[MISSING_TYPE, "ShinySession", None] = MISSING
) -> Callable[[Callable[[], Awaitable[T]]], ReactiveAsync[T]]:
    def create_reactive_async(fn: Callable[[], Awaitable[T]]) -> ReactiveAsync[T]:
        return ReactiveAsync(fn, session=session)

    return create_reactive_async


# ==============================================================================
# Observer
# ==============================================================================
class Observer:
    def __init__(
        self,
        func: Callable[[], None],
        *,
        session: Union[MISSING_TYPE, "ShinySession", None] = MISSING,
        priority: int = 0,
    ) -> None:
        if inspect.iscoroutinefunction(func):
            raise TypeError("Observer requires a non-async function")

        self._func: Callable[[], Awaitable[None]] = utils.wrap_async(func)
        self._is_async: bool = False

        self._priority: int = priority

        self._invalidate_callbacks: list[Callable[[], None]] = []
        self._destroyed: bool = False
        self._ctx: Optional[Context] = None
        self._exec_count: int = 0

        self._session: Optional[ShinySession]
        # Use `isinstance(x, MISSING_TYPE)`` instead of `x is MISSING` because
        # the type checker doesn't know that MISSING is the only instance of
        # MISSING_TYPE; this saves us from casting later on.
        if isinstance(session, MISSING_TYPE):
            # If no session is provided, autodetect the current session (this
            # could be None if outside of a session).
            session = shinysession.get_current_session()
        self._session = session

        if self._session is not None:
            self._session.on_ended(self._on_session_ended_cb)

        # Defer the first running of this until flushReact is called
        self._create_context().invalidate()

    def _create_context(self) -> Context:
        ctx = Context()

        # Store the context explicitly in Observer object
        # TODO: More explanation here
        self._ctx = ctx

        def on_invalidate_cb() -> None:
            # Context is invalidated, so we don't need to store a reference to it
            # anymore.
            self._ctx = None

            for cb in self._invalidate_callbacks:
                cb()

            # TODO: Wrap this stuff up in a continue callback, depending on if suspended?
            ctx.add_pending_flush(self._priority)

        async def on_flush_cb() -> None:
            if not self._destroyed:
                await self.run()

        ctx.on_invalidate(on_invalidate_cb)
        ctx.on_flush(on_flush_cb)

        return ctx

    async def run(self) -> None:
        ctx = self._create_context()
        self._exec_count += 1

        with shinysession.session_context(self._session):
            try:
                await ctx.run(self._func, create_task=self._is_async)
            except Exception as e:
                if self._session:
                    await self._session.unhandled_error(e)

    def on_invalidate(self, callback: Callable[[], None]) -> None:
        self._invalidate_callbacks.append(callback)

    def destroy(self) -> None:
        self._destroyed = True

        if self._ctx is not None:
            self._ctx.invalidate()

    def _on_session_ended_cb(self) -> None:
        self.destroy()


class ObserverAsync(Observer):
    def __init__(
        self,
        func: Callable[[], Awaitable[None]],
        *,
        session: Union[MISSING_TYPE, "ShinySession", None] = MISSING,
        priority: int = 0,
    ) -> None:
        if not inspect.iscoroutinefunction(func):
            raise TypeError("ObserverAsync requires an async function")

        # Init the Observer base class with a placeholder synchronous function
        # so it won't throw an error, then replace it with the async function.
        super().__init__(lambda: None, session=session, priority=priority)
        self._func: Callable[[], Awaitable[None]] = func
        self._is_async = True


def observe(
    *, priority: int = 0, session: Union[MISSING_TYPE, "ShinySession", None] = MISSING
) -> Callable[[Callable[[], None]], Observer]:
    def create_observer(fn: Callable[[], None]) -> Observer:
        return Observer(fn, priority=priority, session=session)

    return create_observer


def observe_async(
    *, priority: int = 0, session: Union[MISSING_TYPE, "ShinySession", None] = MISSING
) -> Callable[[Callable[[], Awaitable[None]]], ObserverAsync]:
    def create_observer_async(fn: Callable[[], Awaitable[None]]) -> ObserverAsync:
        return ObserverAsync(fn, priority=priority, session=session)

    return create_observer_async


# ==============================================================================
# Miscellaneous functions
# ==============================================================================
def isolate(func: Callable[[], T]) -> T:
    # The `object` in func's type definition also encompasses Awaitable[object],
    # so add a runtime check to make sure that this hasn't been called with an
    # async function.
    if inspect.iscoroutinefunction(func):
        raise TypeError("isolate() requires a non-async function")

    func_async: Callable[[], Awaitable[T]] = utils.wrap_async(func)
    ctx: Context = reactcore.Context()
    try:
        return utils.run_coro_sync(ctx.run(func_async, create_task=False))
    finally:
        ctx.invalidate()


async def isolate_async(func: Callable[[], Awaitable[T]]) -> T:
    ctx: Context = reactcore.Context()
    try:
        return await ctx.run(func, create_task=True)
    finally:
        ctx.invalidate()


# Import here at the bottom seems to fix a circular dependency problem.
from . import shinysession

shiny/reactcore.py METASEP
"""Low-level reactive components."""


from typing import Callable, Optional, Awaitable, TypeVar
from contextvars import ContextVar
from asyncio import Task
import asyncio

from .datastructures import PriorityQueueFIFO

T = TypeVar("T")


class Context:
    """A reactive context"""

    def __init__(self) -> None:
        self.id: int = _reactive_environment.next_id()
        self._invalidated: bool = False
        self._invalidate_callbacks: list[Callable[[], None]] = []
        self._flush_callbacks: list[Callable[[], Awaitable[None]]] = []

    async def run(self, func: Callable[[], Awaitable[T]], create_task: bool) -> T:
        """Run the provided function in this context"""
        env = _reactive_environment
        return await env.run_with(self, func, create_task)

    def invalidate(self) -> None:
        """Invalidate this context. It will immediately call the callbacks
        that have been registered with onInvalidate()."""

        if self._invalidated:
            return

        self._invalidated = True

        for cb in self._invalidate_callbacks:
            cb()

        self._invalidate_callbacks.clear()

    def on_invalidate(self, func: Callable[[], None]) -> None:
        """Register a function to be called when this context is invalidated"""
        if self._invalidated:
            func()
        else:
            self._invalidate_callbacks.append(func)

    def add_pending_flush(self, priority: int) -> None:
        """Tell the reactive environment that this context should be flushed the
        next time flushReact() called."""
        _reactive_environment.add_pending_flush(self, priority)

    def on_flush(self, func: Callable[[], Awaitable[None]]) -> None:
        """Register a function to be called when this context is flushed."""
        self._flush_callbacks.append(func)

    async def execute_flush_callbacks(self) -> None:
        """Execute all flush callbacks"""
        for cb in self._flush_callbacks:
            try:
                await cb()
            finally:
                pass

        self._flush_callbacks.clear()


class Dependents:
    def __init__(self) -> None:
        self._dependents: dict[int, Context] = {}

    def register(self) -> None:
        ctx: Context = get_current_context()
        if ctx.id not in self._dependents:
            self._dependents[ctx.id] = ctx

        def on_invalidate_cb() -> None:
            if ctx.id in self._dependents:
                del self._dependents[ctx.id]

        ctx.on_invalidate(on_invalidate_cb)

    def invalidate(self) -> None:
        # TODO: Check sort order
        for id in sorted(self._dependents.keys()):
            ctx = self._dependents[id]
            ctx.invalidate()


class ReactiveEnvironment:
    """The reactive environment"""

    def __init__(self) -> None:
        self._current_context: ContextVar[Optional[Context]] = ContextVar(
            "current_context", default=None
        )
        self._next_id: int = 0
        self._pending_flush_queue: PriorityQueueFIFO[Context] = PriorityQueueFIFO()

    def next_id(self) -> int:
        """Return the next available id"""
        id = self._next_id
        self._next_id += 1
        return id

    def current_context(self) -> Context:
        """Return the current Context object"""
        ctx = self._current_context.get()
        if ctx is None:
            raise RuntimeError("No current reactive context")
        return ctx

    async def run_with(
        self, ctx: Context, context_func: Callable[[], Awaitable[T]], create_task: bool
    ) -> T:
        async def wrapper() -> T:
            old = self._current_context.set(ctx)
            try:
                return await context_func()
            finally:
                self._current_context.reset(old)

        if not create_task:
            return await wrapper()
        else:
            return await asyncio.create_task(wrapper())

    async def flush(self, *, concurrent: bool = True) -> None:
        """Flush all pending operations"""
        # Currently, we default to concurrent flush. In the future, we'll
        # probably remove the option and just do it one way or the other. For a
        # concurrent flush, there are still some issues that need to be
        # resolved.
        if concurrent:
            await self._flush_concurrent()
        else:
            await self._flush_sequential()

    async def _flush_concurrent(self) -> None:
        # Flush observers concurrently, using Tasks.
        tasks: list[Task[None]] = []

        # Double-nest the check for self._pending_flush because it is possible
        # that running a flush callback (in the gather()) will add another thing
        # to the pending flush list (like if an observer sets a reactive value,
        # which in turn invalidates other reactives/observers).
        while not self._pending_flush_queue.empty():
            while not self._pending_flush_queue.empty():
                # Take the first element
                ctx = self._pending_flush_queue.get()

                try:
                    task: Task[None] = asyncio.create_task(
                        ctx.execute_flush_callbacks()
                    )
                    tasks.append(task)
                finally:
                    pass

            await asyncio.gather(*tasks)

    async def _flush_sequential(self) -> None:
        # Sequential flush: instead of storing the tasks in a list and
        # calling gather() on them later, just run each observer in
        # sequence.
        while not self._pending_flush_queue.empty():
            ctx = self._pending_flush_queue.get()
            try:
                await ctx.execute_flush_callbacks()
            finally:
                pass

    def add_pending_flush(self, ctx: Context, priority: int) -> None:
        self._pending_flush_queue.put(priority, ctx)


_reactive_environment = ReactiveEnvironment()


def get_current_context() -> Context:
    return _reactive_environment.current_context()


async def flush(*, concurrent: bool = True) -> None:
    await _reactive_environment.flush(concurrent=concurrent)

shiny/progress.py METASEP
from typing import Optional, Dict, Any
from warnings import warn
from .utils import run_coro_sync, rand_hex
from .shinysession import ShinySession, _require_active_session


class Progress:
    _style = "notification"

    def __init__(
        self, min: int = 0, max: int = 1, session: Optional[ShinySession] = None
    ):
        self.min = min
        self.max = max
        self.value = None
        self._id = rand_hex(8)
        self._closed = False
        self._session = _require_active_session(session)

        msg = {"id": self._id, "style": self._style}
        self._send_progress("open", msg)

    def set(
        self,
        value: float,
        message: Optional[str] = None,
        detail: Optional[str] = None,
    ):
        if self._closed:
            warn("Attempting to set progress, but progress already closed.")
            return None

        self.value = value
        if value:
            # Normalize value to number between 0 and 1
            value = min(1, max(0, (value - self.min) / (self.max - self.min)))

        msg = {
            "id": self._id,
            "message": message,
            "detail": detail,
            "value": value,
            "style": self._style,
        }

        self._send_progress("update", {k: v for k, v in msg.items() if v is not None})

    def inc(
        self,
        amount: float = 0.1,
        message: Optional[str] = None,
        detail: Optional[str] = None,
    ):
        if self.value is None:
            self.value = self.min

        value = min(self.value + amount, self.max)
        self.set(value, message, detail)

    def close(self):
        if self._closed:
            warn("Attempting to close progress, but progress already closed.")
            return None

        self._send_progress("close", {"id": self._id, "style": self._style})
        self._closed = True

    def _send_progress(self, type: str, message: Dict[str, Any]):
        return run_coro_sync(
            self._session.send_message({"progress": {"type": type, "message": message}})
        )

shiny/page.py METASEP
import sys
from typing import Optional, Any, List
from warnings import warn

if sys.version_info >= (3, 8):
    from typing import Literal
else:
    from typing_extensions import Literal

from htmltools import tags, Tag, TagList, div, TagChildArg

from .html_dependencies import bootstrap_deps
from .navs import navs_bar


def page_navbar(
    *args: TagChildArg,  # Create a type for nav()?
    title: Optional[TagChildArg] = None,
    id: Optional[str] = None,
    selected: Optional[str] = None,
    position: Literal["static-top", "fixed-top", "fixed-bottom"] = "static-top",
    header: Optional[TagChildArg] = None,
    footer: Optional[TagChildArg] = None,
    bg: Optional[str] = None,
    inverse: Literal["auto", True, False] = "auto",
    collapsible: bool = True,
    fluid: bool = True,
    window_title: Optional[str] = None,
    lang: Optional[str] = None
) -> Tag:

    if title is not None and window_title is None:
        # Try to infer window_title from contents of title
        window_title = " ".join(find_characters(title))
        if not window_title:
            warn(
                "Unable to infer a `window_title` default from `title`. Consider providing a character string to `window_title`."
            )

    return tags.html(
        tags.head(tags.title(window_title)),
        tags.body(
            navs_bar(
                *args,
                title=title,
                id=id,
                selected=selected,
                position=position,
                header=header,
                footer=footer,
                bg=bg,
                inverse=inverse,
                collapsible=collapsible,
                fluid=fluid
            )
        ),
        lang=lang,
    )


def page_fluid(
    *args: Any, title: Optional[str] = None, lang: Optional[str] = None, **kwargs: str
) -> Tag:
    return page_bootstrap(
        div(*args, class_="container-fluid", **kwargs), title=title, lang=lang
    )


def page_fixed(
    *args: Any, title: Optional[str] = None, lang: Optional[str] = None, **kwargs: str
) -> Tag:
    return page_bootstrap(
        div(*args, class_="container", **kwargs), title=title, lang=lang
    )


# TODO: implement theme (just Bootswatch for now?)
def page_bootstrap(
    *args: Any, title: Optional[str] = None, lang: Optional[str] = None
) -> Tag:
    page = TagList(bootstrap_deps(), *args)
    head = tags.title(title) if title else None
    return tags.html(tags.head(head), tags.body(page), lang=lang)


def find_characters(x: Any) -> List[str]:
    if isinstance(x, str):
        return [x]
    elif isinstance(x, list):
        return [y for y in x if isinstance(y, str)]
    else:
        return []

shiny/output.py METASEP
from typing import Optional
from htmltools import tags, Tag, div, css, TagAttrArg, TagFunction


def output_plot(
    id: str, width: str = "100%", height: str = "400px", inline: bool = False
) -> Tag:
    res = output_image(id=id, width=width, height=height, inline=inline)
    res.add_class("shiny-plot-output")
    return res


def output_image(
    id: str, width: str = "100%", height: str = "400px", inline: bool = False
) -> Tag:
    func = tags.span if inline else div
    style = None if inline else css(width=width, height=height)
    return func(id=id, class_="shiny-image-output", style=style)


def output_text(
    id: str, inline: bool = False, container: Optional[TagFunction] = None
) -> Tag:
    if not container:
        container = tags.span if inline else tags.div
    return container(id=id, class_="shiny-text-output")  # type: ignore


def output_text_verbatim(id: str, placeholder: bool = False) -> Tag:
    cls = "shiny-text-output" + (" noplaceholder" if not placeholder else "")
    return tags.pre(id=id, class_=cls)


def output_ui(
    id: str,
    inline: bool = False,
    container: Optional[TagFunction] = None,
    **kwargs: TagAttrArg
) -> Tag:
    if not container:
        container = tags.span if inline else tags.div
    return container(id=id, class_="shiny-html-output", **kwargs)  # type: ignore

shiny/notifications.py METASEP
import sys
from typing import Dict, Union, Optional, Any

if sys.version_info >= (3, 8):
    from typing import Literal
else:
    from typing_extensions import Literal

from htmltools import TagList, TagChildArg

from .utils import run_coro_sync, rand_hex
from .shinysession import ShinySession, _require_active_session, _process_deps


def notification_show(
    ui: TagChildArg,
    action: Optional[TagList] = None,
    duration: Optional[Union[int, float]] = 5,
    close_button: bool = True,
    id: Optional[str] = None,
    type: Literal["default", "message", "warning", "error"] = "default",
    session: Optional[ShinySession] = None,
):
    session = _require_active_session(session)

    ui_ = _process_deps(ui, session)
    action_ = _process_deps(action, session)

    payload: Dict[str, Any] = {
        "html": ui_["html"],
        "action": action_["html"],
        "deps": ui_["deps"] + action_["deps"],
        "closeButton": close_button,
        "id": id if id else rand_hex(8),
        "type": type,
    }

    if duration:
        payload.update({"duration": duration * 1000})

    return run_coro_sync(
        session.send_message({"notification": {"type": "show", "message": payload}})
    )


def notification_remove(id: str, session: Optional[ShinySession] = None):
    session = _require_active_session(session)
    run_coro_sync(
        session.send_message({"notification": {"type": "remove", "message": None}})
    )
    return id

shiny/navs.py METASEP
import sys
from typing import Optional, Any, Tuple

if sys.version_info >= (3, 8):
    from typing import Literal
else:
    from typing_extensions import Literal

from htmltools import jsx_tag_create, JSXTag, TagList, TagChildArg, JSXTagAttrArg

from .html_dependencies import nav_deps


def nav(
    title: Any,
    *args: TagChildArg,
    value: Optional[str] = None,
    icon: TagChildArg = None,
) -> JSXTag:
    if not value:
        value = title
    return nav_tag("Nav", *args, value=value, title=TagList(icon, title))


def nav_menu(
    title: TagChildArg,
    *args: TagChildArg,
    value: Optional[str] = None,
    icon: TagChildArg = None,
    align: Literal["left", "right"] = "left",
) -> JSXTag:
    if not value:
        value = str(title)
    return nav_tag(
        "NavMenu", *args, value=value, title=TagList(icon, title), align=align
    )


# def nav_content(value, *args, icon: TagChildArg = None) -> tag:
#  raise Exception("Not yet implemented")


def nav_item(*args: TagChildArg) -> JSXTag:
    return nav_tag("NavItem", *args)


def nav_spacer() -> JSXTag:
    return nav_tag("NavSpacer")


def navs_tab(
    *args: TagChildArg,
    id: Optional[str] = None,
    selected: Optional[str] = None,
    header: Optional[TagChildArg] = None,
    footer: Optional[TagChildArg] = None,
) -> JSXTag:
    return nav_tag(
        "Navs",
        *args,
        type="tabs",
        id=id,
        selected=selected,
        header=header,
        footer=footer,
    )


def navs_tab_card(
    *args: TagChildArg,
    id: Optional[str] = None,
    selected: Optional[str] = None,
    header: Optional[TagChildArg] = None,
    footer: Optional[TagChildArg] = None,
) -> JSXTag:
    return nav_tag(
        "NavsCard",
        *args,
        type="tabs",
        id=id,
        selected=selected,
        header=header,
        footer=footer,
    )


def navs_pill(
    *args: TagChildArg,
    id: Optional[str] = None,
    selected: Optional[str] = None,
    header: Optional[TagChildArg] = None,
    footer: Optional[TagChildArg] = None,
) -> JSXTag:
    return nav_tag(
        "Navs",
        *args,
        type="pills",
        id=id,
        selected=selected,
        header=header,
        footer=footer,
    )


def navs_pill_card(
    *args: TagChildArg,
    id: Optional[str] = None,
    selected: Optional[str] = None,
    header: Optional[TagChildArg] = None,
    footer: Optional[TagChildArg] = None,
    placement: Literal["above", "below"] = "above",
) -> JSXTag:
    return nav_tag(
        "NavsCard",
        *args,
        type="pills",
        id=id,
        selected=selected,
        header=header,
        footer=footer,
        placement=placement,
    )


def navs_pill_list(
    *args: TagChildArg,
    id: Optional[str] = None,
    selected: Optional[str] = None,
    header: Optional[TagChildArg] = None,
    footer: Optional[TagChildArg] = None,
    well: bool = True,
    fluid: bool = True,
    widths: Tuple[int, int] = (4, 8),
) -> JSXTag:
    return nav_tag(
        "NavsList",
        *args,
        id=id,
        selected=selected,
        header=header,
        footer=footer,
        well=well,
        widthNav=widths[0],
        widthContent=widths[1],
    )


# def navs_hidden(*args, id: Optional[str] = None, selected: Optional[str] = None, header: Any=None, footer: Any=None) -> tag:
#  return nav_tag("NavsHidden", *args, id=id, selected=selected, header=header, footer=footer)


def navs_bar(
    *args: TagChildArg,
    title: Optional[TagChildArg] = None,
    id: Optional[str] = None,
    selected: Optional[str] = None,
    position: Literal["static-top", "fixed-top", "fixed-bottom"] = "static-top",
    header: Optional[TagChildArg] = None,
    footer: Optional[TagChildArg] = None,
    bg: Optional[str] = None,
    inverse: Literal["auto", True, False] = "auto",
    collapsible: bool = True,
    fluid: bool = True,
) -> JSXTag:
    return nav_tag(
        "NavsBar",
        *args,
        title=title,
        id=id,
        selected=selected,
        position=position,
        header=header,
        footer=footer,
        bg=bg,
        inverse=inverse,
        collapsible=collapsible,
        fluid=fluid,
    )


def nav_tag(name: str, *args: TagChildArg, **kwargs: JSXTagAttrArg) -> JSXTag:
    tag = jsx_tag_create("bslib." + name)
    return tag(nav_deps(), *args, **kwargs)

shiny/modal.py METASEP
import sys
from typing import Optional, Any

if sys.version_info >= (3, 8):
    from typing import Literal
else:
    from typing_extensions import Literal

from htmltools import tags, Tag, div, HTML, TagChildArg, TagAttrArg

from .utils import run_coro_sync
from .shinysession import ShinySession, _require_active_session, _process_deps


def modal_button(label: str, icon: TagChildArg = None) -> Tag:
    return tags.button(
        icon,
        label,
        type="button",
        class_="btn btn-default",
        data_dismiss="modal",
        data_bs_dismiss="modal",
    )


def modal(
    *args: TagChildArg,
    title: Optional[str] = None,
    footer: Any = modal_button("Dismiss"),
    size: Literal["m", "s", "l", "xl"] = "m",
    easy_close: bool = False,
    fade: bool = True,
    **kwargs: TagAttrArg
) -> Tag:

    title_div = None
    if title:
        title_div = div(tags.h4(title, class_="modal-title"), class_="modal-header")

    if footer:
        footer = div(footer, class_="modal-footer")

    dialog = div(
        div(
            title_div,
            div(*args, class_="modal-body", **kwargs),
            footer,
            class_="modal-content",
        ),
        class_="modal-dialog"
        + ({"s": " modal-sm", "l": " modal-lg", "xl": " modal-xl"}.get(size, "")),
    )

    # jQuery plugin doesn't work in Bootstrap 5, but vanilla JS doesn't work in Bootstrap 4 :sob:
    js = "\n".join(
        [
            "if (window.bootstrap && !window.bootstrap.Modal.VERSION.match(/^4\\. /)) {",
            "  var modal=new bootstrap.Modal(document.getElementById('shiny-modal'))",
            "  modal.show()",
            "} else {",
            "  $('#shiny-modal').modal().focus()",
            "}",
        ]
    )

    backdrop = None if easy_close else "static"
    keyboard = None if easy_close else "false"

    return div(
        dialog,
        tags.script(HTML(js)),
        id="shiny-modal",
        class_="modal fade" if fade else "modal",
        tabindex="-1",
        data_backdrop=backdrop,
        data_bs_backdrop=backdrop,
        data_keyboard=keyboard,
        data_bs_keyboard=keyboard,
    )


def modal_show(modal: Tag, session: Optional[ShinySession] = None):
    session = _require_active_session(session)
    msg = _process_deps(modal)
    return run_coro_sync(
        session.send_message({"modal": {"type": "show", "message": msg}})
    )


def modal_remove(session: Optional[ShinySession] = None):
    session = _require_active_session(session)
    return run_coro_sync(
        session.send_message({"modal": {"type": "remove", "message": None}})
    )

shiny/insert-ui.py METASEP
import sys
from typing import Optional

if sys.version_info >= (3, 8):
    from typing import Literal
else:
    from typing_extensions import Literal

from htmltools import TagList

from .shinysession import ShinySession, _require_active_session, _process_deps


def ui_insert(
    selector: str,
    ui: TagList,
    where: Literal["beforeEnd", "beforeBegin", "afterBegin", "afterEnd"] = "beforeEnd",
    multiple: bool = False,
    immediate: bool = False,
    session: Optional[ShinySession] = None,
):
    session = _require_active_session(session)

    def callback():
        msg = {
            "selector": selector,
            "multiple": multiple,
            "where": where,
            "content": _process_deps(ui, session),
        }
        session.send_message({"shiny-insert-ui": msg})

    # TODO: Should session have an on_flush() method? If not, how to get context object from session?
    callback() if immediate else session.on_flush(callback, once=True)


def ui_remove(
    selector: str,
    multiple: bool = False,
    immediate: bool = False,
    session: Optional[ShinySession] = None,
):
    session = _require_active_session(session)

    def callback():
        session.send_message(
            {"shiny-remove-ui": {"selector": selector, "multiple": multiple}}
        )

    callback() if immediate else session.on_flush(callback, once=True)

shiny/input_utils.py METASEP
from htmltools import tags, Tag, TagChildArg


def shiny_input_label(id: str, label: TagChildArg = None) -> Tag:
    cls = "control-label" + ("" if label else " shiny-label-null")
    return tags.label(label, class_=cls, id=id + "-label", for_=id)

shiny/input_update.py METASEP

shiny/input_text.py METASEP
from typing import Optional

from htmltools import tags, Tag, div, css, TagChildArg

from .input_utils import shiny_input_label


def input_text(
    id: str,
    label: TagChildArg,
    value: str = "",
    width: Optional[str] = None,
    placeholder: Optional[str] = None,
) -> Tag:
    return div(
        shiny_input_label(id, label),
        tags.input(
            id=id,
            type="text",
            class_="form-control",
            value=value,
            placeholder=placeholder,
        ),
        class_="form-group shiny-input-container",
        style=css(width=width),
    )


def input_text_area(
    id: str,
    label: TagChildArg,
    value: str = "",
    width: Optional[str] = None,
    height: Optional[str] = None,
    cols: Optional[int] = None,
    rows: Optional[int] = None,
    placeholder: Optional[str] = None,
    resize: Optional[str] = None,
) -> Tag:

    if resize and resize not in ["none", "both", "horizontal", "vertical"]:
        raise ValueError("Invalid resize value: " + str(resize))

    area = tags.textarea(
        id=id,
        class_="form-control",
        style=css(width=None if width else "100%", height=height, resize=resize),
        placeholder=placeholder,
        rows=rows,
        cols=cols,
        children=[value],
    )

    return div(
        shiny_input_label(id, label),
        area,
        class_="form-group shiny-input-container",
        style=css(width=width),
    )

shiny/input_slider.py METASEP
import math
import sys
from datetime import date, datetime, timedelta
from typing import Dict, Optional, Union, Tuple, TypeVar

if sys.version_info >= (3, 8):
    from typing import TypedDict
else:
    from typing_extensions import TypedDict
from typing_extensions import NotRequired

from htmltools import tags, Tag, div, css, TagAttrArg, TagChildArg, HTML

from .html_dependencies import ionrangeslider_deps
from .input_utils import shiny_input_label

__all__ = ["input_slider"]

# TODO: validate value(s) are within (min,max)?

SliderVal = TypeVar("SliderVal", int, float, datetime, date)


class AnimationOptions(TypedDict):
    interval: NotRequired[int]
    loop: NotRequired[bool]
    play_button: NotRequired[TagChildArg]
    pause_button: NotRequired[TagChildArg]


def input_slider(
    id: str,
    label: TagChildArg,
    min: SliderVal,
    max: SliderVal,
    value: Union[SliderVal, Tuple[SliderVal, SliderVal]],
    step: Optional[Union[int, float, timedelta]] = None,
    ticks: bool = True,
    animate: Union[bool, AnimationOptions] = False,
    width: Optional[str] = None,
    sep: str = ",",
    pre: Optional[str] = None,
    post: Optional[str] = None,
    time_format: Optional[str] = None,
    timezone: Optional[str] = None,
    drag_range: bool = True,
) -> Tag:

    # Thanks to generic typing, max, value, etc. should be of the same type
    data_type = _slider_type(min)

    # Make sure min, max, value, and step are all numeric
    # (converts dates/datetimes to milliseconds since epoch...this is the value JS wants)
    min_num = _as_numeric(min)
    max_num = _as_numeric(max)
    val_nums = (
        (_as_numeric(value[0]), _as_numeric(value[1]))
        if isinstance(value, (tuple, list))
        else (_as_numeric(value), _as_numeric(value))
    )
    step_num = _find_step_size(min_num, max_num) if step is None else _as_numeric(step)

    n_ticks = None
    if ticks:
        n_steps = (max_num - min_num) / step_num
        # Make sure there are <= 10 steps.
        # n_ticks can be a noninteger, which is good when the range is not an
        # integer multiple of the step size, e.g., min=1, max=10, step=4
        scale_factor = math.ceil(n_steps / 10)
        n_ticks = n_steps / scale_factor

    props: Dict[str, TagAttrArg] = {
        "class_": "js-range-slider",
        "id": id,
        "style": css(width=width),
        "data_skin": "shiny",
        # TODO: do we need to worry about scientific notation (i.e., formatNoSci()?)
        "data_min": str(min_num),
        "data_max": str(max_num),
        "data_from": str(val_nums[0]),
        "data_step": str(step_num),
        "data_grid": ticks,
        "data_grid_num": n_ticks,
        "data_grid_snap": "false",
        "data_prettify_separator": sep,
        "data_prettify_enabled": sep != "",
        "data_prefix": pre,
        "data_postfix": post,
        "data_keyboard": "true",
        "data_data_type": data_type,
        "data_time_format": time_format,
        "data_timezone": timezone,
    }

    if isinstance(value, (tuple, list)):
        props["data_type"] = "double"
        props["data_to"] = str(val_nums[1])
        props["data_drag_interval"] = drag_range

    if not time_format and data_type[0:4] == "date":
        props["data_time_format"] = "%F" if data_type == "date" else "%F %T"

    # ionRangeSlider wants attr = 'true'/'false'
    props = {k: str(v).lower() if isinstance(v, bool) else v for k, v in props.items()}

    slider_tag = div(
        shiny_input_label(id, label),
        tags.input(**props),
        *ionrangeslider_deps(),
        class_="form-group shiny-input-container",
    )

    if animate is False:
        return slider_tag

    if animate is True:
        animate = AnimationOptions()

    animate_tag = div(
        tags.a(
            tags.span(animate.get("play_button", _play_icon()), class_="play"),
            tags.span(animate.get("pause_button", _pause_icon()), class_="pause"),
            href="#",
            class_="slider-animate-button",
            data_target_id=id,
            data_interval=animate.get("interval", 500),
            data_loop=animate.get("loop", True),
        ),
        class_="slider-animate-container",
    )

    slider_tag.append(animate_tag)

    return slider_tag


def _slider_type(x: SliderVal) -> str:
    if isinstance(x, datetime):
        return "datetime"
    if isinstance(x, date):
        return "date"
    return "number"


def _as_numeric(x: Union[int, float, datetime, date, timedelta]) -> Union[int, float]:
    if isinstance(x, timedelta):
        return x.total_seconds() * 1000
    if isinstance(x, datetime):
        return x.timestamp() * 1000
    if isinstance(x, date):
        return datetime(x.year, x.month, x.day).timestamp() * 1000
    return x


def _find_step_size(
    min: Union[int, float], max: Union[int, float]
) -> Union[int, float]:
    # TODO: this is a naive version of shiny::findStepSize() that might be susceptible to
    # rounding errors? https://github.com/rstudio/shiny/pull/1956
    range = max - min

    if range < 2 or isinstance(min, float) or isinstance(max, float):
        step = range / 100
        # Round the step to get rid of any floating point arithmetic errors by
        # mimicing what signif(digits = 10, step) does in R (see Description of ?signif)
        # (the basic intuition is that smaller differences need more precision)
        return round(step, 10 - math.ceil(math.log10(step)))
    else:
        return 1


def _play_icon() -> HTML:
    try:
        from fontawesome import icon_svg

        return icon_svg("play")
    except ImportError:
        return HTML("&#x23ef;")


def _pause_icon() -> HTML:
    try:
        from fontawesome import icon_svg

        return icon_svg("pause")
    except ImportError:
        return HTML("&#9616;&#9616;")

shiny/input_select.py METASEP
from typing import Optional, Dict, Union, List, cast

from htmltools import Tag, tags, div, TagChildArg

from .html_dependencies import selectize_deps
from .input_utils import shiny_input_label

# This is the canonical format for representing select options.
SelectInputOptions = Dict[str, Union[str, Dict[str, str]]]


def input_selectize(
    id: str,
    label: TagChildArg,
    choices: Union[List[str], Dict[str, Union[str, List[str], Dict[str, str]]]],
    *,
    selected: Optional[str] = None,
    multiple: bool = False,
    width: Optional[str] = None,
    size: Optional[str] = None,
) -> Tag:

    return input_select(
        id,
        label,
        choices,
        selected=selected,
        multiple=multiple,
        selectize=True,
        width=width,
        size=size,
    )
    # # Make sure accessibility plugin is included by default
    # if not options.get("plugins", None):
    #     options["plugins"] = []
    # if "selectize-plugin-a11y" not in options["plugins"]:
    #     options["plugins"].append("selectize-plugin-a11y")
    # deps = [selectize_deps()]
    # if "drag_drop" in options["plugins"]:
    #     deps.append(jqui_deps())
    # return jsx_tag_create("InputSelectize")(deps, id=id, options=options, **kwargs)


def input_select(
    id: str,
    label: TagChildArg,
    choices: Union[List[str], Dict[str, Union[str, List[str], Dict[str, str]]]],
    *,
    selected: Optional[str] = None,
    multiple: bool = False,
    selectize: bool = False,
    width: Optional[str] = None,
    size: Optional[str] = None,
) -> Tag:

    choices_ = _normalize_choices(choices)
    if selected is None:
        selected = _find_first_option(choices_)

    choices_tags = _render_choices(choices_, selected)

    return div(
        shiny_input_label(id, label),
        div(
            tags.select(
                *choices_tags,
                id=id,
                class_=None if selectize else "form-select",
                multiple=multiple,
                width=width,
                size=size,
            ),
            (
                [
                    tags.script("{}", type="application/json", data_for=id),
                    selectize_deps(),
                ]
                if selectize
                else None
            ),
        ),
        class_="form-group shiny-input-container",
    )


# x can be structured like any of the following:
# List:
#   ["a", "b", "c"]
# Dictionary:
#   {"Choice A": "a", "Choice B": "b", "Choice C": "c"}
# Dictionary with sub-lists or sub-dictionaries (which are optgroups):
#   {
#     "Choice A": "a",
#     "Group B": {"Choice B1": "b1", "Choice B2": "b2"},
#     "Group C: ["c1, "c2"]
#   }
def _normalize_choices(
    x: Union[List[str], Dict[str, Union[str, List[str], Dict[str, str]]]]
) -> SelectInputOptions:
    if isinstance(x, list):
        return {k: k for k in x}

    # If we got here, it's a dict. The value of each item.
    result = x.copy()
    for (k, value) in result.items():
        # Convert list[str] to dict[str, str], but leave str, and dict[str, str] alone.
        if isinstance(value, list):
            result[k] = {k: k for k in value}

    # The type checker isn't smart enough to realize that none of the values are lists
    # at this point, so tell it to ignore the type.
    return result  # type: ignore


def _render_choices(x: SelectInputOptions, selected: Optional[str] = None) -> List[Tag]:
    result: List[Tag] = []
    for (label, value) in x.items():
        if isinstance(value, dict):
            # Type checker needs a little help here -- value is already a narrower type
            # than SelectInputOptions.
            value = cast(SelectInputOptions, value)
            result.append(
                tags.optgroup(*(_render_choices(value, selected)), label=label)
            )
        else:
            result.append(tags.option(label, value=value, selected=(value == selected)))

    return result


# Returns the first option in a SelectInputOptions object. For most cases, this is
# straightforward. In the following, the first option is "a":
# { "Choice A": "a", "Choice B": "b", "Choice C": "c" }
#
# Sometimes the first option is nested within an optgroup. For example, in the
# following, the first option is "b1":
# {
#     "Group A": {},
#     "Group B": {"Choice B1": "b1", "Choice B2": "b2"},
# }
def _find_first_option(x: SelectInputOptions) -> Optional[str]:
    for (_label, value) in x.items():
        if isinstance(value, dict):
            value = cast(SelectInputOptions, value)
            result = _find_first_option(value)
            if result is not None:
                return result
        else:
            return value

    return None

shiny/input_password.py METASEP
from typing import Optional

from htmltools import tags, Tag, div, css, TagChildArg

from .input_utils import shiny_input_label


def input_password(
    id: str,
    label: TagChildArg,
    value: str = "",
    width: Optional[str] = None,
    placeholder: Optional[str] = None,
) -> Tag:
    return div(
        shiny_input_label(id, label),
        tags.input(
            id=id,
            type="password",
            value=value,
            class_="form-control",
            placeholder=placeholder,
        ),
        class_="form-group shiny-input-container",
        style=css(width=width),
    )

shiny/input_numeric.py METASEP
from typing import Optional, Union

from htmltools import tags, Tag, div, css, TagChildArg

from .input_utils import shiny_input_label

valType = Union[int, float]


def input_numeric(
    id: str,
    label: TagChildArg,
    value: valType,
    min: Optional[valType] = None,
    max: Optional[valType] = None,
    step: Optional[valType] = None,
    width: Optional[str] = None,
) -> Tag:
    return div(
        shiny_input_label(id, label),
        tags.input(
            id=id,
            type="number",
            class_="form-control",
            value=value,
            min=min,
            max=max,
            step=step,
        ),
        class_="form-group shiny-input-container",
        style=css(width=width),
    )

shiny/input_handlers.py METASEP
from datetime import date, datetime
from typing import TYPE_CHECKING, Callable, Dict, Union, List, Any, TypeVar

if TYPE_CHECKING:
    from .shinysession import ShinySession

InputHandlerType = Callable[[Any, str, "ShinySession"], Any]


class _InputHandlers(Dict[str, InputHandlerType]):
    def __init__(self):
        super().__init__()

    def add(self, name: str, force: bool = False) -> Callable[[InputHandlerType], None]:
        def _(func: InputHandlerType):
            if name in self and not force:
                raise ValueError(f"Input handler {name} already registered")
            self[name] = func
            return None

        return _

    def remove(self, name: str):
        del self[name]

    def process_value(
        self, type: str, value: Any, name: str, session: "ShinySession"
    ) -> Any:
        handler = self.get(type)
        if handler is None:
            raise ValueError("No input handler registered for type: " + type)
        return handler(value, name, session)


input_handlers = _InputHandlers()


_NumberType = TypeVar("_NumberType", int, float, None)

# Doesn't do anything since it seems weird to coerce None into some sort of NA (like we do in R)?
@input_handlers.add("shiny.number")
def _(value: _NumberType, name: str, session: "ShinySession") -> _NumberType:
    return value


# TODO: implement when we have bookmarking
@input_handlers.add("shiny.password")
def _(value: str, name: str, session: "ShinySession") -> str:
    return value


@input_handlers.add("shiny.date")
def _(
    value: Union[str, List[str]], name: str, session: "ShinySession"
) -> Union[date, List[date]]:
    if isinstance(value, str):
        return datetime.strptime(value, "%Y-%m-%d").date()
    return [datetime.strptime(v, "%Y-%m-%d").date() for v in value]


@input_handlers.add("shiny.datetime")
def _(
    value: Union[int, float, List[int], List[float]], name: str, session: "ShinySession"
) -> Union[datetime, List[datetime]]:
    if isinstance(value, (int, float)):
        return datetime.utcfromtimestamp(value)
    return [datetime.utcfromtimestamp(v) for v in value]


class ActionButtonValue(int):
    pass


@input_handlers.add("shiny.action")
def _(value: int, name: str, session: "ShinySession") -> ActionButtonValue:
    return ActionButtonValue(value)


# TODO: implement when we have bookmarking
@input_handlers.add("shiny.file")
def _(value: Any, name: str, session: "ShinySession") -> Any:
    return value

shiny/input_file.py METASEP
from typing import Optional, List

from htmltools import tags, Tag, div, span, css, TagChildArg

from .input_utils import shiny_input_label


def input_file(
    id: str,
    label: TagChildArg,
    multiple: bool = False,
    accept: Optional[List[str]] = None,
    width: Optional[str] = None,
    button_label: str = "Browse...",
    placeholder: str = "No file selected",
) -> Tag:
    btn_file = span(
        button_label,
        tags.input(
            id=id,
            name=id,
            type="file",
            multiple="multiple" if multiple else None,
            accept=",".join(accept) if accept else None,
            # Don't use "display: none;" style, which causes keyboard accessibility issue; instead use the following workaround: https://css-tricks.com/places-its-tempting-to-use-display-none-but-dont/
            style="position: absolute !important; top: -99999px !important; left: -99999px !important;",
        ),
        class_="btn btn-default btn-file",
    )
    return div(
        shiny_input_label(id, label),
        div(
            tags.label(btn_file, class_="input-group-btn input-group-prepend"),
            tags.input(
                type="text",
                class_="form-control",
                placeholder=placeholder,
                readonly="readonly",
            ),
            class_="input-group",
        ),
        div(
            div(class_="progress-bar"),
            id=id + "_progress",
            class_="progress active shiny-file-input-progress",
        ),
        class_="form-group shiny-input-container",
        style=css(width=width),
    )

shiny/input_date.py METASEP
import json
from datetime import date
from typing import Optional

from htmltools import tags, Tag, div, span, TagAttrArg, TagChildArg, css

from .html_dependencies import datepicker_deps
from .input_utils import shiny_input_label

__all__ = ["input_date", "input_date_range"]


def input_date(
    id: str,
    label: TagChildArg,
    value: Optional[date] = None,
    min: Optional[date] = None,
    max: Optional[date] = None,
    format: str = "yyyy-mm-dd",
    startview: str = "month",
    weekstart: int = 0,
    language: str = "en",
    width: Optional[str] = None,
    autoclose: bool = True,
    datesdisabled: Optional[str] = None,
    daysofweekdisabled: Optional[str] = None,
) -> Tag:
    # TODO: needed?
    # value = dateYMD(value, "value")
    # min = dateYMD(min, "min")
    # max = dateYMD(max, "max")
    # datesdisabled = dateYMD(datesdisabled, "datesdisabled")
    return div(
        shiny_input_label(id, label),
        date_input_tag(
            id=id,
            value=value,
            min=min,
            max=max,
            format=format,
            startview=startview,
            weekstart=weekstart,
            language=language,
            autoclose=autoclose,
            data_date_dates_disabled=json.dumps(datesdisabled),
            data_date_days_of_week_disabled=json.dumps(daysofweekdisabled),
        ),
        id=id,
        class_="shiny-date-input form-group shiny-input-container",
        style=css(width=width),
    )


def input_date_range(
    id: str,
    label: TagChildArg,
    start: Optional[date] = None,
    end: Optional[date] = None,
    min: Optional[date] = None,
    max: Optional[date] = None,
    format: str = "yyyy-mm-dd",
    startview: str = "month",
    weekstart: int = 0,
    language: str = "en",
    separator: str = " to ",
    width: Optional[str] = None,
    autoclose: bool = True,
) -> Tag:
    # TODO: needed?
    # start = dateYMD(start, "start")
    # end = dateYMD(end, "end")
    # min = dateYMD(min, "min")
    # max = dateYMD(max, "max")
    return div(
        shiny_input_label(id, label),
        div(
            date_input_tag(
                id=id,
                value=start,
                min=min,
                max=max,
                format=format,
                startview=startview,
                weekstart=weekstart,
                language=language,
                autoclose=autoclose,
            ),
            # input-group-prepend and input-group-append are for bootstrap 4 forward compat
            span(
                span(separator, class_="input-group-text"),
                class_="input-group-addon input-group-prepend input-group-append",
            ),
            date_input_tag(
                id=id,
                value=end,
                min=min,
                max=max,
                format=format,
                startview=startview,
                weekstart=weekstart,
                language=language,
                autoclose=autoclose,
            ),
            # input-daterange class is needed for dropdown behavior
            class_="input-daterange input-group input-group-sm",
        ),
        id=id,
        class_="shiny-date-range-input form-group shiny-input-container",
        style=css(width=width),
    )


def date_input_tag(
    id: str,
    value: Optional[date],
    min: Optional[date],
    max: Optional[date],
    format: str,
    startview: str,
    weekstart: int,
    language: str,
    autoclose: bool,
    **kwargs: TagAttrArg,
):
    return tags.input(
        datepicker_deps(),
        type="text",
        class_="form-control",
        # `aria-labelledby` attribute is required for accessibility to avoid doubled labels (#2951).
        aria_labelledby=id + "-label",
        # title attribute is announced for screen readers for date format.
        title="Date format: " + format,
        data_date_language=language,
        data_date_week_start=weekstart,
        data_date_format=format,
        data_date_start_view=startview,
        data_min_date=min,
        data_max_date=max,
        data_initial_date=value,
        data_date_autoclose="true" if autoclose else "false",
        **kwargs,
    )

shiny/input_check_radio.py METASEP
from typing import Optional, Union, List, Dict

from htmltools import tags, Tag, div, span, css, TagChildArg

from .input_utils import shiny_input_label


def input_checkbox(
    id: str, label: TagChildArg, value: bool = False, width: Optional[str] = None
) -> Tag:
    return div(
        div(
            tags.label(
                tags.input(
                    id=id, type="checkbox", checked="checked" if value else None
                ),
                span(label),
            ),
            class_="checkbox",
        ),
        class_="form-group shiny-input-container",
        style=css(width=width),
    )


choicesType = Union[Dict[str, str], List[str]]


def input_checkbox_group(
    id: str,
    label: TagChildArg,
    choices: choicesType,
    choice_names: Optional[List[str]] = None,
    selected: Optional[str] = None,
    inline: bool = False,
    width: Optional[str] = None,
) -> Tag:
    input_label = shiny_input_label(id, label)
    options = generate_options(
        id=id,
        type="checkbox",
        choices=choices,
        choice_names=choice_names,
        selected=selected,
        inline=inline,
    )
    return div(
        input_label,
        options,
        id=id,
        style=css(width=width),
        class_="form-group shiny-input-checkboxgroup shiny-input-container"
        + (" shiny-input-container-inline" if inline else ""),
        # https://www.w3.org/TR/wai-aria-practices/examples/checkbox/checkbox-1/checkbox-1.html
        role="group",
        aria_labelledby=input_label.attrs.get("id"),
    )


def input_radio_buttons(
    id: str,
    label: TagChildArg,
    choices: choicesType,
    choice_names: Optional[List[str]] = None,
    selected: Optional[str] = None,
    inline: bool = False,
    width: Optional[str] = None,
) -> Tag:
    input_label = shiny_input_label(id, label)
    options = generate_options(
        id=id,
        type="radio",
        choices=choices,
        choice_names=choice_names,
        selected=selected,
        inline=inline,
    )
    return div(
        input_label,
        options,
        id=id,
        style=css(width=width),
        class_="form-group shiny-input-radiogroup shiny-input-container"
        + (" shiny-input-container-inline" if inline else ""),
        # https://www.w3.org/TR/2017/WD-wai-aria-practices-1.1-20170628/examples/radio/radio-1/radio-1.html
        role="radiogroup",
        aria_labelledby=input_label.attrs.get("id"),
    )


def generate_options(
    id: str,
    type: str,
    choices: choicesType,
    choice_names: Optional[List[str]],
    selected: Optional[str],
    inline: bool,
):
    if not choice_names:
        choice_names = list(choices.keys()) if isinstance(choices, dict) else choices
    choices = [v for k, v in choices.items()] if isinstance(choices, dict) else choices
    if type == "radio" and not selected:
        selected = choices[0]
    return div(
        *[
            generate_option(id, type, choices[i], choice_names[i], selected, inline)
            for i in range(len(choices))
        ],
        class_="shiny-options-group",
    )


def generate_option(
    id: str,
    type: str,
    choice: str,
    choice_name: str,
    selected: Optional[str],
    inline: bool,
):
    input = tags.input(
        type=type,
        name=id,
        value=choice,
        checked="checked" if selected == choice else None,
    )
    if inline:
        return tags.label(input, span(choice_name), class_=type + "-inline")
    else:
        return div(tags.label(input, span(choice_name)), class_=type)

shiny/input_button.py METASEP
from typing import Optional

from htmltools import tags, Tag, TagChildArg, TagAttrArg, css


def input_button(
    id: str,
    label: TagChildArg,
    icon: TagChildArg = None,
    width: Optional[str] = None,
    **kwargs: TagAttrArg,
) -> Tag:
    return tags.button(
        icon,
        label,
        id=id,
        type="button",
        class_="btn btn-default action-button",
        style=css(width=width),
        **kwargs,
    )


def input_link(
    id: str,
    label: TagChildArg,
    icon: TagChildArg = None,
    **kwargs: TagAttrArg,
) -> Tag:
    return tags.a(icon, label, id=id, href="#", class_="action-button", **kwargs)

shiny/http_staticfiles.py METASEP
"""
We can't use starlette's StaticFiles when running in wasm mode, because it launches a
thread. Instead, use our own crappy version. Fortunately, this is all we need.

When running in native Python mode, use the starlette StaticFiles impl; it's battle
tested, whereas ours is not. Under wasm, it's OK if ours has bugs, even security holes:
everything is running in the browser sandbox including the filesystem, so there's
nothing we could disclose that an attacker wouldn't already have access to. The same is
not true when running in native Python, we want to be as safe as possible.
"""

import sys

if "pyodide" not in sys.modules:
    # Running in native mode; use starlette StaticFiles

    import starlette.staticfiles

    StaticFiles = starlette.staticfiles.StaticFiles  # type: ignore

else:
    # Running in wasm mode; must use our own simple StaticFiles

    from typing import Optional, Tuple, MutableMapping, Iterable
    from starlette.types import Scope, Receive, Send
    from starlette.responses import PlainTextResponse
    import os
    import os.path
    import mimetypes
    import pathlib
    import urllib.parse

    class StaticFiles:
        dir: pathlib.Path
        root_path: str

        def __init__(self, directory: str):
            self.dir = pathlib.Path(os.path.realpath(os.path.normpath(directory)))

        async def __call__(self, scope: Scope, receive: Receive, send: Send):
            if scope["type"] != "http":
                raise AssertionError("StaticFiles can't handle non-http request")
            path = scope["path"]
            path_segments = path.split("/")
            final_path, trailing_slash = traverse_url_path(self.dir, path_segments)
            if final_path is None:
                return await Error404()(scope, receive, send)

            if not final_path.exists():
                return await Error404()(scope, receive, send)

            # Sanity check that final path is under self.dir, and if not, 404
            if not final_path.is_relative_to(self.dir):
                return await Error404()(scope, receive, send)

            # Serve up the path

            if final_path.is_dir():
                if trailing_slash:
                    # We could serve up index.html or directory listing if we wanted
                    return await Error404()(scope, receive, send)
                else:
                    # We could redirect with an added "/" if we wanted
                    return await Error404()(scope, receive, send)
            else:
                return await FileResponse(final_path)(scope, receive, send)

    def traverse_url_path(
        dir: pathlib.Path[str], path_segments: list[str]
    ) -> Tuple[Optional[pathlib.Path[str]], bool]:
        assert len(path_segments) > 0

        new_dir = dir
        path_segment = urllib.parse.unquote(path_segments.pop(0))
        # Gratuitous whitespace is not allowed
        if path_segment != path_segment.strip():
            return None, False

        # Check for illegal paths
        if "/" in path_segment:
            return None, False
        elif path_segment == ".." or path_segment == ".":
            return None, False

        if path_segment != "":
            new_dir = dir / path_segment

        if len(path_segments) == 0:
            return new_dir, path_segment == ""
        else:
            return traverse_url_path(new_dir, path_segments)

    class Error404(PlainTextResponse):
        def __init__(self):
            super().__init__("404", status_code=404)  # type: ignore

    class FileResponse:
        file: os.PathLike[str]
        headers: Optional[MutableMapping[str, str]]
        media_type: str

        def __init__(
            self,
            file: os.PathLike[str],
            headers: Optional[MutableMapping[str, str]] = None,
            media_type: Optional[str] = None,
        ) -> None:
            self.headers = headers
            self.file = file

            if media_type is None:
                media_type, _ = mimetypes.guess_type(file, strict=False)
                if media_type is None:
                    media_type = "application/octet-stream"
            self.media_type = media_type

        async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None:
            await send(
                {
                    "type": "http.response.start",
                    "status": 200,
                    "headers": convert_headers(self.headers, self.media_type),
                }
            )
            with open(self.file, "rb") as f:
                data = f.read()
                await send(
                    {"type": "http.response.body", "body": data, "more_body": False}
                )

    def convert_headers(
        headers: Optional[MutableMapping[str, str]], media_type: Optional[str] = None
    ) -> Iterable[Tuple[bytes, bytes]]:
        if headers is None:
            headers = {}

        header_list = [
            (k.encode("latin-1"), v.encode("latin-1")) for k, v in headers.items()
        ]
        if media_type is not None:
            header_list += [
                (
                    b"Content-Type",
                    media_type.encode("latin-1"),
                )
            ]
        return header_list

shiny/html_dependencies.py METASEP
from htmltools import HTMLDependency, HTML
from typing import List, Union


def shiny_deps() -> HTMLDependency:
    return HTMLDependency(
        name="shiny",
        version="0.0.1",
        source={"package": "shiny", "subdir": "www/shared/"},
        script={"src": "shiny.js"},
        stylesheet={"href": "shiny.min.css"},
    )


def bootstrap_deps(bs3compat: bool = True) -> List[HTMLDependency]:
    dep = HTMLDependency(
        name="bootstrap",
        version="5.0.1",
        source={"package": "shiny", "subdir": "www/shared/bootstrap/"},
        script={"src": "bootstrap.bundle.min.js"},
        stylesheet={"href": "bootstrap.min.css"},
    )
    deps = [jquery_deps(), dep]
    if bs3compat:
        deps.append(bs3compat_deps())
    return deps


# TODO: if we want to support glyphicons we'll need to bundle font files, too
def bs3compat_deps() -> HTMLDependency:
    return HTMLDependency(
        name="bs3-compat",
        version="1.0",
        source={"package": "shiny", "subdir": "www/shared/bs3compat/"},
        script=[{"src": "transition.js"}, {"src": "tabs.js"}, {"src": "bs3compat.js"}],
    )


def jquery_deps() -> HTMLDependency:
    return HTMLDependency(
        name="jquery",
        version="3.6.0",
        source={"package": "shiny", "subdir": "www/shared/jquery/"},
        script={"src": "jquery-3.6.0.min.js"},
    )


def nav_deps(
    include_bootstrap: bool = True,
) -> Union[HTMLDependency, List[HTMLDependency]]:
    dep = HTMLDependency(
        name="bslib-navs",
        version="1.0",
        source={"package": "shiny", "subdir": "www/shared/bslib/dist/"},
        script={"src": "navs.min.js"},
    )
    return [dep, *bootstrap_deps()] if include_bootstrap else dep


def ionrangeslider_deps() -> List[HTMLDependency]:
    return [
        HTMLDependency(
            name="ionrangeslider",
            version="2.3.1",
            source={"package": "shiny", "subdir": "www/shared/ionrangeslider/"},
            script={"src": "js/ion.rangeSlider.min.js"},
            stylesheet={"href": "css/ion.rangeSlider.css"},
        ),
        HTMLDependency(
            name="strftime",
            version="0.9.2",
            source={"package": "shiny", "subdir": "www/shared/strftime/"},
            script={"src": "strftime-min.js"},
        ),
    ]


def datepicker_deps() -> HTMLDependency:
    return HTMLDependency(
        name="bootstrap-datepicker",
        version="1.9.0",
        source={"package": "shiny", "subdir": "www/shared/datepicker/"},
        # TODO: pre-compile the Bootstrap 5 version?
        stylesheet={"href": "css/bootstrap-datepicker3.min.css"},
        script={"src": "js/bootstrap-datepicker.min.js"},
        # Need to enable noConflict mode. See #1346.
        head=HTML(
            "<script>(function() { var datepicker = $.fn.datepicker.noConflict(); $.fn.bsDatepicker = datepicker; })();</script>"
        ),
    )


def selectize_deps() -> HTMLDependency:
    return HTMLDependency(
        name="selectize",
        version="0.12.6",
        source={"package": "shiny", "subdir": "www/shared/selectize/"},
        script=[
            {"src": "js/selectize.min.js"},
            {"src": "accessibility/js/selectize-plugin-a11y.min.js"},
        ],
        # TODO: pre-compile the Bootstrap 5 version?
        stylesheet={"href": "css/selectize.bootstrap3.css"},
    )


def jqui_deps() -> HTMLDependency:
    return HTMLDependency(
        name="jquery-ui",
        version="1.12.1",
        source={"package": "shiny", "subdir": "www/shared/jqueryui/"},
        script={"src": "jquery-ui.min.js"},
        stylesheet={"href": "jquery-ui.min.css"},
    )

shiny/fileupload.py METASEP
import sys
from typing import Optional, BinaryIO, List
import typing
import tempfile
import os
import copy
import shutil
import pathlib

if sys.version_info >= (3, 8):
    from typing import TypedDict
else:
    from typing_extensions import TypedDict


from . import utils

# File uploads happen through a series of requests. This requires a browser
# which supports the HTML5 File API.
#
# 1. Client tells server that one or more files are about to be uploaded, with
#    an "uploadInit" message; the server responds with a "jobId" and "uploadUrl"
#    that the client should use to upload the files. From the server's
#    perspective, the messages look like this:
#    RECV {"method":"uploadInit","args":[[{"name":"mtcars.csv","size":1303,"type":"text/csv"}]],"tag":2}
#    SEND {"response":{"tag":2,"value":{"jobId":"1651ddebfb643a26e6f18aa1","uploadUrl":"session/3cdbe3c4d1318225fee8f2e3417a1c99/upload/1651ddebfb643a26e6f18aa1?w="}}}
#
# 2. For each file (sequentially):
#    b. Client makes a POST request with the file data.
#    c. Server sends a 200 response to the client.
#
# 3. Repeat 2 until all files have been uploaded.
#
# 4. Client tells server that all files have been uploaded, along with the
#    input ID that this data should be associated with. The server responds
#    with the tag ID and a null message. The messages look like this:
#    RECV {"method":"uploadEnd","args":["1651ddebfb643a26e6f18aa1","file1"],"tag":3}
#    SEND {"response":{"tag":3,"value":null}}


# Information about a single file, with a structure like:
#   {'name': 'mtcars.csv', 'size': 1303, 'type': 'text/csv', 'datapath: '/...../mtcars.csv'}
# The incoming data doesn't include 'datapath'; that field is added by the
# FileUploadOperation class.
class FileInfo(TypedDict):
    name: str
    size: int
    type: str
    datapath: str


class FileUploadOperation:
    def __init__(
        self, parent: "FileUploadManager", id: str, dir: str, file_infos: List[FileInfo]
    ) -> None:
        self._parent: FileUploadManager = parent
        self._id: str = id
        self._dir: str = dir
        # Copy file_infos and add a "datapath" entry for each file.
        self._file_infos: list[FileInfo] = [
            typing.cast(FileInfo, {**fi, "datapath": ""})
            for fi in copy.deepcopy(file_infos)
        ]
        self._n_uploaded: int = 0
        self._current_file_obj: Optional[BinaryIO] = None

    # Start uploading one of the files.
    def file_begin(self) -> None:
        file_info: FileInfo = self._file_infos[self._n_uploaded]
        file_ext = pathlib.Path(file_info["name"]).suffix
        file_info["datapath"] = os.path.join(
            self._dir, str(self._n_uploaded) + file_ext
        )
        self._current_file_obj = open(file_info["datapath"], "ab")

    # Finish uploading one of the files.
    def file_end(self) -> None:
        if self._current_file_obj is not None:
            self._current_file_obj.close()
        self._current_file_obj = None
        self._n_uploaded += 1

    # Write a chunk of data for the currently-open file.
    def write_chunk(self, chunk: bytes) -> None:
        if self._current_file_obj is None:
            raise RuntimeError(f"FileUploadOperation for {self._id} is not open.")
        self._current_file_obj.write(chunk)

    # End the entire operation, which can consist of multiple files.
    def finish(self) -> List[FileInfo]:
        if self._n_uploaded != len(self._file_infos):
            raise RuntimeError(
                f"Not all files for FileUploadOperation {self._id} were uploaded."
            )
        self._parent.on_job_finished(self._id)
        return self._file_infos

    # Context handlers for `with`
    def __enter__(self) -> None:
        self.file_begin()

    def __exit__(self, type, value, trace) -> None:  # type: ignore
        self.file_end()


class FileUploadManager:
    def __init__(self) -> None:
        # TODO: Remove basedir when app exits.
        self._basedir: str = tempfile.mkdtemp(prefix="fileupload-")
        self._operations: dict[str, FileUploadOperation] = {}

    def create_upload_operation(self, file_infos: List[FileInfo]) -> str:
        job_id = utils.rand_hex(12)
        dir = tempfile.mkdtemp(dir=self._basedir)
        self._operations[job_id] = FileUploadOperation(self, job_id, dir, file_infos)
        return job_id

    def get_upload_operation(self, id: str) -> Optional[FileUploadOperation]:
        if id in self._operations:
            return self._operations[id]
        else:
            return None

    def on_job_finished(self, job_id: str) -> None:
        del self._operations[job_id]

    # Remove the directories containing file uploads; this is to be called when
    # a session ends.
    def rm_upload_dir(self) -> None:
        shutil.rmtree(self._basedir)

shiny/datastructures.py METASEP
from typing import TypeVar, Generic
from queue import PriorityQueue


T = TypeVar("T")


class PriorityQueueFIFO(Generic[T]):
    """
    Similar to queue.PriorityQueue, except that if two elements have the same
    priority, they are returned in the order they were inserted. Also, the item
    is kept separate from the priority value (with PriorityQueue, the priority
    is part of the item).
    """

    def __init__(self) -> None:
        self._pq: PriorityQueue[tuple[int, int, T]] = PriorityQueue()
        self._counter: int = 0

    def put(self, priority: int, item: T) -> None:
        """
        Add an item to the queue.

        Parameters:
           priority (int): The priority of the item. Higher priority items will
                           come out of the queue before lower priority items.
           item (T): The item to put in the queue.
        """
        self._counter += 1
        self._pq.put((-priority, self._counter, item))

    def get(self) -> T:
        return self._pq.get()[2]

    def empty(self) -> bool:
        return self._pq.empty()

shiny/connmanager.py METASEP
from abc import ABC, abstractmethod
from typing import Optional
import starlette.websockets
from starlette.websockets import WebSocketState


class Connection(ABC):
    """Abstract class to serve a session and send/receive messages to the
    client."""

    @abstractmethod
    async def send(self, message: str) -> None:
        ...

    @abstractmethod
    async def receive(self) -> str:
        ...

    @abstractmethod
    async def close(self, code: int, reason: Optional[str]) -> None:
        ...


class StarletteConnection(Connection):
    def __init__(self, conn: starlette.websockets.WebSocket):
        self.conn: starlette.websockets.WebSocket = conn

    async def accept(self, subprotocol: Optional[str] = None):
        await self.conn.accept(subprotocol)  # type: ignore

    async def send(self, message: str) -> None:
        if self._is_closed():
            return

        await self.conn.send_text(message)

    async def receive(self) -> str:
        if self._is_closed():
            raise ConnectionClosed()

        try:
            return await self.conn.receive_text()
        except starlette.websockets.WebSocketDisconnect:
            raise ConnectionClosed()

    async def close(self, code: int, reason: Optional[str]) -> None:
        if self._is_closed():
            return

        await self.conn.close(code)

    def _is_closed(self) -> bool:
        return (
            self.conn.application_state == WebSocketState.DISCONNECTED  # type: ignore
            or self.conn.client_state == WebSocketState.DISCONNECTED  # type: ignore
        )


class ConnectionClosed(Exception):
    """Raised when a Connection is closed from the other side."""

    pass

shiny/bootstrap.py METASEP
import sys
from typing import Callable, Optional

if sys.version_info >= (3, 8):
    from typing import Literal
else:
    from typing_extensions import Literal

from htmltools import (
    TagChildArg,
    TagAttrArg,
    TagList,
    Tag,
    div,
    tags,
    h2,
    css,
    span,
    HTML,
)

from .html_dependencies import jqui_deps


def row(*args: TagChildArg, **kwargs: TagAttrArg) -> Tag:
    return div(*args, class_="row", **kwargs)


def column(
    width: int, *args: TagChildArg, offset: int = 0, **kwargs: TagAttrArg
) -> Tag:
    if width < 1 or width > 12:
        raise ValueError("Column width must be between 1 and 12")
    cls = "col-sm-" + str(width)
    if offset > 0:
        # offset-md-x is for bootstrap 4 forward compat
        # (every size tier has been bumped up one level)
        # https://github.com/twbs/bootstrap/blob/74b8fe7/docs/4.3/migration/index.html#L659
        off = str(offset)
        cls += f" offset-md-{off} col-sm-offset-{off}"
    return div(*args, class_=cls, **kwargs)


# TODO: also accept a generic list (and wrap in panel in that case)
def layout_sidebar(
    sidebar: TagChildArg, main: TagChildArg, position: Literal["left", "right"] = "left"
) -> Tag:
    return row(sidebar, main) if position == "left" else row(main, sidebar)


def panel_well(*args: TagChildArg, **kwargs: TagAttrArg) -> Tag:
    return div(*args, class_="well", **kwargs)


def panel_sidebar(*args: TagChildArg, width: int = 4, **kwargs: TagAttrArg) -> Tag:
    return div(
        # A11y semantic landmark for sidebar
        tags.form(*args, role="complementary", class_="well", **kwargs),
        class_="col-sm-" + str(width),
    )


def panel_main(*args: TagChildArg, width: int = 8, **kwargs: TagAttrArg):
    return div(
        # A11y semantic landmark for main region
        *args,
        role="main",
        class_="col-sm-" + str(width),
        **kwargs,
    )


# TODO: replace `flowLayout()`/`splitLayout()` with a flexbox wrapper?
# def panel_input(*args: TagChild, **kwargs: TagAttr):
#  return div(flowLayout(...), class_="shiny-input-panel")


def panel_conditional(
    condition: str,
    *args: TagChildArg,
    # TODO: do we have an answer for shiny::NS() yet?
    ns: Callable[[str], str] = lambda x: x,
    **kwargs: TagAttrArg,
):
    return div(*args, data_display_if=condition, data_ns_prefix=ns(""), **kwargs)


def panel_title(title: str, windowTitle: Optional[str] = None) -> TagList:
    if windowTitle is None:
        windowTitle = title
    return TagList(
        tags.head(tags.title(windowTitle)),
        h2(title),
    )


def panel_fixed(*args: TagChildArg, **kwargs: TagAttrArg) -> TagList:
    return panel_absolute(*args, fixed=True, **kwargs)


def panel_absolute(
    *args: TagChildArg,
    top: Optional[str] = None,
    left: Optional[str] = None,
    right: Optional[str] = None,
    bottom: Optional[str] = None,
    width: Optional[str] = None,
    height: Optional[str] = None,
    draggable: bool = False,
    fixed: bool = False,
    cursor: Literal["auto", "move", "default", "inherit"] = "auto",
    **kwargs: TagAttrArg,
) -> TagList:
    style = css(
        top=top,
        left=left,
        right=right,
        bottom=bottom,
        width=width,
        height=height,
        position="fixed" if fixed else "absolute",
        cursor="move" if draggable else "inherit" if cursor == "auto" else cursor,
    )
    divTag = div(*args, style=style, **kwargs)
    if not draggable:
        return TagList(divTag)
    divTag.add_class("draggable")
    deps = jqui_deps()
    deps.stylesheet = []
    return TagList(deps, divTag, tags.script(HTML('$(".draggable").draggable();')))


def help_text(*args: TagChildArg, **kwargs: TagAttrArg) -> Tag:
    return span(*args, class_="help-block", **kwargs)

shiny/__init__.py METASEP
"""Top-level package for Shiny."""

__author__ = """Winston Chang"""
__email__ = "winston@rstudio.com"
__version__ = "0.0.0.9000"

# All objects imported into this scope will be available as shiny.foo
from .bootstrap import *
from .input_button import *
from .input_check_radio import *
from .input_date import *
from .input_file import *
from .input_numeric import *
from .input_password import *
from .input_select import *
from .input_slider import *
from .input_text import *
from .modal import *
from .navs import *
from .notifications import *
from .output import *
from .page import *
from .progress import *
from .render import *
from .reactives import *
from .shinyapp import *
from .shinysession import *
from .shinymodule import *

examples/inputs/rstudio-logo.png METASEP

setup.cfg METASEP
[bumpversion]
current_version = 0.0.0.9000
commit = True
tag = True

[bumpversion:file:setup.py]
search = version='{current_version}'
replace = version='{new_version}'

[bumpversion:file:shiny/__init__.py]
search = __version__ = '{current_version}'
replace = __version__ = '{new_version}'

[bdist_wheel]
universal = 1

[flake8]
ignore = E203, E302, E402, E501, F403, F405, W503
exclude = docs

requirements.txt METASEP
uvicorn==0.14.0
matplotlib==3.4.2
fastapi==0.70.0
contextvars==2.4
websockets==10.0
typing_extensions==4.0.1
python-multipart
htmltools

requirements-dev.txt METASEP
pytest==6.2.4
black==21.9b0
flake8==3.9.2
pre-commit==2.15.0

pyrightconfig.json METASEP
{
  "reportImportCycles": false
}

parity.Rmd METASEP
---
title: "Prism UI parity"
output: html_document
---

## Page layouts

✓ `navbarPage()` -> `page_navbar()`
✓ `fluidPage()` -> `page_fluid()`
✓ `fixedPage()`-> `page_fixed()`
✓ `bootstrapPage()`-> `page_bootstrap()`
`fillPage()`-> `page_fill()`
`htmlTemplate()`-> `page_template()`

## Layout, panels, other UI

✓ `sidebarLayout()` -> `layout_sidebar()`
✓ `sidebarPanel()` -> `panel_sidebar()`
✓ `mainPanel()` -> `panel_main()`
✓ `titlePanel()` -> `panel_title()`
✓ `wellPanel()` -> `panel_well()`
✓ `absolutePanel()` -> `panel_absolute()`
✓ `fixedPanel()` -> `panel_fixed()`
✓ `conditionalPanel()` -> `panel_conditional()`
  * Needs `NS()`
✓ `fluidRow()` / `fixedRow()` -> `row()`
✓ `column()` -> `col()`
✓ `helpText()` -> `help_text()`
`fillRow()` -> `row_fill()`
`fillCol()` -> `col_fill()`
`inputPanel()` -> `panel_inputs()`
  * Needs `flowLayout()`

`verticalLayout()` ->
`splitLayout()` (Replace these with a flexbox wrapper?)
`flowLayout()` (not needed? Use flexbox instead?)

## Tabs

✓ `tabsetPanel()` -> `navs_tab()`/`navs_pill()`
✓ `navlistPanel()` -> `navs_pill_list()`
✓ `tabPanel()` -> `nav()`
✓ `navbarMenu()` -> `nav_menu()`
`tabPanelBody()` -> `navs_content()`
`insertTab()`
`appendTab()`
`showTab()`
`removeTab()`
`hideTab()`
`prependTab()`

## Inputs

`selectInput()` -> `input_select()`
`selectizeInput()` -> `input_selectize()`
✓ `sliderInput()` -> `input_slider()`
  `animationOptions()`
✓ `dateInput()` -> `input_date()`
✓ `dateRangeInput()` -> `input_date_range()`
✓ `checkboxInput()` -> `input_checkbox()`
✓ `checkboxGroupInput()` -> `input_checkbox_group()`
✓ `textInput()` ->  `input_text()`
✓ `numericInput()` -> `input_numeric()`
✓ `passwordInput()` -> `input_password()`
✓ `textAreaInput()` -> `input_text_area()`
✓ `fileInput()` -> `input_file()`

✓ `actionLink()` -> `input_action_link()`
✓ `actionButton()` -> `input_action_button()`

`varSelectInput()` (not implemented)
`varSelectizeInput()` (not implemented)
`submitButton()` (not implemented)

## Modals, notifications, & progress

✓ `modalDialog()` -> `modal()`
✓ `modalButton()` -> `modal_button()`
✓ `showModal()` -> `modal_show()`
✓ `removeModal()` -> `modal_remove()`
✓ `showNotification()` -> `notification_show()`
✓ `removeNotification()` -> `notification_remove()`
✓ `Progress` -> `Progress()`
  `incProgress()` (not implemented)
  `setProgress()` (not implemented)
  `withProgress()` (not implemented)

## Output/render

✓ `imageOutput()`/`renderImage()`
✓ `plotOutput()`/`renderPlot()`
✓ `uiOutput()` / `renderUI()`
✓ `renderText()`/`textOutput()`
`tableOutput()` / `renderTable()`
`renderPrint()` / `verbatimTextOutput()`
`dataTableOutput()`/`renderDataTable()`
`outputOptions()`


## Dynamic UI

`insertUI()`
  * Needs `session.on_flush()`
`removeUI()`
  * Needs `session.on_flush()`

## Input updating

Needs `session$sendInputMessage()`

`updateNavbarPage()`
`updateTabsetPanel()`
`updateSliderInput()`
`updateTextInput()`
`updateNumericInput()`
`updateNavlistPanel()`
`updateActionLink()`
`updateActionButton()`
`updateDateInput()`
`updateDateRangeInput()`
`updateRadioButtons()`
`updateCheckboxInput()`
`updateSelectInput()`
`updateSelectizeInput()`
`updateCheckboxGroupInput()`

## Input handlers

`registerInputHandler()`
`removeInputHandler()`

## Uploads & downloads

`downloadButton()`
`downloadLink()`
`downloadHandler()`

## Dependencies

✓ `createWebDependency()` -> `create_web_dependency()`
`addResourcePath()`
`removeResourcePath()`
`resourcePaths()`
`suppressDependencies()`

## Misc

`withMathJax()`
`markdown()`
`icon()`
`validateCssUnit()`
`safeError()`
`httpResponse()`

## Theming

`getCurrentOutputInfo()`
`bootstrapLib()`
`getCurrentTheme()`
`registerThemeDependency()`

## Query strings

`getQueryString()`
`parseQueryString()`
`getUrlHash()`
`updateQueryString()`

## Validation

`need()`
`req()`
`validate()`
`isTruthy()`

# Inclusion helpers

`includeCSS()`
`includeScript()`
`includeMarkdown()`
`includeHTML()`
`includeText()`

# Not included (v2?)

* Caching (`bindCache`)
* Bookmarking
* Server testing (`testServer`)
* Testing helpers (snap)

README.md METASEP
Shiny for Python
================

This repository contains an implementation of Shiny for Python. It works with Python 3.7 and above.

## Usage

First clone the [py-htmltools](https://github.com/rstudio/py-htmltools) repository and install the package:

```sh
git clone https://github.com/rstudio/py-htmltools.git
cd py-htmltools
pip install -r requirements.txt
make install
```

Next, clone this repository and install it

```sh
git clone https://github.com/rstudio/prism.git
cd prism
pip install -r requirements.txt
make install
```

To run an example app:

```sh
python3 examples/inputs/app.py
```

Then visit the app by pointing a web browser to http://localhost:8000/.

## Development

If you want to do development, run:

```sh
pip install -r requirements-dev.txt
```

Additionally, you can install pre-commit hooks which will automatically reformat and lint the code when you make a commit:

```sh
pre-commit install

# To disable:
# pre-commit uninstall
```

Makefile METASEP
.PHONY: clean clean-test clean-pyc clean-build docs help
.DEFAULT_GOAL := help

define BROWSER_PYSCRIPT
import os, webbrowser, sys

from urllib.request import pathname2url

webbrowser.open("file://" + pathname2url(os.path.abspath(sys.argv[1])))
endef
export BROWSER_PYSCRIPT

define PRINT_HELP_PYSCRIPT
import re, sys

for line in sys.stdin:
	match = re.match(r'^([a-zA-Z_-]+):.*?## (.*)$$', line)
	if match:
		target, help = match.groups()
		print("%-20s %s" % (target, help))
endef
export PRINT_HELP_PYSCRIPT

BROWSER := python -c "$$BROWSER_PYSCRIPT"

help:
	@python -c "$$PRINT_HELP_PYSCRIPT" < $(MAKEFILE_LIST)

clean: clean-build clean-pyc clean-test ## remove all build, test, coverage and Python artifacts

clean-build: ## remove build artifacts
	rm -fr build/
	rm -fr dist/
	rm -fr .eggs/
	find . -name '*.egg-info' -exec rm -fr {} +
	find . -name '*.egg' -exec rm -f {} +

clean-pyc: ## remove Python file artifacts
	find . -name '*.pyc' -exec rm -f {} +
	find . -name '*.pyo' -exec rm -f {} +
	find . -name '*~' -exec rm -f {} +
	find . -name '__pycache__' -exec rm -fr {} +

clean-test: ## remove test and coverage artifacts
	rm -fr .tox/
	rm -f .coverage
	rm -fr htmlcov/
	rm -fr .pytest_cache

lint: ## check style with flake8
	flake8 shiny tests

test: ## run tests quickly with the default Python
	pytest

test-all: ## run tests on every Python version with tox
	tox

coverage: ## check code coverage quickly with the default Python
	coverage run --source shiny -m pytest
	coverage report -m
	coverage html
	$(BROWSER) htmlcov/index.html

docs: ## generate Sphinx HTML documentation, including API docs
	rm -f docs/shiny.rst
	rm -f docs/modules.rst
	sphinx-apidoc -o docs/ shiny
	$(MAKE) -C docs clean
	$(MAKE) -C docs html
	$(BROWSER) docs/_build/html/index.html

servedocs: docs ## compile the docs watching for changes
	watchmedo shell-command -p '*.rst' -c '$(MAKE) -C docs html' -R -D .

release: dist ## package and upload a release
	twine upload dist/*

dist: clean ## builds source and wheel package
	python3 setup.py sdist
	python3 setup.py bdist_wheel
	ls -l dist

install: clean ## install the package to the active Python's site-packages
	python3 setup.py install

MANIFEST.in METASEP
include AUTHORS.rst
include CONTRIBUTING.rst
include HISTORY.rst
include LICENSE
include README.rst

recursive-include tests *
recursive-exclude * __pycache__
recursive-exclude * *.py[co]

recursive-include docs *.rst conf.py Makefile make.bat *.jpg *.png *.gif

recursive-include shiny/www *

HISTORY.rst METASEP
=======
History
=======

0.0.0.9000 (2021-08-10)
------------------

* First release on PyPI.

AUTHORS.rst METASEP
=======
Credits
=======

Development Lead
----------------

* Winston Chang <winston@rstudio.com>

Contributors
------------

None yet. Why not be the first?

examples/simple/app.py METASEP
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

ui = page_fluid(
    layout_sidebar(
        panel_sidebar(
            input_slider("n", "N", 0, 100, 20),
        ),
        panel_main(
            output_text_verbatim("txt", placeholder=True),
            output_plot("plot"),
        ),
    ),
)

# from htmltools.core import HTMLDocument
# from shiny import html_dependencies
# HTMLDocument(TagList(ui, html_dependencies.shiny_deps())).save_html("temp/app.html")


# A ReactiveVal which is exists outside of the session.
shared_val = ReactiveVal(None)


def server(session: ShinySession):
    @reactive()
    def r():
        if session.input["n"] is None:
            return
        return session.input["n"] * 2

    @session.output("txt")
    async def _():
        val = r()
        return f"n*2 is {val}, session id is {get_current_session().id}"


app = ShinyApp(ui, server)

if __name__ == "__main__":
    app.run()
    # Alternately, to listen on a TCP port:
    # app.run(conn_type = "tcp")

examples/myapp/app.py METASEP
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *
from shiny.fileupload import FileInfo

# For plot rendering
import numpy as np
import matplotlib.pyplot as plt

ui = page_fluid(
    layout_sidebar(
        panel_sidebar(
            input_slider("n", "N", 0, 100, 20),
            input_file("file1", "Choose file", multiple=True),
        ),
        panel_main(
            output_text_verbatim("txt"),
            output_text_verbatim("shared_txt"),
            output_plot("plot"),
            output_text_verbatim("file_content"),
        ),
    ),
)

# A ReactiveVal which is shared across all sessions.
shared_val = ReactiveVal(None)


def server(session: ShinySession):
    @reactive()
    def r():
        if session.input["n"] is None:
            return
        return session.input["n"] * 2

    @session.output("txt")
    async def _():
        val = r()
        return f"n*2 is {val}, session id is {get_current_session().id}"

    # This observer watches n, and changes shared_val, which is shared across
    # all running sessions.
    @observe()
    def _():
        if session.input["n"] is None:
            return
        shared_val(session.input["n"] * 10)

    # Print the value of shared_val(). Changing it in one session should cause
    # this to run in all sessions.
    @session.output("shared_txt")
    def _():
        return f"shared_val() is {shared_val()}"

    @session.output("plot")
    @render_plot(alt="A histogram")
    def _():
        np.random.seed(19680801)
        x = 100 + 15 * np.random.randn(437)

        fig, ax = plt.subplots()
        ax.hist(x, session.input["n"], density=True)
        return fig

    @session.output("file_content")
    def _():
        file_infos: list[FileInfo] = session.input["file1"]
        if not file_infos:
            return

        out_str = ""
        for file_info in file_infos:
            out_str += "====== " + file_info["name"] + " ======\n"
            with open(file_info["datapath"], "r") as f:
                out_str += f.read()

        return out_str


app = ShinyApp(ui, server)

if __name__ == "__main__":
    app.run()
    # Alternately, to listen on a TCP port:
    # app.run(conn_type = "tcp")

examples/moduleapp/app.py METASEP
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

# =============================================================================
# Counter module
# =============================================================================
def counter_module_ui(
    ns: Callable[[str], str], label: str = "Increment counter"
) -> TagChildArg:
    return TagList(
        input_button(id=ns("button"), label=label),
        output_text_verbatim(id=ns("out")),
    )


def counter_module_server(session: ShinySessionProxy):
    count: ReactiveVal[int] = ReactiveVal(0)

    @observe()
    def _():
        session.input["button"]
        isolate(lambda: count(count() + 1))

    @session.output("out")
    def _() -> str:
        return f"Click count is {count()}"


counter_module = ShinyModule(counter_module_ui, counter_module_server)


# =============================================================================
# App that uses module
# =============================================================================
ui = page_fluid(
    counter_module.ui("counter1", "Counter 1"),
    counter_module.ui("counter2", "Counter 2"),
)


def server(session: ShinySession):
    counter_module.server("counter1")
    counter_module.server("counter2")


app = ShinyApp(ui, server)


if __name__ == "__main__":
    app.run()

examples/inputs/app.py METASEP
# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
import os
import sys

shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)


from shiny import *
from htmltools import tags, HTML
from fontawesome import icon_svg

ui = page_fluid(
    panel_title("Hello prism ui"),
    layout_sidebar(
        panel_sidebar(
            input_slider(
                "n", "input_slider()", min=10, max=100, value=50, step=5, animate=True
            ),
            input_date("date", "input_date()"),
            input_date_range("date_rng", "input_date_range()"),
            input_text("txt", "input_text()", placeholder="Input some text"),
            input_text_area(
                "txt_area", "input_text_area()", placeholder="Input some text"
            ),
            input_numeric("num", "input_numeric()", 20),
            input_password("password", "input_password()"),
            input_checkbox("checkbox", "input_checkbox()"),
            input_checkbox_group(
                "checkbox_group",
                "input_checkbox_group()",
                {"Choice 1": "a", "Choice 2": "b"},
                selected="b",
                inline=True,
            ),
            input_radio_buttons(
                "radio", "input_radio()", {"Choice 1": "a", "Choice 2": "b"}
            ),
            input_select(
                "select",
                "input_select()",
                {
                    "Choice A": "a",
                    "Group B": {"Choice B1": "b1", "Choice B2": "b2"},
                    "Group C": ["c1", "c2"],
                },
            ),
            input_button("button", "input_button()", icon=icon_svg("check")),
            input_file("file", "File upload"),
        ),
        panel_main(
            output_plot("plot"),
            navs_tab_card(
                # TODO: output_plot() within a tab not working?
                nav("Inputs", output_ui("inputs"), icon=icon_svg("code")),
                nav(
                    "Image", output_image("image", inline=True), icon=icon_svg("image")
                ),
                nav(
                    "Misc",
                    input_link(
                        "link", "Show notification/progress", icon=icon_svg("info")
                    ),
                    tags.br(),
                    input_button("btn", "Show modal", icon=icon_svg("info-circle")),
                    panel_fixed(
                        panel_well(
                            "A fixed, draggable, panel",
                            input_checkbox("checkbox2", "Check me!"),
                            panel_conditional(
                                "input.checkbox2 == true", "Thanks for checking!"
                            ),
                        ),
                        draggable=True,
                        width="fit-content",
                        height="50px",
                        top="50px",
                        right="50px",
                    ),
                    icon=icon_svg("code"),
                ),
            ),
        ),
    ),
)


import numpy as np
import matplotlib.pyplot as plt


def server(s: ShinySession):
    @s.output("inputs")
    @render_ui()
    def _() -> Tag:
        vals = [
            f"<code>input_date()</code> {s.input['date']}",
            f"<code>input_date_range()</code>: {s.input['date_rng']}",
            f"<code>input_text()</code>: {s.input['txt']}",
            f"<code>input_text_area()</code>: {s.input['txt_area']}",
            f"<code>input_numeric()</code>: {s.input['num']}",
            f"<code>input_password()</code>: {s.input['password']}",
            f"<code>input_checkbox()</code>: {s.input['checkbox']}",
            f"<code>input_checkbox_group()</code>: {s.input['checkbox_group']}",
            f"<code>input_radio()</code>: {s.input['radio']}",
            f"<code>input_select()</code>: {s.input['select']}",
            f"<code>input_button()</code>: {s.input['button']}",
        ]
        return tags.pre(HTML("\n".join(vals)))

    np.random.seed(19680801)
    x_rand = 100 + 15 * np.random.randn(437)

    @s.output("plot")
    @render_plot(alt="A histogram")
    def _():
        fig, ax = plt.subplots()
        ax.hist(x_rand, int(s.input["n"]), density=True)
        return fig

    @s.output("image")
    @render_image()
    def _():
        from pathlib import Path

        dir = Path(__file__).resolve().parent
        return {"src": dir / "rstudio-logo.png", "width": "150px"}

    @observe()
    def _():
        btn = s.input["btn"]
        if btn and btn > 0:
            modal_show(modal("Hello there!", easy_close=True))

    @observe()
    def _():
        link = s.input["link"]
        if link and link > 0:
            notification_show("A notification!")
            p = Progress()
            import time

            for i in range(30):
                p.set(i / 30, message="Computing")
                time.sleep(0.1)
            p.close()


app = ShinyApp(ui, server)
if __name__ == "__main__":
    app.run()

examples/dynamic_ui/app.py METASEP
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

# For plot rendering
import numpy as np
import matplotlib.pyplot as plt

ui = page_fluid(
    layout_sidebar(
        panel_sidebar(h2("Dynamic UI"), output_ui("ui")),
        panel_main(
            output_text_verbatim("txt"),
            output_plot("plot"),
        ),
    ),
)


def server(session: ShinySession):
    @reactive()
    def r():
        if session.input["n"] is None:
            return
        return session.input["n"] * 2

    @session.output("txt")
    async def _():
        val = r()
        return f"n*2 is {val}, session id is {get_current_session().id}"

    @session.output("plot")
    @render_plot(alt="A histogram")
    def _():
        np.random.seed(19680801)
        x = 100 + 15 * np.random.randn(437)

        fig, ax = plt.subplots()
        ax.hist(x, session.input["n"], density=True)
        return fig

    @session.output("ui")
    @render_ui()
    def _():
        return input_slider("n", "N", 0, 100, 20)


app = ShinyApp(ui, server)

if __name__ == "__main__":
    app.run()
    # Alternately, to listen on a TCP port:
    # app.run(conn_type = "tcp")

setup.py METASEP
#!/usr/bin/env python

"""The setup script."""

from setuptools import setup, find_packages

requirements = []

test_requirements = [
    "pytest>=3",
]

setup(
    author="Winston Chang",
    author_email="winston@rstudio.com",
    python_requires=">=3.7",
    classifiers=[
        "Development Status :: 2 - Pre-Alpha",
        "Intended Audience :: Developers",
        "License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
        "Natural Language :: English",
        "Programming Language :: Python :: 3",
        "Programming Language :: Python :: 3.7",
        "Programming Language :: Python :: 3.8",
        "Programming Language :: Python :: 3.9",
    ],
    description="A web development framework for Python.",
    install_requires=requirements,
    license="GNU General Public License v3",
    include_package_data=True,
    keywords="shiny",
    name="shiny",
    packages=find_packages(include=["shiny", "shiny.*"]),
    package_data={
        "shiny": ["py.typed"],
    },
    test_suite="tests",
    tests_require=test_requirements,
    url="https://github.com/rstudio/prism",
    version="0.0.0.9000",
    zip_safe=False,
)

examples/update-input/app.py METASEP

# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

ui = page_fluid(
    panel_title("Changing the values of inputs from the server"),
    row(
        column(
            3,
            panel_well(
                tags.h4("These inputs control the other inputs on the page"),
                input_text(
                    "control_label", "This controls some of the labels:", "LABEL TEXT"
                ),
                input_slider(
                    "control_num", "This controls values:", min=1, max=20, value=15
                ),
            ),
        ),
        column(
            3,
            panel_well(
                tags.h4("These inputs are controlled by the other inputs"),
                input_text("inText", "Text input:", value="start text"),
                input_numeric(
                    "inNumber", "Number input:", min=1, max=20, value=5, step=0.5
                ),
                input_numeric(
                    "inNumber2", "Number input 2:", min=1, max=20, value=5, step=0.5
                ),
                input_slider("inSlider", "Slider input:", min=1, max=20, value=15),
                input_slider(
                    "inSlider2", "Slider input 2:", min=1, max=20, value=(5, 15)
                ),
                input_slider(
                    "inSlider3", "Slider input 3:", min=1, max=20, value=(5, 15)
                ),
                input_date("inDate", "Date input:"),
                input_date_range("inDateRange", "Date range input:"),
            ),
        ),
        column(
            3,
            panel_well(
                input_checkbox("inCheckbox", "Checkbox input", value=False),
                input_checkbox_group(
                    "inCheckboxGroup",
                    "Checkbox group input:",
                    ("label 1", "option1", "label 2", "option2"),
                ),
                input_radio_buttons(
                    "inRadio",
                    "Radio buttons:",
                    ("label 1", "option1", "label 2", "option2"),
                ),
                input_select(
                    "inSelect",
                    "Select input:",
                    {"label 1": "option1", "label 2": "option2"},
                ),
                input_select(
                    "inSelect2",
                    "Select input 2:",
                    {"label 1": "option1", "label 2": "option2"},
                    multiple=True,
                ),
            ),
            navs_tab(
                nav("panel1", h2("This is the first panel.")),
                nav("panel2", h2("This is the second panel.")),
                id="inTabset",
            ),
        ),
    ),
)


def server(sess: ShinySession):
    @observe_async()
infile
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

inproject
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

ui = page_fluid(
inproject
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

ui = page_fluid(
    panel_title("Changing the values of inputs from the server"),
inproject
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

ui = page_fluid(
    panel_title("Changing the values of inputs from the server"),
    row(
        column(
            3,
            panel_well(
                tags.h4("These inputs control the other inputs on the page"),
                input_text(
                    "control_label", "This controls some of the labels:", "LABEL TEXT"
                ),
                input_slider(
                    "control_num", "This controls values:", min=1, max=20, value=15
                ),
            ),
        ),
        column(
            3,
            panel_well(
                tags.h4("These inputs are controlled by the other inputs"),
                input_text("inText", "Text input:", value="start text"),
                input_numeric(
                    "inNumber", "Number input:", min=1, max=20, value=5, step=0.5
                ),
                input_numeric(
                    "inNumber2", "Number input 2:", min=1, max=20, value=5, step=0.5
                ),
                input_slider("inSlider", "Slider input:", min=1, max=20, value=15),
                input_slider(
                    "inSlider2", "Slider input 2:", min=1, max=20, value=(5, 15)
                ),
                input_slider(
                    "inSlider3", "Slider input 3:", min=1, max=20, value=(5, 15)
                ),
                input_date("inDate", "Date input:"),
                input_date_range("inDateRange", "Date range input:"),
            ),
        ),
inproject
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

ui = page_fluid(
    panel_title("Changing the values of inputs from the server"),
    row(
        column(
            3,
inproject
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

ui = page_fluid(
    panel_title("Changing the values of inputs from the server"),
    row(
        column(
            3,
            panel_well(
                tags.h4("These inputs control the other inputs on the page"),
inproject
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

ui = page_fluid(
    panel_title("Changing the values of inputs from the server"),
    row(
        column(
            3,
            panel_well(
                tags.h4("These inputs control the other inputs on the page"),
                input_text(
                    "control_label", "This controls some of the labels:", "LABEL TEXT"
                ),
inproject
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

ui = page_fluid(
    panel_title("Changing the values of inputs from the server"),
    row(
        column(
            3,
            panel_well(
                tags.h4("These inputs control the other inputs on the page"),
                input_text(
                    "control_label", "This controls some of the labels:", "LABEL TEXT"
                ),
                input_slider(
                    "control_num", "This controls values:", min=1, max=20, value=15
                ),
            ),
        ),
        column(
            3,
            panel_well(
                tags.h4("These inputs are controlled by the other inputs"),
inproject
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

ui = page_fluid(
    panel_title("Changing the values of inputs from the server"),
    row(
        column(
            3,
            panel_well(
                tags.h4("These inputs control the other inputs on the page"),
                input_text(
                    "control_label", "This controls some of the labels:", "LABEL TEXT"
                ),
                input_slider(
                    "control_num", "This controls values:", min=1, max=20, value=15
                ),
            ),
        ),
        column(
            3,
            panel_well(
                tags.h4("These inputs are controlled by the other inputs"),
                input_text("inText", "Text input:", value="start text"),
inproject
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

ui = page_fluid(
    panel_title("Changing the values of inputs from the server"),
    row(
        column(
            3,
            panel_well(
                tags.h4("These inputs control the other inputs on the page"),
                input_text(
                    "control_label", "This controls some of the labels:", "LABEL TEXT"
                ),
                input_slider(
                    "control_num", "This controls values:", min=1, max=20, value=15
                ),
            ),
        ),
        column(
            3,
            panel_well(
                tags.h4("These inputs are controlled by the other inputs"),
                input_text("inText", "Text input:", value="start text"),
                input_numeric(
                    "inNumber", "Number input:", min=1, max=20, value=5, step=0.5
                ),
                input_numeric(
                    "inNumber2", "Number input 2:", min=1, max=20, value=5, step=0.5
                ),
inproject
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

ui = page_fluid(
    panel_title("Changing the values of inputs from the server"),
    row(
        column(
            3,
            panel_well(
                tags.h4("These inputs control the other inputs on the page"),
                input_text(
                    "control_label", "This controls some of the labels:", "LABEL TEXT"
                ),
                input_slider(
                    "control_num", "This controls values:", min=1, max=20, value=15
                ),
            ),
        ),
        column(
            3,
            panel_well(
                tags.h4("These inputs are controlled by the other inputs"),
                input_text("inText", "Text input:", value="start text"),
                input_numeric(
                    "inNumber", "Number input:", min=1, max=20, value=5, step=0.5
                ),
                input_numeric(
                    "inNumber2", "Number input 2:", min=1, max=20, value=5, step=0.5
                ),
                input_slider("inSlider", "Slider input:", min=1, max=20, value=15),
                input_slider(
                    "inSlider2", "Slider input 2:", min=1, max=20, value=(5, 15)
                ),
                input_slider(
                    "inSlider3", "Slider input 3:", min=1, max=20, value=(5, 15)
                ),
inproject
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

ui = page_fluid(
    panel_title("Changing the values of inputs from the server"),
    row(
        column(
            3,
            panel_well(
                tags.h4("These inputs control the other inputs on the page"),
                input_text(
                    "control_label", "This controls some of the labels:", "LABEL TEXT"
                ),
                input_slider(
                    "control_num", "This controls values:", min=1, max=20, value=15
                ),
            ),
        ),
        column(
            3,
            panel_well(
                tags.h4("These inputs are controlled by the other inputs"),
                input_text("inText", "Text input:", value="start text"),
                input_numeric(
                    "inNumber", "Number input:", min=1, max=20, value=5, step=0.5
                ),
                input_numeric(
                    "inNumber2", "Number input 2:", min=1, max=20, value=5, step=0.5
                ),
                input_slider("inSlider", "Slider input:", min=1, max=20, value=15),
                input_slider(
                    "inSlider2", "Slider input 2:", min=1, max=20, value=(5, 15)
                ),
                input_slider(
                    "inSlider3", "Slider input 3:", min=1, max=20, value=(5, 15)
                ),
                input_date("inDate", "Date input:"),
inproject
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

ui = page_fluid(
    panel_title("Changing the values of inputs from the server"),
    row(
        column(
            3,
            panel_well(
                tags.h4("These inputs control the other inputs on the page"),
                input_text(
                    "control_label", "This controls some of the labels:", "LABEL TEXT"
                ),
                input_slider(
                    "control_num", "This controls values:", min=1, max=20, value=15
                ),
            ),
        ),
        column(
            3,
            panel_well(
                tags.h4("These inputs are controlled by the other inputs"),
                input_text("inText", "Text input:", value="start text"),
                input_numeric(
                    "inNumber", "Number input:", min=1, max=20, value=5, step=0.5
                ),
                input_numeric(
                    "inNumber2", "Number input 2:", min=1, max=20, value=5, step=0.5
                ),
                input_slider("inSlider", "Slider input:", min=1, max=20, value=15),
                input_slider(
                    "inSlider2", "Slider input 2:", min=1, max=20, value=(5, 15)
                ),
                input_slider(
                    "inSlider3", "Slider input 3:", min=1, max=20, value=(5, 15)
                ),
                input_date("inDate", "Date input:"),
                input_date_range("inDateRange", "Date range input:"),
            ),
        ),
        column(
            3,
            panel_well(
inproject
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

ui = page_fluid(
    panel_title("Changing the values of inputs from the server"),
    row(
        column(
            3,
            panel_well(
                tags.h4("These inputs control the other inputs on the page"),
                input_text(
                    "control_label", "This controls some of the labels:", "LABEL TEXT"
                ),
                input_slider(
                    "control_num", "This controls values:", min=1, max=20, value=15
                ),
            ),
        ),
        column(
            3,
            panel_well(
                tags.h4("These inputs are controlled by the other inputs"),
                input_text("inText", "Text input:", value="start text"),
                input_numeric(
                    "inNumber", "Number input:", min=1, max=20, value=5, step=0.5
                ),
                input_numeric(
                    "inNumber2", "Number input 2:", min=1, max=20, value=5, step=0.5
                ),
                input_slider("inSlider", "Slider input:", min=1, max=20, value=15),
                input_slider(
                    "inSlider2", "Slider input 2:", min=1, max=20, value=(5, 15)
                ),
                input_slider(
                    "inSlider3", "Slider input 3:", min=1, max=20, value=(5, 15)
                ),
                input_date("inDate", "Date input:"),
                input_date_range("inDateRange", "Date range input:"),
            ),
        ),
        column(
            3,
            panel_well(
                input_checkbox("inCheckbox", "Checkbox input", value=False),
inproject
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

ui = page_fluid(
    panel_title("Changing the values of inputs from the server"),
    row(
        column(
            3,
            panel_well(
                tags.h4("These inputs control the other inputs on the page"),
                input_text(
                    "control_label", "This controls some of the labels:", "LABEL TEXT"
                ),
                input_slider(
                    "control_num", "This controls values:", min=1, max=20, value=15
                ),
            ),
        ),
        column(
            3,
            panel_well(
                tags.h4("These inputs are controlled by the other inputs"),
                input_text("inText", "Text input:", value="start text"),
                input_numeric(
                    "inNumber", "Number input:", min=1, max=20, value=5, step=0.5
                ),
                input_numeric(
                    "inNumber2", "Number input 2:", min=1, max=20, value=5, step=0.5
                ),
                input_slider("inSlider", "Slider input:", min=1, max=20, value=15),
                input_slider(
                    "inSlider2", "Slider input 2:", min=1, max=20, value=(5, 15)
                ),
                input_slider(
                    "inSlider3", "Slider input 3:", min=1, max=20, value=(5, 15)
                ),
                input_date("inDate", "Date input:"),
                input_date_range("inDateRange", "Date range input:"),
            ),
        ),
        column(
            3,
            panel_well(
                input_checkbox("inCheckbox", "Checkbox input", value=False),
                input_checkbox_group(
                    "inCheckboxGroup",
                    "Checkbox group input:",
                    ("label 1", "option1", "label 2", "option2"),
                ),
inproject
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

ui = page_fluid(
    panel_title("Changing the values of inputs from the server"),
    row(
        column(
            3,
            panel_well(
                tags.h4("These inputs control the other inputs on the page"),
                input_text(
                    "control_label", "This controls some of the labels:", "LABEL TEXT"
                ),
                input_slider(
                    "control_num", "This controls values:", min=1, max=20, value=15
                ),
            ),
        ),
        column(
            3,
            panel_well(
                tags.h4("These inputs are controlled by the other inputs"),
                input_text("inText", "Text input:", value="start text"),
                input_numeric(
                    "inNumber", "Number input:", min=1, max=20, value=5, step=0.5
                ),
                input_numeric(
                    "inNumber2", "Number input 2:", min=1, max=20, value=5, step=0.5
                ),
                input_slider("inSlider", "Slider input:", min=1, max=20, value=15),
                input_slider(
                    "inSlider2", "Slider input 2:", min=1, max=20, value=(5, 15)
                ),
                input_slider(
                    "inSlider3", "Slider input 3:", min=1, max=20, value=(5, 15)
                ),
                input_date("inDate", "Date input:"),
                input_date_range("inDateRange", "Date range input:"),
            ),
        ),
        column(
            3,
            panel_well(
                input_checkbox("inCheckbox", "Checkbox input", value=False),
                input_checkbox_group(
                    "inCheckboxGroup",
                    "Checkbox group input:",
                    ("label 1", "option1", "label 2", "option2"),
                ),
                input_radio_buttons(
                    "inRadio",
                    "Radio buttons:",
                    ("label 1", "option1", "label 2", "option2"),
                ),
inproject
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

ui = page_fluid(
    panel_title("Changing the values of inputs from the server"),
    row(
        column(
            3,
            panel_well(
                tags.h4("These inputs control the other inputs on the page"),
                input_text(
                    "control_label", "This controls some of the labels:", "LABEL TEXT"
                ),
                input_slider(
                    "control_num", "This controls values:", min=1, max=20, value=15
                ),
            ),
        ),
        column(
            3,
            panel_well(
                tags.h4("These inputs are controlled by the other inputs"),
                input_text("inText", "Text input:", value="start text"),
                input_numeric(
                    "inNumber", "Number input:", min=1, max=20, value=5, step=0.5
                ),
                input_numeric(
                    "inNumber2", "Number input 2:", min=1, max=20, value=5, step=0.5
                ),
                input_slider("inSlider", "Slider input:", min=1, max=20, value=15),
                input_slider(
                    "inSlider2", "Slider input 2:", min=1, max=20, value=(5, 15)
                ),
                input_slider(
                    "inSlider3", "Slider input 3:", min=1, max=20, value=(5, 15)
                ),
                input_date("inDate", "Date input:"),
                input_date_range("inDateRange", "Date range input:"),
            ),
        ),
        column(
            3,
            panel_well(
                input_checkbox("inCheckbox", "Checkbox input", value=False),
                input_checkbox_group(
                    "inCheckboxGroup",
                    "Checkbox group input:",
                    ("label 1", "option1", "label 2", "option2"),
                ),
                input_radio_buttons(
                    "inRadio",
                    "Radio buttons:",
                    ("label 1", "option1", "label 2", "option2"),
                ),
                input_select(
                    "inSelect",
                    "Select input:",
                    {"label 1": "option1", "label 2": "option2"},
                ),
                input_select(
                    "inSelect2",
                    "Select input 2:",
                    {"label 1": "option1", "label 2": "option2"},
                    multiple=True,
                ),
            ),
            navs_tab(
                nav("panel1", h2("This is the first panel.")),
                nav("panel2", h2("This is the second panel.")),
                id="inTabset",
            ),
        ),
    ),
)


def server(sess: ShinySession):
    @observe_async()
    async def _():
        # We'll use these multiple times, so use short var names for
        # convenience.
        c_label = sess.input["control_label"]
        c_num = sess.input["control_num"]

        print(c_label)
        print(c_num)

        # Text =====================================================
        # Change both the label and the text
        await update_text(
            "inText",
            label="New " + c_label,
            value="New text " + str(c_num),
        )

        # Number ===================================================
        # Change the value
        await update_numeric("inNumber", value=c_num)

        # Change the label, value, min, and max
        await update_numeric(
            "inNumber2",
            label="Number " + c_label,
            value=c_num,
            min=c_num - 10,
            max=c_num + 10,
            step=5,
        )

        # Slider input =============================================
        # Only label and value can be set for slider
        await update_slider("inSlider", label="Slider " + c_label, value=c_num)

        # Slider range input =======================================
        # For sliders that pick out a range, pass in a vector of 2
        # values.
        await update_slider("inSlider2", value=(c_num - 1, c_num + 1))

        # TODO: an NA means to not change that value (the low or high one)
        # await update_slider(
        #    "inSlider3",
        #    value=(NA, c_num+2)
        # )

        # Date input ===============================================
        # Only label and value can be set for date input
        await update_date("inDate", label="Date " + c_label, value=date(2013, 4, c_num))

        # Date range input =========================================
        # Only label and value can be set for date range input
        await update_date_range(
            "inDateRange",
            label="Date range " + c_label,
            start=date(2013, 1, c_num),
            end=date(2013, 12, c_num),
            min=date(2001, 1, c_num),
            max=date(2030, 1, c_num),
        )

        # # Checkbox ===============================================
        await update_checkbox("inCheckbox", value=c_num % 2)

        # Checkbox group ===========================================
        # Create a list of new options, where the name of the items
        # is something like 'option label x A', and the values are
        # 'option-x-A'.
        opts = zip(
            [f"option label {c_num} {type}" for type in ["A", "B"]],
            [f"option-{c_num}-{type}" for type in ["A", "B"]],
        )

        # Set the label, choices, and selected item
        await update_checkbox_group(
            "inCheckboxGroup",
            label="Checkbox group " + c_label,
            choices=tuple(opts),
            selected=f"option-{c_num}-A",
        )

        # Radio group ==============================================
        await update_radio_buttons(
            "inRadio",
            label="Radio " + c_label,
            choices=tuple(opts),
            selected=f"option-{c_num}-A",
        )
        # Select input =============================================
        # Create a list of new options, where the name of the items
        # is something like 'option label x A', and the values are
        # 'option-x-A'.
        await update_select(
            "inSelect",
            label="Select " + c_label,
            choices=dict(opts),
            selected=f"option-{c_num}-A",
        )

        # Can also set the label and select an item (or more than
        # one if it's a multi-select)
        await update_select(
            "inSelect2",
            label="Select label " + c_label,
            choices=dict(opts),
            selected=f"option-{c_num}-B",
        )

        # Tabset input =============================================
        # Change the selected tab.
        # The tabsetPanel must have been created with an 'id' argument
        await nav_select("inTabset", selected="panel2" if c_num % 2 else "panel1")


inproject
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

ui = page_fluid(
    panel_title("Changing the values of inputs from the server"),
    row(
        column(
            3,
            panel_well(
                tags.h4("These inputs control the other inputs on the page"),
                input_text(
                    "control_label", "This controls some of the labels:", "LABEL TEXT"
                ),
                input_slider(
                    "control_num", "This controls values:", min=1, max=20, value=15
                ),
            ),
        ),
        column(
            3,
            panel_well(
                tags.h4("These inputs are controlled by the other inputs"),
                input_text("inText", "Text input:", value="start text"),
                input_numeric(
                    "inNumber", "Number input:", min=1, max=20, value=5, step=0.5
                ),
                input_numeric(
                    "inNumber2", "Number input 2:", min=1, max=20, value=5, step=0.5
                ),
                input_slider("inSlider", "Slider input:", min=1, max=20, value=15),
                input_slider(
                    "inSlider2", "Slider input 2:", min=1, max=20, value=(5, 15)
                ),
                input_slider(
                    "inSlider3", "Slider input 3:", min=1, max=20, value=(5, 15)
                ),
                input_date("inDate", "Date input:"),
                input_date_range("inDateRange", "Date range input:"),
            ),
        ),
        column(
            3,
            panel_well(
                input_checkbox("inCheckbox", "Checkbox input", value=False),
                input_checkbox_group(
                    "inCheckboxGroup",
                    "Checkbox group input:",
                    ("label 1", "option1", "label 2", "option2"),
                ),
                input_radio_buttons(
                    "inRadio",
                    "Radio buttons:",
                    ("label 1", "option1", "label 2", "option2"),
                ),
                input_select(
                    "inSelect",
                    "Select input:",
                    {"label 1": "option1", "label 2": "option2"},
                ),
                input_select(
                    "inSelect2",
                    "Select input 2:",
                    {"label 1": "option1", "label 2": "option2"},
                    multiple=True,
                ),
            ),
inproject
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

ui = page_fluid(
    panel_title("Changing the values of inputs from the server"),
    row(
        column(
            3,
            panel_well(
                tags.h4("These inputs control the other inputs on the page"),
                input_text(
                    "control_label", "This controls some of the labels:", "LABEL TEXT"
                ),
                input_slider(
                    "control_num", "This controls values:", min=1, max=20, value=15
                ),
            ),
        ),
        column(
            3,
            panel_well(
                tags.h4("These inputs are controlled by the other inputs"),
                input_text("inText", "Text input:", value="start text"),
                input_numeric(
                    "inNumber", "Number input:", min=1, max=20, value=5, step=0.5
                ),
                input_numeric(
                    "inNumber2", "Number input 2:", min=1, max=20, value=5, step=0.5
                ),
                input_slider("inSlider", "Slider input:", min=1, max=20, value=15),
                input_slider(
                    "inSlider2", "Slider input 2:", min=1, max=20, value=(5, 15)
                ),
                input_slider(
                    "inSlider3", "Slider input 3:", min=1, max=20, value=(5, 15)
                ),
                input_date("inDate", "Date input:"),
                input_date_range("inDateRange", "Date range input:"),
            ),
        ),
        column(
            3,
            panel_well(
                input_checkbox("inCheckbox", "Checkbox input", value=False),
                input_checkbox_group(
                    "inCheckboxGroup",
                    "Checkbox group input:",
                    ("label 1", "option1", "label 2", "option2"),
                ),
                input_radio_buttons(
                    "inRadio",
                    "Radio buttons:",
                    ("label 1", "option1", "label 2", "option2"),
                ),
                input_select(
                    "inSelect",
                    "Select input:",
                    {"label 1": "option1", "label 2": "option2"},
                ),
                input_select(
                    "inSelect2",
                    "Select input 2:",
                    {"label 1": "option1", "label 2": "option2"},
                    multiple=True,
                ),
            ),
            navs_tab(
inproject
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

ui = page_fluid(
    panel_title("Changing the values of inputs from the server"),
    row(
        column(
            3,
            panel_well(
                tags.h4("These inputs control the other inputs on the page"),
                input_text(
                    "control_label", "This controls some of the labels:", "LABEL TEXT"
                ),
                input_slider(
                    "control_num", "This controls values:", min=1, max=20, value=15
                ),
            ),
        ),
        column(
            3,
            panel_well(
                tags.h4("These inputs are controlled by the other inputs"),
                input_text("inText", "Text input:", value="start text"),
                input_numeric(
                    "inNumber", "Number input:", min=1, max=20, value=5, step=0.5
                ),
                input_numeric(
                    "inNumber2", "Number input 2:", min=1, max=20, value=5, step=0.5
                ),
                input_slider("inSlider", "Slider input:", min=1, max=20, value=15),
                input_slider(
                    "inSlider2", "Slider input 2:", min=1, max=20, value=(5, 15)
                ),
                input_slider(
                    "inSlider3", "Slider input 3:", min=1, max=20, value=(5, 15)
                ),
                input_date("inDate", "Date input:"),
                input_date_range("inDateRange", "Date range input:"),
            ),
        ),
        column(
            3,
            panel_well(
                input_checkbox("inCheckbox", "Checkbox input", value=False),
                input_checkbox_group(
                    "inCheckboxGroup",
                    "Checkbox group input:",
                    ("label 1", "option1", "label 2", "option2"),
                ),
                input_radio_buttons(
                    "inRadio",
                    "Radio buttons:",
                    ("label 1", "option1", "label 2", "option2"),
                ),
                input_select(
                    "inSelect",
                    "Select input:",
                    {"label 1": "option1", "label 2": "option2"},
                ),
                input_select(
                    "inSelect2",
                    "Select input 2:",
                    {"label 1": "option1", "label 2": "option2"},
                    multiple=True,
                ),
            ),
            navs_tab(
                nav("panel1", h2("This is the first panel.")),
inproject
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

ui = page_fluid(
    panel_title("Changing the values of inputs from the server"),
    row(
        column(
            3,
            panel_well(
                tags.h4("These inputs control the other inputs on the page"),
                input_text(
                    "control_label", "This controls some of the labels:", "LABEL TEXT"
                ),
                input_slider(
                    "control_num", "This controls values:", min=1, max=20, value=15
                ),
            ),
        ),
        column(
            3,
            panel_well(
                tags.h4("These inputs are controlled by the other inputs"),
                input_text("inText", "Text input:", value="start text"),
                input_numeric(
                    "inNumber", "Number input:", min=1, max=20, value=5, step=0.5
                ),
                input_numeric(
                    "inNumber2", "Number input 2:", min=1, max=20, value=5, step=0.5
                ),
                input_slider("inSlider", "Slider input:", min=1, max=20, value=15),
                input_slider(
                    "inSlider2", "Slider input 2:", min=1, max=20, value=(5, 15)
                ),
                input_slider(
                    "inSlider3", "Slider input 3:", min=1, max=20, value=(5, 15)
                ),
                input_date("inDate", "Date input:"),
                input_date_range("inDateRange", "Date range input:"),
            ),
        ),
        column(
            3,
            panel_well(
                input_checkbox("inCheckbox", "Checkbox input", value=False),
                input_checkbox_group(
                    "inCheckboxGroup",
                    "Checkbox group input:",
                    ("label 1", "option1", "label 2", "option2"),
                ),
                input_radio_buttons(
                    "inRadio",
                    "Radio buttons:",
                    ("label 1", "option1", "label 2", "option2"),
                ),
                input_select(
                    "inSelect",
                    "Select input:",
                    {"label 1": "option1", "label 2": "option2"},
                ),
                input_select(
                    "inSelect2",
                    "Select input 2:",
                    {"label 1": "option1", "label 2": "option2"},
                    multiple=True,
                ),
            ),
            navs_tab(
                nav("panel1", h2("This is the first panel.")),
                nav("panel2", h2("This is the second panel.")),
                id="inTabset",
            ),
        ),
    ),
)


def server(sess: ShinySession):
inproject
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

ui = page_fluid(
    panel_title("Changing the values of inputs from the server"),
    row(
        column(
            3,
            panel_well(
                tags.h4("These inputs control the other inputs on the page"),
                input_text(
                    "control_label", "This controls some of the labels:", "LABEL TEXT"
                ),
                input_slider(
                    "control_num", "This controls values:", min=1, max=20, value=15
                ),
            ),
        ),
        column(
            3,
            panel_well(
                tags.h4("These inputs are controlled by the other inputs"),
                input_text("inText", "Text input:", value="start text"),
                input_numeric(
                    "inNumber", "Number input:", min=1, max=20, value=5, step=0.5
                ),
                input_numeric(
                    "inNumber2", "Number input 2:", min=1, max=20, value=5, step=0.5
                ),
                input_slider("inSlider", "Slider input:", min=1, max=20, value=15),
                input_slider(
                    "inSlider2", "Slider input 2:", min=1, max=20, value=(5, 15)
                ),
                input_slider(
                    "inSlider3", "Slider input 3:", min=1, max=20, value=(5, 15)
                ),
                input_date("inDate", "Date input:"),
                input_date_range("inDateRange", "Date range input:"),
            ),
        ),
        column(
            3,
            panel_well(
                input_checkbox("inCheckbox", "Checkbox input", value=False),
                input_checkbox_group(
                    "inCheckboxGroup",
                    "Checkbox group input:",
                    ("label 1", "option1", "label 2", "option2"),
                ),
                input_radio_buttons(
                    "inRadio",
                    "Radio buttons:",
                    ("label 1", "option1", "label 2", "option2"),
                ),
                input_select(
                    "inSelect",
                    "Select input:",
                    {"label 1": "option1", "label 2": "option2"},
                ),
                input_select(
                    "inSelect2",
                    "Select input 2:",
                    {"label 1": "option1", "label 2": "option2"},
                    multiple=True,
                ),
            ),
            navs_tab(
                nav("panel1", h2("This is the first panel.")),
                nav("panel2", h2("This is the second panel.")),
                id="inTabset",
            ),
        ),
    ),
)


def server(sess: ShinySession):
    @observe_async()
    async def _():
        # We'll use these multiple times, so use short var names for
        # convenience.
        c_label = sess.input["control_label"]
        c_num = sess.input["control_num"]

        print(c_label)
        print(c_num)

        # Text =====================================================
        # Change both the label and the text
        await update_text(
            "inText",
            label="New " + c_label,
            value="New text " + str(c_num),
        )

        # Number ===================================================
        # Change the value
        await update_numeric("inNumber", value=c_num)

        # Change the label, value, min, and max
        await update_numeric(
            "inNumber2",
            label="Number " + c_label,
            value=c_num,
            min=c_num - 10,
            max=c_num + 10,
            step=5,
        )

        # Slider input =============================================
        # Only label and value can be set for slider
        await update_slider("inSlider", label="Slider " + c_label, value=c_num)

        # Slider range input =======================================
        # For sliders that pick out a range, pass in a vector of 2
        # values.
        await update_slider("inSlider2", value=(c_num - 1, c_num + 1))

        # TODO: an NA means to not change that value (the low or high one)
        # await update_slider(
        #    "inSlider3",
        #    value=(NA, c_num+2)
        # )

        # Date input ===============================================
        # Only label and value can be set for date input
        await update_date("inDate", label="Date " + c_label, value=date(2013, 4, c_num))

        # Date range input =========================================
        # Only label and value can be set for date range input
        await update_date_range(
            "inDateRange",
            label="Date range " + c_label,
            start=date(2013, 1, c_num),
            end=date(2013, 12, c_num),
            min=date(2001, 1, c_num),
            max=date(2030, 1, c_num),
        )

        # # Checkbox ===============================================
        await update_checkbox("inCheckbox", value=c_num % 2)

        # Checkbox group ===========================================
        # Create a list of new options, where the name of the items
        # is something like 'option label x A', and the values are
        # 'option-x-A'.
        opts = zip(
            [f"option label {c_num} {type}" for type in ["A", "B"]],
            [f"option-{c_num}-{type}" for type in ["A", "B"]],
        )

        # Set the label, choices, and selected item
        await update_checkbox_group(
            "inCheckboxGroup",
            label="Checkbox group " + c_label,
            choices=tuple(opts),
            selected=f"option-{c_num}-A",
        )

        # Radio group ==============================================
        await update_radio_buttons(
            "inRadio",
            label="Radio " + c_label,
            choices=tuple(opts),
            selected=f"option-{c_num}-A",
        )
        # Select input =============================================
        # Create a list of new options, where the name of the items
        # is something like 'option label x A', and the values are
        # 'option-x-A'.
        await update_select(
            "inSelect",
            label="Select " + c_label,
            choices=dict(opts),
            selected=f"option-{c_num}-A",
        )

        # Can also set the label and select an item (or more than
        # one if it's a multi-select)
        await update_select(
            "inSelect2",
            label="Select label " + c_label,
            choices=dict(opts),
            selected=f"option-{c_num}-B",
        )

        # Tabset input =============================================
        # Change the selected tab.
        # The tabsetPanel must have been created with an 'id' argument
        await nav_select("inTabset", selected="panel2" if c_num % 2 else "panel1")


app = ShinyApp(ui, server, debug=True)

if __name__ == "__main__":
common
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

ui = page_fluid(
    panel_title("Changing the values of inputs from the server"),
    row(
        column(
            3,
            panel_well(
                tags.h4("These inputs control the other inputs on the page"),
                input_text(
                    "control_label", "This controls some of the labels:", "LABEL TEXT"
                ),
                input_slider(
                    "control_num", "This controls values:", min=1, max=20, value=15
                ),
            ),
        ),
        column(
            3,
            panel_well(
                tags.h4("These inputs are controlled by the other inputs"),
                input_text("inText", "Text input:", value="start text"),
                input_numeric(
                    "inNumber", "Number input:", min=1, max=20, value=5, step=0.5
                ),
                input_numeric(
                    "inNumber2", "Number input 2:", min=1, max=20, value=5, step=0.5
                ),
                input_slider("inSlider", "Slider input:", min=1, max=20, value=15),
                input_slider(
                    "inSlider2", "Slider input 2:", min=1, max=20, value=(5, 15)
                ),
                input_slider(
                    "inSlider3", "Slider input 3:", min=1, max=20, value=(5, 15)
                ),
                input_date("inDate", "Date input:"),
                input_date_range("inDateRange", "Date range input:"),
            ),
        ),
        column(
            3,
            panel_well(
                input_checkbox("inCheckbox", "Checkbox input", value=False),
                input_checkbox_group(
                    "inCheckboxGroup",
                    "Checkbox group input:",
                    ("label 1", "option1", "label 2", "option2"),
                ),
                input_radio_buttons(
                    "inRadio",
                    "Radio buttons:",
                    ("label 1", "option1", "label 2", "option2"),
                ),
                input_select(
                    "inSelect",
                    "Select input:",
                    {"label 1": "option1", "label 2": "option2"},
                ),
                input_select(
                    "inSelect2",
                    "Select input 2:",
                    {"label 1": "option1", "label 2": "option2"},
                    multiple=True,
                ),
            ),
            navs_tab(
                nav("panel1", h2("This is the first panel.")),
                nav("panel2", h2("This is the second panel.")),
                id="inTabset",
            ),
        ),
    ),
)


def server(sess: ShinySession):
    @observe_async()
    async def _():
        # We'll use these multiple times, so use short var names for
        # convenience.
        c_label = sess.input["control_label"]
        c_num = sess.input["control_num"]

        print(c_label)
        print(c_num)

        # Text =====================================================
        # Change both the label and the text
        await update_text(
            "inText",
            label="New " + c_label,
            value="New text " + str(c_num),
        )

        # Number ===================================================
        # Change the value
        await update_numeric("inNumber", value=c_num)

        # Change the label, value, min, and max
        await update_numeric(
            "inNumber2",
            label="Number " + c_label,
            value=c_num,
            min=c_num - 10,
            max=c_num + 10,
            step=5,
        )

        # Slider input =============================================
        # Only label and value can be set for slider
        await update_slider("inSlider", label="Slider " + c_label, value=c_num)

        # Slider range input =======================================
        # For sliders that pick out a range, pass in a vector of 2
        # values.
        await update_slider("inSlider2", value=(c_num - 1, c_num + 1))

        # TODO: an NA means to not change that value (the low or high one)
        # await update_slider(
        #    "inSlider3",
        #    value=(NA, c_num+2)
        # )

        # Date input ===============================================
        # Only label and value can be set for date input
        await update_date("inDate", label="Date " + c_label, value=date(2013, 4, c_num))

        # Date range input =========================================
        # Only label and value can be set for date range input
        await update_date_range(
            "inDateRange",
            label="Date range " + c_label,
common
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

ui = page_fluid(
    panel_title("Changing the values of inputs from the server"),
    row(
        column(
            3,
            panel_well(
                tags.h4("These inputs control the other inputs on the page"),
                input_text(
                    "control_label", "This controls some of the labels:", "LABEL TEXT"
                ),
                input_slider(
                    "control_num", "This controls values:", min=1, max=20, value=15
                ),
            ),
        ),
        column(
            3,
            panel_well(
                tags.h4("These inputs are controlled by the other inputs"),
                input_text("inText", "Text input:", value="start text"),
                input_numeric(
                    "inNumber", "Number input:", min=1, max=20, value=5, step=0.5
                ),
                input_numeric(
                    "inNumber2", "Number input 2:", min=1, max=20, value=5, step=0.5
                ),
                input_slider("inSlider", "Slider input:", min=1, max=20, value=15),
                input_slider(
                    "inSlider2", "Slider input 2:", min=1, max=20, value=(5, 15)
                ),
                input_slider(
                    "inSlider3", "Slider input 3:", min=1, max=20, value=(5, 15)
                ),
                input_date("inDate", "Date input:"),
                input_date_range("inDateRange", "Date range input:"),
            ),
        ),
        column(
            3,
            panel_well(
                input_checkbox("inCheckbox", "Checkbox input", value=False),
                input_checkbox_group(
                    "inCheckboxGroup",
                    "Checkbox group input:",
                    ("label 1", "option1", "label 2", "option2"),
                ),
                input_radio_buttons(
                    "inRadio",
                    "Radio buttons:",
                    ("label 1", "option1", "label 2", "option2"),
                ),
                input_select(
                    "inSelect",
                    "Select input:",
                    {"label 1": "option1", "label 2": "option2"},
                ),
                input_select(
                    "inSelect2",
                    "Select input 2:",
                    {"label 1": "option1", "label 2": "option2"},
                    multiple=True,
                ),
            ),
            navs_tab(
                nav("panel1", h2("This is the first panel.")),
                nav("panel2", h2("This is the second panel.")),
                id="inTabset",
            ),
        ),
    ),
)


def server(sess: ShinySession):
    @observe_async()
    async def _():
        # We'll use these multiple times, so use short var names for
        # convenience.
        c_label = sess.input["control_label"]
        c_num = sess.input["control_num"]

        print(c_label)
        print(c_num)

        # Text =====================================================
        # Change both the label and the text
        await update_text(
            "inText",
            label="New " + c_label,
            value="New text " + str(c_num),
        )

        # Number ===================================================
        # Change the value
        await update_numeric("inNumber", value=c_num)

        # Change the label, value, min, and max
        await update_numeric(
            "inNumber2",
            label="Number " + c_label,
            value=c_num,
            min=c_num - 10,
            max=c_num + 10,
            step=5,
        )

        # Slider input =============================================
        # Only label and value can be set for slider
        await update_slider("inSlider", label="Slider " + c_label, value=c_num)

        # Slider range input =======================================
        # For sliders that pick out a range, pass in a vector of 2
        # values.
        await update_slider("inSlider2", value=(c_num - 1, c_num + 1))

        # TODO: an NA means to not change that value (the low or high one)
        # await update_slider(
        #    "inSlider3",
        #    value=(NA, c_num+2)
        # )
non_informative
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

ui = page_fluid(
    panel_title("Changing the values of inputs from the server"),
    row(
        column(
            3,
            panel_well(
                tags.h4("These inputs control the other inputs on the page"),
                input_text(
                    "control_label", "This controls some of the labels:", "LABEL TEXT"
                ),
                input_slider(
                    "control_num", "This controls values:", min=1, max=20, value=15
                ),
            ),
        ),
        column(
            3,
            panel_well(
                tags.h4("These inputs are controlled by the other inputs"),
                input_text("inText", "Text input:", value="start text"),
                input_numeric(
                    "inNumber", "Number input:", min=1, max=20, value=5, step=0.5
                ),
                input_numeric(
                    "inNumber2", "Number input 2:", min=1, max=20, value=5, step=0.5
                ),
                input_slider("inSlider", "Slider input:", min=1, max=20, value=15),
                input_slider(
                    "inSlider2", "Slider input 2:", min=1, max=20, value=(5, 15)
                ),
                input_slider(
                    "inSlider3", "Slider input 3:", min=1, max=20, value=(5, 15)
                ),
                input_date("inDate", "Date input:"),
                input_date_range("inDateRange", "Date range input:"),
            ),
        ),
        column(
            3,
            panel_well(
                input_checkbox("inCheckbox", "Checkbox input", value=False),
                input_checkbox_group(
                    "inCheckboxGroup",
                    "Checkbox group input:",
                    ("label 1", "option1", "label 2", "option2"),
                ),
                input_radio_buttons(
                    "inRadio",
                    "Radio buttons:",
                    ("label 1", "option1", "label 2", "option2"),
                ),
                input_select(
                    "inSelect",
                    "Select input:",
                    {"label 1": "option1", "label 2": "option2"},
                ),
                input_select(
                    "inSelect2",
                    "Select input 2:",
                    {"label 1": "option1", "label 2": "option2"},
                    multiple=True,
                ),
            ),
            navs_tab(
                nav("panel1", h2("This is the first panel.")),
                nav("panel2", h2("This is the second panel.")),
                id="inTabset",
            ),
        ),
    ),
)


def server(sess: ShinySession):
    @observe_async()
    async def _():
        # We'll use these multiple times, so use short var names for
        # convenience.
        c_label = sess.input["control_label"]
        c_num = sess.input["control_num"]

        print(c_label)
        print(c_num)

        # Text =====================================================
        # Change both the label and the text
        await update_text(
            "inText",
            label="New " + c_label,
            value="New text " + str(c_num),
        )

        # Number ===================================================
        # Change the value
        await update_numeric("inNumber", value=c_num)

        # Change the label, value, min, and max
        await update_numeric(
            "inNumber2",
            label="Number " + c_label,
            value=c_num,
            min=c_num - 10,
            max=c_num + 10,
            step=5,
        )

        # Slider input =============================================
        # Only label and value can be set for slider
        await update_slider("inSlider", label="Slider " + c_label, value=c_num)

        # Slider range input =======================================
        # For sliders that pick out a range, pass in a vector of 2
        # values.
        await update_slider("inSlider2", value=(c_num - 1, c_num + 1))

        # TODO: an NA means to not change that value (the low or high one)
        # await update_slider(
        #    "inSlider3",
        #    value=(NA, c_num+2)
        # )

non_informative
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

ui = page_fluid(
    panel_title("Changing the values of inputs from the server"),
    row(
        column(
            3,
            panel_well(
                tags.h4("These inputs control the other inputs on the page"),
                input_text(
                    "control_label", "This controls some of the labels:", "LABEL TEXT"
                ),
                input_slider(
                    "control_num", "This controls values:", min=1, max=20, value=15
                ),
            ),
        ),
        column(
            3,
            panel_well(
                tags.h4("These inputs are controlled by the other inputs"),
                input_text("inText", "Text input:", value="start text"),
                input_numeric(
                    "inNumber", "Number input:", min=1, max=20, value=5, step=0.5
                ),
                input_numeric(
                    "inNumber2", "Number input 2:", min=1, max=20, value=5, step=0.5
                ),
                input_slider("inSlider", "Slider input:", min=1, max=20, value=15),
                input_slider(
                    "inSlider2", "Slider input 2:", min=1, max=20, value=(5, 15)
                ),
                input_slider(
                    "inSlider3", "Slider input 3:", min=1, max=20, value=(5, 15)
                ),
                input_date("inDate", "Date input:"),
                input_date_range("inDateRange", "Date range input:"),
            ),
        ),
        column(
            3,
            panel_well(
                input_checkbox("inCheckbox", "Checkbox input", value=False),
                input_checkbox_group(
                    "inCheckboxGroup",
                    "Checkbox group input:",
                    ("label 1", "option1", "label 2", "option2"),
                ),
                input_radio_buttons(
                    "inRadio",
                    "Radio buttons:",
                    ("label 1", "option1", "label 2", "option2"),
                ),
                input_select(
                    "inSelect",
                    "Select input:",
                    {"label 1": "option1", "label 2": "option2"},
                ),
                input_select(
                    "inSelect2",
                    "Select input 2:",
                    {"label 1": "option1", "label 2": "option2"},
                    multiple=True,
                ),
            ),
            navs_tab(
                nav("panel1", h2("This is the first panel.")),
                nav("panel2", h2("This is the second panel.")),
                id="inTabset",
            ),
        ),
    ),
)


def server(sess: ShinySession):
    @observe_async()
    async def _():
        # We'll use these multiple times, so use short var names for
        # convenience.
        c_label = sess.input["control_label"]
        c_num = sess.input["control_num"]

        print(c_label)
        print(c_num)

        # Text =====================================================
non_informative
# To run this app:
non_informative
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

ui = page_fluid(
    panel_title("Changing the values of inputs from the server"),
    row(
        column(
            3,
            panel_well(
                tags.h4("These inputs control the other inputs on the page"),
                input_text(
                    "control_label", "This controls some of the labels:", "LABEL TEXT"
                ),
                input_slider(
                    "control_num", "This controls values:", min=1, max=20, value=15
                ),
            ),
        ),
        column(
            3,
            panel_well(
                tags.h4("These inputs are controlled by the other inputs"),
                input_text("inText", "Text input:", value="start text"),
                input_numeric(
                    "inNumber", "Number input:", min=1, max=20, value=5, step=0.5
random
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

ui = page_fluid(
    panel_title("Changing the values of inputs from the server"),
    row(
        column(
            3,
            panel_well(
                tags.h4("These inputs control the other inputs on the page"),
                input_text(
                    "control_label", "This controls some of the labels:", "LABEL TEXT"
                ),
                input_slider(
                    "control_num", "This controls values:", min=1, max=20, value=15
                ),
            ),
        ),
        column(
            3,
            panel_well(
                tags.h4("These inputs are controlled by the other inputs"),
                input_text("inText", "Text input:", value="start text"),
                input_numeric(
                    "inNumber", "Number input:", min=1, max=20, value=5, step=0.5
                ),
                input_numeric(
                    "inNumber2", "Number input 2:", min=1, max=20, value=5, step=0.5
                ),
                input_slider("inSlider", "Slider input:", min=1, max=20, value=15),
                input_slider(
                    "inSlider2", "Slider input 2:", min=1, max=20, value=(5, 15)
                ),
                input_slider(
                    "inSlider3", "Slider input 3:", min=1, max=20, value=(5, 15)
                ),
                input_date("inDate", "Date input:"),
                input_date_range("inDateRange", "Date range input:"),
            ),
        ),
        column(
            3,
            panel_well(
                input_checkbox("inCheckbox", "Checkbox input", value=False),
                input_checkbox_group(
                    "inCheckboxGroup",
                    "Checkbox group input:",
                    ("label 1", "option1", "label 2", "option2"),
                ),
                input_radio_buttons(
                    "inRadio",
                    "Radio buttons:",
                    ("label 1", "option1", "label 2", "option2"),
                ),
                input_select(
                    "inSelect",
                    "Select input:",
                    {"label 1": "option1", "label 2": "option2"},
                ),
                input_select(
                    "inSelect2",
                    "Select input 2:",
                    {"label 1": "option1", "label 2": "option2"},
                    multiple=True,
                ),
            ),
            navs_tab(
                nav("panel1", h2("This is the first panel.")),
                nav("panel2", h2("This is the second panel.")),
                id="inTabset",
            ),
        ),
    ),
)


def server(sess: ShinySession):
    @observe_async()
    async def _():
        # We'll use these multiple times, so use short var names for
        # convenience.
        c_label = sess.input["control_label"]
        c_num = sess.input["control_num"]

        print(c_label)
        print(c_num)

        # Text =====================================================
        # Change both the label and the text
        await update_text(
            "inText",
            label="New " + c_label,
            value="New text " + str(c_num),
        )

        # Number ===================================================
        # Change the value
        await update_numeric("inNumber", value=c_num)

        # Change the label, value, min, and max
        await update_numeric(
            "inNumber2",
            label="Number " + c_label,
            value=c_num,
            min=c_num - 10,
            max=c_num + 10,
            step=5,
        )

        # Slider input =============================================
        # Only label and value can be set for slider
        await update_slider("inSlider", label="Slider " + c_label, value=c_num)

        # Slider range input =======================================
        # For sliders that pick out a range, pass in a vector of 2
        # values.
        await update_slider("inSlider2", value=(c_num - 1, c_num + 1))

        # TODO: an NA means to not change that value (the low or high one)
        # await update_slider(
        #    "inSlider3",
        #    value=(NA, c_num+2)
        # )

        # Date input ===============================================
        # Only label and value can be set for date input
        await update_date("inDate", label="Date " + c_label, value=date(2013, 4, c_num))

        # Date range input =========================================
        # Only label and value can be set for date range input
        await update_date_range(
            "inDateRange",
            label="Date range " + c_label,
            start=date(2013, 1, c_num),
            end=date(2013, 12, c_num),
            min=date(2001, 1, c_num),
            max=date(2030, 1, c_num),
        )

        # # Checkbox ===============================================
        await update_checkbox("inCheckbox", value=c_num % 2)

        # Checkbox group ===========================================
        # Create a list of new options, where the name of the items
        # is something like 'option label x A', and the values are
        # 'option-x-A'.
        opts = zip(
            [f"option label {c_num} {type}" for type in ["A", "B"]],
            [f"option-{c_num}-{type}" for type in ["A", "B"]],
        )

        # Set the label, choices, and selected item
random
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

ui = page_fluid(
    panel_title("Changing the values of inputs from the server"),
    row(
        column(
            3,
            panel_well(
                tags.h4("These inputs control the other inputs on the page"),
                input_text(
                    "control_label", "This controls some of the labels:", "LABEL TEXT"
                ),
                input_slider(
                    "control_num", "This controls values:", min=1, max=20, value=15
                ),
            ),
        ),
        column(
            3,
            panel_well(
                tags.h4("These inputs are controlled by the other inputs"),
                input_text("inText", "Text input:", value="start text"),
                input_numeric(
                    "inNumber", "Number input:", min=1, max=20, value=5, step=0.5
                ),
                input_numeric(
                    "inNumber2", "Number input 2:", min=1, max=20, value=5, step=0.5
                ),
                input_slider("inSlider", "Slider input:", min=1, max=20, value=15),
                input_slider(
                    "inSlider2", "Slider input 2:", min=1, max=20, value=(5, 15)
                ),
                input_slider(
                    "inSlider3", "Slider input 3:", min=1, max=20, value=(5, 15)
                ),
                input_date("inDate", "Date input:"),
                input_date_range("inDateRange", "Date range input:"),
            ),
        ),
        column(
            3,
            panel_well(
                input_checkbox("inCheckbox", "Checkbox input", value=False),
                input_checkbox_group(
                    "inCheckboxGroup",
                    "Checkbox group input:",
                    ("label 1", "option1", "label 2", "option2"),
                ),
                input_radio_buttons(
                    "inRadio",
                    "Radio buttons:",
                    ("label 1", "option1", "label 2", "option2"),
                ),
                input_select(
                    "inSelect",
                    "Select input:",
                    {"label 1": "option1", "label 2": "option2"},
                ),
                input_select(
                    "inSelect2",
                    "Select input 2:",
                    {"label 1": "option1", "label 2": "option2"},
                    multiple=True,
                ),
            ),
            navs_tab(
                nav("panel1", h2("This is the first panel.")),
                nav("panel2", h2("This is the second panel.")),
                id="inTabset",
            ),
        ),
    ),
)


def server(sess: ShinySession):
    @observe_async()
    async def _():
        # We'll use these multiple times, so use short var names for
        # convenience.
        c_label = sess.input["control_label"]
        c_num = sess.input["control_num"]

        print(c_label)
        print(c_num)

        # Text =====================================================
        # Change both the label and the text
        await update_text(
            "inText",
            label="New " + c_label,
            value="New text " + str(c_num),
        )

        # Number ===================================================
        # Change the value
        await update_numeric("inNumber", value=c_num)

        # Change the label, value, min, and max
        await update_numeric(
            "inNumber2",
            label="Number " + c_label,
            value=c_num,
            min=c_num - 10,
            max=c_num + 10,
            step=5,
        )

        # Slider input =============================================
        # Only label and value can be set for slider
        await update_slider("inSlider", label="Slider " + c_label, value=c_num)

        # Slider range input =======================================
        # For sliders that pick out a range, pass in a vector of 2
        # values.
        await update_slider("inSlider2", value=(c_num - 1, c_num + 1))

        # TODO: an NA means to not change that value (the low or high one)
        # await update_slider(
        #    "inSlider3",
        #    value=(NA, c_num+2)
        # )

        # Date input ===============================================
        # Only label and value can be set for date input
        await update_date("inDate", label="Date " + c_label, value=date(2013, 4, c_num))

        # Date range input =========================================
        # Only label and value can be set for date range input
        await update_date_range(
            "inDateRange",
            label="Date range " + c_label,
            start=date(2013, 1, c_num),
            end=date(2013, 12, c_num),
            min=date(2001, 1, c_num),
            max=date(2030, 1, c_num),
        )

        # # Checkbox ===============================================
        await update_checkbox("inCheckbox", value=c_num % 2)

        # Checkbox group ===========================================
        # Create a list of new options, where the name of the items
        # is something like 'option label x A', and the values are
        # 'option-x-A'.
        opts = zip(
random
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

ui = page_fluid(
    panel_title("Changing the values of inputs from the server"),
    row(
        column(
            3,
            panel_well(
                tags.h4("These inputs control the other inputs on the page"),
                input_text(
                    "control_label", "This controls some of the labels:", "LABEL TEXT"
                ),
                input_slider(
                    "control_num", "This controls values:", min=1, max=20, value=15
                ),
            ),
        ),
        column(
            3,
            panel_well(
random
# To run this app:
#   python3 app.py

# Then point web browser to:
#   http://localhost:8000/

# Add parent directory to path, so we can find the prism module.
# (This is just a temporary fix)
import os
import sys

# This will load the shiny module dynamically, without having to install it.
# This makes the debug/run cycle quicker.
shiny_module_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, shiny_module_dir)

from shiny import *

ui = page_fluid(
    panel_title("Changing the values of inputs from the server"),
    row(
        column(
            3,
            panel_well(
                tags.h4("These inputs control the other inputs on the page"),
                input_text(
                    "control_label", "This controls some of the labels:", "LABEL TEXT"
                ),
                input_slider(
                    "control_num", "This controls values:", min=1, max=20, value=15
                ),
            ),
        ),
        column(
            3,
            panel_well(
                tags.h4("These inputs are controlled by the other inputs"),
                input_text("inText", "Text input:", value="start text"),
                input_numeric(
                    "inNumber", "Number input:", min=1, max=20, value=5, step=0.5
                ),
                input_numeric(
                    "inNumber2", "Number input 2:", min=1, max=20, value=5, step=0.5
                ),
                input_slider("inSlider", "Slider input:", min=1, max=20, value=15),
                input_slider(
                    "inSlider2", "Slider input 2:", min=1, max=20, value=(5, 15)
                ),
                input_slider(
                    "inSlider3", "Slider input 3:", min=1, max=20, value=(5, 15)
                ),
                input_date("inDate", "Date input:"),
                input_date_range("inDateRange", "Date range input:"),
            ),
        ),
        column(
            3,
            panel_well(
                input_checkbox("inCheckbox", "Checkbox input", value=False),
                input_checkbox_group(
                    "inCheckboxGroup",
                    "Checkbox group input:",
                    ("label 1", "option1", "label 2", "option2"),
                ),
                input_radio_buttons(
                    "inRadio",
                    "Radio buttons:",
                    ("label 1", "option1", "label 2", "option2"),
                ),
                input_select(
                    "inSelect",
                    "Select input:",
                    {"label 1": "option1", "label 2": "option2"},
                ),
                input_select(
                    "inSelect2",
                    "Select input 2:",
                    {"label 1": "option1", "label 2": "option2"},
                    multiple=True,
                ),
            ),
            navs_tab(
                nav("panel1", h2("This is the first panel.")),
                nav("panel2", h2("This is the second panel.")),
                id="inTabset",
            ),
        ),
    ),
)


def server(sess: ShinySession):
    @observe_async()
    async def _():
        # We'll use these multiple times, so use short var names for
        # convenience.
        c_label = sess.input["control_label"]
        c_num = sess.input["control_num"]

        print(c_label)
        print(c_num)

        # Text =====================================================
        # Change both the label and the text
        await update_text(
            "inText",
            label="New " + c_label,
            value="New text " + str(c_num),
        )

        # Number ===================================================
        # Change the value
        await update_numeric("inNumber", value=c_num)

        # Change the label, value, min, and max
        await update_numeric(
            "inNumber2",
            label="Number " + c_label,
            value=c_num,
            min=c_num - 10,
            max=c_num + 10,
            step=5,
        )

        # Slider input =============================================
        # Only label and value can be set for slider
        await update_slider("inSlider", label="Slider " + c_label, value=c_num)

        # Slider range input =======================================
        # For sliders that pick out a range, pass in a vector of 2
        # values.
        await update_slider("inSlider2", value=(c_num - 1, c_num + 1))

        # TODO: an NA means to not change that value (the low or high one)
        # await update_slider(
        #    "inSlider3",
        #    value=(NA, c_num+2)
        # )

        # Date input ===============================================
        # Only label and value can be set for date input
        await update_date("inDate", label="Date " + c_label, value=date(2013, 4, c_num))

        # Date range input =========================================
        # Only label and value can be set for date range input
        await update_date_range(
            "inDateRange",
            label="Date range " + c_label,
            start=date(2013, 1, c_num),
            end=date(2013, 12, c_num),
            min=date(2001, 1, c_num),
            max=date(2030, 1, c_num),
        )

        # # Checkbox ===============================================
        await update_checkbox("inCheckbox", value=c_num % 2)

        # Checkbox group ===========================================
        # Create a list of new options, where the name of the items
        # is something like 'option label x A', and the values are
        # 'option-x-A'.
        opts = zip(
            [f"option label {c_num} {type}" for type in ["A", "B"]],
            [f"option-{c_num}-{type}" for type in ["A", "B"]],
        )

        # Set the label, choices, and selected item
        await update_checkbox_group(
random
    async def _(): ui = page_fluid(     panel_title("Changing the values of inputs from the server"),     row(         column(             panel_well(                 input_text(                 input_slider(                 input_text("inText", "Text input:", value="start text"),                 input_numeric(                 input_slider("inSlider", "Slider input:", min=1, max=20, value=15),                 input_date("inDate", "Date input:"),                 input_date_range("inDateRange", "Date range input:"),                 input_checkbox("inCheckbox", "Checkbox input", value=False),                 input_checkbox_group(                 input_radio_buttons(                 input_select( app = ShinyApp(ui, server, debug=True)             navs_tab(                 nav("panel1", h2("This is the first panel.")),                 nav("panel2", h2("This is the second panel.")),     @observe_async()     app.run()             start=date(2013, 1, c_num),         # Date input ===============================================         # Change both the label and the text #   python3 app.py                 ),         await update_checkbox_group(             [f"option label {c_num} {type}" for type in ["A", "B"]],                 tags.h4("These inputs are controlled by the other inputs"),             "inCheckboxGroup",