Your custom HTML Marker
\", reset: \"Clear the map refinement\", toggle: \"Search as I move the map\", redo: \"Redo search here\" }, sa = st({ name: \"geo-search\" }), oa = Ft(\"GeoSearch\"); function ca(e) { var t = e.className, n = e.handleClick, r = e.facetValueToRefine, i = e.isRefined, a = e.templateProps, s = e.templateKey, o = e.templateData, c = e.subItems; return Kn(\"li\", { className: t, onClick: function (e) { n({ facetValueToRefine: r, isRefined: i, originalEvent: e }) } }, Kn(ki, h({}, a, { templateKey: s, data: o })), c) } var ua = { query: \"\", showSubmit: !0, showReset: !0, showLoadingIndicator: !0, autofocus: !1, searchAsYouType: !0, isSearchStalled: !1, disabled: !1, onChange: Le, onSubmit: Le, onReset: Le, refine: Le }, la = function () { L(i, Yn); var r = O(i); function i() { var s; C(this, i); for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; return k(M(s = r.call.apply(r, [this].concat(t))), \"state\", { query: s.props.query, focused: !1 }), k(M(s), \"input\", { current: null }), k(M(s), \"onInput\", function (e) { var t = s.props, n = t.searchAsYouType, r = t.refine, i = t.onChange, a = e.target.value; n && r(a), s.setState({ query: a }), i(e) }), k(M(s), \"onSubmit\", function (e) { var t = s.props, n = t.searchAsYouType, r = t.refine, i = t.onSubmit; return e.preventDefault(), e.stopPropagation(), s.input.current && s.input.current.blur(), n || r(s.state.query), i(e), !1 }), k(M(s), \"onReset\", function (e) { var t = s.props, n = t.refine, r = t.onReset; s.input.current && s.input.current.focus(), n(\"\"), s.setState({ query: \"\" }), r(e) }), k(M(s), \"onBlur\", function () { s.setState({ focused: !1 }) }), k(M(s), \"onFocus\", function () { s.setState({ focused: !0 }) }), s } return E(i, [{ key: \"resetInput\", value: function () { this.setState({ query: \"\" }) } }, { key: \"componentWillReceiveProps\", value: function (e) { this.state.focused || e.query === this.state.query || this.setState({ query: e.query }) } }, { key: \"render\", value: function () { var e = this.props, t = e.cssClasses, n = e.placeholder, r = e.autofocus, i = e.showSubmit, a = e.showReset, s = e.showLoadingIndicator, o = e.templates, c = e.isSearchStalled; return Kn(\"div\", { className: t.root }, Kn(\"form\", { action: \"\", role: \"search\", className: t.form, noValidate: !0, onSubmit: this.onSubmit, onReset: this.onReset }, Kn(\"input\", { ref: this.input, value: this.state.query, disabled: this.props.disabled, className: t.input, type: \"search\", placeholder: n, autoFocus: r, autoComplete: \"off\", autoCorrect: \"off\", autoCapitalize: \"off\", spellCheck: \"false\", maxLength: 512, onInput: this.onInput, onBlur: this.onBlur, onFocus: this.onFocus }), Kn(ki, { templateKey: \"submit\", rootTagName: \"button\", rootProps: { className: t.submit, type: \"submit\", title: \"Submit the search query.\", hidden: !i }, templates: o, data: { cssClasses: t } }), Kn(ki, { templateKey: \"reset\", rootTagName: \"button\", rootProps: { className: t.reset, type: \"reset\", title: \"Clear the search query.\", hidden: !(a && this.state.query.trim() && !c) }, templates: o, data: { cssClasses: t } }), s && Kn(ki, { templateKey: \"loadingIndicator\", rootTagName: \"span\", rootProps: { className: t.loadingIndicator, hidden: !c }, templates: o, data: { cssClasses: t } }))) } }]), i }(); k(la, \"defaultProps\", ua); function da(e) { return void 0 !== e.data } var ha = function () { L(u, Yn); var n = O(u); function u(e) { var t; return C(this, u), k(M(t = n.call(this, e)), \"searchBox\", { current: null }), t.handleItemClick = t.handleItemClick.bind(M(t)), t } return E(u, [{ key: \"shouldComponentUpdate\", value: function (e) { return !De(this.props.facetValues, e.facetValues) } }, { key: \"refine\", value: function (e) { this.props.toggleRefinement(e) } }, { key: \"_generateFacetItem\", value: function (e) { var t, n; if (da(e) && Array.isArray(e.data) && 0 < e.data.length) { var r = this.props.cssClasses, i = (r.root, j(r, [\"root\"])); n = Kn(u, h({}, this.props, { cssClasses: i, depth: this.props.depth + 1, facetValues: e.data, showMore: !1, className: this.props.cssClasses.childList })) } var a = this.props.createURL(e.value), s = W(W({}, e), {}, { url: a, attribute: this.props.attribute, cssClasses: this.props.cssClasses, isFromSearch: this.props.isFromSearch }), o = e.value; void 0 !== e.isRefined && (o += \"/\".concat(e.isRefined)), void 0 !== e.count && (o += \"/\".concat(e.count)); var c = Ei(this.props.cssClasses.item, (k(t = {}, this.props.cssClasses.selectedItem, e.isRefined), k(t, this.props.cssClasses.disabledItem, !e.count), k(t, this.props.cssClasses.parentItem, da(e) && Array.isArray(e.data) && 0 < e.data.length), t)); return Kn(ca, { templateKey: \"item\", key: o, facetValueToRefine: e.value, handleClick: this.handleItemClick, isRefined: e.isRefined, className: c, subItems: n, templateData: s, templateProps: this.props.templateProps }) } }, { key: \"handleItemClick\", value: function (e) { var t = e.facetValueToRefine, n = e.isRefined, r = e.originalEvent; if (!be(r) && r.target instanceof HTMLElement && r.target.parentNode instanceof HTMLElement && (!n || !r.target.parentNode.querySelector('input[type=\"radio\"]:checked'))) if (\"INPUT\" !== r.target.tagName) { for (var i = r.target; i !== r.currentTarget;) { if (\"LABEL\" === i.tagName && (i.querySelector('input[type=\"checkbox\"]') || i.querySelector('input[type=\"radio\"]'))) return; \"A\" === i.tagName && i.href && r.preventDefault(), i = i.parentNode } r.stopPropagation(), this.refine(t) } else this.refine(t) } }, { key: \"componentWillReceiveProps\", value: function (e) { this.searchBox.current && !e.isFromSearch && this.searchBox.current.resetInput() } }, { key: \"refineFirstValue\", value: function () { var e = this.props.facetValues && this.props.facetValues[0]; if (e) { var t = e.value; this.props.toggleRefinement(t) } } }, { key: \"render\", value: function () { var t = this, e = Ei(this.props.cssClasses.showMore, k({}, this.props.cssClasses.disabledShowMore, !(!0 === this.props.showMore && this.props.canToggleShowMore))), n = !0 === this.props.showMore && Kn(ki, h({}, this.props.templateProps, { templateKey: \"showMoreText\", rootTagName: \"button\", rootProps: { className: e, disabled: !this.props.canToggleShowMore, onClick: this.props.toggleShowMore }, data: { isShowingMore: this.props.isShowingMore } })), r = !0 !== this.props.searchIsAlwaysActive && !(this.props.isFromSearch || !this.props.hasExhaustiveItems), i = this.props.searchFacetValues && Kn(\"div\", { className: this.props.cssClasses.searchBox }, Kn(la, { ref: this.searchBox, placeholder: this.props.searchPlaceholder, disabled: r, cssClasses: this.props.cssClasses.searchable, templates: this.props.searchBoxTemplateProps.templates, onChange: function (e) { return t.props.searchFacetValues(e.target.value) }, onReset: function () { return t.props.searchFacetValues(\"\") }, onSubmit: function () { return t.refineFirstValue() }, searchAsYouType: !1 })), a = this.props.facetValues && 0 < this.props.facetValues.length && Kn(\"ul\", { className: this.props.cssClasses.list }, this.props.facetValues.map(this._generateFacetItem, this)), s = this.props.searchFacetValues && this.props.isFromSearch && (!this.props.facetValues || 0 === this.props.facetValues.length) && Kn(ki, h({}, this.props.templateProps, { templateKey: \"searchableNoResults\", rootProps: { className: this.props.cssClasses.noResults } })); return Kn(\"div\", { className: Ei(this.props.cssClasses.root, k({}, this.props.cssClasses.noRefinementRoot, !this.props.facetValues || 0 === this.props.facetValues.length), this.props.className) }, this.props.children, i, a, s, n) } }]), u }(); k(ha, \"defaultProps\", { cssClasses: {}, depth: 0 }); var fa = { item: '{{label}}{{#helpers.formatNumber}}{{count}}{{/helpers.formatNumber}}', showMoreText: \"\\n {{#isShowingMore}}\\n Show less\\n {{/isShowingMore}}\\n {{^isShowingMore}}\\n Show more\\n {{/isShowingMore}}\\n \" }, ma = st({ name: \"hierarchical-menu\" }), pa = Ft(\"HierarchicalMenu\"), ga = { empty: \"No results\", item: function (e) { return JSON.stringify(e, null, 2) } }, va = st({ name: \"hits\" }), ya = Ft(\"Hits\"), ba = pr(function (e) { var t = e.results, n = e.hits, r = e.bindEvent, i = e.cssClasses, a = e.templateProps; return 0 === t.hits.length ? Kn(ki, h({}, a, { templateKey: \"empty\", rootProps: { className: Ei(i.root, i.emptyRoot) }, data: t })) : Kn(\"div\", { className: i.root }, Kn(\"ol\", { className: i.list }, n.map(function (e, t) { return Kn(ki, h({}, a, { templateKey: \"item\", rootTagName: \"li\", rootProps: { className: i.item }, key: e.objectID, data: W(W({}, e), {}, { __hitIndex: t }), bindEvent: r })) }))) }); function Sa(e) { var t = e.currentValue, n = e.options, r = e.cssClasses, i = e.setValue; return Kn(\"select\", { className: Ei(r.select), onChange: function (e) { return i(e.target.value) }, value: \"\".concat(t) }, n.map(function (e) { return Kn(\"option\", { className: Ei(r.option), key: e.label + e.value, value: \"\".concat(e.value) }, e.label) })) } var Ra = st({ name: \"hits-per-page\" }), wa = Ft(\"HitsPerPage\"), _a = { empty: \"No results\", showPreviousText: \"Show previous results\", showMoreText: \"Show more results\", item: function (e) { return JSON.stringify(e, null, 2) } }, Pa = st({ name: \"infinite-hits\" }), xa = Ft(\"InfiniteHits\"), Na = pr(function (e) { var t = e.results, n = e.hits, r = e.bindEvent, i = e.hasShowPrevious, a = e.showPrevious, s = e.showMore, o = e.isFirstPage, c = e.isLastPage, u = e.cssClasses, l = e.templateProps; return 0 === t.hits.length ? Kn(ki, h({}, l, { templateKey: \"empty\", rootProps: { className: Ei(u.root, u.emptyRoot) }, data: t })) : Kn(\"div\", { className: u.root }, i && Kn(ki, h({}, l, { templateKey: \"showPreviousText\", rootTagName: \"button\", rootProps: { className: Ei(u.loadPrevious, k({}, u.disabledLoadPrevious, o)), disabled: o, onClick: a } })), Kn(\"ol\", { className: u.list }, n.map(function (e, t) { return Kn(ki, h({}, l, { templateKey: \"item\", rootTagName: \"li\", rootProps: { className: u.item }, key: e.objectID, data: W(W({}, e), {}, { __hitIndex: t }), bindEvent: r })) })), Kn(ki, h({}, l, { templateKey: \"showMoreText\", rootTagName: \"button\", rootProps: { className: Ei(u.loadMore, k({}, u.disabledLoadMore, c)), disabled: c, onClick: s } }))) }), Ia = { item: '{{label}}{{#helpers.formatNumber}}{{count}}{{/helpers.formatNumber}}', showMoreText: \"\\n {{#isShowingMore}}\\n Show less\\n {{/isShowingMore}}\\n {{^isShowingMore}}\\n Show more\\n {{/isShowingMore}}\\n \" }, Fa = st({ name: \"menu\" }), Ta = Ft(\"Menu\"); function Ca(e) { var t = e.cssClasses, n = e.templateProps, r = e.items, i = e.refine, a = (Ie(r, function (e) { return e.isRefined }) || { value: \"\" }).value; return Kn(\"div\", { className: Ei(t.root, k({}, t.noRefinementRoot, 0 === r.length)) }, Kn(\"select\", { className: t.select, value: a, onChange: function (e) { i(e.target.value) } }, Kn(ki, h({}, n, { templateKey: \"defaultOption\", rootTagName: \"option\", rootProps: { value: \"\", className: t.option } })), r.map(function (e) { return Kn(ki, h({}, n, { templateKey: \"item\", rootTagName: \"option\", rootProps: { value: e.value, className: t.option }, key: e.value, data: e })) }))) } var Ea = { item: \"{{label}} ({{#helpers.formatNumber}}{{count}}{{/helpers.formatNumber}})\", defaultOption: \"See all\" }, ka = st({ name: \"menu-select\" }), La = Ft(\"MenuSelect\"), ja = { item: '' }, Ma = st({ name: \"numeric-menu\" }), Oa = Ft(\"NumericMenu\"); function Aa(n) { function t(t) { return function (e) { be(e) || (e.preventDefault(), n.setCurrentPage(t)) } } return Kn(\"div\", { className: Ei(n.cssClasses.root, k({}, n.cssClasses.noRefinementRoot, n.nbPages <= 1)) }, Kn(\"ul\", { className: n.cssClasses.list }, n.showFirst && Kn(Ha, { ariaLabel: \"First\", className: n.cssClasses.firstPageItem, isDisabled: n.isFirstPage, label: n.templates.first, pageNumber: 0, createURL: n.createURL, cssClasses: n.cssClasses, createClickHandler: t }), n.showPrevious && Kn(Ha, { ariaLabel: \"Previous\", className: n.cssClasses.previousPageItem, isDisabled: n.isFirstPage, label: n.templates.previous, pageNumber: n.currentPage - 1, createURL: n.createURL, cssClasses: n.cssClasses, createClickHandler: t }), n.pages.map(function (e) { return Kn(Ha, { key: e, ariaLabel: \"\".concat(e + 1), className: n.cssClasses.pageItem, isSelected: e === n.currentPage, label: \"\".concat(e + 1), pageNumber: e, createURL: n.createURL, cssClasses: n.cssClasses, createClickHandler: t }) }), n.showNext && Kn(Ha, { ariaLabel: \"Next\", className: n.cssClasses.nextPageItem, isDisabled: n.isLastPage, label: n.templates.next, pageNumber: n.currentPage + 1, createURL: n.createURL, cssClasses: n.cssClasses, createClickHandler: t }), n.showLast && Kn(Ha, { ariaLabel: \"Last\", className: n.cssClasses.lastPageItem, isDisabled: n.isLastPage, label: n.templates.last, pageNumber: n.nbPages - 1, createURL: n.createURL, cssClasses: n.cssClasses, createClickHandler: t }))) } function Ha(e) { var t = e.label, n = e.ariaLabel, r = e.pageNumber, i = e.className, a = e.isDisabled, s = void 0 !== a && a, o = e.isSelected, c = void 0 !== o && o, u = e.cssClasses, l = e.createURL, d = e.createClickHandler; return Kn(\"li\", { className: Ei(u.item, i, s && u.disabledItem, c && u.selectedItem) }, s ? Kn(\"span\", { className: u.link, dangerouslySetInnerHTML: { __html: t } }) : Kn(\"a\", { className: u.link, \"aria-label\": n, href: l(r), onClick: d(r), dangerouslySetInnerHTML: { __html: t } })) } var Wa, Da, Ba, Ua = Ft(\"Pagination\"), qa = st({ name: \"pagination\" }), Qa = { previous: \"‹\", next: \"›\", first: \"«\", last: \"»\" }, Va = 0, $a = [], Ka = An.__b, za = An.__r, Ja = An.diffed, Ya = An.__c, Xa = An.unmount; function Ga(e, t) { An.__h && An.__h(Da, e, Va || t), Va = 0; var n = Da.__H || (Da.__H = { __: [], __h: [] }); return e >= n.__.length && n.__.push({}), n.__[e] } function Za(e) { return Va = 1, function (e, t, n) { var r = Ga(Wa++, 2); return r.t = e, r.__c || (r.__ = [n ? n(t) : ss(void 0, t), function (e) { var t = r.t(r.__[0], e); r.__[0] !== t && (r.__ = [t, r.__[1]], r.__c.setState({})) }], r.__c = Da), r.__ }(ss, e) } function es(e) { return Va = 5, function (e, t) { var n = Ga(Wa++, 7); return as(n.__H, t) && (n.__ = e(), n.__H = t, n.__h = e), n.__ }(function () { return { current: e } }, []) } function ts() { var t; for ($a.sort(function (e, t) { return e.__v.__b - t.__v.__b }); t = $a.pop();)if (t.__P) try { t.__H.__h.forEach(rs), t.__H.__h.forEach(is), t.__H.__h = [] } catch (e) { t.__H.__h = [], An.__e(e, t.__v) } } An.__b = function (e) { Da = null, Ka && Ka(e) }, An.__r = function (e) { za && za(e), Wa = 0; var t = (Da = e.__c).__H; t && (t.__h.forEach(rs), t.__h.forEach(is), t.__h = []) }, An.diffed = function (e) { Ja && Ja(e); var t = e.__c; t && t.__H && t.__H.__h.length && (1 !== $a.push(t) && Ba === An.requestAnimationFrame || ((Ba = An.requestAnimationFrame) || function (e) { function t() { clearTimeout(r), ns && cancelAnimationFrame(n), setTimeout(e) } var n, r = setTimeout(t, 100); ns && (n = requestAnimationFrame(t)) })(ts)), Da = null }, An.__c = function (e, n) { n.some(function (t) { try { t.__h.forEach(rs), t.__h = t.__h.filter(function (e) { return !e.__ || is(e) }) } catch (e) { n.some(function (e) { e.__h && (e.__h = []) }), n = [], An.__e(e, t.__v) } }), Ya && Ya(e, n) }, An.unmount = function (e) { Xa && Xa(e); var t, n = e.__c; n && n.__H && (n.__H.__.forEach(function (e) { try { rs(e) } catch (e) { t = e } }), t && An.__e(t, n.__v)) }; var ns = \"function\" == typeof requestAnimationFrame; function rs(e) { var t = Da, n = e.__c; \"function\" == typeof n && (e.__c = void 0, n()), Da = t } function is(e) { var t = Da; e.__c = e.__(), Da = t } function as(n, e) { return !n || n.length !== e.length || e.some(function (e, t) { return e !== n[t] }) } function ss(e, t) { return \"function\" == typeof t ? t(e) : t } function os(t) { var e, n = D(Za(t.isCollapsed), 2), r = n[0], i = n[1], a = D(Za(!1), 2), s = a[0], o = a[1], c = es(null); return function (e, t) { var n = Ga(Wa++, 3); !An.__s && as(n.__H, t) && (n.__ = e, n.__H = t, Da.__H.__h.push(n)) }(function () { var e = c.current; if (e) return e.appendChild(t.bodyElement), function () { e.removeChild(t.bodyElement) } }, [c, t.bodyElement]), s || t.isCollapsed === r || i(t.isCollapsed), Kn(\"div\", { className: Ei(t.cssClasses.root, (e = {}, k(e, t.cssClasses.noRefinementRoot, t.hidden), k(e, t.cssClasses.collapsibleRoot, t.collapsible), k(e, t.cssClasses.collapsedRoot, r), e)), hidden: t.hidden }, t.templates.header && Kn(\"div\", { className: t.cssClasses.header }, Kn(ki, { templates: t.templates, templateKey: \"header\", rootTagName: \"span\", data: t.data }), t.collapsible && Kn(\"button\", { className: t.cssClasses.collapseButton, \"aria-expanded\": !r, onClick: function (e) { e.preventDefault(), o(!0), i(function (e) { return !e }) } }, Kn(ki, { templates: t.templates, templateKey: \"collapseButtonText\", rootTagName: \"span\", data: { collapsed: r } }))), Kn(\"div\", { className: t.cssClasses.body, ref: c }), t.templates.footer && Kn(ki, { templates: t.templates, templateKey: \"footer\", rootProps: { className: t.cssClasses.footer }, data: t.data })) } function cs(e) { var t = e.url, n = e.theme, r = e.cssClasses; return Kn(\"div\", { className: r.root }, Kn(\"a\", { href: t, target: \"_blank\", className: r.link, \"aria-label\": \"Search by Algolia\", rel: \"noopener noreferrer\" }, Kn(\"svg\", { height: \"1.2em\", className: r.logo, viewBox: \"0 0 168 24\", style: { width: \"auto\" } }, Kn(\"path\", { fill: \"dark\" === n ? \"#FFF\" : \"#5D6494\", d: \"M6.97 6.68V8.3a4.47 4.47 0 00-2.42-.67 2.2 2.2 0 00-1.38.4c-.34.26-.5.6-.5 1.02 0 .43.16.77.49 1.03.33.25.83.53 1.51.83a7.04 7.04 0 011.9 1.08c.34.24.58.54.73.89.15.34.23.74.23 1.18 0 .95-.33 1.7-1 2.24a4 4 0 01-2.6.81 5.71 5.71 0 01-2.94-.68v-1.71c.84.63 1.81.94 2.92.94.58 0 1.05-.14 1.39-.4.34-.28.5-.65.5-1.13 0-.29-.1-.55-.3-.8a2.2 2.2 0 00-.65-.53 23.03 23.03 0 00-1.64-.78 13.67 13.67 0 01-1.11-.64c-.12-.1-.28-.22-.46-.4a1.72 1.72 0 01-.39-.5 4.46 4.46 0 01-.22-.6c-.07-.23-.1-.48-.1-.75 0-.91.33-1.63 1-2.17a4 4 0 012.57-.8c.97 0 1.8.18 2.47.52zm7.47 5.7v-.3a2.26 2.26 0 00-.5-1.44c-.3-.35-.74-.53-1.32-.53-.53 0-.99.2-1.37.58a2.9 2.9 0 00-.72 1.68h3.91zm1 2.79v1.4c-.6.34-1.38.51-2.36.51a4.02 4.02 0 01-3-1.13 4.04 4.04 0 01-1.11-2.97c0-1.3.34-2.32 1.02-3.06a3.38 3.38 0 012.6-1.1c1.03 0 1.85.32 2.46.96.6.64.9 1.57.9 2.78 0 .33-.03.68-.09 1.04h-5.31c.1.7.4 1.24.89 1.61.49.38 1.1.56 1.85.56.86 0 1.58-.2 2.15-.6zm6.61-1.78h-1.21c-.6 0-1.05.12-1.35.36-.3.23-.46.53-.46.89 0 .37.12.66.36.88.23.2.57.32 1.02.32.5 0 .9-.15 1.2-.43.3-.28.44-.65.44-1.1v-.92zm-4.07-2.55V9.33a4.96 4.96 0 012.5-.55c2.1 0 3.17 1.03 3.17 3.08V17H22.1v-.96c-.42.68-1.15 1.02-2.19 1.02-.76 0-1.38-.22-1.84-.66-.46-.44-.7-1-.7-1.68 0-.78.3-1.38.88-1.81.59-.43 1.4-.65 2.46-.65h1.34v-.46c0-.55-.13-.97-.4-1.25-.26-.29-.7-.43-1.32-.43-.86 0-1.65.24-2.35.72zm9.34-1.93v1.42c.39-1 1.1-1.5 2.12-1.5.15 0 .31.02.5.05v1.53c-.23-.1-.48-.14-.76-.14-.54 0-.99.24-1.34.71a2.8 2.8 0 00-.52 1.71V17h-1.57V8.91h1.57zm5 4.09a3 3 0 00.76 2.01c.47.53 1.14.8 2 .8.64 0 1.24-.18 1.8-.53v1.4c-.53.32-1.2.48-2 .48a3.98 3.98 0 01-4.17-4.18c0-1.16.38-2.15 1.14-2.98a4 4 0 013.1-1.23c.7 0 1.34.15 1.92.44v1.44a3.24 3.24 0 00-1.77-.5A2.65 2.65 0 0032.33 13zm7.92-7.28v4.58c.46-1 1.3-1.5 2.5-1.5.8 0 1.42.24 1.9.73.48.5.72 1.17.72 2.05V17H43.8v-5.1c0-.56-.14-.99-.43-1.29-.28-.3-.65-.45-1.1-.45-.54 0-1 .2-1.42.6-.4.4-.61 1.02-.61 1.85V17h-1.56V5.72h1.56zM55.2 15.74c.6 0 1.1-.25 1.5-.76.4-.5.6-1.16.6-1.95 0-.92-.2-1.62-.6-2.12-.4-.5-.92-.74-1.55-.74-.56 0-1.05.22-1.5.67-.44.45-.66 1.13-.66 2.06 0 .96.22 1.67.64 2.14.43.47.95.7 1.57.7zM53 5.72v4.42a2.74 2.74 0 012.43-1.34c1.03 0 1.86.38 2.51 1.15.65.76.97 1.78.97 3.05 0 1.13-.3 2.1-.92 2.9-.62.81-1.47 1.21-2.54 1.21s-1.9-.45-2.46-1.34V17h-1.58V5.72H53zm9.9 11.1l-3.22-7.9h1.74l1 2.62 1.26 3.42c.1-.32.48-1.46 1.15-3.42l.91-2.63h1.66l-2.92 7.87c-.78 2.07-1.96 3.1-3.56 3.1-.28 0-.53-.02-.73-.07v-1.34c.17.04.35.06.54.06 1.03 0 1.76-.57 2.17-1.7z\" }), hs, fs, Kn(\"path\", { fill: \"dark\" === n ? \"#FFF\" : \"#5468FF\", d: \"M120.92 18.8c-4.38.02-4.38-3.54-4.38-4.1V1.36l2.67-.42v13.25c0 .32 0 2.36 1.71 2.37v2.24zm-10.84-2.18c.82 0 1.43-.04 1.85-.12v-2.72a5.48 5.48 0 00-1.57-.2c-.3 0-.6.02-.9.07-.3.04-.57.12-.81.24-.24.11-.44.28-.58.49a.93.93 0 00-.22.65c0 .63.22 1 .61 1.23.4.24.94.36 1.62.36zm-.23-9.7c.88 0 1.62.11 2.23.33.6.22 1.09.53 1.44.92.36.4.61.92.76 1.48.16.56.23 1.17.23 1.85v6.87a21.69 21.69 0 01-4.68.5c-.69 0-1.32-.07-1.9-.2a4 4 0 01-1.46-.63 3.3 3.3 0 01-.96-1.13 4.3 4.3 0 01-.34-1.8 3.13 3.13 0 011.43-2.63c.45-.3.95-.5 1.54-.62a8.8 8.8 0 013.79.05v-.44c0-.3-.04-.6-.11-.87a1.78 1.78 0 00-1.1-1.22 3.2 3.2 0 00-1.15-.2 9.75 9.75 0 00-2.95.46l-.33-2.19a11.43 11.43 0 013.56-.53zm52.84 9.63c.82 0 1.43-.05 1.85-.13V13.7a5.42 5.42 0 00-1.57-.2c-.3 0-.6.02-.9.07-.3.04-.57.12-.81.24-.24.12-.44.28-.58.5a.93.93 0 00-.22.65c0 .63.22.99.61 1.23.4.24.94.36 1.62.36zm-.23-9.7c.88 0 1.63.11 2.23.33.6.22 1.1.53 1.45.92.35.39.6.92.76 1.48.15.56.23 1.18.23 1.85v6.88c-.41.08-1.03.19-1.87.31-.83.12-1.77.18-2.81.18-.7 0-1.33-.06-1.9-.2a4 4 0 01-1.47-.63c-.4-.3-.72-.67-.95-1.13a4.3 4.3 0 01-.34-1.8c0-.66.13-1.08.38-1.53.26-.45.61-.82 1.05-1.1.44-.3.95-.5 1.53-.62a8.8 8.8 0 013.8.05v-.43c0-.31-.04-.6-.12-.88-.07-.28-.2-.52-.38-.73a1.78 1.78 0 00-.73-.5c-.3-.1-.68-.2-1.14-.2a9.85 9.85 0 00-2.95.47l-.32-2.19a11.63 11.63 0 013.55-.53zm-8.03-1.27a1.62 1.62 0 000-3.24 1.62 1.62 0 100 3.24zm1.35 13.22h-2.7V7.27l2.7-.42V18.8zm-4.72 0c-4.38.02-4.38-3.54-4.38-4.1l-.01-13.34 2.67-.42v13.25c0 .32 0 2.36 1.72 2.37v2.24zm-8.7-5.9a4.7 4.7 0 00-.74-2.79 2.4 2.4 0 00-2.07-1 2.4 2.4 0 00-2.06 1 4.7 4.7 0 00-.74 2.8c0 1.16.25 1.94.74 2.62a2.4 2.4 0 002.07 1.02c.88 0 1.57-.34 2.07-1.02a4.2 4.2 0 00.73-2.63zm2.74 0a6.46 6.46 0 01-1.52 4.23c-.49.53-1.07.94-1.76 1.22-.68.29-1.73.45-2.26.45a6.6 6.6 0 01-2.25-.45 5.1 5.1 0 01-2.88-3.13 7.3 7.3 0 01-.01-4.84 5.13 5.13 0 012.9-3.1 5.67 5.67 0 012.22-.42c.81 0 1.56.14 2.24.42.69.29 1.28.69 1.75 1.22.49.52.87 1.15 1.14 1.89a7 7 0 01.43 2.5zm-20.14 0c0 1.11.25 2.36.74 2.88.5.52 1.13.78 1.91.78a4.07 4.07 0 002.12-.6V9.33c-.19-.04-.99-.2-1.76-.23a2.67 2.67 0 00-2.23 1 4.73 4.73 0 00-.78 2.8zm7.44 5.27c0 1.82-.46 3.16-1.4 4-.94.85-2.37 1.27-4.3 1.27-.7 0-2.17-.13-3.34-.4l.43-2.11c.98.2 2.27.26 2.95.26 1.08 0 1.84-.22 2.3-.66.46-.43.68-1.08.68-1.94v-.44a5.2 5.2 0 01-2.54.6 5.6 5.6 0 01-2.01-.36 4.2 4.2 0 01-2.58-2.71 9.88 9.88 0 01.02-5.35 4.92 4.92 0 012.93-2.96 6.6 6.6 0 012.43-.46 19.64 19.64 0 014.43.66v10.6z\" })))) } function us(e) { var t = e.cssClasses, n = e.templates, r = e.items; return Kn(ki, { templateKey: \"default\", templates: n, rootProps: { className: t.root }, data: { items: r } }) } var ls = st({ name: \"panel\" }), ds = Ft(\"Panel\"), hs = Kn(\"path\", { fill: \"#5468FF\", d: \"M78.99.94h16.6a2.97 2.97 0 012.96 2.96v16.6a2.97 2.97 0 01-2.97 2.96h-16.6a2.97 2.97 0 01-2.96-2.96V3.9A2.96 2.96 0 0179 .94\" }), fs = Kn(\"path\", { fill: \"#FFF\", d: \"M89.63 5.97v-.78a.98.98 0 00-.98-.97h-2.28a.98.98 0 00-.97.97V6c0 .09.08.15.17.13a7.13 7.13 0 013.9-.02c.08.02.16-.04.16-.13m-6.25 1L83 6.6a.98.98 0 00-1.38 0l-.46.46a.97.97 0 000 1.38l.38.39c.06.06.15.04.2-.02a7.49 7.49 0 011.63-1.62c.07-.04.08-.14.02-.2m4.16 2.45v3.34c0 .1.1.17.2.12l2.97-1.54c.06-.03.08-.12.05-.18a3.7 3.7 0 00-3.08-1.87c-.07 0-.14.06-.14.13m0 8.05a4.49 4.49 0 110-8.98 4.49 4.49 0 010 8.98m0-10.85a6.37 6.37 0 100 12.74 6.37 6.37 0 000-12.74\" }), ms = Ft(\"PoweredBy\"), ps = st({ name: \"powered-by\" }), gs = st({ name: \"query-rule-context\" }), vs = { default: function (e) { var t = e.items; return JSON.stringify(t, null, 2) } }, ys = st({ name: \"query-rule-custom-data\" }), bs = Ft(\"QueryRuleCustomData\"), Ss = function () { L(a, Yn); var i = O(a); function a() { var r; C(this, a); for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; return k(M(r = i.call.apply(i, [this].concat(t))), \"state\", { min: r.props.values.min, max: r.props.values.max }), k(M(r), \"onInput\", function (n) { return function (e) { var t = e.currentTarget.value; r.setState(k({}, n, Number(t))) } }), k(M(r), \"onSubmit\", function (e) { e.preventDefault(), r.props.refine([r.state.min, r.state.max]) }), r } return E(a, [{ key: \"componentWillReceiveProps\", value: function (e) { this.setState({ min: e.values.min, max: e.values.max }) } }, { key: \"render\", value: function () { var e = this.state, t = e.min, n = e.max, r = this.props, i = r.min, a = r.max, s = r.step, o = r.cssClasses, c = r.templateProps, u = !(!i || !a) && a <= i, l = Boolean(t || n); return Kn(\"div\", { className: Ei(o.root, k({}, o.noRefinement, !l)) }, Kn(\"form\", { className: o.form, onSubmit: this.onSubmit }, Kn(\"label\", { className: o.label }, Kn(\"input\", { className: Ei(o.input, o.inputMin), type: \"number\", min: i, max: a, step: s, value: null != t ? t : \"\", onInput: this.onInput(\"min\"), placeholder: null == i ? void 0 : i.toString(), disabled: u })), Kn(ki, h({}, c, { templateKey: \"separatorText\", rootTagName: \"span\", rootProps: { className: o.separator } })), Kn(\"label\", { className: o.label }, Kn(\"input\", { className: Ei(o.input, o.inputMax), type: \"number\", min: i, max: a, step: s, value: null != n ? n : \"\", onInput: this.onInput(\"max\"), placeholder: null == a ? void 0 : a.toString(), disabled: u })), Kn(ki, h({}, c, { templateKey: \"submitText\", rootTagName: \"button\", rootProps: { type: \"submit\", className: o.submit, disabled: u } })))) } }]), a }(), Rs = st({ name: \"range-input\" }), ws = Ft(\"RangeInput\"), _s = { separatorText: \"to\", submitText: \"Go\" }, Ps = 40, xs = 35, Ns = 27, Is = 36, Fs = 37, Ts = 34, Cs = 33, Es = 39, ks = 38, Ls = 100; function js(e, t, n) { return (e - t) / (n - t) * 100 } function Ms(e, t, n) { var r = e / 100; return 0 === e ? t : 100 === e ? n : Math.round((n - t) * r + t) } function Os(e) { return [\"rheostat\", \"vertical\" === e.orientation ? \"rheostat-vertical\" : \"rheostat-horizontal\"].concat(e.className.split(\" \")).join(\" \") } function As(e) { return Number(e.currentTarget.getAttribute(\"data-handle-key\")) } function Hs(e) { e.stopPropagation(), e.preventDefault() } var Ws = Kn(\"div\", { className: \"rheostat-background\" }), Ds = function () { L(r, Yn); var n = O(r); function r(e) { var t; return C(this, r), k(M(t = n.call(this, e)), \"state\", { className: Os(t.props), handlePos: t.props.values.map(function (e) { return js(e, t.props.min, t.props.max) }), handleDimensions: 0, mousePos: null, sliderBox: {}, slidingIndex: null, values: t.props.values }), k(M(t), \"rheostat\", { current: null }), t.getPublicState = t.getPublicState.bind(M(t)), t.getSliderBoundingBox = t.getSliderBoundingBox.bind(M(t)), t.getProgressStyle = t.getProgressStyle.bind(M(t)), t.getMinValue = t.getMinValue.bind(M(t)), t.getMaxValue = t.getMaxValue.bind(M(t)), t.getHandleDimensions = t.getHandleDimensions.bind(M(t)), t.getClosestSnapPoint = t.getClosestSnapPoint.bind(M(t)), t.getSnapPosition = t.getSnapPosition.bind(M(t)), t.getNextPositionForKey = t.getNextPositionForKey.bind(M(t)), t.getNextState = t.getNextState.bind(M(t)), t.handleClick = t.handleClick.bind(M(t)), t.getClosestHandle = t.getClosestHandle.bind(M(t)), t.setStartSlide = t.setStartSlide.bind(M(t)), t.startMouseSlide = t.startMouseSlide.bind(M(t)), t.startTouchSlide = t.startTouchSlide.bind(M(t)), t.handleMouseSlide = t.handleMouseSlide.bind(M(t)), t.handleTouchSlide = t.handleTouchSlide.bind(M(t)), t.handleSlide = t.handleSlide.bind(M(t)), t.endSlide = t.endSlide.bind(M(t)), t.handleKeydown = t.handleKeydown.bind(M(t)), t.validatePosition = t.validatePosition.bind(M(t)), t.validateValues = t.validateValues.bind(M(t)), t.canMove = t.canMove.bind(M(t)), t.fireChangeEvent = t.fireChangeEvent.bind(M(t)), t.slideTo = t.slideTo.bind(M(t)), t.updateNewValues = t.updateNewValues.bind(M(t)), t } return E(r, [{ key: \"componentWillReceiveProps\", value: function (n) { var e = this.props, t = e.className, r = e.disabled, i = e.min, a = e.max, s = e.orientation, o = this.state, c = o.values, u = o.slidingIndex, l = n.min !== i || n.max !== a, d = c.length !== n.values.length || c.some(function (e, t) { return n.values[t] !== e }), h = n.className !== t || n.orientation !== s, f = n.disabled && !r; h && this.setState({ className: Os(n) }), (l || d) && this.updateNewValues(n), f && null !== u && this.endSlide() } }, { key: \"getPublicState\", value: function () { var e = this.props, t = e.min; return { max: e.max, min: t, values: this.state.values } } }, { key: \"getSliderBoundingBox\", value: function () { var e = this.rheostat.current, t = e.getBoundingClientRect(); return { height: t.height || e.clientHeight, left: t.left, top: t.top, width: t.width || e.clientWidth } } }, { key: \"getProgressStyle\", value: function (e) { var t = this.state.handlePos, n = t[e]; if (0 === e) return \"vertical\" === this.props.orientation ? { height: \"\".concat(n, \"%\"), top: 0 } : { left: 0, width: \"\".concat(n, \"%\") }; var r = t[e - 1], i = n - r; return \"vertical\" === this.props.orientation ? { height: \"\".concat(i, \"%\"), top: \"\".concat(r, \"%\") } : { left: \"\".concat(r, \"%\"), width: \"\".concat(i, \"%\") } } }, { key: \"getMinValue\", value: function (e) { return this.state.values[e - 1] ? Math.max(this.props.min, this.state.values[e - 1]) : this.props.min } }, { key: \"getMaxValue\", value: function (e) { return this.state.values[e + 1] ? Math.min(this.props.max, this.state.values[e + 1]) : this.props.max } }, { key: \"getHandleDimensions\", value: function (e, t) { var n = e.currentTarget || null; return n ? \"vertical\" === this.props.orientation ? n.clientHeight / t.height * Ls / 2 : n.clientWidth / t.width * Ls / 2 : 0 } }, { key: \"getClosestSnapPoint\", value: function (n) { return this.props.snapPoints.length ? this.props.snapPoints.reduce(function (e, t) { return Math.abs(e - n) < Math.abs(t - n) ? e : t }) : n } }, { key: \"getSnapPosition\", value: function (e) { if (!this.props.snap) return e; var t = this.props, n = t.max, r = t.min, i = Ms(e, r, n); return js(this.getClosestSnapPoint(i), r, n) } }, { key: \"getNextPositionForKey\", value: function (e, t) { var n, r = this.state, i = r.handlePos, a = r.values, s = this.props, o = s.max, c = s.min, u = s.snapPoints, l = this.props.snap, d = a[e], h = i[e], f = h, m = 1; 100 <= o ? h = Math.round(h) : m = 100 / (o - c); var p = null; l && (p = u.indexOf(this.getClosestSnapPoint(a[e]))); var g = (k(n = {}, Fs, function (e) { return -1 * e }), k(n, Es, function (e) { return e }), k(n, ks, function (e) { return e }), k(n, Ps, function (e) { return -1 * e }), k(n, Ts, function (e) { return 1 < e ? -e : -10 * e }), k(n, Cs, function (e) { return 1 < e ? e : 10 * e }), n); if (Object.prototype.hasOwnProperty.call(g, t)) h += g[t](m), l && p && (f < h ? p < u.length - 1 && (d = u[p + 1]) : 0 < p && (d = u[p - 1])); else if (t === Is) h = 0, l && (d = u[0]); else { if (t !== xs) return null; h = Ls, l && (d = u[u.length - 1]) } return l ? js(d, c, o) : h } }, { key: \"getNextState\", value: function (n, e) { var t = this.state.handlePos, r = this.props, i = r.max, a = r.min, s = this.validatePosition(n, e), o = t.map(function (e, t) { return t === n ? s : e }); return { handlePos: o, values: o.map(function (e) { return Ms(e, a, i) }) } } }, { key: \"getClosestHandle\", value: function (r) { var i = this.state.handlePos; return i.reduce(function (e, t, n) { return Math.abs(i[n] - r) < Math.abs(i[e] - r) ? n : e }, 0) } }, { key: \"setStartSlide\", value: function (e, t, n) { var r = this.getSliderBoundingBox(); this.setState({ handleDimensions: this.getHandleDimensions(e, r), mousePos: { x: t, y: n }, sliderBox: r, slidingIndex: As(e) }) } }, { key: \"startMouseSlide\", value: function (e) { this.setStartSlide(e, e.clientX, e.clientY), document.addEventListener(\"mousemove\", this.handleMouseSlide, !1), document.addEventListener(\"mouseup\", this.endSlide, !1), Hs(e) } }, { key: \"startTouchSlide\", value: function (e) { if (!(1 < e.changedTouches.length)) { var t = e.changedTouches[0]; this.setStartSlide(e, t.clientX, t.clientY), document.addEventListener(\"touchmove\", this.handleTouchSlide, !1), document.addEventListener(\"touchend\", this.endSlide, !1), this.props.onSliderDragStart && this.props.onSliderDragStart(), Hs(e) } } }, { key: \"handleMouseSlide\", value: function (e) { null !== this.state.slidingIndex && (this.handleSlide(e.clientX, e.clientY), Hs(e)) } }, { key: \"handleTouchSlide\", value: function (e) { if (null !== this.state.slidingIndex) if (1 < e.changedTouches.length) this.endSlide(); else { var t = e.changedTouches[0]; this.handleSlide(t.clientX, t.clientY), Hs(e) } } }, { key: \"handleSlide\", value: function (e, t) { var n = this.state, r = n.slidingIndex, i = n.sliderBox, a = \"vertical\" === this.props.orientation ? (t - i.top) / i.height * Ls : (e - i.left) / i.width * Ls; this.slideTo(r, a), this.canMove(r, a) && (this.setState({ mousePos: { x: e, y: t } }), this.props.onSliderDragMove && this.props.onSliderDragMove()) } }, { key: \"endSlide\", value: function () { var e = this, t = this.state.slidingIndex; if (this.setState({ slidingIndex: null }), document.removeEventListener(\"mouseup\", this.endSlide, !1), document.removeEventListener(\"touchend\", this.endSlide, !1), document.removeEventListener(\"touchmove\", this.handleTouchSlide, !1), document.removeEventListener(\"mousemove\", this.handleMouseSlide, !1), this.props.onSliderDragEnd && this.props.onSliderDragEnd(), this.props.snap) { var n = this.getSnapPosition(this.state.handlePos[t]); this.slideTo(t, n, function () { return e.fireChangeEvent() }) } else this.fireChangeEvent() } }, { key: \"handleClick\", value: function (e) { var t = this; if (!e.target.getAttribute(\"data-handle-key\")) { var n = this.getSliderBoundingBox(), r = (\"vertical\" === this.props.orientation ? (e.clientY - n.top) / n.height : (e.clientX - n.left) / n.width) * Ls, i = this.getClosestHandle(r), a = this.getSnapPosition(r); this.slideTo(i, a, function () { return t.fireChangeEvent() }), this.props.onClick && this.props.onClick() } } }, { key: \"handleKeydown\", value: function (e) { var t = this, n = As(e); if (e.keyCode !== Ns) { var r = this.getNextPositionForKey(n, e.keyCode); null !== r && (this.canMove(n, r) && (this.slideTo(n, r, function () { return t.fireChangeEvent() }), this.props.onKeyPress && this.props.onKeyPress()), Hs(e)) } else e.currentTarget.blur() } }, { key: \"validatePosition\", value: function (e, t) { var n = this.state, r = n.handlePos, i = n.handleDimensions; return Math.max(Math.min(t, void 0 !== r[e + 1] ? r[e + 1] - i : Ls), void 0 !== r[e - 1] ? r[e - 1] + i : 0) } }, { key: \"validateValues\", value: function (e, t) { var n = t || this.props, i = n.max, a = n.min; return e.map(function (e, t, n) { var r = Math.max(Math.min(e, i), a); return n.length && r < n[t - 1] ? n[t - 1] : r }) } }, { key: \"canMove\", value: function (e, t) { var n = this.state, r = n.handlePos, i = n.handleDimensions; return !(t < 0) && (!(Ls < t) && (!((void 0 !== r[e + 1] ? r[e + 1] - i : 1 / 0) < t) && !(t < (void 0 !== r[e - 1] ? r[e - 1] + i : -1 / 0)))) } }, { key: \"fireChangeEvent\", value: function () { var e = this.props.onChange; e && e(this.getPublicState()) } }, { key: \"slideTo\", value: function (e, t, n) { var r = this, i = this.getNextState(e, t); this.setState(i, function () { var e = r.props.onValuesUpdated; e && e(r.getPublicState()), n && n() }) } }, { key: \"updateNewValues\", value: function (e) { var t = this; if (null === this.state.slidingIndex) { var n = e.max, r = e.min, i = e.values, a = this.validateValues(i, e); this.setState({ handlePos: a.map(function (e) { return js(e, r, n) }), values: a }, function () { return t.fireChangeEvent() }) } } }, { key: \"render\", value: function () { var r = this, e = this.props, t = e.children, i = e.disabled, a = e.handle, s = e.max, o = e.min, c = e.orientation, u = e.pitComponent, n = e.pitPoints, l = e.progressBar, d = this.state, h = d.className, f = d.handlePos, m = d.values; return Kn(\"div\", { className: h, ref: this.rheostat, onClick: i ? void 0 : this.handleClick, style: { position: \"relative\" } }, Ws, f.map(function (e, t) { var n = \"vertical\" === c ? { top: \"\".concat(e, \"%\"), position: \"absolute\" } : { left: \"\".concat(e, \"%\"), position: \"absolute\" }; return Kn(a, { \"aria-valuemax\": r.getMaxValue(t), \"aria-valuemin\": r.getMinValue(t), \"aria-valuenow\": m[t], \"aria-disabled\": i, \"data-handle-key\": t, className: \"rheostat-handle\", key: \"handle-\".concat(t), onClick: Hs, onKeyDown: i ? void 0 : r.handleKeydown, onMouseDown: i ? void 0 : r.startMouseSlide, onTouchStart: i ? void 0 : r.startTouchSlide, role: \"slider\", style: n, tabIndex: 0 }) }), f.map(function (e, t, n) { return 0 === t && 1 < n.length ? null : Kn(l, { className: \"rheostat-progress\", key: \"progress-bar-\".concat(t), style: r.getProgressStyle(t) }) }), u && n.map(function (e) { var t = js(e, o, s), n = \"vertical\" === c ? { top: \"\".concat(t, \"%\"), position: \"absolute\" } : { left: \"\".concat(t, \"%\"), position: \"absolute\" }; return Kn(u, { key: \"pit-\".concat(e), style: n }, e) }), t) } }]), r }(); k(Ds, \"defaultProps\", { className: \"\", children: null, disabled: !1, handle: function (e) { return Kn(\"button\", h({}, e, { type: \"button\" })) }, max: Ls, min: 0, onClick: null, onChange: null, onKeyPress: null, onSliderDragEnd: null, onSliderDragMove: null, onSliderDragStart: null, onValuesUpdated: null, orientation: \"horizontal\", pitComponent: null, pitPoints: [], progressBar: \"div\", snap: !1, snapPoints: [], values: [0] }); function Bs(e) { var t = e.style, n = e.children, r = Math.round(parseFloat(t.left)), i = [0, 50, 100].includes(r), a = n, s = Math.round(100 * parseInt(a, 10)) / 100; return Kn(\"div\", { style: W(W({}, t), {}, { marginLeft: 100 === r ? \"-2px\" : 0 }), className: Ei(\"rheostat-marker\", \"rheostat-marker-horizontal\", { \"rheostat-marker-large\": i }) }, i && Kn(\"div\", { className: \"rheostat-value\" }, s)) } function Us(e) { var t = e.cssClasses, n = e.templates, r = e.isRelevantSorted, i = e.isVirtualReplica, a = e.refine; return i ? Kn(\"div\", { className: t.root }, Kn(ki, { templateKey: \"text\", templates: n, rootProps: { className: t.text }, data: { isRelevantSorted: r } }), Kn(\"button\", { type: \"button\", className: t.button, onClick: function () { a(r ? 0 : void 0) } }, Kn(ki, { rootTagName: \"span\", templateKey: \"button\", templates: n, data: { isRelevantSorted: r } }))) : null } function qs(e) { var t = e.nbHits, n = e.nbSortedHits, r = e.cssClasses, i = e.templateProps, a = j(e, [\"nbHits\", \"nbSortedHits\", \"cssClasses\", \"templateProps\"]); return Kn(\"div\", { className: Ei(r.root) }, Kn(ki, h({}, i, { templateKey: \"text\", rootTagName: \"span\", rootProps: { className: r.text }, data: W({ hasManySortedResults: n && 1 < n, hasNoSortedResults: 0 === n, hasOneSortedResults: 1 === n, hasManyResults: 1 < t, hasNoResults: 0 === t, hasOneResult: 1 === t, nbHits: t, nbSortedHits: n, cssClasses: r }, a) }))) } function Qs(e) { var t = e.currentRefinement, n = e.refine, r = e.cssClasses, i = e.templateProps; return Kn(\"div\", { className: r.root }, Kn(\"label\", { className: r.label }, Kn(\"input\", { className: r.checkbox, type: \"checkbox\", checked: t.isRefined, onChange: function (e) { return n({ isRefined: !e.target.checked }) } }), Kn(ki, h({}, i, { rootTagName: \"span\", rootProps: { className: r.labelText }, templateKey: \"labelText\", data: t })))) } function Vs(e) { var t = e.cssClasses, n = e.isBrowserSupported, r = e.isListening, i = e.toggleListening, a = e.voiceListeningState, s = e.templates, o = a.status, c = a.transcript, u = a.isSpeechFinal, l = a.errorCode; return Kn(\"div\", { className: t.root }, Kn(ki, { templateKey: \"buttonText\", rootTagName: \"button\", rootProps: { className: t.button, type: \"button\", title: \"Search by voice\".concat(n ? \"\" : \" (not supported on this browser)\"), onClick: function (e) { e.currentTarget instanceof HTMLElement && e.currentTarget.blur(), i() }, disabled: !n }, data: { status: o, errorCode: l, isListening: r, transcript: c, isSpeechFinal: u, isBrowserSupported: n }, templates: s }), Kn(ki, { templateKey: \"status\", rootProps: { className: t.status }, data: { status: o, errorCode: l, isListening: r, transcript: c, isSpeechFinal: u, isBrowserSupported: n }, templates: s })) } var $s = function () { L(a, Yn); var i = O(a); function a() { var n; C(this, a); for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++)t[r] = arguments[r]; return k(M(n = i.call.apply(i, [this].concat(t))), \"handleChange\", function (e) { var t = e.values; n.isDisabled || n.props.refine(t) }), k(M(n), \"createHandleComponent\", function (r) { return function (e) { var t = Math.round(100 * parseFloat(e[\"aria-valuenow\"])) / 100, n = \"object\" === f(r) && r.format ? r.format(t) : t; return Kn(\"div\", h({}, e, { className: Ei(e.className, { \"rheostat-handle-lower\": 0 === e[\"data-handle-key\"], \"rheostat-handle-upper\": 1 === e[\"data-handle-key\"] }) }), r && Kn(\"div\", { className: \"rheostat-tooltip\" }, n)) } }), n } return E(a, [{ key: \"isDisabled\", get: function () { return this.props.min >= this.props.max } }, { key: \"computeDefaultPitPoints\", value: function (e) { var t = e.min, n = e.max, r = (n - t) / 34; return [t].concat(P(He({ end: 33 }).map(function (e) { return t + r * (e + 1) })), [n]) } }, { key: \"computeSnapPoints\", value: function (e) { var t = e.min, n = e.max, r = e.step; if (r) return [].concat(P(He({ start: t, end: n, step: r })), [n]) } }, { key: \"render\", value: function () { var e = this.props, t = e.tooltips, n = e.step, r = e.pips, i = e.values, a = e.cssClasses, s = this.isDisabled ? { min: this.props.min, max: this.props.max + .001 } : this.props, o = s.min, c = s.max, u = this.computeSnapPoints({ min: o, max: c, step: n }), l = !1 === r ? [] : this.computeDefaultPitPoints({ min: o, max: c }); return Kn(\"div\", { className: Ei(a.root, k({}, a.disabledRoot, this.isDisabled)) }, Kn(Ds, { handle: this.createHandleComponent(t), onChange: this.handleChange, min: o, max: c, pitComponent: Bs, pitPoints: l, snap: !0, snapPoints: u, values: this.isDisabled ? [o, c] : i, disabled: this.isDisabled })) } }]), a }(), Ks = st({ name: \"range-slider\" }), zs = Ft(\"RangeSlider\"), Js = { item: '{{#count}}{{/count}}{{^count}}{{transcript}}
\" }, So = st({ name: \"voice-search\" }), Ro = Ft(\"VoiceSearch\"), wo = je(Gi), _o = Object.freeze({ __proto__: null, dynamicWidgets: Gi, EXPERIMENTAL_dynamicWidgets: wo, analytics: function (e) { var t = e || {}, s = t.pushFunction, n = t.delay, r = void 0 === n ? 3e3 : n, i = t.triggerOnUIInteraction, a = void 0 !== i && i, o = t.pushInitialSearch, c = void 0 === o || o, u = t.pushPagination, l = void 0 !== u && u; if (!s) throw new Error(Ci(\"The `pushFunction` option is required.\")); function d(e) { if (null !== e) { var t = [], n = function (e) { var t = []; for (var n in e) if (e.hasOwnProperty(n)) { var r = e[n].join(\"+\"); t.push(\"\".concat(encodeURIComponent(n), \"=\").concat(encodeURIComponent(n), \"_\").concat(encodeURIComponent(r))) } return t.join(\"&\") }(W(W(W({}, e.state.disjunctiveFacetsRefinements), e.state.facetsRefinements), e.state.hierarchicalFacetsRefinements)), r = function (e) { var t = []; for (var n in e) if (e.hasOwnProperty(n)) { var r = e[n]; if (r.hasOwnProperty(\">=\") && r.hasOwnProperty(\"<=\")) r[\">=\"] && r[\">=\"][0] === r[\"<=\"] && r[\"<=\"][0] ? t.push(\"\".concat(n, \"=\").concat(n, \"_\").concat(r[\">=\"])) : t.push(\"\".concat(n, \"=\").concat(n, \"_\").concat(r[\">=\"], \"to\").concat(r[\"<=\"])); else if (r.hasOwnProperty(\">=\")) t.push(\"\".concat(n, \"=\").concat(n, \"_from\").concat(r[\">=\"])); else if (r.hasOwnProperty(\"<=\")) t.push(\"\".concat(n, \"=\").concat(n, \"_to\").concat(r[\"<=\"])); else if (r.hasOwnProperty(\"=\")) { var i = []; for (var a in r[\"=\"]) r[\"=\"].hasOwnProperty(a) && i.push(r[\"=\"][a]); t.push(\"\".concat(n, \"=\").concat(n, \"_\").concat(i.join(\"-\"))) } } return t.join(\"&\") }(e.state.numericRefinements); \"\" !== n && t.push(n), \"\" !== r && t.push(r); var i = t.join(\"&\"), a = \"Query: \".concat(e.state.query || \"\", \", \").concat(i); !0 === l && (a += \", Page: \".concat(e.state.page || 0)), m !== a && (s(i, e.state, e.results), m = a) } } var h, f = null, m = \"\", p = !0; !0 === c && (p = !1); function g() { d(f) } function v() { d(f) } return { $$type: \"ais.analytics\", $$widgetType: \"ais.analytics\", init: function () { !0 === a && (document.addEventListener(\"click\", g), window.addEventListener(\"beforeunload\", v)) }, render: function (e) { var t = e.results, n = e.state; !0 !== p ? (f = { results: t, state: n }, h && clearTimeout(h), h = window.setTimeout(function () { return d(f) }, r)) : p = !1 }, dispose: function () { !0 === a && (document.removeEventListener(\"click\", g), window.removeEventListener(\"beforeunload\", v)) }, getRenderState: function (e, t) { return W(W({}, e), {}, { analytics: this.getWidgetRenderState(t) }) }, getWidgetRenderState: function () { return { widgetParams: e } } } }, breadcrumb: function (e) { var t = e || {}, n = t.container, r = t.attributes, i = t.separator, a = t.rootPath, s = t.transformItems, o = t.templates, c = void 0 === o ? {} : o, u = t.cssClasses, l = void 0 === u ? {} : u; if (!n) throw new Error(Wi(\"The `container` option is required.\")); var d = ye(n), h = { root: Ei(Di(), l.root), noRefinementRoot: Ei(Di({ modifierName: \"noRefinement\" }), l.noRefinementRoot), list: Ei(Di({ descendantName: \"list\" }), l.list), item: Ei(Di({ descendantName: \"item\" }), l.item), selectedItem: Ei(Di({ descendantName: \"item\", modifierName: \"selected\" }), l.selectedItem), separator: Ei(Di({ descendantName: \"separator\" }), l.separator), link: Ei(Di({ descendantName: \"link\" }), l.link) }, f = function (e) { var o = e.containerNode, c = e.cssClasses, u = e.renderState, l = e.templates; return function (e, t) { var n = e.canRefine, r = e.createURL, i = e.instantSearchInstance, a = e.items, s = e.refine; t ? u.templateProps = Re({ defaultTemplates: Hi, templatesConfig: i.templatesConfig, templates: l }) : fr(Kn(Li, { canRefine: n, cssClasses: c, createURL: r, items: a, refine: s, templateProps: u.templateProps }), o) } }({ containerNode: d, cssClasses: h, renderState: {}, templates: c }); return W(W({}, $r(f, function () { return fr(null, d) })({ attributes: r, separator: i, rootPath: a, transformItems: s })), {}, { $$widgetType: \"ais.breadcrumb\" }) }, clearRefinements: function (e) { var t = e || {}, n = t.container, r = t.templates, i = void 0 === r ? {} : r, a = t.includedAttributes, s = t.excludedAttributes, o = t.transformItems, c = t.cssClasses, u = void 0 === c ? {} : c; if (!n) throw new Error(Ui(\"The `container` option is required.\")); var l = ye(n), d = { root: Ei(qi(), u.root), button: Ei(qi({ descendantName: \"button\" }), u.button), disabledButton: Ei(qi({ descendantName: \"button\", modifierName: \"disabled\" }), u.disabledButton) }, h = function (e) { var a = e.containerNode, s = e.cssClasses, o = e.renderState, c = e.templates; return function (e, t) { var n = e.refine, r = e.hasRefinements, i = e.instantSearchInstance; t ? o.templateProps = Re({ defaultTemplates: Bi, templatesConfig: i.templatesConfig, templates: c }) : fr(Kn(ji, { refine: n, cssClasses: s, hasRefinements: r, templateProps: o.templateProps }), a) } }({ containerNode: l, cssClasses: d, renderState: {}, templates: i }); return W(W({}, Sn(h, function () { return fr(null, l) })({ includedAttributes: a, excludedAttributes: s, transformItems: o })), {}, { $$widgetType: \"ais.clearRefinements\" }) }, configure: function (e) { return W(W({}, hi(Le)({ searchParameters: e })), {}, { $$widgetType: \"ais.configure\" }) }, currentRefinements: function (e) { var t = e || {}, n = t.container, r = t.includedAttributes, i = t.excludedAttributes, a = t.cssClasses, s = void 0 === a ? {} : a, o = t.transformItems; if (!n) throw new Error(Qi(\"The `container` option is required.\")); var c = ye(n), u = { root: Ei(Vi(), s.root), list: Ei(Vi({ descendantName: \"list\" }), s.list), item: Ei(Vi({ descendantName: \"item\" }), s.item), label: Ei(Vi({ descendantName: \"label\" }), s.label), category: Ei(Vi({ descendantName: \"category\" }), s.category), categoryLabel: Ei(Vi({ descendantName: \"categoryLabel\" }), s.categoryLabel), delete: Ei(Vi({ descendantName: \"delete\" }), s.delete) }; return W(W({}, _n(Oi, function () { return fr(null, c) })({ container: c, cssClasses: u, includedAttributes: r, excludedAttributes: i, transformItems: o })), {}, { $$widgetType: \"ais.currentRefinements\" }) }, EXPERIMENTAL_answers: function (e) { var t = e || {}, n = t.container, r = t.attributesForPrediction, i = t.queryLanguages, a = t.nbHits, s = t.searchDebounceTime, o = t.renderDebounceTime, c = t.escapeHTML, u = t.extraParameters, l = t.templates, d = void 0 === l ? {} : l, h = t.cssClasses, f = void 0 === h ? {} : h; if (!n) throw new Error(Ki(\"The `container` option is required.\")); var m = ye(n), p = { root: Ei(zi(), f.root), emptyRoot: Ei(zi({ modifierName: \"empty\" }), f.emptyRoot), header: Ei(zi({ descendantName: \"header\" }), f.header), loader: Ei(zi({ descendantName: \"loader\" }), f.loader), list: Ei(zi({ descendantName: \"list\" }), f.list), item: Ei(zi({ descendantName: \"item\" }), f.item) }, g = function (e) { var a = e.containerNode, s = e.cssClasses, o = e.renderState, c = e.templates; return function (e, t) { var n = e.hits, r = e.isLoading, i = e.instantSearchInstance; t ? o.templateProps = Re({ defaultTemplates: $i, templatesConfig: i.templatesConfig, templates: c }) : fr(Kn(Ai, { cssClasses: s, hits: n, isLoading: r, templateProps: o.templateProps }), a) } }({ containerNode: m, cssClasses: p, templates: d, renderState: {} }); return W(W({}, _i(g, function () { return fr(null, m) })({ attributesForPrediction: r, queryLanguages: i, nbHits: a, searchDebounceTime: s, renderDebounceTime: o, escapeHTML: c, extraParameters: u })), {}, { $$widgetType: \"ais.answers\" }) }, EXPERIMENTAL_configureRelatedItems: function (e) { return W(W({}, pi(Le)(e)), {}, { $$widgetType: \"ais.configureRelatedItems\" }) }, geoSearch: function (e) { var t = e || {}, n = t.initialZoom, r = void 0 === n ? 1 : n, i = t.initialPosition, a = void 0 === i ? { lat: 0, lng: 0 } : i, s = t.templates, o = void 0 === s ? {} : s, c = t.cssClasses, u = void 0 === c ? {} : c, l = t.builtInMarker, d = void 0 === l ? {} : l, h = t.customHTMLMarker, f = t.enableRefine, m = void 0 === f || f, p = t.enableClearMapRefinement, g = void 0 === p || p, v = t.enableRefineControl, y = void 0 === v || v, b = t.container, S = t.googleReference, R = j(t, [\"initialZoom\", \"initialPosition\", \"templates\", \"cssClasses\", \"builtInMarker\", \"customHTMLMarker\", \"enableRefine\", \"enableClearMapRefinement\", \"enableRefineControl\", \"container\", \"googleReference\"]); if (!b) throw new Error(sa(\"The `container` option is required.\")); if (!S) throw new Error(sa(\"The `googleReference` option is required.\")); var w = ye(b), _ = { root: Ei(oa(), u.root), tree: oa({ descendantName: \"tree\" }), map: Ei(oa({ descendantName: \"map\" }), u.map), control: Ei(oa({ descendantName: \"control\" }), u.control), label: Ei(oa({ descendantName: \"label\" }), u.label), selectedLabel: Ei(oa({ descendantName: \"label\", modifierName: \"selected\" }), u.selectedLabel), input: Ei(oa({ descendantName: \"input\" }), u.input), redo: Ei(oa({ descendantName: \"redo\" }), u.redo), disabledRedo: Ei(oa({ descendantName: \"redo\", modifierName: \"disabled\" }), u.disabledRedo), reset: Ei(oa({ descendantName: \"reset\" }), u.reset) }, P = W(W({}, aa), o), x = W(W({}, { createOptions: function () { return {} }, events: {} }), d), N = (Boolean(h) || Boolean(o.HTMLMarker)) && W(W({}, { createOptions: function () { return {} }, events: {} }), h), I = function (d) { return function () { L(l, d.maps.OverlayView); var u = O(l); function l(e) { var t, n = e.__id, r = e.position, i = e.map, a = e.template, s = e.className, o = e.anchor, c = void 0 === o ? { x: 0, y: 0 } : o; return C(this, l), k(M(t = u.call(this)), \"__id\", void 0), k(M(t), \"anchor\", void 0), k(M(t), \"offset\", void 0), k(M(t), \"listeners\", void 0), k(M(t), \"latLng\", void 0), k(M(t), \"element\", void 0), t.__id = n, t.anchor = c, t.listeners = {}, t.latLng = new d.maps.LatLng(r), t.element = document.createElement(\"div\"), t.element.className = s, t.element.style.position = \"absolute\", t.element.innerHTML = a, t.setMap(i), t } return E(l, [{ key: \"onAdd\", value: function () { this.getPanes().overlayMouseTarget.appendChild(this.element); var e = this.element.getBoundingClientRect(); this.offset = { x: this.anchor.x + e.width / 2, y: this.anchor.y + e.height }, this.element.style.width = \"\".concat(e.width, \"px\") } }, { key: \"draw\", value: function () { var e = this.getProjection().fromLatLngToDivPixel(this.latLng); this.element.style.left = \"\".concat(Math.round(e.x - this.offset.x), \"px\"), this.element.style.top = \"\".concat(Math.round(e.y - this.offset.y), \"px\"), this.element.style.zIndex = String(parseInt(this.element.style.top, 10)) } }, { key: \"onRemove\", value: function () { var t = this; this.element && (this.element.parentNode.removeChild(this.element), Object.keys(this.listeners).forEach(function (e) { t.element.removeEventListener(e, t.listeners[e]) }), delete this.element, delete this.listeners) } }, { key: \"addListener\", value: function (e, t) { this.listeners[e] = t; var n = this.element; return n.addEventListener(e, t), { remove: function () { return n.removeEventListener(e, t) } } } }, { key: \"getPosition\", value: function () { return this.latLng } }]), l }() }(S), F = N ? function (e) { var t = e.item, n = j(e, [\"item\"]); return new I(W(W(W({}, N.createOptions(t)), n), {}, { __id: t.objectID, position: t._geoloc, className: Ei(oa({ descendantName: \"marker\" })), template: Ne({ templateKey: \"HTMLMarker\", templates: P, data: t }) })) } : function (e) { var t = e.item, n = j(e, [\"item\"]); return new S.maps.Marker(W(W(W({}, x.createOptions(t)), n), {}, { __id: t.objectID, position: t._geoloc })) }, T = N || x; return W(W({}, si(ia, function () { return fr(null, w) })(W(W({}, R), {}, { renderState: {}, container: w, googleReference: S, initialZoom: r, initialPosition: a, templates: P, cssClasses: _, createMarker: F, markerOptions: T, enableRefine: m, enableClearMapRefinement: g, enableRefineControl: y }))), {}, { $$widgetType: \"ais.geoSearch\" }) }, hierarchicalMenu: function (e) { var t = e || {}, n = t.container, r = t.attributes, i = t.separator, a = t.rootPath, s = t.showParentLevel, o = t.limit, c = t.showMore, u = void 0 !== c && c, l = t.showMoreLimit, d = t.sortBy, h = t.transformItems, f = t.templates, m = void 0 === f ? {} : f, p = t.cssClasses, g = void 0 === p ? {} : p; if (!n) throw new Error(ma(\"The `container` option is required.\")); var v = ye(n), y = function (e) { var u = e.cssClasses, l = e.containerNode, d = e.showMore, h = e.templates, f = e.renderState; return function (e, t) { var n = e.createURL, r = e.items, i = e.refine, a = e.instantSearchInstance, s = e.isShowingMore, o = e.toggleShowMore, c = e.canToggleShowMore; t ? f.templateProps = Re({ defaultTemplates: fa, templatesConfig: a.templatesConfig, templates: h }) : fr(Kn(ha, { createURL: n, cssClasses: u, facetValues: r, templateProps: f.templateProps, toggleRefinement: i, showMore: d, toggleShowMore: o, isShowingMore: s, canToggleShowMore: c }), l) } }({ cssClasses: { root: Ei(pa(), g.root), noRefinementRoot: Ei(pa({ modifierName: \"noRefinement\" }), g.noRefinementRoot), list: Ei(pa({ descendantName: \"list\" }), g.list), childList: Ei(pa({ descendantName: \"list\", modifierName: \"child\" }), g.childList), item: Ei(pa({ descendantName: \"item\" }), g.item), selectedItem: Ei(pa({ descendantName: \"item\", modifierName: \"selected\" }), g.selectedItem), parentItem: Ei(pa({ descendantName: \"item\", modifierName: \"parent\" }), g.parentItem), link: Ei(pa({ descendantName: \"link\" }), g.link), label: Ei(pa({ descendantName: \"label\" }), g.label), count: Ei(pa({ descendantName: \"count\" }), g.count), showMore: Ei(pa({ descendantName: \"showMore\" }), g.showMore), disabledShowMore: Ei(pa({ descendantName: \"showMore\", modifierName: \"disabled\" }), g.disabledShowMore) }, containerNode: v, templates: m, showMore: u, renderState: {} }); return W(W({}, Tn(y, function () { return fr(null, v) })({ attributes: r, separator: i, rootPath: a, showParentLevel: s, limit: o, showMore: u, showMoreLimit: l, sortBy: d, transformItems: h })), {}, { $$widgetType: \"ais.hierarchicalMenu\" }) }, hits: function (e) { var t = e || {}, n = t.container, r = t.escapeHTML, i = t.transformItems, a = t.templates, s = void 0 === a ? {} : a, o = t.cssClasses, c = void 0 === o ? {} : o; if (!n) throw new Error(va(\"The `container` option is required.\")); var u = ye(n), l = { root: Ei(ya(), c.root), emptyRoot: Ei(ya({ modifierName: \"empty\" }), c.emptyRoot), list: Ei(ya({ descendantName: \"list\" }), c.list), item: Ei(ya({ descendantName: \"item\" }), c.item) }, d = function (e) { var o = e.renderState, c = e.cssClasses, u = e.containerNode, l = e.templates; return function (e, t) { var n = e.hits, r = e.results, i = e.instantSearchInstance, a = e.insights, s = e.bindEvent; t ? o.templateProps = Re({ defaultTemplates: ga, templatesConfig: i.templatesConfig, templates: l }) : fr(Kn(ba, { cssClasses: c, hits: n, results: r, templateProps: o.templateProps, insights: a, sendEvent: function (e) { i.sendEventToInsights(e) }, bindEvent: s }), u) } }({ containerNode: u, cssClasses: l, renderState: {}, templates: s }); return W(W({}, Mn(Cn)(d, function () { return fr(null, u) })({ escapeHTML: r, transformItems: i })), {}, { $$widgetType: \"ais.hits\" }) }, hitsPerPage: function (e) { var t = e || {}, n = t.container, r = t.items, i = t.cssClasses, a = void 0 === i ? {} : i, s = t.transformItems; if (!n) throw new Error(Ra(\"The `container` option is required.\")); var o = ye(n), c = { root: Ei(wa(), a.root), select: Ei(wa({ descendantName: \"select\" }), a.select), option: Ei(wa({ descendantName: \"option\" }), a.option) }, u = function (e) { var a = e.containerNode, s = e.cssClasses; return function (e, t) { var n = e.items, r = e.refine; if (!t) { var i = (Ie(n, function (e) { return e.isRefined }) || {}).value; fr(Kn(\"div\", { className: s.root }, Kn(Sa, { cssClasses: s, currentValue: i, options: n, setValue: r })), a) } } }({ containerNode: o, cssClasses: c }); return W(W({}, gr(u, function () { return fr(null, o) })({ items: r, transformItems: s })), {}, { $$widgetType: \"ais.hitsPerPage\" }) }, index: Nt, infiniteHits: function (e) { var t = e || {}, n = t.container, r = t.escapeHTML, i = t.transformItems, a = t.templates, s = void 0 === a ? {} : a, o = t.cssClasses, c = void 0 === o ? {} : o, u = t.showPrevious, l = t.cache; if (!n) throw new Error(Pa(\"The `container` option is required.\")); var d = ye(n), h = { root: Ei(xa(), c.root), emptyRoot: Ei(xa({ modifierName: \"empty\" }), c.emptyRoot), item: Ei(xa({ descendantName: \"item\" }), c.item), list: Ei(xa({ descendantName: \"list\" }), c.list), loadPrevious: Ei(xa({ descendantName: \"loadPrevious\" }), c.loadPrevious), disabledLoadPrevious: Ei(xa({ descendantName: \"loadPrevious\", modifierName: \"disabled\" }), c.disabledLoadPrevious), loadMore: Ei(xa({ descendantName: \"loadMore\" }), c.loadMore), disabledLoadMore: Ei(xa({ descendantName: \"loadMore\", modifierName: \"disabled\" }), c.disabledLoadMore) }, f = function (e) { var d = e.containerNode, h = e.cssClasses, f = e.renderState, m = e.templates, p = e.showPrevious; return function (e, t) { var n = e.hits, r = e.results, i = e.showMore, a = e.showPrevious, s = e.isFirstPage, o = e.isLastPage, c = e.instantSearchInstance, u = e.insights, l = e.bindEvent; t ? f.templateProps = Re({ defaultTemplates: _a, templatesConfig: c.templatesConfig, templates: m }) : fr(Kn(Na, { cssClasses: h, hits: n, results: r, hasShowPrevious: p, showPrevious: a, showMore: i, templateProps: f.templateProps, isFirstPage: s, isLastPage: o, insights: u, sendEvent: function (e) { c.sendEventToInsights(e) }, bindEvent: l }), d) } }({ containerNode: d, cssClasses: h, templates: s, showPrevious: u, renderState: {} }); return W(W({}, Mn(Rr)(f, function () { return fr(null, d) })({ escapeHTML: r, transformItems: i, showPrevious: u, cache: l })), {}, { $$widgetType: \"ais.infiniteHits\" }) }, menu: function (e) { var t = e || {}, n = t.container, r = t.attribute, i = t.sortBy, a = t.limit, s = t.showMore, o = t.showMoreLimit, c = t.cssClasses, u = void 0 === c ? {} : c, l = t.templates, d = void 0 === l ? {} : l, h = t.transformItems; if (!n) throw new Error(Fa(\"The `container` option is required.\")); var f = ye(n), m = { root: Ei(Ta(), u.root), noRefinementRoot: Ei(Ta({ modifierName: \"noRefinement\" }), u.noRefinementRoot), list: Ei(Ta({ descendantName: \"list\" }), u.list), item: Ei(Ta({ descendantName: \"item\" }), u.item), selectedItem: Ei(Ta({ descendantName: \"item\", modifierName: \"selected\" }), u.selectedItem), link: Ei(Ta({ descendantName: \"link\" }), u.link), label: Ei(Ta({ descendantName: \"label\" }), u.label), count: Ei(Ta({ descendantName: \"count\" }), u.count), showMore: Ei(Ta({ descendantName: \"showMore\" }), u.showMore), disabledShowMore: Ei(Ta({ descendantName: \"showMore\", modifierName: \"disabled\" }), u.disabledShowMore) }, p = function (e) { var l = e.containerNode, d = e.cssClasses, h = e.renderState, f = e.templates, m = e.showMore; return function (e, t) { var n = e.refine, r = e.items, i = e.createURL, a = e.instantSearchInstance, s = e.isShowingMore, o = e.toggleShowMore, c = e.canToggleShowMore; if (t) h.templateProps = Re({ defaultTemplates: Ia, templatesConfig: a.templatesConfig, templates: f }); else { var u = r.map(function (e) { return W(W({}, e), {}, { url: i(e.value) }) }); fr(Kn(ha, { createURL: i, cssClasses: d, facetValues: u, showMore: m, templateProps: h.templateProps, toggleRefinement: n, toggleShowMore: o, isShowingMore: s, canToggleShowMore: c }), l) } } }({ containerNode: f, cssClasses: m, renderState: {}, templates: d, showMore: s }); return W(W({}, wr(p, function () { return fr(null, f) })({ attribute: r, limit: a, showMore: s, showMoreLimit: o, sortBy: i, transformItems: h })), {}, { $$widgetType: \"ais.menu\" }) }, menuSelect: function (e) { var t = e || {}, n = t.container, r = t.attribute, i = t.sortBy, a = void 0 === i ? [\"name:asc\"] : i, s = t.limit, o = void 0 === s ? 10 : s, c = t.cssClasses, u = void 0 === c ? {} : c, l = t.templates, d = void 0 === l ? {} : l, h = t.transformItems; if (!n) throw new Error(ka(\"The `container` option is required.\")); var f = ye(n), m = { root: Ei(La(), u.root), noRefinementRoot: Ei(La({ modifierName: \"noRefinement\" }), u.noRefinementRoot), select: Ei(La({ descendantName: \"select\" }), u.select), option: Ei(La({ descendantName: \"option\" }), u.option) }, p = function (e) { var a = e.containerNode, s = e.cssClasses, o = e.renderState, c = e.templates; return function (e, t) { var n = e.refine, r = e.items, i = e.instantSearchInstance; t ? o.templateProps = Re({ defaultTemplates: Ea, templatesConfig: i.templatesConfig, templates: c }) : fr(Kn(Ca, { cssClasses: s, items: r, refine: n, templateProps: o.templateProps }), a) } }({ containerNode: f, cssClasses: m, renderState: {}, templates: d }); return W(W({}, wr(p, function () { return fr(null, f) })({ attribute: r, limit: o, sortBy: a, transformItems: h })), {}, { $$widgetType: \"ais.menuSelect\" }) }, numericMenu: function (e) { var t = e || {}, n = t.container, r = t.attribute, i = t.items, a = t.cssClasses, s = void 0 === a ? {} : a, o = t.templates, c = void 0 === o ? {} : o, u = t.transformItems; if (!n) throw new Error(Ma(\"The `container` option is required.\")); var l = ye(n), d = { root: Ei(Oa(), s.root), noRefinementRoot: Ei(Oa({ modifierName: \"noRefinement\" }), s.noRefinementRoot), list: Ei(Oa({ descendantName: \"list\" }), s.list), item: Ei(Oa({ descendantName: \"item\" }), s.item), selectedItem: Ei(Oa({ descendantName: \"item\", modifierName: \"selected\" }), s.selectedItem), label: Ei(Oa({ descendantName: \"label\" }), s.label), radio: Ei(Oa({ descendantName: \"radio\" }), s.radio), labelText: Ei(Oa({ descendantName: \"labelText\" }), s.labelText) }, h = function (e) { var s = e.containerNode, o = e.attribute, c = e.cssClasses, u = e.renderState, l = e.templates; return function (e, t) { var n = e.createURL, r = e.instantSearchInstance, i = e.refine, a = e.items; t ? u.templateProps = Re({ defaultTemplates: ja, templatesConfig: r.templatesConfig, templates: l }) : fr(Kn(ha, { createURL: n, cssClasses: c, facetValues: a, templateProps: u.templateProps, toggleRefinement: i, attribute: o }), s) } }({ containerNode: l, attribute: r, cssClasses: d, renderState: {}, templates: c }); return W(W({}, _r(h, function () { return fr(null, l) })({ attribute: r, items: i, transformItems: u })), {}, { $$widgetType: \"ais.numericMenu\" }) }, pagination: function (e) { var t = e || {}, n = t.container, r = t.templates, i = void 0 === r ? {} : r, a = t.cssClasses, s = void 0 === a ? {} : a, o = t.totalPages, c = t.padding, u = t.showFirst, l = void 0 === u || u, d = t.showLast, h = void 0 === d || d, f = t.showPrevious, m = void 0 === f || f, p = t.showNext, g = void 0 === p || p, v = t.scrollTo, y = void 0 === v ? \"body\" : v; if (!n) throw new Error(qa(\"The `container` option is required.\")); var b = ye(n), S = !0 === y ? \"body\" : y, R = !1 !== S && ye(S), w = { root: Ei(Ua(), s.root), noRefinementRoot: Ei(Ua({ modifierName: \"noRefinement\" }), s.noRefinementRoot), list: Ei(Ua({ descendantName: \"list\" }), s.list), item: Ei(Ua({ descendantName: \"item\" }), s.item), firstPageItem: Ei(Ua({ descendantName: \"item\", modifierName: \"firstPage\" }), s.firstPageItem), lastPageItem: Ei(Ua({ descendantName: \"item\", modifierName: \"lastPage\" }), s.lastPageItem), previousPageItem: Ei(Ua({ descendantName: \"item\", modifierName: \"previousPage\" }), s.previousPageItem), nextPageItem: Ei(Ua({ descendantName: \"item\", modifierName: \"nextPage\" }), s.nextPageItem), pageItem: Ei(Ua({ descendantName: \"item\", modifierName: \"page\" }), s.pageItem), selectedItem: Ei(Ua({ descendantName: \"item\", modifierName: \"selected\" }), s.selectedItem), disabledItem: Ei(Ua({ descendantName: \"item\", modifierName: \"disabled\" }), s.disabledItem), link: Ei(Ua({ descendantName: \"link\" }), s.link) }, _ = W(W({}, Qa), i), P = function (e) { var u = e.containerNode, l = e.cssClasses, d = e.templates, h = e.showFirst, f = e.showLast, m = e.showPrevious, p = e.showNext, g = e.scrollToNode; return function (e, t) { var n = e.createURL, r = e.currentRefinement, i = e.nbPages, a = e.pages, s = e.isFirstPage, o = e.isLastPage, c = e.refine; if (!t) { fr(Kn(Aa, { createURL: n, cssClasses: l, currentPage: r, templates: d, nbPages: i, pages: a, isFirstPage: s, isLastPage: o, setCurrentPage: function (e) { c(e), !1 !== g && g.scrollIntoView() }, showFirst: h, showLast: f, showPrevious: m, showNext: p }), u) } } }({ containerNode: b, cssClasses: w, templates: _, showFirst: l, showLast: h, showPrevious: m, showNext: g, scrollToNode: R }); return W(W({}, kr(P, function () { return fr(null, b) })({ totalPages: o, padding: c })), {}, { $$widgetType: \"ais.pagination\" }) }, panel: function (e) { var t = e || {}, n = t.templates, r = void 0 === n ? {} : n, i = t.hidden, c = void 0 === i ? function () { return !1 } : i, a = t.collapsed, s = t.cssClasses, o = void 0 === s ? {} : s, u = document.createElement(\"div\"), l = Boolean(a), d = \"function\" == typeof a ? a : function () { return !1 }, h = { root: Ei(ds(), o.root), noRefinementRoot: Ei(ds({ modifierName: \"noRefinement\" }), o.noRefinementRoot), collapsibleRoot: Ei(ds({ modifierName: \"collapsible\" }), o.collapsibleRoot), collapsedRoot: Ei(ds({ modifierName: \"collapsed\" }), o.collapsedRoot), collapseButton: Ei(ds({ descendantName: \"collapseButton\" }), o.collapseButton), collapseIcon: Ei(ds({ descendantName: \"collapseIcon\" }), o.collapseIcon), body: Ei(ds({ descendantName: \"body\" }), o.body), header: Ei(ds({ descendantName: \"header\" }), o.header), footer: Ei(ds({ descendantName: \"footer\" }), o.footer) }; return function (t) { return function (e) { if (!e || !e.container) throw new Error(ls(\"The `container` option is required in the widget within the panel.\")); var i = ye(e.container), s = function (e) { var a = e.containerNode, s = e.bodyContainerNode, o = e.cssClasses, c = e.templates; return function (e) { var t = e.options, n = e.hidden, r = e.collapsible, i = e.collapsed; fr(Kn(os, { cssClasses: o, hidden: n, collapsible: r, isCollapsed: i, templates: c, data: t, bodyElement: s }), a) } }({ containerNode: i, bodyContainerNode: u, cssClasses: h, templates: W(W({}, { header: \"\", footer: \"\", collapseButtonText: function (e) { var t = e.collapsed; return '') } }), r) }), o = t(W(W({}, e), {}, { container: u })); return W(W({}, o), {}, { init: function () { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; var r, i = t[0], a = W(W({}, o.getWidgetRenderState ? o.getWidgetRenderState(i) : {}), i); s({ options: a, hidden: !0, collapsible: l, collapsed: !1 }), \"function\" == typeof o.init && (r = o.init).call.apply(r, [this].concat(t)) }, render: function () { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; var r, i = t[0], a = W(W({}, o.getWidgetRenderState ? o.getWidgetRenderState(i) : {}), i); s({ options: a, hidden: Boolean(c(a)), collapsible: l, collapsed: Boolean(d(a)) }), \"function\" == typeof o.render && (r = o.render).call.apply(r, [this].concat(t)) }, dispose: function () { if (fr(null, i), \"function\" == typeof o.dispose) { for (var e, t = arguments.length, n = new Array(t), r = 0; r < t; r++)n[r] = arguments[r]; return (e = o.dispose).call.apply(e, [this].concat(n)) } } }) } } }, places: function (e) { var t = e || {}, n = t.placesReference, r = t.defaultPosition, o = void 0 === r ? [] : r, i = j(t, [\"placesReference\", \"defaultPosition\"]); if (\"function\" != typeof n) throw new Error(\"The `placesReference` option requires a valid Places.js reference.\"); var c = n(i), u = { query: \"\", initialLatLngViaIP: void 0, isInitialLatLngViaIPSet: !1 }; return { $$type: \"ais.places\", $$widgetType: \"ais.places\", init: function (e) { var s = e.helper; c.on(\"change\", function (e) { var t = e.suggestion, n = t.value, r = t.latlng, i = r.lat, a = r.lng; u.query = n, s.setQueryParameter(\"insideBoundingBox\", void 0).setQueryParameter(\"aroundLatLngViaIP\", !1).setQueryParameter(\"aroundLatLng\", \"\".concat(i, \",\").concat(a)).search() }), c.on(\"clear\", function () { u.query = \"\", s.setQueryParameter(\"insideBoundingBox\", void 0), 1 < o.length ? s.setQueryParameter(\"aroundLatLngViaIP\", !1).setQueryParameter(\"aroundLatLng\", o.join(\",\")) : s.setQueryParameter(\"aroundLatLngViaIP\", u.initialLatLngViaIP).setQueryParameter(\"aroundLatLng\", void 0), s.search() }) }, getWidgetUiState: function (e, t) { var n = t.searchParameters.aroundLatLng || o.join(\",\"); if (n !== o.join(\",\") || u.query) return W(W({}, e), {}, { places: { query: u.query, position: n } }); e.places; return j(e, [\"places\"]) }, getWidgetSearchParameters: function (e, t) { var n = t.uiState.places || {}, r = n.query, i = void 0 === r ? \"\" : r, a = n.position, s = void 0 === a ? o.join(\",\") : a; return u.query = i, u.isInitialLatLngViaIPSet || (u.isInitialLatLngViaIPSet = !0, u.initialLatLngViaIP = e.aroundLatLngViaIP), c.setVal(i), c.close(), e.setQueryParameter(\"insideBoundingBox\", void 0).setQueryParameter(\"aroundLatLngViaIP\", !1).setQueryParameter(\"aroundLatLng\", s || void 0) }, getRenderState: function (e, t) { return W(W({}, e), {}, { places: this.getWidgetRenderState(t) }) }, getWidgetRenderState: function () { return { widgetParams: e } } } }, poweredBy: function (e) { var t = e || {}, n = t.container, r = t.cssClasses, i = void 0 === r ? {} : r, a = t.theme, s = void 0 === a ? \"light\" : a; if (!n) throw new Error(ps(\"The `container` option is required.\")); var o = ye(n), c = { root: Ei(ms(), ms({ modifierName: \"dark\" === s ? \"dark\" : \"light\" }), i.root), link: Ei(ms({ descendantName: \"link\" }), i.link), logo: Ei(ms({ descendantName: \"logo\" }), i.logo) }, u = function (e) { var a = e.containerNode, s = e.cssClasses; return function (e, t) { var n = e.url, r = e.widgetParams; if (t) { var i = r.theme; fr(Kn(cs, { cssClasses: s, url: n, theme: void 0 === i ? \"light\" : i }), a) } else; } }({ containerNode: o, cssClasses: c }); return W(W({}, oi(u, function () { return fr(null, o) })({ theme: s })), {}, { $$widgetType: \"ais.poweredBy\" }) }, queryRuleContext: function (e) { var t = 0 < arguments.length && void 0 !== e ? e : {}; if (!t.trackedFilters) throw new Error(gs(\"The `trackedFilters` option is required.\")); return W(W({}, bi(Le)(t)), {}, { $$widgetType: \"ais.queryRuleContext\" }) }, queryRuleCustomData: function (e) { var t = e || {}, n = t.container, r = t.cssClasses, i = void 0 === r ? {} : r, a = t.templates, s = void 0 === a ? {} : a, o = t.transformItems, c = void 0 === o ? function (e) { return e } : o; if (!n) throw new Error(ys(\"The `container` option is required.\")); var u = { root: Ei(bs(), i.root) }, l = ye(n), d = W(W({}, vs), s), h = function (e) { var n = e.containerNode, r = e.cssClasses, i = e.templates; return function (e) { var t = e.items; fr(Kn(us, { cssClasses: r, templates: i, items: t }), n) } }({ containerNode: l, cssClasses: u, renderState: {}, templates: d }); return W(W({}, bi(h, function () { fr(null, l) })({ transformItems: c })), {}, { $$widgetType: \"ais.queryRuleCustomData\" }) }, rangeInput: function (e) { var t = e || {}, n = t.container, r = t.attribute, i = t.min, a = t.max, s = t.precision, o = void 0 === s ? 0 : s, c = t.cssClasses, u = void 0 === c ? {} : c, l = t.templates, d = void 0 === l ? {} : l; if (!n) throw new Error(Rs(\"The `container` option is required.\")); var h = ye(n), f = { root: Ei(ws(), u.root), noRefinement: Ei(ws({ modifierName: \"noRefinement\" })), form: Ei(ws({ descendantName: \"form\" }), u.form), label: Ei(ws({ descendantName: \"label\" }), u.label), input: Ei(ws({ descendantName: \"input\" }), u.input), inputMin: Ei(ws({ descendantName: \"input\", modifierName: \"min\" }), u.inputMin), inputMax: Ei(ws({ descendantName: \"input\", modifierName: \"max\" }), u.inputMax), separator: Ei(ws({ descendantName: \"separator\" }), u.separator), submit: Ei(ws({ descendantName: \"submit\" }), u.submit) }, m = function (e) { var f = e.containerNode, m = e.cssClasses, p = e.renderState, g = e.templates; return function (e, t) { var n = e.refine, r = e.range, i = e.start, a = e.widgetParams, s = e.instantSearchInstance; if (t) p.templateProps = Re({ defaultTemplates: _s, templatesConfig: s.templatesConfig, templates: g }); else { var o = r.min, c = r.max, u = D(i, 2), l = u[0], d = u[1], h = 1 / Math.pow(10, a.precision || 0); fr(Kn(Ss, { min: o, max: c, step: h, values: { min: l !== -1 / 0 && l !== o ? l : void 0, max: d !== 1 / 0 && d !== c ? d : void 0 }, cssClasses: m, refine: n, templateProps: p.templateProps }), f) } } }({ containerNode: h, cssClasses: f, templates: d, renderState: {} }); return W(W({}, Hr(m, function () { return fr(null, h) })({ attribute: r, min: i, max: a, precision: o })), {}, { $$type: \"ais.rangeInput\", $$widgetType: \"ais.rangeInput\" }) }, rangeSlider: function (e) { var t = e || {}, n = t.container, r = t.attribute, i = t.min, a = t.max, s = t.cssClasses, o = void 0 === s ? {} : s, c = t.step, u = t.pips, l = void 0 === u || u, d = t.precision, h = void 0 === d ? 0 : d, f = t.tooltips, m = void 0 === f || f; if (!n) throw new Error(Ks(\"The `container` option is required.\")); var p = ye(n), g = { root: Ei(zs(), o.root), disabledRoot: Ei(zs({ modifierName: \"disabled\" }), o.disabledRoot) }, v = function (e) { var h = e.containerNode, f = e.cssClasses, m = e.pips, p = e.step, g = e.tooltips; return function (e, t) { var n = e.refine, r = e.range, i = e.start; if (!t) { var a = r.min, s = r.max, o = D(i, 2), c = o[0], u = o[1], l = c === -1 / 0 ? a : c, d = u === 1 / 0 ? s : u; fr(Kn($s, { cssClasses: f, refine: n, min: a, max: s, values: [s < l ? s : l, d < a ? a : d], tooltips: g, step: p, pips: m }), h) } } }({ containerNode: p, step: c, pips: l, tooltips: m, cssClasses: g }); return W(W({}, Hr(v, function () { return fr(null, p) })({ attribute: r, min: i, max: a, precision: h })), {}, { $$type: \"ais.rangeSlider\", $$widgetType: \"ais.rangeSlider\" }) }, ratingMenu: function (e) { var t = e || {}, n = t.container, r = t.attribute, i = t.max, a = void 0 === i ? 5 : i, s = t.cssClasses, o = void 0 === s ? {} : s, c = t.templates, u = void 0 === c ? {} : c; if (!n) throw new Error(Ys(\"The `container` option is required.\")); var l = ye(n), d = { root: Ei(Xs(), o.root), noRefinementRoot: Ei(Xs({ modifierName: \"noRefinement\" }), o.noRefinementRoot), list: Ei(Xs({ descendantName: \"list\" }), o.list), item: Ei(Xs({ descendantName: \"item\" }), o.item), selectedItem: Ei(Xs({ descendantName: \"item\", modifierName: \"selected\" }), o.selectedItem), disabledItem: Ei(Xs({ descendantName: \"item\", modifierName: \"disabled\" }), o.disabledItem), link: Ei(Xs({ descendantName: \"link\" }), o.link), starIcon: Ei(Xs({ descendantName: \"starIcon\" }), o.starIcon), fullStarIcon: Ei(Xs({ descendantName: \"starIcon\", modifierName: \"full\" }), o.fullStarIcon), emptyStarIcon: Ei(Xs({ descendantName: \"starIcon\", modifierName: \"empty\" }), o.emptyStarIcon), label: Ei(Xs({ descendantName: \"label\" }), o.label), count: Ei(Xs({ descendantName: \"count\" }), o.count) }, h = function (e) { var s = e.containerNode, o = e.cssClasses, c = e.templates, u = e.renderState; return function (e, t) { var n = e.refine, r = e.items, i = e.createURL, a = e.instantSearchInstance; t ? u.templateProps = Re({ defaultTemplates: Js, templatesConfig: a.templatesConfig, templates: c }) : fr(Kn(ha, { createURL: i, cssClasses: o, facetValues: r, templateProps: u.templateProps, toggleRefinement: n }, Kn(\"svg\", { style: \"display:none;\" }, Kn(\"symbol\", { id: Xs({ descendantName: \"starSymbol\" }), viewBox: \"0 0 24 24\" }, Gs), Kn(\"symbol\", { id: Xs({ descendantName: \"starEmptySymbol\" }), viewBox: \"0 0 24 24\" }, Zs))), s) } }({ containerNode: l, cssClasses: d, renderState: {}, templates: u }); return W(W({}, qr(h, function () { return fr(null, l) })({ attribute: r, max: a })), {}, { $$widgetType: \"ais.ratingMenu\" }) }, refinementList: function (e) { var t = e || {}, n = t.container, r = t.attribute, i = t.operator, a = t.sortBy, s = t.limit, o = t.showMore, c = t.showMoreLimit, u = t.searchable, l = void 0 !== u && u, d = t.searchablePlaceholder, h = void 0 === d ? \"Search...\" : d, f = t.searchableEscapeFacetValues, m = void 0 === f || f, p = t.searchableIsAlwaysActive, g = void 0 === p || p, v = t.cssClasses, y = void 0 === v ? {} : v, b = t.templates, S = void 0 === b ? {} : b, R = t.transformItems; if (!n) throw new Error(no(\"The `container` option is required.\")); var w = !!l && Boolean(m), _ = ye(n), P = { root: Ei(ro(), y.root), noRefinementRoot: Ei(ro({ modifierName: \"noRefinement\" }), y.noRefinementRoot), list: Ei(ro({ descendantName: \"list\" }), y.list), item: Ei(ro({ descendantName: \"item\" }), y.item), selectedItem: Ei(ro({ descendantName: \"item\", modifierName: \"selected\" }), y.selectedItem), searchBox: Ei(ro({ descendantName: \"searchBox\" }), y.searchBox), label: Ei(ro({ descendantName: \"label\" }), y.label), checkbox: Ei(ro({ descendantName: \"checkbox\" }), y.checkbox), labelText: Ei(ro({ descendantName: \"labelText\" }), y.labelText), count: Ei(ro({ descendantName: \"count\" }), y.count), noResults: Ei(ro({ descendantName: \"noResults\" }), y.noResults), showMore: Ei(ro({ descendantName: \"showMore\" }), y.showMore), disabledShowMore: Ei(ro({ descendantName: \"showMore\", modifierName: \"disabled\" }), y.disabledShowMore), searchable: { root: Ei(io(), y.searchableRoot), form: Ei(io({ descendantName: \"form\" }), y.searchableForm), input: Ei(io({ descendantName: \"input\" }), y.searchableInput), submit: Ei(io({ descendantName: \"submit\" }), y.searchableSubmit), submitIcon: Ei(io({ descendantName: \"submitIcon\" }), y.searchableSubmitIcon), reset: Ei(io({ descendantName: \"reset\" }), y.searchableReset), resetIcon: Ei(io({ descendantName: \"resetIcon\" }), y.searchableResetIcon), loadingIndicator: Ei(io({ descendantName: \"loadingIndicator\" }), y.searchableLoadingIndicator), loadingIcon: Ei(io({ descendantName: \"loadingIcon\" }), y.searchableLoadingIcon) } }, x = function (e) { var h = e.containerNode, f = e.cssClasses, m = e.templates, p = e.searchBoxTemplates, g = e.renderState, v = e.showMore, y = e.searchable, b = e.searchablePlaceholder, S = e.searchableIsAlwaysActive; return function (e, t) { var n = e.refine, r = e.items, i = e.createURL, a = e.searchForItems, s = e.isFromSearch, o = e.instantSearchInstance, c = e.toggleShowMore, u = e.isShowingMore, l = e.hasExhaustiveItems, d = e.canToggleShowMore; if (t) return g.templateProps = Re({ defaultTemplates: to, templatesConfig: o.templatesConfig, templates: m }), void (g.searchBoxTemplateProps = Re({ defaultTemplates: eo, templatesConfig: o.templatesConfig, templates: p })); fr(Kn(ha, { createURL: i, cssClasses: f, facetValues: r, templateProps: g.templateProps, searchBoxTemplateProps: g.searchBoxTemplateProps, toggleRefinement: n, searchFacetValues: y ? a : void 0, searchPlaceholder: b, searchIsAlwaysActive: S, isFromSearch: s, showMore: v && !s && 0 < r.length, toggleShowMore: c, isShowingMore: u, hasExhaustiveItems: l, canToggleShowMore: d }), h) } }({ containerNode: _, cssClasses: P, templates: S, searchBoxTemplates: { submit: S.searchableSubmit, reset: S.searchableReset, loadingIndicator: S.searchableLoadingIndicator }, renderState: {}, searchable: l, searchablePlaceholder: h, searchableIsAlwaysActive: g, showMore: o }); return W(W({}, Wr(x, function () { return fr(null, _) })({ attribute: r, operator: i, limit: s, showMore: o, showMoreLimit: c, sortBy: a, escapeFacetValues: w, transformItems: R })), {}, { $$widgetType: \"ais.refinementList\" }) }, relevantSort: function (e) { var t = e.container, n = e.templates, r = void 0 === n ? {} : n, i = e.cssClasses, a = void 0 === i ? {} : i; if (!t) throw new Error(so(\"The `container` option is required.\")); var s = ye(t), o = { root: Ei(oo(), a.root), text: Ei(oo({ descendantName: \"text\" }), a.text), button: Ei(oo({ descendantName: \"button\" }), a.button) }, c = W(W({}, ao), r), u = function (e) { var i = e.containerNode, a = e.cssClasses, s = e.templates; return function (e) { var t = e.isRelevantSorted, n = e.isVirtualReplica, r = e.refine; fr(Kn(Us, { cssClasses: a, templates: s, isRelevantSorted: t, isVirtualReplica: n, refine: r }), i) } }({ containerNode: s, cssClasses: o, renderState: {}, templates: c }); return W(W({}, Pi(u, function () { fr(null, s) })({})), {}, { $$widgetType: \"ais.relevantSort\" }) }, searchBox: function (e) { var t = e || {}, n = t.container, r = t.placeholder, i = void 0 === r ? \"\" : r, a = t.cssClasses, s = void 0 === a ? {} : a, o = t.autofocus, c = void 0 !== o && o, u = t.searchAsYouType, l = void 0 === u || u, d = t.showReset, h = void 0 === d || d, f = t.showSubmit, m = void 0 === f || f, p = t.showLoadingIndicator, g = void 0 === p || p, v = t.queryHook, y = t.templates, b = void 0 === y ? {} : y; if (!n) throw new Error(co(\"The `container` option is required.\")); var S = ye(n), R = { root: Ei(uo(), s.root), form: Ei(uo({ descendantName: \"form\" }), s.form), input: Ei(uo({ descendantName: \"input\" }), s.input), submit: Ei(uo({ descendantName: \"submit\" }), s.submit), submitIcon: Ei(uo({ descendantName: \"submitIcon\" }), s.submitIcon), reset: Ei(uo({ descendantName: \"reset\" }), s.reset), resetIcon: Ei(uo({ descendantName: \"resetIcon\" }), s.resetIcon), loadingIndicator: Ei(uo({ descendantName: \"loadingIndicator\" }), s.loadingIndicator), loadingIcon: Ei(uo({ descendantName: \"loadingIcon\" }), s.loadingIcon) }, w = W(W({}, eo), b), _ = function (e) { var i = e.containerNode, a = e.cssClasses, s = e.placeholder, o = e.templates, c = e.autofocus, u = e.searchAsYouType, l = e.showReset, d = e.showSubmit, h = e.showLoadingIndicator; return function (e) { var t = e.refine, n = e.query, r = e.isSearchStalled; fr(Kn(la, { query: n, placeholder: s, autofocus: c, refine: t, searchAsYouType: u, templates: o, showSubmit: d, showReset: l, showLoadingIndicator: h, isSearchStalled: r, cssClasses: a }), i) } }({ containerNode: S, cssClasses: R, placeholder: i, templates: w, autofocus: c, searchAsYouType: l, showReset: h, showSubmit: m, showLoadingIndicator: g }); return W(W({}, Br(_, function () { return fr(null, S) })({ queryHook: v })), {}, { $$widgetType: \"ais.searchBox\" }) }, sortBy: function (e) { var t = e || {}, n = t.container, r = t.items, i = t.cssClasses, a = void 0 === i ? {} : i, s = t.transformItems; if (!n) throw new Error(lo(\"The `container` option is required.\")); var o = ye(n), c = { root: Ei(ho(), a.root), select: Ei(ho({ descendantName: \"select\" }), a.select), option: Ei(ho({ descendantName: \"option\" }), a.option) }, u = function (e) { var a = e.containerNode, s = e.cssClasses; return function (e, t) { var n = e.currentRefinement, r = e.options, i = e.refine; t || fr(Kn(\"div\", { className: s.root }, Kn(Sa, { cssClasses: s, currentValue: n, options: r, setValue: i })), a) } }({ containerNode: o, cssClasses: c }); return W(W({}, Ur(u, function () { return fr(null, o) })({ container: o, items: r, transformItems: s })), {}, { $$widgetType: \"ais.sortBy\" }) }, stats: function (e) { var t = e || {}, n = t.container, r = t.cssClasses, i = void 0 === r ? {} : r, a = t.templates, s = void 0 === a ? {} : a; if (!n) throw new Error(fo(\"The `container` option is required.\")); var o = ye(n), c = { root: Ei(mo(), i.root), text: Ei(mo({ descendantName: \"text\" }), i.text) }, u = function (e) { var d = e.renderState, h = e.cssClasses, f = e.containerNode, m = e.templates; return function (e, t) { var n = e.hitsPerPage, r = e.nbHits, i = e.nbSortedHits, a = e.areHitsSorted, s = e.nbPages, o = e.page, c = e.processingTimeMS, u = e.query, l = e.instantSearchInstance; t ? d.templateProps = Re({ defaultTemplates: po, templatesConfig: l.templatesConfig, templates: m }) : fr(Kn(qs, { cssClasses: h, hitsPerPage: n, nbHits: r, nbSortedHits: i, areHitsSorted: a, nbPages: s, page: o, processingTimeMS: c, query: u, templateProps: d.templateProps }), f) } }({ containerNode: o, cssClasses: c, templates: s, renderState: {} }); return W(W({}, Qr(u, function () { return fr(null, o) })({})), {}, { $$widgetType: \"ais.stats\" }) }, toggleRefinement: function (e) { var t = e || {}, n = t.container, r = t.attribute, i = t.cssClasses, a = void 0 === i ? {} : i, s = t.templates, o = void 0 === s ? {} : s, c = t.on, u = void 0 === c || c, l = t.off; if (!n) throw new Error(vo(\"The `container` option is required.\")); var d = ye(n), h = { root: Ei(yo(), a.root), label: Ei(yo({ descendantName: \"label\" }), a.label), checkbox: Ei(yo({ descendantName: \"checkbox\" }), a.checkbox), labelText: Ei(yo({ descendantName: \"labelText\" }), a.labelText) }, f = function (e) { var a = e.containerNode, s = e.cssClasses, o = e.renderState, c = e.templates; return function (e, t) { var n = e.value, r = e.refine, i = e.instantSearchInstance; t ? o.templateProps = Re({ defaultTemplates: go, templatesConfig: i.templatesConfig, templates: c }) : fr(Kn(Qs, { cssClasses: s, currentRefinement: n, templateProps: o.templateProps, refine: r }), a) } }({ containerNode: d, cssClasses: h, renderState: {}, templates: o }); return W(W({}, Vr(f, function () { return fr(null, d) })({ attribute: r, on: u, off: l })), {}, { $$widgetType: \"ais.toggleRefinement\" }) }, voiceSearch: function (e) { var t = e || {}, n = t.container, r = t.cssClasses, i = void 0 === r ? {} : r, a = t.templates, s = void 0 === a ? {} : a, o = t.searchAsYouSpeak, c = void 0 !== o && o, u = t.language, l = t.additionalQueryParameters, d = t.createVoiceSearchHelper; if (!n) throw new Error(So(\"The `container` option is required.\")); var h = ye(n), f = { root: Ei(Ro(), i.root), button: Ei(Ro({ descendantName: \"button\" }), i.button), status: Ei(Ro({ descendantName: \"status\" }), i.status) }, m = W(W({}, bo), s), p = function (e) { var a = e.containerNode, s = e.cssClasses, o = e.templates; return function (e) { var t = e.isBrowserSupported, n = e.isListening, r = e.toggleListening, i = e.voiceListeningState; fr(Kn(Vs, { cssClasses: s, templates: o, isBrowserSupported: t, isListening: n, toggleListening: r, voiceListeningState: i }), a) } }({ containerNode: h, cssClasses: f, templates: m }); return W(W({}, Ri(p, function () { return fr(null, h) })({ container: h, cssClasses: f, templates: m, searchAsYouSpeak: c, language: u, additionalQueryParameters: l, createVoiceSearchHelper: d })), {}, { $$widgetType: \"ais.voiceSearch\" }) } }), Po = Object.freeze({ __proto__: null, createInsightsMiddleware: function (e) { var t = e || {}, d = t.insightsClient, h = t.insightsInitParams, f = t.onEvent; if (null !== d && !d) throw new Error(\"The `insightsClient` option is required. To disable, set it to `null`.\"); var m = Boolean(d), p = null === d ? Le : d; return function (e) { var n = e.instantSearchInstance, t = D(function (e) { if (e.transporter) { var t = e.transporter, n = t.headers, r = t.queryParameters, i = \"x-algolia-application-id\", a = \"x-algolia-api-key\"; return [n[i] || r[i], n[a] || r[a]] } return [e.applicationID, e.apiKey] }(n.client), 2), r = t[0], i = t[1], a = void 0, s = void 0; if (Array.isArray(p.queue)) { var o = D(Ie(p.queue.slice().reverse(), function (e) { return \"setUserToken\" === D(e, 1)[0] }) || [], 2); a = o[1] } p(\"getUserToken\", null, function (e, t) { s = t }), p(\"init\", W({ appId: r, apiKey: i }, h)); var c, u, l = hi(Le); return { onStateChange: function () { }, subscribe: function () { p(\"addAlgoliaAgent\", \"insights-middleware\"), c = l({ searchParameters: { clickAnalytics: !0 } }), n.addWidgets([c]); function e(e) { u && n.removeWidgets([u]), u = l({ searchParameters: { userToken: e } }), n.addWidgets([u]) } var t = Ht(); m && t && e(t), s ? p(\"setUserToken\", s) : a && p(\"setUserToken\", a), p(\"onUserTokenChange\", e, { immediate: !0 }), n.sendEventToInsights = function (e) { if (f) f(e, d); else if (e.insightsMethod) { Boolean(n.renderState[n.indexName].configure.widgetParams.searchParameters.userToken) && p(e.insightsMethod, e.payload) } } }, unsubscribe: function () { p(\"onUserTokenChange\", void 0), n.removeWidgets([c, u]), u = c = void 0, n.sendEventToInsights = Le } } } }, createRouterMiddleware: pn, isMetadataEnabled: gn, createMetadataMiddleware: vn }), xo = Object.freeze({ __proto__: null, history: mn }); function No(e) { e.configure; return j(e, [\"configure\"]) } var Io = Object.freeze({ __proto__: null, simple: Dt, singleIndex: function (t) { return { stateToRoute: function (e) { return No(e[t] || {}) }, routeToState: function (e) { return k({}, t, No(0 < arguments.length && void 0 !== e ? e : {})) } } } }); function Fo(e) { var t = e || {}; t.page; return j(t, [\"page\"]) } var To = \"ais.infiniteHits\"; function Co(e) { return new Rn(e) } return Co.version = \"4.42.0\", Co.connectors = Ti, Co.widgets = _o, Co.middlewares = Po, Co.routers = xo, Co.stateMappings = Io, Co.createInfiniteHitsSessionStorageCache = function () { return { read: function (e) { var t = e.state, n = St(function (e) { return e.window.sessionStorage }); if (!n) return null; try { var r = JSON.parse(n.getItem(To)); return r && De(r.state, Fo(t)) ? r.hits : null } catch (e) { if (e instanceof SyntaxError) try { n.removeItem(To) } catch (e) { } return null } }, write: function (e) { var t = e.state, n = e.hits, r = St(function (e) { return e.window.sessionStorage }); if (r) try { r.setItem(To, JSON.stringify({ state: Fo(t), hits: n })) } catch (e) { } } } }, Co.highlight = Ct, Co.reverseHighlight = kt, Co.snippet = jt, Co.reverseSnippet = Ot, Co.insights = At, Co });\r\n//# sourceMappingURL=instantsearch.production.min.js.map","// COUNTDOWN SCRIPT\r\n(function countdown(){\r\n\tlet countDownDate = new Date(\"feb 28, 2025 23:59:59\").getTime();\r\n\r\n\t// All of the containers and blocks\r\n\tconst daysBlock = document.querySelectorAll(\"[data-countdown-days]\");\r\n\tconst hoursBlock = document.querySelectorAll(\"[data-countdown-hours]\");\r\n\tconst minutesBlock = document.querySelectorAll(\"[data-countdown-minutes]\");\r\n\tconst secondsBlock = document.querySelectorAll(\"[data-countdown-seconds]\");\r\n\tconst singleUnitBlock = document.querySelectorAll(\"[data-countdown-single-unit]\"); \r\n\t\r\n\t// Interval function to repeat the steps inside the function\r\n\tlet x = setInterval(function () {\r\n\t\tlet now = new Date().getTime();\r\n\t\tlet distance = countDownDate - now; \r\n\t\tlet daysUnit = daysBlock !== 0 ? Math.floor(distance / (1000 * 60 * 60 * 24)) : 0;\r\n\t\tlet hoursUnit = hoursBlock !== 0 ? Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)) : 0;\r\n\t\tlet minutesUnit = minutesBlock !== 0 ? Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)) : 0;\r\n\t\tlet secondsUnit = secondsBlock !== 0 ? Math.floor((distance % (1000 * 60)) / 1000) : 0;\r\n\r\n \t// Call functions for items (ONLY if they exist, if no output 0)\r\n \tcountdownItem(daysBlock, daysUnit);\r\n \tcountdownItem(hoursBlock, hoursUnit);\r\n \tcountdownItem(minutesBlock, minutesUnit);\r\n \tcountdownItem(secondsBlock, secondsUnit);\r\n \tcountdownItem(singleUnitBlock); \r\n\t\t\r\n\t\t// conditional add unit/content to singleUnit or to unit block\r\n\t\tfunction countdownItem(item, unit) {\r\n\t\t if(item === singleUnitBlock) {\r\n\t\t item.forEach(item => {\r\n\t\t\t\t\tif(daysUnit > 1) {\r\n\t\t\t\t\t\titem.textContent = `${daysUnit} days to go`;\r\n\t\t\t\t\t} else if (daysUnit > 0) {\r\n\t\t\t\t\t\titem.textContent = `${daysUnit} day to go`;\r\n\t\t\t\t\t} else if (hoursUnit > 1) {\r\n\t\t\t\t\t\titem.textContent = `${hoursUnit} hours to go`;\r\n\t\t\t\t\t} else if (hoursUnit > 0) {\r\n\t\t\t\t\t\titem.textContent = `${hoursUnit} hour to go`;\r\n\t\t\t\t\t} else if (minutesUnit > 1) {\r\n\t\t\t\t\t\titem.textContent = `${minutesUnit} minutes to go`;\r\n\t\t\t\t\t} else if (minutesUnit > 0) {\r\n\t\t\t\t\t\titem.textContent = `${minutesUnit} minute to go`;\r\n\t\t\t\t\t} else if (secondsUnit > 1) {\r\n\t\t\t\t\t\titem.textContent = `${secondsUnit} seconds to go`\r\n\t\t\t\t\t} else if (secondsUnit > 0) {\r\n\t\t\t\t\t\titem.textContent = `${secondsUnit} second to go`\r\n\t\t\t\t\t}\r\n\t\t })\r\n\t\t } else {\r\n\t\t item.forEach(item => {\r\n\t\t item.textContent = unit;\r\n\t\t });\r\n\t\t }\r\n\t\t}\r\n\t\t\r\n\t\t// Stop the Interval and then call the resetItems function\r\n\t\tif(distance < 1) {\r\n\t\t\tclearInterval(x);\r\n\t\t\tresetItems();\r\n\t\t}\r\n\r\n\t}, 1000);\r\n\t\r\n\t// Could have put this in the condition above if(item === singleUnitBlock) ...But not it only runs this once when the interval is complete\r\n\tfunction resetItems(d = daysBlock, h = hoursBlock, m = minutesBlock, s = secondsBlock, sItem = singleUnitBlock) {\r\n\t\td.forEach(e => e.textContent = 0);\r\n\t\th.forEach(e => e.textContent = 0);\r\n\t\tm.forEach(e => e.textContent = 0);\r\n\t\ts.forEach(e => e.textContent = 0);\r\n\t\tsItem.forEach(e => {\r\n\t\t\te.textContent = \"0 seconds left\";\r\n\t\t});\r\n\t}\r\n\r\n\r\n\r\n\r\n\t// Animate 1pp and hand\r\n\tconst CTdepositCountdown = document.querySelectorAll('[data-1ppDepositCountdown]');\r\n\r\n\tCTdepositCountdown.forEach(countdown => {\r\n\t\tconst CTdepositPointer = countdown.querySelector('.cCountdownPointerHand');\r\n\t\tconst CTdepositLogo = countdown.querySelector('.cCountdown1ppLogo');\r\n\r\n\t\tif (!CTdepositPointer && !CTdepositLogo) return;\r\n\r\n\t\tconst addAnimateClass = () => {\r\n\t\t\taddOrRemoveClass(CTdepositLogo, \"cCTLogoAnimate\")\r\n\t\t\taddOrRemoveClass(CTdepositPointer, \"cCTHandAnimate\")\r\n\t\t}\r\n\t\tconst addOrRemoveClass = (item, IfClassIsActive) => {\r\n\t\t\tif (item.classList.contains(IfClassIsActive)) {\r\n\t\t\t\titem.classList.remove(IfClassIsActive)\r\n\t\t\t} else {\r\n\t\t\t\titem.classList.add(IfClassIsActive); \r\n\t\t\t}\r\n\t\t}\r\n\t\tsetInterval(addAnimateClass, 3000) \r\n\t});\r\n\r\n})();\r\n\r\n\r\n","var htmx = (function() {\r\n 'use strict'\r\n\r\n // Public API\r\n const htmx = {\r\n // Tsc madness here, assigning the functions directly results in an invalid TypeScript output, but reassigning is fine\r\n /* Event processing */\r\n /** @type {typeof onLoadHelper} */\r\n onLoad: null,\r\n /** @type {typeof processNode} */\r\n process: null,\r\n /** @type {typeof addEventListenerImpl} */\r\n on: null,\r\n /** @type {typeof removeEventListenerImpl} */\r\n off: null,\r\n /** @type {typeof triggerEvent} */\r\n trigger: null,\r\n /** @type {typeof ajaxHelper} */\r\n ajax: null,\r\n /* DOM querying helpers */\r\n /** @type {typeof find} */\r\n find: null,\r\n /** @type {typeof findAll} */\r\n findAll: null,\r\n /** @type {typeof closest} */\r\n closest: null,\r\n /**\r\n * Returns the input values that would resolve for a given element via the htmx value resolution mechanism\r\n *\r\n * @see https://htmx.org/api/#values\r\n *\r\n * @param {Element} elt the element to resolve values on\r\n * @param {HttpVerb} type the request type (e.g. **get** or **post**) non-GET's will include the enclosing form of the element. Defaults to **post**\r\n * @returns {Object}\r\n */\r\n values: function(elt, type) {\r\n const inputValues = getInputValues(elt, type || 'post')\r\n return inputValues.values\r\n },\r\n /* DOM manipulation helpers */\r\n /** @type {typeof removeElement} */\r\n remove: null,\r\n /** @type {typeof addClassToElement} */\r\n addClass: null,\r\n /** @type {typeof removeClassFromElement} */\r\n removeClass: null,\r\n /** @type {typeof toggleClassOnElement} */\r\n toggleClass: null,\r\n /** @type {typeof takeClassForElement} */\r\n takeClass: null,\r\n /** @type {typeof swap} */\r\n swap: null,\r\n /* Extension entrypoints */\r\n /** @type {typeof defineExtension} */\r\n defineExtension: null,\r\n /** @type {typeof removeExtension} */\r\n removeExtension: null,\r\n /* Debugging */\r\n /** @type {typeof logAll} */\r\n logAll: null,\r\n /** @type {typeof logNone} */\r\n logNone: null,\r\n /* Debugging */\r\n /**\r\n * The logger htmx uses to log with\r\n *\r\n * @see https://htmx.org/api/#logger\r\n */\r\n logger: null,\r\n /**\r\n * A property holding the configuration htmx uses at runtime.\r\n *\r\n * Note that using a [meta tag](https://htmx.org/docs/#config) is the preferred mechanism for setting these properties.\r\n *\r\n * @see https://htmx.org/api/#config\r\n */\r\n config: {\r\n /**\r\n * Whether to use history.\r\n * @type boolean\r\n * @default true\r\n */\r\n historyEnabled: true,\r\n /**\r\n * The number of pages to keep in **localStorage** for history support.\r\n * @type number\r\n * @default 10\r\n */\r\n historyCacheSize: 10,\r\n /**\r\n * @type boolean\r\n * @default false\r\n */\r\n refreshOnHistoryMiss: false,\r\n /**\r\n * The default swap style to use if **[hx-swap](https://htmx.org/attributes/hx-swap)** is omitted.\r\n * @type HtmxSwapStyle\r\n * @default 'innerHTML'\r\n */\r\n defaultSwapStyle: 'innerHTML',\r\n /**\r\n * The default delay between receiving a response from the server and doing the swap.\r\n * @type number\r\n * @default 0\r\n */\r\n defaultSwapDelay: 0,\r\n /**\r\n * The default delay between completing the content swap and settling attributes.\r\n * @type number\r\n * @default 20\r\n */\r\n defaultSettleDelay: 20,\r\n /**\r\n * If true, htmx will inject a small amount of CSS into the page to make indicators invisible unless the **htmx-indicator** class is present.\r\n * @type boolean\r\n * @default true\r\n */\r\n includeIndicatorStyles: true,\r\n /**\r\n * The class to place on indicators when a request is in flight.\r\n * @type string\r\n * @default 'htmx-indicator'\r\n */\r\n indicatorClass: 'htmx-indicator',\r\n /**\r\n * The class to place on triggering elements when a request is in flight.\r\n * @type string\r\n * @default 'htmx-request'\r\n */\r\n requestClass: 'htmx-request',\r\n /**\r\n * The class to temporarily place on elements that htmx has added to the DOM.\r\n * @type string\r\n * @default 'htmx-added'\r\n */\r\n addedClass: 'htmx-added',\r\n /**\r\n * The class to place on target elements when htmx is in the settling phase.\r\n * @type string\r\n * @default 'htmx-settling'\r\n */\r\n settlingClass: 'htmx-settling',\r\n /**\r\n * The class to place on target elements when htmx is in the swapping phase.\r\n * @type string\r\n * @default 'htmx-swapping'\r\n */\r\n swappingClass: 'htmx-swapping',\r\n /**\r\n * Allows the use of eval-like functionality in htmx, to enable **hx-vars**, trigger conditions & script tag evaluation. Can be set to **false** for CSP compatibility.\r\n * @type boolean\r\n * @default true\r\n */\r\n allowEval: true,\r\n /**\r\n * If set to false, disables the interpretation of script tags.\r\n * @type boolean\r\n * @default true\r\n */\r\n allowScriptTags: true,\r\n /**\r\n * If set, the nonce will be added to inline scripts.\r\n * @type string\r\n * @default ''\r\n */\r\n inlineScriptNonce: '',\r\n /**\r\n * If set, the nonce will be added to inline styles.\r\n * @type string\r\n * @default ''\r\n */\r\n inlineStyleNonce: '',\r\n /**\r\n * The attributes to settle during the settling phase.\r\n * @type string[]\r\n * @default ['class', 'style', 'width', 'height']\r\n */\r\n attributesToSettle: ['class', 'style', 'width', 'height'],\r\n /**\r\n * Allow cross-site Access-Control requests using credentials such as cookies, authorization headers or TLS client certificates.\r\n * @type boolean\r\n * @default false\r\n */\r\n withCredentials: false,\r\n /**\r\n * @type number\r\n * @default 0\r\n */\r\n timeout: 0,\r\n /**\r\n * The default implementation of **getWebSocketReconnectDelay** for reconnecting after unexpected connection loss by the event code **Abnormal Closure**, **Service Restart** or **Try Again Later**.\r\n * @type {'full-jitter' | ((retryCount:number) => number)}\r\n * @default \"full-jitter\"\r\n */\r\n wsReconnectDelay: 'full-jitter',\r\n /**\r\n * The type of binary data being received over the WebSocket connection\r\n * @type BinaryType\r\n * @default 'blob'\r\n */\r\n wsBinaryType: 'blob',\r\n /**\r\n * @type string\r\n * @default '[hx-disable], [data-hx-disable]'\r\n */\r\n disableSelector: '[hx-disable], [data-hx-disable]',\r\n /**\r\n * @type {'auto' | 'instant' | 'smooth'}\r\n * @default 'instant'\r\n */\r\n scrollBehavior: 'instant',\r\n /**\r\n * If the focused element should be scrolled into view.\r\n * @type boolean\r\n * @default false\r\n */\r\n defaultFocusScroll: false,\r\n /**\r\n * If set to true htmx will include a cache-busting parameter in GET requests to avoid caching partial responses by the browser\r\n * @type boolean\r\n * @default false\r\n */\r\n getCacheBusterParam: false,\r\n /**\r\n * If set to true, htmx will use the View Transition API when swapping in new content.\r\n * @type boolean\r\n * @default false\r\n */\r\n globalViewTransitions: false,\r\n /**\r\n * htmx will format requests with these methods by encoding their parameters in the URL, not the request body\r\n * @type {(HttpVerb)[]}\r\n * @default ['get', 'delete']\r\n */\r\n methodsThatUseUrlParams: ['get', 'delete'],\r\n /**\r\n * If set to true, disables htmx-based requests to non-origin hosts.\r\n * @type boolean\r\n * @default false\r\n */\r\n selfRequestsOnly: true,\r\n /**\r\n * If set to true htmx will not update the title of the document when a title tag is found in new content\r\n * @type boolean\r\n * @default false\r\n */\r\n ignoreTitle: false,\r\n /**\r\n * Whether the target of a boosted element is scrolled into the viewport.\r\n * @type boolean\r\n * @default true\r\n */\r\n scrollIntoViewOnBoost: true,\r\n /**\r\n * The cache to store evaluated trigger specifications into.\r\n * You may define a simple object to use a never-clearing cache, or implement your own system using a [proxy object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Proxy)\r\n * @type {Object|null}\r\n * @default null\r\n */\r\n triggerSpecsCache: null,\r\n /** @type boolean */\r\n disableInheritance: false,\r\n /** @type HtmxResponseHandlingConfig[] */\r\n responseHandling: [\r\n { code: '204', swap: false },\r\n { code: '[23]..', swap: true },\r\n { code: '[45]..', swap: false, error: true }\r\n ],\r\n /**\r\n * Whether to process OOB swaps on elements that are nested within the main response element.\r\n * @type boolean\r\n * @default true\r\n */\r\n allowNestedOobSwaps: true\r\n },\r\n /** @type {typeof parseInterval} */\r\n parseInterval: null,\r\n /** @type {typeof internalEval} */\r\n _: null,\r\n version: '2.0.2'\r\n }\r\n // Tsc madness part 2\r\n htmx.onLoad = onLoadHelper\r\n htmx.process = processNode\r\n htmx.on = addEventListenerImpl\r\n htmx.off = removeEventListenerImpl\r\n htmx.trigger = triggerEvent\r\n htmx.ajax = ajaxHelper\r\n htmx.find = find\r\n htmx.findAll = findAll\r\n htmx.closest = closest\r\n htmx.remove = removeElement\r\n htmx.addClass = addClassToElement\r\n htmx.removeClass = removeClassFromElement\r\n htmx.toggleClass = toggleClassOnElement\r\n htmx.takeClass = takeClassForElement\r\n htmx.swap = swap\r\n htmx.defineExtension = defineExtension\r\n htmx.removeExtension = removeExtension\r\n htmx.logAll = logAll\r\n htmx.logNone = logNone\r\n htmx.parseInterval = parseInterval\r\n htmx._ = internalEval\r\n\r\n const internalAPI = {\r\n addTriggerHandler,\r\n bodyContains,\r\n canAccessLocalStorage,\r\n findThisElement,\r\n filterValues,\r\n swap,\r\n hasAttribute,\r\n getAttributeValue,\r\n getClosestAttributeValue,\r\n getClosestMatch,\r\n getExpressionVars,\r\n getHeaders,\r\n getInputValues,\r\n getInternalData,\r\n getSwapSpecification,\r\n getTriggerSpecs,\r\n getTarget,\r\n makeFragment,\r\n mergeObjects,\r\n makeSettleInfo,\r\n oobSwap,\r\n querySelectorExt,\r\n settleImmediately,\r\n shouldCancel,\r\n triggerEvent,\r\n triggerErrorEvent,\r\n withExtensions\r\n }\r\n\r\n const VERBS = ['get', 'post', 'put', 'delete', 'patch']\r\n const VERB_SELECTOR = VERBS.map(function(verb) {\r\n return '[hx-' + verb + '], [data-hx-' + verb + ']'\r\n }).join(', ')\r\n\r\n const HEAD_TAG_REGEX = makeTagRegEx('head')\r\n\r\n //= ===================================================================\r\n // Utilities\r\n //= ===================================================================\r\n\r\n /**\r\n * @param {string} tag\r\n * @param {boolean} global\r\n * @returns {RegExp}\r\n */\r\n function makeTagRegEx(tag, global = false) {\r\n return new RegExp(`<${tag}(\\\\s[^>]*>|>)([\\\\s\\\\S]*?)<\\\\/${tag}>`,\r\n global ? 'gim' : 'im')\r\n }\r\n\r\n /**\r\n * Parses an interval string consistent with the way htmx does. Useful for plugins that have timing-related attributes.\r\n *\r\n * Caution: Accepts an int followed by either **s** or **ms**. All other values use **parseFloat**\r\n *\r\n * @see https://htmx.org/api/#parseInterval\r\n *\r\n * @param {string} str timing string\r\n * @returns {number|undefined}\r\n */\r\n function parseInterval(str) {\r\n if (str == undefined) {\r\n return undefined\r\n }\r\n\r\n let interval = NaN\r\n if (str.slice(-2) == 'ms') {\r\n interval = parseFloat(str.slice(0, -2))\r\n } else if (str.slice(-1) == 's') {\r\n interval = parseFloat(str.slice(0, -1)) * 1000\r\n } else if (str.slice(-1) == 'm') {\r\n interval = parseFloat(str.slice(0, -1)) * 1000 * 60\r\n } else {\r\n interval = parseFloat(str)\r\n }\r\n return isNaN(interval) ? undefined : interval\r\n }\r\n\r\n /**\r\n * @param {Node} elt\r\n * @param {string} name\r\n * @returns {(string | null)}\r\n */\r\n function getRawAttribute(elt, name) {\r\n return elt instanceof Element && elt.getAttribute(name)\r\n }\r\n\r\n /**\r\n * @param {Element} elt\r\n * @param {string} qualifiedName\r\n * @returns {boolean}\r\n */\r\n // resolve with both hx and data-hx prefixes\r\n function hasAttribute(elt, qualifiedName) {\r\n return !!elt.hasAttribute && (elt.hasAttribute(qualifiedName) ||\r\n elt.hasAttribute('data-' + qualifiedName))\r\n }\r\n\r\n /**\r\n *\r\n * @param {Node} elt\r\n * @param {string} qualifiedName\r\n * @returns {(string | null)}\r\n */\r\n function getAttributeValue(elt, qualifiedName) {\r\n return getRawAttribute(elt, qualifiedName) || getRawAttribute(elt, 'data-' + qualifiedName)\r\n }\r\n\r\n /**\r\n * @param {Node} elt\r\n * @returns {Node | null}\r\n */\r\n function parentElt(elt) {\r\n const parent = elt.parentElement\r\n if (!parent && elt.parentNode instanceof ShadowRoot) return elt.parentNode\r\n return parent\r\n }\r\n\r\n /**\r\n * @returns {Document}\r\n */\r\n function getDocument() {\r\n return document\r\n }\r\n\r\n /**\r\n * @param {Node} elt\r\n * @param {boolean} global\r\n * @returns {Node|Document}\r\n */\r\n function getRootNode(elt, global) {\r\n return elt.getRootNode ? elt.getRootNode({ composed: global }) : getDocument()\r\n }\r\n\r\n /**\r\n * @param {Node} elt\r\n * @param {(e:Node) => boolean} condition\r\n * @returns {Node | null}\r\n */\r\n function getClosestMatch(elt, condition) {\r\n while (elt && !condition(elt)) {\r\n elt = parentElt(elt)\r\n }\r\n\r\n return elt || null\r\n }\r\n\r\n /**\r\n * @param {Element} initialElement\r\n * @param {Element} ancestor\r\n * @param {string} attributeName\r\n * @returns {string|null}\r\n */\r\n function getAttributeValueWithDisinheritance(initialElement, ancestor, attributeName) {\r\n const attributeValue = getAttributeValue(ancestor, attributeName)\r\n const disinherit = getAttributeValue(ancestor, 'hx-disinherit')\r\n var inherit = getAttributeValue(ancestor, 'hx-inherit')\r\n if (initialElement !== ancestor) {\r\n if (htmx.config.disableInheritance) {\r\n if (inherit && (inherit === '*' || inherit.split(' ').indexOf(attributeName) >= 0)) {\r\n return attributeValue\r\n } else {\r\n return null\r\n }\r\n }\r\n if (disinherit && (disinherit === '*' || disinherit.split(' ').indexOf(attributeName) >= 0)) {\r\n return 'unset'\r\n }\r\n }\r\n return attributeValue\r\n }\r\n\r\n /**\r\n * @param {Element} elt\r\n * @param {string} attributeName\r\n * @returns {string | null}\r\n */\r\n function getClosestAttributeValue(elt, attributeName) {\r\n let closestAttr = null\r\n getClosestMatch(elt, function(e) {\r\n return !!(closestAttr = getAttributeValueWithDisinheritance(elt, asElement(e), attributeName))\r\n })\r\n if (closestAttr !== 'unset') {\r\n return closestAttr\r\n }\r\n }\r\n\r\n /**\r\n * @param {Node} elt\r\n * @param {string} selector\r\n * @returns {boolean}\r\n */\r\n function matches(elt, selector) {\r\n // @ts-ignore: non-standard properties for browser compatibility\r\n // noinspection JSUnresolvedVariable\r\n const matchesFunction = elt instanceof Element && (elt.matches || elt.matchesSelector || elt.msMatchesSelector || elt.mozMatchesSelector || elt.webkitMatchesSelector || elt.oMatchesSelector)\r\n return !!matchesFunction && matchesFunction.call(elt, selector)\r\n }\r\n\r\n /**\r\n * @param {string} str\r\n * @returns {string}\r\n */\r\n function getStartTag(str) {\r\n const tagMatcher = /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i\r\n const match = tagMatcher.exec(str)\r\n if (match) {\r\n return match[1].toLowerCase()\r\n } else {\r\n return ''\r\n }\r\n }\r\n\r\n /**\r\n * @param {string} resp\r\n * @returns {Document}\r\n */\r\n function parseHTML(resp) {\r\n const parser = new DOMParser()\r\n return parser.parseFromString(resp, 'text/html')\r\n }\r\n\r\n /**\r\n * @param {DocumentFragment} fragment\r\n * @param {Node} elt\r\n */\r\n function takeChildrenFor(fragment, elt) {\r\n while (elt.childNodes.length > 0) {\r\n fragment.append(elt.childNodes[0])\r\n }\r\n }\r\n\r\n /**\r\n * @param {HTMLScriptElement} script\r\n * @returns {HTMLScriptElement}\r\n */\r\n function duplicateScript(script) {\r\n const newScript = getDocument().createElement('script')\r\n forEach(script.attributes, function(attr) {\r\n newScript.setAttribute(attr.name, attr.value)\r\n })\r\n newScript.textContent = script.textContent\r\n newScript.async = false\r\n if (htmx.config.inlineScriptNonce) {\r\n newScript.nonce = htmx.config.inlineScriptNonce\r\n }\r\n return newScript\r\n }\r\n\r\n /**\r\n * @param {HTMLScriptElement} script\r\n * @returns {boolean}\r\n */\r\n function isJavaScriptScriptNode(script) {\r\n return script.matches('script') && (script.type === 'text/javascript' || script.type === 'module' || script.type === '')\r\n }\r\n\r\n /**\r\n * we have to make new copies of script tags that we are going to insert because\r\n * SOME browsers (not saying who, but it involves an element and an animal) don't\r\n * execute scripts created in tags when they are inserted into the DOM\r\n * and all the others do lmao\r\n * @param {DocumentFragment} fragment\r\n */\r\n function normalizeScriptTags(fragment) {\r\n Array.from(fragment.querySelectorAll('script')).forEach(/** @param {HTMLScriptElement} script */ (script) => {\r\n if (isJavaScriptScriptNode(script)) {\r\n const newScript = duplicateScript(script)\r\n const parent = script.parentNode\r\n try {\r\n parent.insertBefore(newScript, script)\r\n } catch (e) {\r\n logError(e)\r\n } finally {\r\n script.remove()\r\n }\r\n }\r\n })\r\n }\r\n\r\n /**\r\n * @typedef {DocumentFragment & {title?: string}} DocumentFragmentWithTitle\r\n * @description a document fragment representing the response HTML, including\r\n * a `title` property for any title information found\r\n */\r\n\r\n /**\r\n * @param {string} response HTML\r\n * @returns {DocumentFragmentWithTitle}\r\n */\r\n function makeFragment(response) {\r\n // strip head tag to determine shape of response we are dealing with\r\n const responseWithNoHead = response.replace(HEAD_TAG_REGEX, '')\r\n const startTag = getStartTag(responseWithNoHead)\r\n /** @type DocumentFragmentWithTitle */\r\n let fragment\r\n if (startTag === 'html') {\r\n // if it is a full document, parse it and return the body\r\n fragment = /** @type DocumentFragmentWithTitle */ (new DocumentFragment())\r\n const doc = parseHTML(response)\r\n takeChildrenFor(fragment, doc.body)\r\n fragment.title = doc.title\r\n } else if (startTag === 'body') {\r\n // parse body w/o wrapping in template\r\n fragment = /** @type DocumentFragmentWithTitle */ (new DocumentFragment())\r\n const doc = parseHTML(responseWithNoHead)\r\n takeChildrenFor(fragment, doc.body)\r\n fragment.title = doc.title\r\n } else {\r\n // otherwise we have non-body partial HTML content, so wrap it in a template to maximize parsing flexibility\r\n const doc = parseHTML('' + responseWithNoHead + '')\r\n fragment = /** @type DocumentFragmentWithTitle */ (doc.querySelector('template').content)\r\n // extract title into fragment for later processing\r\n fragment.title = doc.title\r\n\r\n // for legacy reasons we support a title tag at the root level of non-body responses, so we need to handle it\r\n var titleElement = fragment.querySelector('title')\r\n if (titleElement && titleElement.parentNode === fragment) {\r\n titleElement.remove()\r\n fragment.title = titleElement.innerText\r\n }\r\n }\r\n if (fragment) {\r\n if (htmx.config.allowScriptTags) {\r\n normalizeScriptTags(fragment)\r\n } else {\r\n // remove all script tags if scripts are disabled\r\n fragment.querySelectorAll('script').forEach((script) => script.remove())\r\n }\r\n }\r\n return fragment\r\n }\r\n\r\n /**\r\n * @param {Function} func\r\n */\r\n function maybeCall(func) {\r\n if (func) {\r\n func()\r\n }\r\n }\r\n\r\n /**\r\n * @param {any} o\r\n * @param {string} type\r\n * @returns\r\n */\r\n function isType(o, type) {\r\n return Object.prototype.toString.call(o) === '[object ' + type + ']'\r\n }\r\n\r\n /**\r\n * @param {*} o\r\n * @returns {o is Function}\r\n */\r\n function isFunction(o) {\r\n return typeof o === 'function'\r\n }\r\n\r\n /**\r\n * @param {*} o\r\n * @returns {o is Object}\r\n */\r\n function isRawObject(o) {\r\n return isType(o, 'Object')\r\n }\r\n\r\n /**\r\n * @typedef {Object} OnHandler\r\n * @property {(keyof HTMLElementEventMap)|string} event\r\n * @property {EventListener} listener\r\n */\r\n\r\n /**\r\n * @typedef {Object} ListenerInfo\r\n * @property {string} trigger\r\n * @property {EventListener} listener\r\n * @property {EventTarget} on\r\n */\r\n\r\n /**\r\n * @typedef {Object} HtmxNodeInternalData\r\n * Element data\r\n * @property {number} [initHash]\r\n * @property {boolean} [boosted]\r\n * @property {OnHandler[]} [onHandlers]\r\n * @property {number} [timeout]\r\n * @property {ListenerInfo[]} [listenerInfos]\r\n * @property {boolean} [cancelled]\r\n * @property {boolean} [triggeredOnce]\r\n * @property {number} [delayed]\r\n * @property {number|null} [throttle]\r\n * @property {string} [lastValue]\r\n * @property {boolean} [loaded]\r\n * @property {string} [path]\r\n * @property {string} [verb]\r\n * @property {boolean} [polling]\r\n * @property {HTMLButtonElement|HTMLInputElement|null} [lastButtonClicked]\r\n * @property {number} [requestCount]\r\n * @property {XMLHttpRequest} [xhr]\r\n * @property {(() => void)[]} [queuedRequests]\r\n * @property {boolean} [abortable]\r\n *\r\n * Event data\r\n * @property {HtmxTriggerSpecification} [triggerSpec]\r\n * @property {EventTarget[]} [handledFor]\r\n */\r\n\r\n /**\r\n * getInternalData retrieves \"private\" data stored by htmx within an element\r\n * @param {EventTarget|Event} elt\r\n * @returns {HtmxNodeInternalData}\r\n */\r\n function getInternalData(elt) {\r\n const dataProp = 'htmx-internal-data'\r\n let data = elt[dataProp]\r\n if (!data) {\r\n data = elt[dataProp] = {}\r\n }\r\n return data\r\n }\r\n\r\n /**\r\n * toArray converts an ArrayLike object into a real array.\r\n * @template T\r\n * @param {ArrayLike