(window.webpackJsonp = window.webpackJsonp || []).push([ [25], { "+5L9": function(e, t) { e.exports = '' }, "1pWb": function(e, t, n) { "use strict"; function r(e) { return !1 } n.d(t, "b", (function() { return r })), n.d(t, "a", (function() { return "###" })) }, "2gjO": function(e, t, n) { e.exports = { wrap: "wrap-1LtT-c03", item: "item-1LtT-c03", small: "small-1LtT-c03", text: "text-1LtT-c03", exchange: "exchange-1LtT-c03" } }, "6rj1": function(e, t) { e.exports = '' }, "8q1k": function(e, t) { e.exports = '' }, "952j": function(e, t, n) { "use strict"; n.d(t, "a", (function() { return c })), n.d(t, "b", (function() { return l })); var r = n("Kxc7"), a = n("1pWb"); const o = r.enabled("charting_library_base") ? /(?:[^-+\/*^\s]'|[a-zA-Z0-9_\u0370-\u1FFF_\u2E80-\uFFFF^])(?:[^-+\/*^\s]'|[a-zA-Z0-9_\u0020\u0370-\u1FFF_\u2E80-\uFFFF_!:.&])*|'.+?'/ : /(?:[^-+\/*^\s]'|[a-zA-Z0-9_\u0370-\u1FFF_\u2E80-\uFFFF])(?:[^-+\/*^\s]'|[a-zA-Z0-9_\u0020\u0370-\u1FFF_\u2E80-\uFFFF_!|:.&])*|'.+?'/, c = /[+\-/*]/, s = { number: /\d+(?:\.\d*|(?![a-zA-Z0-9_!:.&]))|\.\d+/, incompleteNumber: /\./, symbol: o, incompleteSymbol: /'[^']*/, separatorPrefix: a.a, openBrace: "(", closeBrace: ")", plus: "+", minus: "-", multiply: "*", divide: "/", power: "^", whitespace: /[\0-\x20\s]+/, unparsed: null }, i = new RegExp(Object.values(s).map(e => { return null === e ? "" : `(${"string"==typeof e?(t=e,t.replace(/[\^$()[\]{}*+?|\\]/g,"\\$&")):e.source})`; var t }).filter(e => "" !== e).concat(".").join("|"), "g"); function l(e) { if (!e) return []; const t = [], n = Object.keys(s); let r; for (; r = i.exec(e);) { let e = !1; for (let a = n.length; a--;) if (r[a + 1]) { n[a] && t.push({ value: r[a + 1], type: n[a], precedence: 0, offset: r.index }), e = !0; break } e || t.push({ value: r[0], type: "unparsed", precedence: 0, offset: r.index }) } return t } }, CJov: function(e, t, n) { "use strict"; n.d(t, "a", (function() { return a })); var r = n("q1tI"); const a = n.n(r).a.createContext(null) }, EBrf: function(e, t, n) { "use strict"; n.r(t), n.d(t, "splitThousands", (function() { return a })); var r = n("ivNn"); function a(e, t = " ") { let n = e + ""; - 1 !== n.indexOf("e") && (n = function(e) { return Object(r.fixComputationError)(e).toFixed(10).replace(/\.?0+$/, "") }(Number(e))); const a = n.split("."); return a[0].replace(/\B(?=(\d{3})+(?!\d))/g, t) + (a[1] ? "." + a[1] : "") } }, FadI: function(e, t, n) { "use strict"; function r(e) { if (!c(e)) throw e } function a(e) { return (null == e ? void 0 : e.aborted) ? Promise.reject(o()) : new Promise((t, n) => { null == e || e.addEventListener("abort", () => n(o()), { once: !0 }) }) } function o() { return new DOMException("Aborted", "AbortError") } function c(e) { return e instanceof Error && "AbortError" === e.name } function s(e, t) { return Promise.race([a(e), t]) } async function i(e, t) { let n; try { await s(e, new Promise(e => { n = setTimeout(e, t) })) } finally { clearTimeout(n) } } n.d(t, "c", (function() { return r })), n.d(t, "b", (function() { return s })), n.d(t, "a", (function() { return i })) }, G4pG: function(e, t, n) { e.exports = { flagWrap: "flagWrap-1Xy6iEIs", icon: "icon-1Xy6iEIs", caret: "caret-1Xy6iEIs", title: "title-1Xy6iEIs" } }, GWR5: function(e, t, n) { e.exports = { wrap: "wrap-2TpXRNRX", libAllExchange: "libAllExchange-2TpXRNRX", container: "container-2TpXRNRX", iconWrap: "iconWrap-2TpXRNRX", icon: "icon-2TpXRNRX", title: "title-2TpXRNRX", highlighted: "highlighted-2TpXRNRX", description: "description-2TpXRNRX", mobile: "mobile-2TpXRNRX", allExchange: "allExchange-2TpXRNRX", desktop: "desktop-2TpXRNRX", allExchangesIcon: "allExchangesIcon-2TpXRNRX", selected: "selected-2TpXRNRX", titleWithoutDesc: "titleWithoutDesc-2TpXRNRX", textBlock: "textBlock-2TpXRNRX", bordered: "bordered-2TpXRNRX" } }, Gtzb: function(e, t, n) { "use strict"; n.d(t, "a", (function() { return r })), n.d(t, "b", (function() { return a })); class r { constructor() { this._storage = new Map } setAsOpened(e, t) { this._storage.set(e, t) } setAsClosed(e) { this._storage.delete(e) } isOpened(e) { return this._storage.has(e) } getDialogPayload(e) { return this._storage.get(e) } } const a = new r }, Iruf: function(e, t, n) { e.exports = { container: "container-oVVv2l_M", contentList: "contentList-oVVv2l_M", contentListDesktop: "contentListDesktop-oVVv2l_M", exchangeItemsContainer: "exchangeItemsContainer-oVVv2l_M", exchangeItemsContainerDesktop: "exchangeItemsContainerDesktop-oVVv2l_M", groupTitleDesktop: "groupTitleDesktop-oVVv2l_M", emptyText: "emptyText-oVVv2l_M", noResultsDesktop: "noResultsDesktop-oVVv2l_M" } }, "ML8+": function(e, t, n) { "use strict"; n.d(t, "a", (function() { return i })); var r = n("q1tI"), a = n("TSYQ"), o = n("Iivm"), c = n("cvzQ"), s = n("R4+T"); function i(e) { const { dropped: t, className: n } = e; return r.createElement(o.a, { className: a(n, c.icon, { [c.dropped]: t }), icon: s }) } }, OWoh: function(e, t) { e.exports = '' }, OoQL: function(e, t, n) { "use strict"; n.d(t, "a", (function() { return o })); var r = n("q1tI"), a = n("Eyy1"); function o(e) { return Object(a.ensureNotNull)(Object(r.useContext)(e)) } }, Pdm7: function(e, t, n) { e.exports = { actions: "actions-3cho5KDh", actionButton: "actionButton-3cho5KDh" } }, "R4+T": function(e, t) { e.exports = '' }, SAe1: function(e, t, n) { "use strict"; n.d(t, "a", (function() { return c })); var r = n("q1tI"), a = n("rzV7"), o = n.n(a); class c extends r.Component { constructor(e) { super(e), this._handleMediaChange = () => { const e = i(this.state.queries, (e, t) => t.matches); let t = !1; for (const n in e) if (e.hasOwnProperty(n) && this.state.matches[n] !== e[n]) { t = !0; break } t && this.setState({ matches: e }) }; const { rules: t } = this.props; this.state = s(t) } shouldComponentUpdate(e, t) { return !o()(e, this.props) || (!o()(t.rules, this.state.rules) || !o()(t .matches, this.state.matches)) } componentDidMount() { this._migrate(null, this.state.queries) } componentDidUpdate(e, t) { o()(e.rules, this.props.rules) || this._migrate(t.queries, this.state.queries) } componentWillUnmount() { this._migrate(this.state.queries, null) } render() { return this.props.children(this.state.matches) } static getDerivedStateFromProps(e, t) { if (o()(e.rules, t.rules)) return null; const { rules: n } = e; return s(n) } _migrate(e, t) { null !== e && i(e, (e, t) => { t.removeListener(this._handleMediaChange) }), null !== t && i(t, (e, t) => { t.addListener(this._handleMediaChange) }) } } function s(e) { const t = i(e, (e, t) => window.matchMedia(t)); return { queries: t, matches: i(t, (e, t) => t.matches), rules: { ...e } } } function i(e, t) { const n = {}; for (const r in e) e.hasOwnProperty(r) && (n[r] = t(r, e[r])); return n } }, TgrR: function(e, t, n) { "use strict"; function r(e) { if (e.fullName) return e.fullName; let t; return t = e.prefix || e.exchange ? (e.prefix || e.exchange) + ":" + e.name : e.name, t .replace(/<\/?[^>]+(>|$)/g, "") } function a(e) { return "" === e.value } function o() { const e = s(); return e.find(a) || e[0] || null } function c() { return s() } function s() { return window.ChartApiInstance.supportedExchangesList().map(e => ({ ...e, country: "", providerId: "", flag: "" })) } function i() { return window.ChartApiInstance.supportedSymbolsTypes() } function l() { return "" } function u() { return !1 } n.d(t, "f", (function() { return r })), n.d(t, "g", (function() { return a })), n.d(t, "e", (function() { return o })), n.d(t, "c", (function() { return c })), n.d(t, "d", (function() { return i })), n.d(t, "b", (function() { return l })), n.d(t, "a", (function() { return u })) }, U0JK: function(e, t) { e.exports = '' }, UEVQ: function(e, t, n) { e.exports = { bubbles: "bubbles-1cEBkyVM", multiLine: "multiLine-1cEBkyVM", bubble: "bubble-1cEBkyVM" } }, UN6M: function(e, t, n) { e.exports = { childrenWrapper: "childrenWrapper-th__KurO", container: "container-th__KurO" } }, VogD: function(e, t, n) { "use strict"; n.d(t, "a", (function() { return a })); var r = n("q1tI"); const a = n.n(r).a.createContext(null) }, XDHQ: function(e, t) { e.exports = '' }, Y8Rb: function(e, t) { e.exports = '' }, ZrzP: function(e, t) { e.exports = '' }, anmh: function(e, t) { e.exports = '' }, bQ7Y: function(e, t, n) { e.exports = { button: "button-2Vpz_LXc", hover: "hover-2Vpz_LXc", isInteractive: "isInteractive-2Vpz_LXc", isGrouped: "isGrouped-2Vpz_LXc", isActive: "isActive-2Vpz_LXc", isOpened: "isOpened-2Vpz_LXc", isDisabled: "isDisabled-2Vpz_LXc", text: "text-2Vpz_LXc", icon: "icon-2Vpz_LXc" } }, cvzQ: function(e, t, n) { e.exports = { icon: "icon-19OjtB6A", dropped: "dropped-19OjtB6A" } }, eIOu: function(e, t, n) { e.exports = { "tablet-small-breakpoint": "screen and (max-width: 428px)", itemRow: "itemRow-ZzQNZGNo", multiLine: "multiLine-ZzQNZGNo", cell: "cell-ZzQNZGNo", itemInfoCell: "itemInfoCell-ZzQNZGNo", description: "description-ZzQNZGNo", symbolDescription: "symbolDescription-ZzQNZGNo", flag: "flag-ZzQNZGNo", exchangeDescription: "exchangeDescription-ZzQNZGNo", marketType: "marketType-ZzQNZGNo", exchangeName: "exchangeName-ZzQNZGNo", expandHandleWrap: "expandHandleWrap-ZzQNZGNo", expandHandle: "expandHandle-ZzQNZGNo", hover: "hover-ZzQNZGNo", selected: "selected-ZzQNZGNo", active: "active-ZzQNZGNo", highlighted: "highlighted-ZzQNZGNo", light: "light-ZzQNZGNo", "highlight-animation-theme-light": "highlight-animation-theme-light-ZzQNZGNo", dark: "dark-ZzQNZGNo", "highlight-animation-theme-dark": "highlight-animation-theme-dark-ZzQNZGNo", offset: "offset-ZzQNZGNo", exchangeCell: "exchangeCell-ZzQNZGNo", expanded: "expanded-ZzQNZGNo", symbolTitle: "symbolTitle-ZzQNZGNo", invalid: "invalid-ZzQNZGNo", noDescription: "noDescription-ZzQNZGNo", highlightedText: "highlightedText-ZzQNZGNo", icon: "icon-ZzQNZGNo", dataMode: "dataMode-ZzQNZGNo", actionsCell: "actionsCell-ZzQNZGNo", action: "action-ZzQNZGNo", targetAction: "targetAction-ZzQNZGNo", removeAction: "removeAction-ZzQNZGNo", addAction: "addAction-ZzQNZGNo" } }, gla1: function(e, t, n) { "use strict"; n.d(t, "a", (function() { return a })); var r = n("q1tI"); const a = () => { const [, e] = Object(r.useReducer)((e, t) => e + 1, 0); return e } }, "h9B/": function(e, t, n) { e.exports = { wrap: "wrap-2WiKHt6t", watchlist: "watchlist-2WiKHt6t", noFeed: "noFeed-2WiKHt6t", scrollContainer: "scrollContainer-2WiKHt6t", listContainer: "listContainer-2WiKHt6t", multiLineItemsContainer: "multiLineItemsContainer-2WiKHt6t" } }, hYF9: function(e, t, n) { e.exports = { button: "button-P2GOgq9R", desktop: "desktop-P2GOgq9R" } }, jPOK: function(e, t, n) { "use strict"; n.d(t, "a", (function() { return c })); var r = n("q1tI"), a = n("TSYQ"), o = n("Owlf"); n("SzKR"); function c(e) { const t = a("tv-spinner", "tv-spinner--shown", "tv-spinner--size_" + (e.size || o.a)); return r.createElement("div", { className: t, style: e.style, role: "progressbar" }, r.createElement("div", { className: "tv-spinner__spinner-layer" }, r.createElement("div", { className: "tv-spinner__background tv-spinner__width_element" }), r.createElement("div", { className: "tv-spinner__circle-clipper tv-spinner__width_element tv-spinner__circle-clipper--left" }), r.createElement("div", { className: "tv-spinner__circle-clipper tv-spinner__width_element tv-spinner__circle-clipper--right" }))) } }, ki38: function(e, t, n) { "use strict"; n.d(t, "a", (function() { return a })); var r = n("q1tI"); const a = n.n(r).a.createContext(null) }, mHCH: function(e, t, n) { e.exports = { bubble: "bubble-3MTPKAgt", animated: "animated-3MTPKAgt", content: "content-3MTPKAgt", "appearance-default": "appearance-default-3MTPKAgt", active: "active-3MTPKAgt", red: "red-3MTPKAgt", blue: "blue-3MTPKAgt", green: "green-3MTPKAgt", orange: "orange-3MTPKAgt", purple: "purple-3MTPKAgt", cyan: "cyan-3MTPKAgt", pink: "pink-3MTPKAgt", "appearance-text": "appearance-text-3MTPKAgt", "size-m": "size-m-3MTPKAgt", "size-l": "size-l-3MTPKAgt" } }, mdyz: function(e, t, n) { e.exports = { search: "search-Hsmn_0WX", upperCase: "upperCase-Hsmn_0WX", symbolType: "symbolType-Hsmn_0WX", spinnerWrap: "spinnerWrap-Hsmn_0WX", emptyText: "emptyText-Hsmn_0WX", noResultsDesktop: "noResultsDesktop-Hsmn_0WX", brokerCheckboxWrap: "brokerCheckboxWrap-Hsmn_0WX" } }, ozXl: function(e, t, n) { e.exports = { dialog: "dialog-1LLxyYSM", tabletDialog: "tabletDialog-1LLxyYSM", desktopDialog: "desktopDialog-1LLxyYSM" } }, p04v: function(e, t, n) { "use strict"; n.d(t, "a", (function() { return u })); var r = n("q1tI"), a = n.n(r), o = n("i8i4"), c = n("+EG+"), s = n("CJov"), i = n("Gtzb"), l = n("uTDg"); function u(e) { const { initialMode: t = "symbolSearch", autofocus: n = !0, defaultValue: r, showSpreadActions: u, selectSearchOnInit: d, onSearchComplete: p, onSearchFeedReady: m, dialogTitle: f, placeholder: h, fullscreen: b, initialScreen: v, wrapper: g, dialog: y, contentItem: E, onClose: x, footer: O, symbolTypes: k, searchInput: N, emptyState: w, dialogWidth: S = "auto", manager: C } = e; if (i.b.isOpened("SymbolSearch") || i.b.isOpened("ChangeIntervalDialog")) return; const T = document.createElement("div"), j = a.a.createElement(c.b.Provider, { value: null != C ? C : null }, a.a.createElement(s.a.Provider, { value: null }, a.a.createElement(l.a, { onClose: I, initialMode: t, defaultValue: r, showSpreadActions: u, onSearchFeedReady: m, selectSearchOnInit: d, onSearchComplete: p, dialogTitle: f, placeholder: h, fullscreen: b, initialScreen: v, wrapper: g, dialog: y, contentItem: E, footer: O, symbolTypes: k, searchInput: N, emptyState: w, autofocus: n, dialogWidth: S }))); function I() { o.unmountComponentAtNode(T), i.b.setAsClosed("SymbolSearch"), x && x() } return o.render(j, T), i.b.setAsOpened("SymbolSearch"), { close: I } } }, poJS: function(e, t) { e.exports = '' }, qC62: function(e, t, n) { "use strict"; n.d(t, "b", (function() { return c })), n.d(t, "a", (function() { return r })); var r, a = n("Eyy1"), o = n("Kxc7"); n("TgrR"); function c(e) { return e }! function(e) { function t(e) { return e.pro_name } function n(e) { { const t = o.enabled("pay_attention_to_ticker_not_symbol") ? e.ticker : e.full_name; return Object(a.ensureDefined)(t) } } e.fromQuotesResponse = function(e) { const { values: n, symbolname: r, status: a } = e; return "error" === a && r ? r : t(n) }, e.fromQuotes = t, e.fromSymbolSearchResult = function(e, t) { { const { ticker: n, full_name: r } = null != t ? t : e; return o.enabled("pay_attention_to_ticker_not_symbol") ? Object(a.ensureDefined) (null != n ? n : r) : Object(a.ensureDefined)(r) } }, e.fromSymbolInfo = n, e.fromSymbolMessage = function(e, t) { return "symbol_resolved" === t.method ? n(t.params[1]) : e } }(r || (r = {})) }, "rC+j": function(e, t, n) { "use strict"; n.d(t, "h", (function() { return c })), n.d(t, "a", (function() { return s })), n.d(t, "g", (function() { return i })), n.d(t, "e", (function() { return u })), n.d(t, "f", (function() { return p })), n.d(t, "c", (function() { return m })), n.d(t, "d", (function() { return h })), n.d(t, "b", (function() { return b })); var r = n("Kxc7"), a = n("952j"), o = n("TgrR"); function c(e) { const t = { braceBalance: 0, currentState: "var", warnings: [], errors: [] }; if (r.enabled("charting_library_base") && !r.enabled("show_spread_operators")) return t; let n = "init"; const a = []; for (let r = 0; r < e.length; r++) { const o = e[r]; if ("whitespace" !== o.type) { if ("incompleteSymbol" === o.type || "incompleteNumber" === o.type) { const n = r !== e.length - 1, a = { status: n ? "error" : "incomplete", reason: "incomplete_token", offset: o.offset, token: o }; if (n ? t.errors.push(a) : t.warnings.push(a), n) continue } switch (o.type) { case "symbol": case "number": if ("var" === n) { t.errors.push({ status: "error", reason: "unexpected_token", offset: o.offset, token: o }); continue } n = "var"; break; case "plus": case "minus": case "multiply": case "divide": case "power": if ("var" !== n) { t.errors.push({ status: "error", reason: "unexpected_token", offset: o.offset, token: o }); continue } n = "operator"; break; case "openBrace": if ("var" === n) { t.errors.push({ status: "error", reason: "unexpected_token", offset: o.offset, token: o }); continue } a.push(o), n = "init"; break; case "closeBrace": if ("var" !== n) { t.errors.push({ status: "error", reason: "unexpected_token", offset: o.offset, token: o }); continue } a.pop() || t.errors.push({ status: "error", reason: "unbalanced_brace", offset: o.offset, token: o }), n = "var"; break; case "unparsed": t.errors.push({ status: "error", reason: "unparsed_entity", offset: o.offset, token: o }) } } } for (t.braceBalance = a.length, "var" !== n && t.warnings.push({ status: "incomplete", token: e[e.length - 1] }); a.length;) { const e = a.pop(); e && t.warnings.push({ status: "incomplete", reason: "unbalanced_brace", offset: e.offset, token: e }) } return t.currentState = n, t } function s(e) { const t = function(e) { let t, n = 0, r = 0; for (let a = 0; a < e.length; a++) { const o = e[a]; if ("whitespace" !== o.type) switch (n) { case 0: if ("number" !== o.type || 1 != +o.value) return []; n = 1; break; case 1: if (1 !== n || "divide" !== o.type) return []; n = 2, t = a + 1; break; case 2: if ("openBrace" === o.type) n = 3, r = 1; else if (l(o.type)) return []; break; case 3: "openBrace" === o.type ? r++ : "closeBrace" === o.type && (r--, r <= 0 && (n = 2)) } } return e.slice(t) }(e); return t.length ? d(t) : d(Object(a.b)("1/(" + i(e) + ")")) } function i(e) { return e.reduce((e, t) => "symbol" === t.type && a.a.test(t.value) ? e + `'${t.value}'` : e + t.value, "") } function l(e) { return "plus" === e || "minus" === e || "multiply" === e || "divide" === e || "power" === e } function u(e) { return e.length > 1 && e.some(e => l(e.type)) } function d(e) { e = function(e) { const t = []; for (const n of e) "whitespace" !== n.type && t.push(n); return t }(e); const t = [], n = []; let r; for (let a = 0; a < e.length; a++) { const o = e[a]; switch (o.type) { case "plus": case "minus": case "multiply": case "divide": case "power": n.length && n[n.length - 1].minPrecedence > o.precedence && (n[n.length - 1] .minPrecedence = o.precedence); break; case "openBrace": r = { minPrecedence: 1 / 0, openBraceIndex: a }, n.push(r); break; case "closeBrace": { if (r = n.pop(), !r) break; const o = e[r.openBraceIndex - 1], c = e[a + 1], s = o && ("plus" === o.type || "multiply" === o.type); (!l(null == c ? void 0 : c.type) || (null == c ? void 0 : c.precedence) <= r .minPrecedence) && (!l(null == o ? void 0 : o.type) || (null == o ? void 0 : o.precedence) < (null == r ? void 0 : r.minPrecedence) || (null == o ? void 0 : o.precedence) === (null == r ? void 0 : r.minPrecedence) && s) && ( t.unshift(r.openBraceIndex), t.push(a), n.length && n[n.length - 1] .minPrecedence > r.minPrecedence && (n[n.length - 1].minPrecedence = r .minPrecedence)) } } } for (let n = t.length; n--;) e.splice(t[n], 1); return e } function p(e) { return d(Object(a.b)(e)).reduce((e, t) => { if ("symbol" !== t.type) return e + t.value; const [, n] = f(t); return n ? e + n : e }, "") } function m(e) { const t = function(e) { const t = Object(a.b)(e), n = []; return t.forEach(e => { if ("symbol" !== e.type) return; const [t] = f(e); t && n.push(t) }), n }(e); if (1 === t.length) return t[0] } function f(e) { const t = /^'?(?:([A-Z0-9_]+):)?(.*?)'?$/i.exec(e.value); return null === t ? [void 0, void 0] : [t[1], t[2]] } function h(e, t, n) { const r = e.value, [c, s] = b(e, n), i = Object(o.f)(t), l = a.a.test(i) ? `'${i}'` : i; return [r.substr(0, s) + l + r.substr(s + c.length), s + l.length] } function b(e, t) { const { value: n, selectionStart: r } = e, o = Object(a.b)(t ? n.toUpperCase() : n), c = function(e, t) { for (let n = 0; n < e.length; n++) { const r = e[n], a = "symbol" === r.type || "incompleteSymbol" === r.type || "number" === r .type; if (r.offset <= t && t <= r.offset + r.value.length && a) return r } return null }(o, r || 0); return [(null == c ? void 0 : c.value) || "", c ? c.offset : n.length, o] } }, rzV7: function(e, t, n) { "use strict"; var r = Object.prototype.hasOwnProperty; function a(e, t) { return e === t ? 0 !== e || 0 !== t || 1 / e == 1 / t : e != e && t != t } e.exports = function(e, t) { if (a(e, t)) return !0; if ("object" != typeof e || null === e || "object" != typeof t || null === t) return !1; var n = Object.keys(e), o = Object.keys(t); if (n.length !== o.length) return !1; for (var c = 0; c < n.length; c++) if (!r.call(t, n[c]) || !a(e[n[c]], t[n[c]])) return !1; return !0 } }, tU7i: function(e, t, n) { "use strict"; n.d(t, "a", (function() { return s })), n.d(t, "b", (function() { return i })); var r = n("q1tI"), a = n("TSYQ"), o = n("Iivm"), c = n("bQ7Y"); const s = c, i = r.forwardRef((e, t) => { const { icon: n, isActive: s, isOpened: i, isDisabled: l, isGrouped: u, isHovered: d, onClick: p, text: m, textBeforeIcon: f, title: h, theme: b = c, className: v, forceInteractive: g, "data-name": y, ...E } = e, x = a(v, b.button, h && "apply-common-tooltip", { [b.isActive]: s, [b.isOpened]: i, [b.isInteractive]: (g || Boolean(p)) && !l, [b.isDisabled]: l, [b.isGrouped]: u, [b.hover]: d }), O = n && ("string" == typeof n ? r.createElement(o.a, { className: b.icon, icon: n }) : r.cloneElement(n, { className: a(b.icon, n.props.className) })); return r.createElement("div", { ...E, ref: t, "data-role": "button", className: x, onClick: l ? void 0 : p, title: h, "data-name": y }, f && m && r.createElement("div", { className: a("js-button-text", b.text) }, m), O, !f && m && r.createElement("div", { className: a("js-button-text", b.text) }, m)) }) }, uTDg: function(e, t, n) { "use strict"; var r = n("q1tI"), a = n.n(r), o = n("TSYQ"), c = n.n(o), s = n("YFKU"), i = (n("+GxX"), n("952j")), l = n("rC+j"), u = n("SAe1"), d = n("Kxc7"), p = n("uhCe"), m = n("g89m"), f = n("Eyy1"), h = n("Iivm"), b = n("VogD"), v = n("QHWU"), g = n("TgrR"), y = n("UN6M"); function E(e) { const { children: t, className: n } = e; return a.a.createElement("div", { className: c()(y.container, n) }, a.a.createElement("div", { className: y.childrenWrapper }, t)) } var x = n("1LIl"), O = n("H9Gg"), k = n("wy57"), N = n("GWR5"); function w(e) { const { country: t, providerId: n, flag: o, title: s, description: i, isActive: l, isAllExchanges: u, isMobile: d, onClick: p, queryString: m } = e, f = Object(r.useMemo)(() => Object(O.a)(m), [m]), b = i && !u, v = c()(N.container, d ? N.mobile : N.desktop, l && N.selected, u && N.allExchange, u && N .libAllExchange, !u && d && N.bordered); return a.a.createElement("div", { className: c()(!d && N.wrap, u && N.libAllExchange), onClick: p }, a.a.createElement("div", { className: v }, a.a.createElement("div", { className: N.iconWrap }, !!u && a.a.createElement(h.a, { className: c()(N.icon, N.allExchangesIcon), icon: k })), a.a.createElement("div", { className: N.textBlock }, a.a.createElement("div", { className: c()(N.title, !b && !d && N.titleWithoutDesc) }, a.a.createElement(x.a, { className: c()(l && N.highlighted), queryString: m, text: s, rules: f })), b && a.a.createElement("div", { className: N.description }, a.a.createElement(x.a, { className: N.highlighted, queryString: m, rules: f, text: i }))))) } var S = n("vqb8"), C = n("OoQL"), T = n("oiZD"), j = n("zM7N"), I = n("ki38"), R = n("poJS"), M = n("6rj1"), _ = n("Iruf"); const L = { emptyTextClassName: _.emptyText }; function D(e) { const { exchanges: t } = e, { selectedExchange: n, setSelectedExchange: o, setMode: i, isMobile: l, emptyState: u, autofocus: d } = Object(C.a)(b.a), p = Object(S.a)({ watchedValue: T.watchedTheme }) === j.a.Dark ? R : M, [m, y] = Object(r.useState)(""), x = Object(r.useCallback)(e => e.name.toLowerCase().includes(m.toLowerCase()) || e.desc.toLowerCase().includes(m .toLowerCase()), [m]), O = Object(r.useMemo)(() => [ [...t] ], [t]), k = Object(r.useMemo)(() => { const e = O.filter(e => e.some(x)); return e }, [O, x]), N = Object(f.ensureNotNull)(n).value, D = Object(r.useRef)(null), A = Object(r.useRef)(null); Object(r.useLayoutEffect)(() => { var e; d && (null === (e = null == D ? void 0 : D.current) || void 0 === e || e .focus()) }, []); const z = u ? a.a.createElement(u, null) : a.a.createElement(E, { className: _.noResultsDesktop }, a.a.createElement(h.a, { icon: p }), a.a.createElement("div", { className: _.emptyText }, Object(s.t)("No exchanges match your criteria"))); return a.a.createElement(I.a.Provider, { value: L }, a.a.createElement(v.a, { placeholder: Object(s.t)("Search"), onChange: function(e) { y(e.target.value), A && A.current && (A.current.scrollTop = 0) }, reference: D }), k.length ? a.a.createElement("div", { ref: A, className: c()(_.contentList, !l && _.contentListDesktop), onTouchStart: function() { var e; null === (e = D.current) || void 0 === e || e.blur() } }, k.map(e => { const { name: t, group: n } = e[0]; return a.a.createElement(a.a.Fragment, { key: t }, !1, a.a.createElement("div", { className: c()(_.exchangeItemsContainer, !l && _ .exchangeItemsContainerDesktop) }, e.filter(x).map(e => { const t = Object(g.g)(e); return a.a.createElement(w, { key: e.desc, country: e.country, flag: e.flag, providerId: e.providerId, title: t ? Object(s.t)("All sources") : e.name, description: e.desc, isActive: e.value === N, isAllExchanges: t, isMobile: l, queryString: m, onClick: P.bind(null, e) }) }))) })) : z); function P(e) { o(e), i("symbolSearch") } } var A, z, P, B, Z, V, F, G, W, X, K, Q = n("i8i4"), q = n("FadI"); n("Wt0y"), n("wVAQ"), n("ivNn"), n("nc0P"); ! function(e) { e[e.CONNECTED = 1] = "CONNECTED", e[e.CONNECTING = 2] = "CONNECTING", e[e.DISCONNECTED = 3] = "DISCONNECTED", e[e.ERROR = 4] = "ERROR" }(A || (A = {})), function(e) { e[e.LIMIT = 1] = "LIMIT", e[e.MARKET = 2] = "MARKET", e[e.STOP = 3] = "STOP", e[e .STOPLIMIT = 4] = "STOPLIMIT" }(z || (z = {})), function(e) { e[e.BUY = 1] = "BUY", e[e.SELL = -1] = "SELL" }(P || (P = {})), function(e) { e[e.CANCELED = 1] = "CANCELED", e[e.FILLED = 2] = "FILLED", e[e.INACTIVE = 3] = "INACTIVE", e[e.PLACING = 4] = "PLACING", e[e.REJECTED = 5] = "REJECTED", e[e.WORKING = 6] = "WORKING" }(B || (B = {})), function(e) { e[e.ALL = 0] = "ALL", e[e.CANCELED = 1] = "CANCELED", e[e.FILLED = 2] = "FILLED", e[e .INACTIVE = 3] = "INACTIVE", e[e.REJECTED = 5] = "REJECTED", e[e.WORKING = 6] = "WORKING" }(Z || (Z = {})), function(e) { e[e.ORDER = 1] = "ORDER", e[e.POSITION = 2] = "POSITION" }(V || (V = {})), function(e) { e[e.LIMITPRICE = 1] = "LIMITPRICE", e[e.STOPPRICE = 2] = "STOPPRICE", e[e.TAKEPROFIT = 3] = "TAKEPROFIT", e[e.STOPLOSS = 4] = "STOPLOSS" }(F || (F = {})), function(e) { e[e.ERROR = 0] = "ERROR", e[e.SUCCESS = 1] = "SUCCESS" }(G || (G = {})), function(e) { e.Information = "information", e.Warning = "warning", e.Error = "error" }(W || (W = {})), function(e) { e.Demo = "demo", e.Live = "live" }(X || (X = {})), function(e) { e[e.LogOut = 0] = "LogOut", e[e.FailedRestoring = 1] = "FailedRestoring", e[e.Offline = 2] = "Offline", e[e.APIError = 3] = "APIError", e[e.TwoFactorRequired = 4] = "TwoFactorRequired" }(K || (K = {})); n("EBrf"), n("ogJP"); var H = n("txPx"); n("25b6"); Error; Object(H.getLogger)("Trading.Utils"); Object(s.t)("Failed to login"); function U(e) { return e.hasOwnProperty("exchange") } async function Y(e) { return new Promise(t => { window.ChartApiInstance.searchSymbols(e.text || "", e.exchange || "", e .type || "", "", !1, !0, "", !0, "", e => { t(e) }) }) } var $ = n("K5cv"), J = n("JWMC"), ee = n("/3z9"), te = n("tU7i"), ne = n("ZrzP"), re = n("XDHQ"), ae = n("Y8Rb"), oe = n("8q1k"), ce = n("OWoh"), se = n("anmh"), ie = n("Pdm7"); function le(e) { var t; const { state: n, update: o } = e, { searchRef: c, forceUpdate: s, upperCaseEnabled: u } = Object(f.ensureNotNull)(Object(r.useContext)(b.a)), p = Object(i.b)(null === (t = c .current) || void 0 === t ? void 0 : t.value), m = Object(l.h)(p); let h = [{ icon: ne, insert: "/", type: "binaryOp", name: "division" }, { icon: re, insert: "-", type: "binaryOp", name: "subtraction" }, { icon: ae, insert: "+", type: "binaryOp", name: "addition" }, { icon: oe, insert: "*", type: "binaryOp", name: "multiplication" }]; return d.enabled("hide_exponentiation_spread_operator") || (h = h.concat([{ icon: ce, insert: "^", type: "binaryOp", name: "exponentiation" }])), d.enabled("hide_reciprocal_spread_operator") || (h = h.concat([{ icon: se, type: "complete", name: "1/x", callback: () => { !c.current || m.errors.length || m.warnings.length || (c.current .value = Object(l.g)(Object(l.a)(p)), s()) } }])), a.a.createElement("div", { className: ie.actions }, h.map(e => a.a.createElement(te.b, { className: ie.actionButton, icon: e.icon, key: e.name, isDisabled: ue(e, m), onClick: () => function(e) { var t; if (!ue(e, m)) { if (e.insert && c.current) { const t = c.current.value + e.insert; c.current.value = t, c.current.setSelectionRange(t .length, t.length); const [r, , a] = Object(l.b)(c.current, u); n.current && (n.current.selectedIndexValue = -1, n .current.searchSpreadsValue = Object(l.e)(a), n .current.searchTokenValue = r), s(), o() } e.callback && e.callback(), null === (t = c.current) || void 0 === t || t.focus(), Object(J.trackEvent)("GUI", "SS", e.name) } }(e) }))) } function ue(e, t) { let n = !1; if (!t.errors.length) switch (e.type) { case "binaryOp": n = "var" === t.currentState; break; case "openBrace": n = "var" !== t.currentState; break; case "closeBrace": n = "var" === t.currentState && t.braceBalance > 0; break; case "complete": n = !t.errors.length && !t.warnings.length } return !n } var de = n("ijHL"), pe = n("mHCH"); function me(e) { const { isActive: t, isAnimated: n, activeColor: r, size: a = "m", appearance: o = "default", className: s } = e; return c()(pe.bubble, t && pe.active, r && pe[r], a && pe["size-" + a], o && pe[ "appearance-" + o], n && pe.animated, s) } function fe(e) { const { id: t, title: n, tabIndex: r, role: o, contentClassName: s, children: i, onClick: l, onMouseDown: u, ...d } = e; return a.a.createElement("span", { ...Object(de.a)(d), ...Object(de.b)(d), id: t, title: n, tabIndex: r, role: o, className: me(e), onClick: l, onMouseDown: u }, a.a.createElement("span", { className: c()(pe.content, s) }, i)) } var he = n("UEVQ"); function be(e) { const { className: t, itemClassName: n, itemContentClassName: r, items: c, getItemTitle: s, getItemKey: i, checkItemIsActive: l, getItemColor: u, onBubbleClick: d, multiline: p, children: m } = e; return a.a.createElement("div", { className: o(t, he.bubbles, p && he.multiLine) }, c.map((e, t) => a.a.createElement(fe, { key: i ? i(e) : t, className: o(he.bubble, n), contentClassName: r, onClick: function() { d(e) }, onMouseDown: function(e) { e.preventDefault() }, isActive: !!l && l(e), activeColor: u ? u(e) : void 0 }, s(e))), m) } var ve = n("jPOK"), ge = n("iR1w"), ye = n("cvc5"), Ee = n.n(ye), xe = n("ML8+"), Oe = n("G4pG"); function ke(e) { const { mode: t, setMode: n, searchRef: o, cachedInputValue: i, selectedExchange: l, upperCaseEnabled: u } = Object(f.ensureNotNull)(Object(r.useContext)(b.a)), d = Object(f.ensureNotNull)(l), p = "symbolSearch" === t, m = Object(g.g)(d), { country: v, providerId: y, flag: E } = d; return p ? a.a.createElement("div", { className: c()(Oe.flagWrap, "apply-common-tooltip"), title: Object(s.t)("Select source"), onClick: function() { o.current && (i.current = u ? o.current.value.toUpperCase() : o.current .value); n("exchange") } }, !!m && a.a.createElement(h.a, { className: Oe.icon, icon: k }), a.a.createElement("div", { className: Oe.title }, m ? Object(s.t)("All sources") : d.name), a.a.createElement(xe.a, { className: Oe.caret, dropped: !1 })) : null } var Ne = n("2gjO"); const we = Object(g.c)(); function Se(e) { const { isSmallWidth: t, selectedExchange: n } = Object(f.ensureNotNull)(Object(r.useContext)(b.a)), o = n && we.length > 1 && !Object(g .a)(); return a.a.createElement("div", { className: c()(Ne.wrap, t && Ne.small) }, a.a.createElement("div", { className: Ne.item }, a.a.createElement("div", { className: Ne.text }, t ? Object(s.t)("Symbol & description") : Object(s.t)("Symbol"))), a.a .createElement("div", { className: Ne.item }, !t && a.a.createElement("div", { className: Ne.text }, Object(s.t)("Description")), o && a.a.createElement("div", { className: Ne.exchange }, a.a.createElement(ke, null)))) } var Ce = n("Ialn"), Te = n("h9B/"); function je(e) { const { onTouchMove: t, listRef: n, className: o, listWrapRef: s, virtualListKey: i, items: l, getItemSize: u, hideFeed: d } = e, { mode: p, isSmallWidth: m, handleListWidth: h } = Object(C.a)(b.a), [v, g] = Object(r.useState)(null), y = Object(r.useCallback)(e => { const { index: t, style: n } = e; return a.a.createElement("div", { style: n }, l[t]) }, [l]), E = Object(r.useCallback)(e => Object(f.ensure)(l[e].key), [l]), x = "watchlist" === p && null !== v; return a.a.createElement(Ee.a, { onMeasure: function(e) { g(e.height), h(e.width) } }, a.a.createElement("div", { ref: s, className: c()(Te.wrap, x && Te.watchlist, d && Te.noFeed, o), onTouchMove: t }, a.a.createElement("div", { className: c()(Te.scrollContainer, d && Te.noFeed) }, x ? a.a.createElement(ge.b, { key: i, ref: n, className: Te.listContainer, width: "100%", height: Object(f.ensureNotNull)(v), itemCount: l.length, itemSize: u, children: y, itemKey: E, overscanCount: 20, direction: Object(Ce.isRtl)() ? "rtl" : "ltr" }) : a.a.createElement("div", { className: c()(Te.listContainer, m && Te.multiLineItemsContainer) }, a.a.createElement(Se, null), l)))) } var Ie = n("zjoO"), Re = n("mdyz"); function Me(e) { const { token: t, state: n, otherSymbolsCount: o, onChangeSymbolTypeFilter: c, onResetFilters: s, onListTouchMove: i, brokerTitle: l, isBrokerChecked: u, onBrokerCheckboxChange: d, listRef: p, listWrapRef: m } = e, { mode: f, isMobile: h, selectedExchange: v, selectedSymbolType: g, symbolTypes: y, feedItems: E, contentItem: x, emptyState: O = _e } = Object(C.a)(b.a), k = l && a.a.createElement(BrokerCheckbox, { brokerTitle: l, checked: u, onCheckboxChange: d }), N = "symbolSearch" === f && "good" === n, w = null != x ? x : Ie.a, S = Object(r .useMemo)(() => E.map(e => a.a.createElement(w, { ...e, searchToken: t })), [E]); return a.a.createElement(a.a.Fragment, null, "symbolSearch" === f && a.a.createElement(a.a .Fragment, null, y.length > 0 && a.a.createElement(be, { itemClassName: Re.symbolType, items: y, getItemTitle: e => e.name, getItemKey: e => e.value, checkItemIsActive: e => e.value === g, onBubbleClick: c, multiline: !h }, k), !1), a.a.createElement(je, { listRef: p, listWrapRef: m, onTouchMove: i, items: S, getItemSize: () => De, hideFeed: !N }), "loading" === n && a.a.createElement("div", { className: Re.spinnerWrap }, a.a.createElement(ve.a, null)), "symbolSearch" === f && a.a.createElement(a.a .Fragment, null, !1, "empty" === n && a.a.createElement(O, null))) } function _e(e) { const t = Object(S.a)({ watchedValue: T.watchedTheme }) === j.a.Dark ? R : M; return a.a.createElement(E, { className: Re.noResultsDesktop }, a.a.createElement(h.a, { icon: t }), a.a.createElement("div", { className: Re.emptyText }, Object(s.t)("No symbols match your criteria"))) } const Le = Object(g.e)(), De = 52; function Ae(e) { const { mode: t, setMode: n, setSelectedIndex: o, isMobile: i, selectedExchange: u, setSelectedExchange: p, selectedSymbolType: m, setSelectedSymbolType: f, setRenderSymbolSearchList: h, searchRef: y, cachedInputValue: E, setSearchSpreads: x, showSpreadActions: O, selectedItem: k, onSearchFeedReady: N, forceUpdate: w, placeholder: S, initialScreen: T, footer: j, searchInput: R, upperCaseEnabled: M, externalInput: _, handleKeyDown: L } = Object(C.a)(b.a), D = Object(r.useRef)(t); D.current = t; const A = Object(r.useRef)(new AbortController), [z, P] = Object(r.useState)(0), [B, Z] = Object(r.useState)("noop"), V = Object(r.useRef)(0), [F, G] = Object(r.useState)(E.current), W = Object(r.useRef)(null), X = Object(r.useRef)(null), K = Object(r.useRef)({ selectedIndexValue: -1, searchTokenValue: "", searchSpreadsValue: !0 }), H = Object(r.useRef)(null), te = Object(r.useRef)(null), { broker: ne = null, brokerId: re, brokerTitle: ae, isBrokerChecked: oe = !1, setIsBrokerChecked: ce = (() => {}), unhideSymbolSearchGroups: se = "" } = { brokerId: void 0, brokerTitle: void 0 }; Object(r.useEffect)(() => { (null == y ? void 0 : y.current) && G(y.current.value) }, []), Object(r.useEffect)(() => { const e = y.current; if (e) return e.addEventListener("input", be), e.addEventListener("focus", Ee), e.addEventListener("select", he), e.addEventListener("click", he), e .addEventListener("keyup", xe), _ && L && e.addEventListener("keydown", L), () => { e && (e.removeEventListener("input", be), e.removeEventListener( "focus", Ee), e.removeEventListener("select", he), e .removeEventListener("click", he), e.removeEventListener( "keyup", xe), _ && L && e.removeEventListener("keydown", L)) } }, [L]), Object(r.useEffect)(() => { Boolean(T) && "" === F.trim() || (ge(F, m, null == u ? void 0 : u.value), W .current && (W.current.scrollTop = 0)) }, [F, m, u, oe, T]), Object(r.useEffect)(() => { if (!k || !y.current) return; if (!d.enabled("show_spread_operators")) return y.current.value = k.symbol, void w(); const e = U(k) ? k.exchange : k.parent.exchange, t = { name: k.symbol, exchange: e, prefix: k.prefix, fullName: k.full_name }, [n, r] = Object(l.d)(y.current, t, M); y.current.value = n, y.current.setSelectionRange(r, r), w() }, [k]); const ie = Object(r.useCallback)(e => N ? N(e) : e, [N]), ue = null != T ? T : "div", de = Boolean(T) && "symbolSearch" !== t, pe = null != R ? R : v.a, me = Object(r.useMemo)(() => ({ listRef: X, resetRecommends: ye, updateRecommends: ge, searchToken: F, emptyTextClassName: Re.emptyText, isBrokerChecked: oe, symbolSearchState: B, currentMode: D }), [X, F, oe, B, D]); return a.a.createElement(I.a.Provider, { value: me }, !(_ && "symbolSearch" === t) && a.a.createElement(pe, { reference: y, className: c()(Re.search, M && Re.upperCase), placeholder: S || Object(s.t)("Search") }, O && a.a.createElement(le, { state: K, update: ve })), de ? a.a.createElement(ue, null) : a.a.createElement(Me, { token: F, state: B, otherSymbolsCount: z, onListTouchMove: function() { var e; null === (e = y.current) || void 0 === e || e.blur() }, onChangeSymbolTypeFilter: function(e) { const { value: t } = e; f(t), o(-1) }, onResetFilters: function() { var e; f(Object(g.b)()), Le && p(Le); ce(!1), i || null === (e = y.current) || void 0 === e || e.focus() }, brokerTitle: ae, isBrokerChecked: oe, onBrokerCheckboxChange: function(e) { ce("on" !== e) }, listRef: X, listWrapRef: W }), j); function fe() { if (!y.current) return; const [e, t, n] = Object(l.b)(y.current, M); V.current = t, K.current = { selectedIndexValue: -1, searchSpreadsValue: Object(l.e)(n), searchTokenValue: e }, H.current || (H.current = setTimeout(ve, 0)) } function he() { if (!y.current) return; const [, e] = Object(l.b)(y.current, M); e !== V.current && fe() } function be() { d.enabled("show_spread_operators") ? fe() : y.current && (K.current = { selectedIndexValue: -1, searchSpreadsValue: !1, searchTokenValue: y.current.value }, H.current || (H.current = setTimeout(ve, 0))) } function ve() { const { selectedIndexValue: e, searchTokenValue: t, searchSpreadsValue: n } = K.current; H.current = null, Object(Q.unstable_batchedUpdates)(() => { x(n), o(e), G(M ? t.toUpperCase() : t) }) } async function ge(e, t, n) { try { "noop" === B ? Z("loading") : (Oe(), te.current = setTimeout(() => { Z("loading") }, 500)), ke(); const r = await async function(e, t, n, r) { var a, o, c; const s = d.enabled("show_spread_operators") ? Object(l.f)(t) : null === (a = y.current) || void 0 === a ? void 0 : a.value; let i; if (oe && ne) { const t = await Object(q.b)(e, ne.accountMetainfo()); i = t.prefix } const p = d.enabled("show_spread_operators") ? null !== (c = null !== (o = Object(l.c)(t)) && void 0 !== o ? o : i) && void 0 !== c ? c : r : null == u ? void 0 : u.value, m = { serverHighlight: !1, text: s, exchange: p, type: n, lang: window.language || "", brokerId: re, onlyTradable: Boolean(re) && oe, unhideSymbolSearchGroups: se, signal: e }, f = Object($.getSearchRequestDelay)(); void 0 !== f && await Object(q.a)(e, f); return Y(m) }(A.current.signal, e, t, n), a = ie(function(e, t = window .ChartApiInstance.symbolsGrouping()) { var n; const r = {}, a = []; for (let o = 0; o < e.length; ++o) { const c = e[o]; if (c.prefix || Array.isArray(c.contracts)) return e; const s = t[c.type]; if (void 0 === s) { a.push(c); continue } const i = s.exec(c.symbol); if (i) { const e = i[1]; let t; r.hasOwnProperty(e) ? t = r[e] : (t = a.length, r[e] = t, a.push({ type: c.type, symbol: e, exchange: c.exchange, description: c.description, full_name: c.exchange + ":" + e, contracts: [] })), null === (n = a[t].contracts) || void 0 === n || n.push(c) } else a.push(c) } return a }(r)); if (!a.length) return Oe(), void Z("empty"); Oe(), h(a), Z("good") } catch (e) { Object(q.c)(e) } } function ye() { ke(), Z("empty"), G(""), x(!1), Oe() } function Ee() { "watchlist" === D.current && (n("symbolSearch"), Object(J.trackEvent)("Watchlist", "Mobile SS", "Go to SS page")) } function xe(e) { switch (Object(ee.hashFromEvent)(e)) { case 37: case 39: he() } } function Oe() { te.current && clearTimeout(te.current) } function ke() { A.current.abort(), A.current = new AbortController } } var ze = n("U0JK"), Pe = n("hYF9"); function Be(e) { const { theme: t = Pe } = e, { setMode: n, isMobile: r } = Object(C.a)(b.a); return a.a.createElement(h.a, { className: c()(e.className, t.button, !r && t.desktop), icon: ze, onClick: function() { n("symbolSearch") } }) } var Ze = n("w3Pp"), Ve = n("qC62"), Fe = n("Vdly"); function Ge(e) { const [t, n] = Object(r.useState)(() => { const t = Fe.getValue("symboledit.exchangefilter", ""); return e.exchanges.find(e => e.value === t) || e.defaultExchange }); return [t, Object(r.useCallback)(e => { var t; n(e), t = e, Fe.setValue("symboledit.exchangefilter", t.value) }, [])] } function We(e) { const [t, n] = Object(r.useState)(() => { if (1 === e.types.length) return e.types[0].value; const t = Fe.getValue("symboledit.filter", Object(g.b)()); return e.types.find(e => e.value === t) ? t : Object(g.b)() }); return [t, Object(r.useCallback)(e => { var t; n(e), t = e, Fe.setValue("symboledit.filter", t) }, [])] } var Xe = n("gla1"), Ke = n("ozXl"); n.d(t, "a", (function() { return Ue })); const Qe = Object(g.c)(), qe = Object(g.e)(), He = d.enabled("uppercase_instrument_names"); function Ue(e) { var t; const { onClose: n, initialMode: o, defaultValue: c = "", showSpreadActions: m, selectSearchOnInit: f = !0, onSearchComplete: h, onSearchFeedReady: v, dialogTitle: y = Object(s.t)("Symbol Search"), placeholder: E, fullscreen: x, initialScreen: O, wrapper: k, dialog: N, contentItem: w, footer: S, symbolTypes: C = Object(g.d)(), searchInput: T, emptyState: j, autofocus: I, dialogWidth: R, onKeyDown: M, exchangeScreen: _ } = e, L = void 0 !== e.input, [A, z] = Object(r.useState)(o), P = Object(r.useRef)(c), [B, Z ] = Ge({ exchanges: Qe, defaultExchange: qe }), [V, F] = We({ types: C }), [G, W] = Object(r.useState)([]), [X, K] = Object(r.useState)(!1), [Q, q] = Object(r .useState)(-1), H = Object(r.useRef)(null !== (t = e.input) && void 0 !== t ? t : null), [$, J] = Object(r.useState)(!1), te = Object(Xe.a)(), [ne, re] = Object(r .useState)(new Set), { broker: ae = null, brokerId: oe, unhideSymbolSearchGroups: ce = "", displayBrokerSymbol: se = !1 } = { brokerId: void 0 }; Object(r.useLayoutEffect)(() => { var e; !(null == H ? void 0 : H.current) || !L && Boolean(null === (e = H.current) || void 0 === e ? void 0 : e.value) || (L || "compare" === A || (H.current .value = P.current), !I || L && "symbolSearch" !== A || H.current .focus()) }, [A]), Object(r.useEffect)(() => { (null == H ? void 0 : H.current) && f && I && H.current.select() }, []); const ie = Object(r.useMemo)(() => G.reduce((e, t) => { const n = Je(t), r = ne.has(n); return e.push(t), r && t.contracts && e.push(...t.contracts.map(e => ({ ...e, parent: t }))), e }, []), [G, ne]), le = Object(r.useRef)(null); Object(r.useEffect)(() => { var e; - 1 !== Q && (null === (e = le.current) || void 0 === e || e .scrollIntoView({ block: "nearest" })) }, [Q, le]); const ue = Object(r.useMemo)(() => ie.map((e, t) => { var n, r, a, o; if (U(e)) { const a = Je(e), o = e.contracts ? ne.has(a) : void 0, c = t === Q; return { key: t, id: a, title: $e(e, se), description: e.description, isOffset: !1, onClick: ve.bind(null, e), providerId: e.provider_id, country: null === (n = e.country) || void 0 === n ? void 0 : n .toLocaleLowerCase(), type: e.type, exchangeName: e.exchange, marketType: Object(Ze.marketType)(e.type, e.typespecs), isEod: null === (r = e.params) || void 0 === r ? void 0 : r .includes("eod"), isExpanded: o, onExpandClick: e.contracts ? ge.bind(null, a) : void 0, fullSymbolName: Ve.a.fromSymbolSearchResult(e), itemRef: c ? le : void 0, isSelected: t === Q, item: e } } { const { parent: n } = e, r = Je(n), c = t === Q; return { key: t, id: r + e.symbol, dangerousTitleHTML: $e(e, se), dangerousDescriptionHTML: `${n.description} (${e.description})`, isOffset: !0, isEod: null === (a = e.params) || void 0 === a ? void 0 : a .includes("eod"), onClick: ye.bind(null, e.parent, e), providerId: n.provider_id, country: null === (o = n.country) || void 0 === o ? void 0 : o .toLowerCase(), type: n.type, exchangeName: n.exchange, marketType: Object(Ze.marketType)(n.type, e.typespecs), fullSymbolName: Ve.a.fromSymbolSearchResult(e.parent, e), itemRef: c ? le : void 0, isSelected: c, item: e } } }), [G, ne, A, Q, M]), de = null != N ? N : tt, pe = de !== tt && !L, me = (e, t) => ({ mode: A, setMode: z, selectedExchange: B, setSelectedExchange: Z, selectedSymbolType: V, setSelectedSymbolType: F, selectedIndex: Q, setSelectedIndex: q, onClose: n, setRenderSymbolSearchList: W, searchRef: H, cachedInputValue: P, searchSpreads: X, setSearchSpreads: K, handleListWidth: Ee, isSmallWidth: $, feedItems: ue, isMobile: e, showSpreadActions: m, selectSearchOnInit: f, isTablet: t, selectedItem: ie[Q], onSearchFeedReady: v, forceUpdate: te, placeholder: E, initialScreen: O, toggleExpand: ge, openedItems: ne, onSubmit: ke, onSearchComplete: h, footer: S, symbolTypes: C, contentItem: w, searchInput: T, emptyState: j, autofocus: I, upperCaseEnabled: He, externalInput: L, handleKeyDown: pe ? void 0 : Oe }), fe = null != _ ? _ : D, he = "exchange" === A ? { title: Object(s.t)("Sources"), dataName: "exchanges-search", render: () => a.a.createElement(fe, { exchanges: Qe }), additionalHeaderElement: a.a.createElement(Be, null), additionalElementPos: "before" } : { title: y, dataName: "symbol-search-items-dialog", render: () => a.a.createElement(Ae, null), additionalElementPos: "after" }, be = null != k ? k : "div"; return a.a.createElement(be, null, a.a.createElement(u.a, { rules: p.a }, ({ TabletSmall: e, TabletNormal: t }) => a.a.createElement(b.a.Provider, { value: me(e, t) }, a.a.createElement(de, { ...he, fullScreen: x, onClose: n, onClickOutside: n, onKeyDown: pe ? void 0 : Oe, isOpened: !0 })))); function ve(e) { e.contracts ? ge(Je(e)) : ye(e) } function ge(e) { const t = new Set(ne); t.has(e) ? t.delete(e) : t.add(e), re(t) } function ye(e, t) { const r = t || e, { exchange: a } = e; if (d.enabled("show_spread_operators")) { const e = { name: r.symbol, exchange: a, prefix: r.prefix, fullName: r.full_name }; if (X) return xe(e), void te(); if (H.current && H.current.value.includes(",")) return void xe(e) } const o = [{ resolved: !0, symbol: Ve.a.fromSymbolSearchResult(e, t), result: r }]; h(o), n() } function Ee(e) { J("fixed" === R || e <= 640) } function xe(e) { if (!H.current) return; const [t, n] = Object(l.d)(H.current, e, He); H.current.value = t, H.current.setSelectionRange(n, n), H.current.focus() } function Oe(e) { switch (Object(ee.hashFromEvent)(e)) { case 38: if (e.preventDefault(), 0 === Q) return; if (-1 === Q) return void q(0); q(Q - 1); break; case 40: if (e.preventDefault(), Q === ue.length - 1) return; q(Q + 1); break; case 37: { if (-1 === Q) return; const t = ue[Q], { id: n, isOffset: r, onExpandClick: a } = t; !r && n && ne.has(n) && Boolean(a) && (e.preventDefault(), ge(n)); break } case 39: { if (-1 === Q) return; const t = ue[Q], { id: n, isOffset: r, onExpandClick: a } = t; !r && n && !ne.has(n) && Boolean(a) && (e.preventDefault(), ge(n)); break } case 13: ke(!0); break; case 27: e.preventDefault(), n() } null == M || M(e) } function ke(e) { if (!H.current) return; const t = H.current.value; if (d.enabled("show_spread_operators") && X && t) { if (t.includes(",")) { const r = et(t); if (r.some(e => !Ne(e))) return; return h(r.map(Ye)), void(e && n()) } if (!Ne(t)) return; return h([{ symbol: He ? t.toUpperCase() : t, resolved: !1 }]), void(e && n()) } if (t.includes(",")) return h(et(t).map(Ye)), void(e && n()); if (-1 !== Q) { ue[Q].onClick() } else { const r = He ? t.toUpperCase() : t; if (r && "" !== r.trim()) { const e = et(r); if (void 0 !== oe && -1 === r.indexOf(":"))(function(e) { let t = !1; return Promise.all(e.map(e => -1 !== e.indexOf(":") || t ? Promise .resolve({ symbol: e, resolved: !1 }) : (t = !0, async function(e) { var t; null === (t = await (null == ae ? void 0 : ae.accountMetainfo())) || void 0 === t || t.prefix; const n = await Y({ strictMatch: !0, serverHighlight: !1, text: e, lang: window.language || "", brokerId: oe, onlyTradable: !0, unhideSymbolSearchGroups: ce, exchange: void 0 }); if (0 !== n.length) { const e = n[0], { contracts: t } = e, r = t && t.length > 0 ? t[0] : void 0, a = e.prefix || e.exchange, o = r ? r.symbol : e.symbol; if (a && o) return { symbol: Ve.a .fromSymbolSearchResult(e, r), resolved: !0, result: e } } return { symbol: e, resolved: !1 } }(e)))) })(e).then(e => h(e)); else { const t = e.map(Ye); h(t) } } e && n() } } function Ne(e) { const t = Object(i.b)(e), n = Object(l.h)(t); if (n.errors.length || n.warnings.length) return !1; const r = ue[Q]; return !r || void 0 === r.isExpanded || (r.onClick(), !1) } } function Ye(e) { return { symbol: He ? e.toUpperCase() : e, resolved: !1 } } function $e(e, t) { const { broker_symbol: n, symbol: r } = e; return `${r}${t&&n?` (${n})`:""}` } function Je(e) { return e.symbol + e.exchange + e.description } function et(e) { return e.split(",").map(e => e.trim()).filter(e => "" !== e) } function tt(e) { const { isMobile: t, isTablet: n } = Object(C.a)(b.a); return a.a.createElement(m.a, { ...e, className: c()(Ke.dialog, !t && (n ? Ke.tabletDialog : Ke.desktopDialog)), backdrop: !0, draggable: !1 }) } }, vqb8: function(e, t, n) { "use strict"; n.d(t, "a", (function() { return a })); var r = n("q1tI"); const a = e => { const t = "watchedValue" in e ? e.watchedValue : void 0, n = "defaultValue" in e ? e.defaultValue : e.watchedValue.value(), [a, o] = Object(r.useState)(t ? t.value() : n); return Object(r.useEffect)(() => { if (t) { o(t.value()); const e = e => o(e); return t.subscribe(e), () => t.unsubscribe(e) } return () => {} }, [t]), a } }, w3Pp: function(e, t, n) { "use strict"; n.r(t), n.d(t, "marketType", (function() { return i })); var r = n("YFKU"); n("HbRj"); const a = new Map, o = { context: "market_type" }, c = { cfd: Object(r.t)("cfd", o), bitcoin: Object(r.t)("crypto", o), crypto: Object(r.t)("crypto", o), dr: Object(r.t)("dr", o), forex: Object(r.t)("forex", o), futures: Object(r.t)("futures", o), index: Object(r.t)("index", o), stock: Object(r.t)("stock", o) }, s = new Set(["cfd", "spreadbet", "defi"]); function i(e, t = []) { const n = t.filter(e => s.has(e)), i = `${e}_${n.sort().join("_")}`, l = a.get(i); if (void 0 !== l) return l; const u = Boolean(t.length) ? Object(r.t)(e, o) + " " + n.join(" ") : c[e] || e; return a.set(i, u), u } }, wy57: function(e, t) { e.exports = '' }, zjoO: function(e, t, n) { "use strict"; n.d(t, "a", (function() { return g })); var r = n("q1tI"), a = n.n(r), o = n("TSYQ"), c = n.n(o), s = n("Eyy1"), i = n("Iivm"), l = n("1LIl"), u = n("H9Gg"), d = n("VogD"), p = n("FZIs"), m = n("vqb8"), f = n("oiZD"), h = n("8+VR"), b = n("+5L9"), v = n("eIOu"); function g(e) { const { dangerousTitleHTML: t, title: n, dangerousDescriptionHTML: o, description: g, searchToken: y, exchangeName: E, marketType: x, onClick: O, isSelected: k, isEod: N = !1, isActive: w = !1, isOffset: S = !1, invalid: C = !1, isHighlighted: T = !1, hideExchange: j = !1, onExpandClick: I, isExpanded: R, hoverComponent: M, country: _, providerId: L, type: D, flag: A, itemRef: z, onMouseOut: P, onMouseOver: B, className: Z, actions: V, reference: F } = e, { isSmallWidth: G, isMobile: W } = Object(s.ensureNotNull)(Object(r.useContext)(d.a)), X = Boolean(M), K = !C && !j && ( W || !X), Q = Object(m.a)({ watchedValue: f.watchedTheme }) === p.a.Dark ? v.dark : v.light, q = M; return a.a.createElement("div", { className: c()(v.itemRow, G && v.multiLine, T && v.highlighted, T && Q, k && v .selected, w && v.active, C && v.invalid, !W && h.mobiletouch && X && v .hover, Z), onClick: function(e, t) { if (!e || t.defaultPrevented) return; t.preventDefault(), e(t) }.bind(null, O), "data-role": e["data-role"] || "list-item", "data-active": w, "data-name": "symbol-search-dialog-content-item", onMouseOut: P, onMouseOver: B, ref: F }, a.a.createElement("div", { ref: z, className: c()(v.itemInfoCell, v.cell, S && v.offset) }, a.a.createElement("div", { className: v.expandHandleWrap, onClick: function(e) { if (!I || e.defaultPrevented) return; e.preventDefault(), I(e) } }, I && a.a.createElement(i.a, { className: c()(v.expandHandle, R && v.expanded), icon: b })), a.a.createElement("div", { className: v.description }, n && a.a.createElement("div", { className: c()(v.symbolTitle, w && v.active, C && v.invalid, ! Boolean(o) && v.noDescription), "data-name": "list-item-title" }, "string" == typeof n && y ? a.a.createElement(l.a, { className: v.highlightedText, text: n, queryString: y, rules: Object(u.a)(y) }) : n, N && a.a.createElement("span", { className: v.dataMode }, "E")), !n && t && a.a.createElement("div", { className: c()(v.symbolTitle, w && v.active, C && v.invalid), "data-name": "list-item-title" }, a.a.createElement("span", { dangerouslySetInnerHTML: { __html: t } }), N && a.a.createElement("span", { className: v.dataMode }, "E")), G && H())), !G && H(), q ? a.a.createElement(q, { ...e, className: v.cell, onMouseOver: void 0, onMouseOut: void 0 }) : null, K && a.a.createElement("div", { className: c()(v.exchangeCell, v.cell) }, a.a.createElement("div", { className: c()(v.exchangeDescription) }, a.a.createElement("div", { className: c()(v.marketType, w && v.active) }, x), a.a.createElement("div", { className: c()(v.exchangeName, w && v.active) }, E)), !1), a.a.createElement("div", { className: c()(v.cell, Boolean(V) && v.actionsCell) }, V)); function H() { if (C) return null; const e = c()(v.symbolDescription, !G && v.cell, w && v.active, !h.mobiletouch && "apply-overflow-tooltip apply-overflow-tooltip--allow-text"); return g ? a.a.createElement("div", { className: e }, y ? a.a.createElement(l.a, { className: v.highlightedText, text: g, queryString: y, rules: Object(u.a)(y) }) : g) : o ? a.a.createElement("div", { className: e, dangerouslySetInnerHTML: { __html: o } }) : null } } } } ]);