"use strict";
(self.webpackChunktradingview = self.webpackChunktradingview || []).push([
    [55825], {
        167175: (e, o, r) => {
            r.d(o, {
                isAndroid: () => p,
                isAnyMobile: () => b,
                isBlackBerry: () => f,
                isChrome: () => i,
                isEdge: () => s,
                isFF: () => a,
                isIOS: () => h,
                isIPad: () => y,
                isLinux: () => g,
                isMac: () => u,
                isOperaMini: () => m,
                isSafari: () => _,
                isWindows: () => d,
                mobiletouch: () => l,
                touch: () => c
            });
            const t = "undefined" != typeof window && "undefined" != typeof navigator,
                n = t && "ontouchstart" in window,
                l = t && n && "onorientationchange" in window,
                c = t && (n || !!navigator.maxTouchPoints),
                i = t && window.chrome && window.chrome.runtime,
                a = t && window.navigator.userAgent.toLowerCase().indexOf("firefox") > -1,
                s = t && /\sEdge\/\d\d\b/.test(navigator.userAgent),
                _ = t && Boolean(navigator.vendor) && navigator.vendor.indexOf("Apple") > -1 && -1 === navigator.userAgent.indexOf("CriOS") && -1 === navigator.userAgent.indexOf("FxiOS"),
                u = t && /mac/i.test(navigator.platform),
                d = t && /Win32|Win64/i.test(navigator.platform),
                g = t && /Linux/i.test(navigator.platform),
                p = t && /Android/i.test(navigator.userAgent),
                f = t && /BlackBerry/i.test(navigator.userAgent),
                h = t && /iPhone|iPad|iPod/.test(navigator.platform),
                m = t && /Opera Mini/i.test(navigator.userAgent),
                y = t && ("MacIntel" === navigator.platform && navigator.maxTouchPoints >= 1 || /iPad/.test(navigator.platform)),
                b = p || f || h || m
        },
        195619: (e, o, r) => {
            r.d(o, {
                t: () => t
            });
            const t = r.i18next
        },
        960095: (e, o, r) => {
            r.d(o, {
                colorsPalette: () => u,
                getHexColorByName: () => d
            });
            const t = JSON.parse('{"color-white":"#ffffff","color-black":"#000000","color-transparent":"#00000000","color-cold-gray-50":"#F8F9FD","color-cold-gray-100":"#F0F3FA","color-cold-gray-150":"#E0E3EB","color-cold-gray-200":"#D1D4DC","color-cold-gray-250":"#C1C4CD","color-cold-gray-300":"#B2B5BE","color-cold-gray-350":"#A3A6AF","color-cold-gray-400":"#9598A1","color-cold-gray-450":"#868993","color-cold-gray-500":"#787B86","color-cold-gray-550":"#6A6D78","color-cold-gray-600":"#5D606B","color-cold-gray-650":"#50535E","color-cold-gray-700":"#434651","color-cold-gray-750":"#363A45","color-cold-gray-800":"#2A2E39","color-cold-gray-850":"#1E222D","color-cold-gray-900":"#131722","color-cold-gray-950":"#0C0E15","color-ripe-red-50":"#FFEBEC","color-ripe-red-100":"#FCCBCD","color-ripe-red-200":"#FAA1A4","color-ripe-red-300":"#F77C80","color-ripe-red-400":"#F7525F","color-ripe-red-500":"#F23645","color-ripe-red-600":"#CC2F3C","color-ripe-red-700":"#B22833","color-ripe-red-800":"#991F29","color-ripe-red-900":"#801922","color-ripe-red-a100":"#FF8080","color-ripe-red-a200":"#FF5252","color-ripe-red-a400":"#FF3333","color-ripe-red-a600":"#CC2929","color-ripe-red-a700":"#802028","color-ripe-red-a800":"#4D191D","color-ripe-red-a900":"#331F20","color-tan-orange-50":"#FFF3E0","color-tan-orange-100":"#FFE0B2","color-tan-orange-200":"#FFCC80","color-tan-orange-300":"#ffb74d","color-tan-orange-400":"#FFA726","color-tan-orange-500":"#FF9800","color-tan-orange-600":"#FB8C00","color-tan-orange-700":"#F57C00","color-tan-orange-800":"#EF6C00","color-tan-orange-900":"#e65100","color-tan-orange-a200":"#ffab40","color-tan-orange-a400":"#FF9100","color-tan-orange-a600":"#CC7014","color-tan-orange-a700":"#8C541C","color-tan-orange-a800":"#593A1B","color-tan-orange-a900":"#33261A","color-iguana-green-100":"#C8E6C9","color-iguana-green-200":"#A5D6A7","color-iguana-green-300":"#81c784","color-iguana-green-400":"#66BB6A","color-iguana-green-500":"#4caf50","color-iguana-green-600":"#43a047","color-iguana-green-700":"#388e3c","color-iguana-green-800":"#2E7D32","color-iguana-green-900":"#1B5E20","color-iguana-green-a400":"#00E676","color-iguana-green-a700":"#00c853","color-banana-yellow-100":"#FFF9C4","color-banana-yellow-200":"#FFF59D","color-banana-yellow-300":"#FFF176","color-banana-yellow-400":"#ffee58","color-banana-yellow-500":"#ffeb3b","color-banana-yellow-600":"#fdd835","color-banana-yellow-700":"#fbc02d","color-banana-yellow-800":"#f9a825","color-banana-yellow-900":"#F57F17","color-banana-yellow-a400":"#ffea00","color-banana-yellow-a700":"#EEDA01","color-tv-blue-50":"#E3EFFD","color-tv-blue-100":"#BBD9FB","color-tv-blue-200":"#90BFF9","color-tv-blue-300":"#5B9CF6","color-tv-blue-400":"#3179F5","color-tv-blue-500":"#2962FF","color-tv-blue-600":"#1E53E5","color-tv-blue-700":"#1848CC","color-tv-blue-800":"#143EB3","color-tv-blue-900":"#0C3299","color-tv-blue-a100":"#82b1ff","color-tv-blue-a200":"#448aff","color-tv-blue-a400":"#2979ff","color-tv-blue-a600":"#2962FF","color-tv-blue-a700":"#143A87","color-tv-blue-a800":"#142E61","color-tv-blue-a900":"#132042","color-deep-blue-50":"#EDE7F6","color-deep-blue-100":"#D1C4E9","color-deep-blue-200":"#B39DDB","color-deep-blue-300":"#9575cd","color-deep-blue-400":"#7e57c2","color-deep-blue-500":"#673ab7","color-deep-blue-700":"#512da8","color-deep-blue-800":"#4527A0","color-deep-blue-900":"#311B92","color-deep-blue-a100":"#b388ff","color-deep-blue-a200":"#7C4DFF","color-deep-blue-a400":"#651FFF","color-deep-blue-a700":"#6200EA","color-minty-green-50":"#DAF2EE","color-minty-green-100":"#ACE5DC","color-minty-green-200":"#70CCBD","color-minty-green-300":"#42BDA8","color-minty-green-400":"#22AB94","color-minty-green-500":"#089981","color-minty-green-600":"#06806B","color-minty-green-700":"#056656","color-minty-green-800":"#004D40","color-minty-green-900":"#00332A","color-minty-green-a400":"#2BD9BC","color-minty-green-a600":"#24B29B","color-minty-green-a700":"#1B7667","color-minty-green-a800":"#10443B","color-minty-green-a900":"#082621","color-grapes-purple-50":"#F3E5F5","color-grapes-purple-100":"#E1BEE7","color-grapes-purple-200":"#CE93D8","color-grapes-purple-300":"#ba68c8","color-grapes-purple-400":"#ab47bc","color-grapes-purple-500":"#9c27b0","color-grapes-purple-600":"#8e24aa","color-grapes-purple-700":"#7b1fa2","color-grapes-purple-800":"#6A1B9A","color-grapes-purple-900":"#4A148C","color-grapes-purple-a100":"#EA80FC","color-grapes-purple-a200":"#E040FB","color-grapes-purple-a400":"#D500F9","color-grapes-purple-a700":"#aa00ff","color-berry-pink-100":"#F8BBD0","color-berry-pink-200":"#f48fb1","color-berry-pink-300":"#f06292","color-berry-pink-400":"#ec407a","color-berry-pink-500":"#e91e63","color-berry-pink-600":"#D81B60","color-berry-pink-700":"#C2185B","color-berry-pink-800":"#AD1457","color-berry-pink-900":"#880E4F","color-berry-pink-a100":"#ff80ab","color-berry-pink-a200":"#ff4081","color-berry-pink-a400":"#f50057","color-berry-pink-a700":"#c51162","color-sky-blue-50":"#E0F7FA","color-sky-blue-100":"#B2EBF2","color-sky-blue-200":"#80DEEA","color-sky-blue-300":"#4dd0e1","color-sky-blue-400":"#26c6da","color-sky-blue-500":"#00bcd4","color-sky-blue-600":"#00acc1","color-sky-blue-700":"#0097A7","color-sky-blue-800":"#00838F","color-sky-blue-900":"#006064","color-sky-blue-a400":"#00e5ff","color-sky-blue-a700":"#00B8D4","color-deep-blue-600":"#5E35B1","color-forest-green-50":"#DAF2E6","color-forest-green-100":"#ACE5C9","color-forest-green-200":"#70CC9E","color-forest-green-300":"#42BD7F","color-forest-green-400":"#22AB67","color-forest-green-500":"#089950","color-forest-green-600":"#068043","color-forest-green-700":"#056636","color-forest-green-800":"#004D27","color-forest-green-900":"#1A3326","color-facebook":"#1877F2","color-deep-facebook":"#1564CA","color-twitter":"#1DA1F2","color-deep-twitter":"#188CD3","color-youtube":"#FF0000","color-linkedin":"#007BB5","color-seeking-alpha-brand":"#ff7200"}'),
                n = JSON.parse('{"color-header-bg":"color-white","color-body-bg":"color-white","color-body-secondary-bg":"color-cold-gray-100","color-bg-primary":"color-white","color-bg-primary-hover":"color-cold-gray-100","color-bg-secondary":"color-white","color-bg-highlight":"color-cold-gray-50","color-bg-scroll-buttons":"color-cold-gray-100","color-legacy-bg-scroll-buttons":"color-cold-gray-850","color-legacy-bg-widget":"color-white","color-text-primary":"color-cold-gray-900","color-text-secondary":"color-cold-gray-550","color-text-tertiary":"color-cold-gray-400","color-text-disabled":"color-cold-gray-300","color-accent-content":"color-cold-gray-900","color-box-shadow":"color-cold-gray-300","color-divider":"color-cold-gray-150","color-divider-hover":"color-cold-gray-100","color-divider-secondary":"color-cold-gray-100","color-active-hover-text":"color-cold-gray-900","color-alert-text":"color-cold-gray-900","color-border-table":"color-cold-gray-100","color-brand":"color-tv-blue-500","color-brand-active":"color-tv-blue-700","color-brand-hover":"color-tv-blue-600","color-chart-page-bg":"color-cold-gray-150","color-common-tooltip-bg":"color-cold-gray-800","color-danger":"color-ripe-red-400","color-danger-hover":"color-ripe-red-500","color-danger-active":"color-ripe-red-600","color-depthrenderer-stroke-style":"color-cold-gray-100","color-halal":"color-iguana-green-400","color-continuous":"color-cold-gray-500","color-tv-calculated-pair":"color-grapes-purple-400","color-highlight-new":"color-tan-orange-50","color-input-bg":"color-white","color-input-publish-bg":"color-white","color-link":"color-tv-blue-500","color-link-hover":"color-tv-blue-600","color-link-active":"color-tv-blue-700","color-list-nth-child-bg":"color-cold-gray-50","color-pane-bg":"color-white","color-pane-secondary-bg":"color-cold-gray-100","color-popup-menu-item-hover-bg":"color-cold-gray-100","color-popup-menu-separator":"color-cold-gray-150","color-primary-symbol":"color-sky-blue-500","color-screener-description":"color-cold-gray-650","color-success":"color-minty-green-500","color-success-hover":"color-minty-green-600","color-success-active":"color-minty-green-700","color-toolbar-button-text":"color-cold-gray-900","color-toolbar-button-text-hover":"color-cold-gray-900","color-toolbar-button-text-active":"color-tv-blue-500","color-toolbar-button-text-active-hover":"color-tv-blue-600","color-toolbar-button-background-hover":"color-cold-gray-100","color-toolbar-button-background-secondary-hover":"color-cold-gray-150","color-toolbar-button-background-active":"color-tv-blue-50","color-toolbar-button-background-active-hover":"color-tv-blue-100","color-toolbar-toggle-button-background-active":"color-tv-blue-500","color-toolbar-toggle-button-background-active-hover":"color-tv-blue-600","color-toolbar-toggle-button-icon":"color-cold-gray-200","color-toolbar-interactive-element-text-normal":"color-cold-gray-900","color-toolbar-opened-element-bg":"color-cold-gray-100","color-toolbar-divider-background":"color-cold-gray-150","color-popup-background":"color-white","color-popup-element-text":"color-cold-gray-900","color-popup-element-text-hover":"color-cold-gray-900","color-popup-element-background-hover":"color-cold-gray-100","color-popup-element-secondary-text":"color-cold-gray-500","color-popup-element-hint-text":"color-cold-gray-400","color-popup-element-text-active":"color-white","color-popup-element-background-active":"color-tv-blue-500","color-popup-element-toolbox-text":"color-cold-gray-500","color-popup-element-toolbox-text-hover":"color-cold-gray-900","color-popup-element-toolbox-text-active-hover":"color-tv-blue-200","color-popup-element-toolbox-background-hover":"color-cold-gray-150","color-popup-element-toolbox-background-active-hover":"color-tv-blue-700","color-tooltip-bg":"color-cold-gray-800","color-tv-dialog-caption":"color-cold-gray-650","color-tv-dropdown-item-hover-bg":"color-cold-gray-100","color-underlined-text":"color-cold-gray-550","color-widget-pages-bg":"color-white","color-warning":"color-tan-orange-500","color-growing":"color-minty-green-500","color-falling":"color-ripe-red-500","color-forex-icon":"color-cold-gray-750","color-list-item-active-bg":"color-tv-blue-400","color-list-item-hover-bg":"color-tv-blue-50","color-list-item-text":"color-cold-gray-800","color-price-axis-label-back":"color-cold-gray-150","color-price-axis-label-text":"color-cold-gray-650","color-price-axis-gear":"color-cold-gray-900","color-price-axis-gear-hover":"color-black","color-price-axis-highlight":"color-cold-gray-150","color-bid":"color-tv-blue-500","color-border":"color-cold-gray-150","color-border-chat-fields":"color-cold-gray-250","color-border-hover":"color-cold-gray-250","color-button-hover-bg":"color-cold-gray-150","color-depthrenderer-fill-style":"color-cold-gray-650","color-disabled-border-and-color":"color-cold-gray-150","color-disabled-input":"color-cold-gray-150","color-empty-container-message":"color-cold-gray-550","color-icons":"color-cold-gray-550","color-input-textarea-readonly":"color-cold-gray-650","color-input-placeholder-text":"color-cold-gray-350","color-item-active-blue":"color-tv-blue-50","color-item-hover-active-bg":"color-tv-blue-100","color-item-hover-bg":"color-tv-blue-100","color-item-hover-blue":"color-tv-blue-100","color-item-selected-blue":"color-tv-blue-50","color-item-active-text":"color-white","color-item-active-bg":"color-tv-blue-500","color-list-item":"color-cold-gray-550","color-news-highlight":"color-tv-blue-100","color-placeholder":"color-cold-gray-350","color-row-hover-active-bg":"color-cold-gray-100","color-sb-scrollbar-body-bg":"color-cold-gray-200","color-section-separator-border":"color-cold-gray-300","color-separator-table-chat":"color-cold-gray-150","color-tag-active-bg":"color-cold-gray-200","color-tag-hover-bg":"color-cold-gray-150","color-text-regular":"color-cold-gray-700","color-tv-button-checked":"color-cold-gray-550","color-scroll-bg":"color-cold-gray-400","color-scroll-border":"color-cold-gray-100","color-widget-border":"color-cold-gray-100","color-scroll-buttons-arrow":"color-white","color-control-intent-default":"color-cold-gray-200","color-control-intent-success":"color-minty-green-500","color-control-intent-primary":"color-tv-blue-500","color-control-intent-warning":"color-tan-orange-500","color-control-intent-danger":"color-ripe-red-500","color-goto-label-background":"color-cold-gray-800","color-pre-market":"color-tan-orange-600","color-pre-market-bg":"color-tan-orange-400","color-post-market":"color-tv-blue-500","color-post-market-bg":"color-tv-blue-400","color-market-open":"color-minty-green-500","color-market-open-bg":"color-minty-green-400","color-market-closed":"color-cold-gray-400","color-market-holiday":"color-cold-gray-400","color-market-expired":"color-ripe-red-500","color-invalid-symbol":"color-ripe-red-400","color-invalid-symbol-hover":"color-ripe-red-700","color-delisted-symbol":"color-ripe-red-600","color-delisted-symbol-hover":"color-ripe-red-800","color-replay-mode":"color-tv-blue-500","color-replay-mode-point-select":"color-cold-gray-350","color-replay-mode-icon":"color-white","color-replay-mode-hover":"color-tv-blue-600","color-notaccurate-mode":"color-berry-pink-600","color-delay-mode":"color-tan-orange-700","color-delay-mode-bg":"color-tan-orange-400","color-eod-mode":"color-grapes-purple-700","color-eod-mode-bg":"color-grapes-purple-400","color-data-problem":"color-ripe-red-600","color-data-problem-bg":"color-ripe-red-400","color-data-problem-hover":"color-ripe-red-700","color-list-item-bg-highlighted":"color-tv-blue-50","color-list-item-bg-selected":"color-tv-blue-100","color-list-item-bg-highlighted-hover":"color-tv-blue-100","color-list-item-bg-selected-hover":"color-tv-blue-200","color-screener-header-bg":"color-white","color-screener-header-bg-hover":"color-cold-gray-100","color-marker-flagged":"color-ripe-red-400","color-marker-flagged-hovered":"color-ripe-red-600","color-ask":"color-ripe-red-400","color-sell":"color-ripe-red-400","color-buy":"color-tv-blue-500","color-neutral":"color-cold-gray-550","color-pro":"color-minty-green-400","color-pro-hover":"color-minty-green-600","color-pro-plus":"color-tv-blue-500","color-pro-plus-hover":"color-tv-blue-600","color-pro-premium":"color-tan-orange-500","color-pro-premium-hover":"color-tan-orange-700","color-trial":"color-cold-gray-550","color-trial-hover":"color-cold-gray-550","color-mod":"color-ripe-red-400","color-mod-hover":"color-ripe-red-600","color-ad":"color-tan-orange-500","color-broker-featured":"color-minty-green-400","color-broker-featured-hover":"color-minty-green-600","color-alert-status-active":"color-minty-green-400","color-alert-status-stopped":"color-ripe-red-500","color-alert-status-triggered":"color-tan-orange-500","color-overlay":"color-cold-gray-400","color-search-button-hover":"color-cold-gray-150","color-boost-button-content-selected":"color-tv-blue-600","color-boost-button-content-hover":"color-cold-gray-900","color-boost-button-bg-hover":"color-cold-gray-150","color-boost-button-border-hover":"color-cold-gray-150","color-boost-button-border-default":"color-cold-gray-150","color-common-tooltip-text":"color-cold-gray-100","color-replay-data-mode":"color-ripe-red-400","color-legacy-success":"color-minty-green-300","color-collapse-tabs-border":"color-cold-gray-100","color-site-widget-hover":"color-cold-gray-50","color-attention":"color-banana-yellow-700","color-x-twitter-content":"color-cold-gray-900","color-card-border":"color-cold-gray-150","color-card-border-hover":"color-cold-gray-300","color-background-special-primary":"color-white","color-stroke-special-primary":"color-cold-gray-150","color-selection-bg":"color-tv-blue-100","color-default-gray":"color-cold-gray-550","color-featured-broker-badge-bg":"color-cold-gray-900","color-featured-broker-badge-bg-hover":"color-cold-gray-800","color-featured-broker-badge-text":"color-white"}');
            var l = r(650151);
            const c = { ...t,
                    ...n
                },
                i = {},
                a = Object.keys(c).length,
                s = /^#(([a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i;

            function _(e, o = [], r = c) {
                const t = r[e];
                if (!t) return null;
                if (s.test(t)) return t;
                const n = t;
                return o.push(e), -1 !== o.indexOf(n) ? (console.warn("Colors definitions cycled"), t) : o.length > a ? (console.warn("Too many variables-link in HEX-color search: " + o[0]), null) : _(n, o, r)
            }
            Object.keys(c).forEach((e => {
                const o = _(e);
                i[e] = (0, l.ensureNotNull)(o)
            }));
            const u = i;

            function d(e, o = u) {
                const r = o[e];
                if (!r) {
                    if (s.test(e)) return e;
                    throw new Error("No such color " + e)
                }
                return r
            }
        },
        778016: (e, o, r) => {
            r.d(o, {
                canUpgradePlan: () => f,
                enabled: () => a,
                getConfig: () => p,
                getExpertPlansWithFeature: () => d,
                getProPlansWithFeature: () => _
            });
            var t = r(650151),
                n = r(105291),
                l = r(874851),
                c = r(638456),
                i = r(549358);

            function a(e, o, r) {
                let t = window.user;
                r && (t = r);
                const n = p(e, o, t);
                if (!n) return !1;
                if (n.disable_on_trial && (!t || t.is_trial)) return !1;
                const l = n.disable_on_lite_plan;
                if (l && t.is_lite_plan) {
                    if ("all" === l) return !1;
                    if ("exclude_mobile" === l && !c.CheckMobile.any()) return !1
                }
                return !0
            }
            const s = {
                free: "free",
                pro: "pro",
                pro_trial: "pro_trial",
                pro_realtime: "pro_realtime",
                pro_realtime_trial: "pro_realtime_trial",
                pro_premium: "pro_premium",
                pro_premium_trial: "pro_premium_trial"
            };

            function _(e) {
                return Object.values(s).filter((o => {
                    const r = p(e, (0, i.getProductForTrial)(o));
                    return r && !((0, i.isTrialProduct)(o) && r.disable_on_trial)
                }))
            }
            const u = {
                pro_expert: "pro_expert",
                pro_premium_expert: "pro_premium_expert"
            };

            function d(e) {
                return Object.values(u).filter((o => {
                    const r = p(e, o);
                    return r && !((0, i.isTrialProduct)(o) && r.disable_on_trial)
                }))
            }

            function g(e) {
                const o = n[e];
                return o ? o.extends ? Object.assign({}, g(o.extends), o) : o : null
            }

            function p(e, o, r) {
                var t, n;
                let c = g(o || (null !== (t = function(e) {
                    let o = window.user;
                    "undefined" != typeof window && window.user && (o = window.user), e && (o = e);
                    let r = (null == o ? void 0 : o.pro_plan) || "free";
                    return "free" !== r && !(0, i.isTrialProduct)(r) || (r = (0, i.getProductForTrial)(r)), r
                }(r)) && void 0 !== t ? t : ""));
                if (!c) return null;
                const a = null === (n = window.TradingView) || void 0 === n ? void 0 : n.widgetCustomer;
                return a && l[a] && (c = Object.assign({}, c, l[a])), c && c[e] || null
            }

            function f() {
                var e, o, r, n;
                const l = null !== (o = null === (e = p("BACKEND_CONNECTIONS")) || void 0 === e ? void 0 : e.limit) && void 0 !== o ? o : 0,
                    c = (0, t.ensureDefined)(window.pro),
                    i = c.getProductsByType(c.PRODUCT_TYPES.pro_plan);
                for (const e of i)
                    if ((null !== (n = null === (r = p("BACKEND_CONNECTIONS", (0, t.ensureDefined)(e.id))) || void 0 === r ? void 0 : r.limit) && void 0 !== n ? n : 0) > l) return !0;
                return !1
            }
        },
        849204: (e, o, r) => {
            r.r(o), r.d(o, {
                LogoSize: () => t,
                LogoUrlResolver: () => c,
                getLogoUrlResolver: () => a
            });
            var t, n = r(650151),
                l = r(588948);
            ! function(e) {
                e[e.Medium = 0] = "Medium", e[e.Large = 1] = "Large"
            }(t || (t = {}));
            class c {
                constructor(e) {
                    (0, n.assert)("" !== e, "S3 base url must be a non-empty string"), this._baseUrl = e
                }
                getSymbolLogoUrl(e, o) {
                    switch ((0, n.assert)("" !== e, "logo id must be a non-empty string"), o) {
                        case t.Medium:
                            return this._baseUrl + `${e}.svg`;
                        case t.Large:
                            return this._baseUrl + `${e}--big.svg`
                    }
                }
                getCountryFlagUrl(e, o) {
                    return this.getSymbolLogoUrl("country/" + e, o)
                }
                getCryptoLogoUrl(e, o) {
                    return this.getSymbolLogoUrl("crypto/" + e, o)
                }
                getProviderLogoUrl(e, o) {
                    return this.getSymbolLogoUrl("provider/" + e, o)
                }
                getSourceLogoUrl(e, o) {
                    return this.getSymbolLogoUrl("source/" + e, o)
                }
                getBlockchainContractLogoUrl(e, o) {
                    return this.getSymbolLogoUrl("blockchain/" + e, o)
                }
            }
            let i;

            function a() {
                return function() {
                    if (!i) {
                        const e = (0, l.getInitData)(),
                            o = e.settings ? e.settings.S3_LOGO_SERVICE_BASE_URL : "";
                        i = new c(o)
                    }
                    return i
                }()
            }
        },
        314802: (e, o, r) => {
            r.d(o, {
                isOnMobileAppPage: () => n,
                urlWithMobileAppParams: () => l
            });
            var t = r(181706);

            function n(e, o = !1) {
                const {
                    searchParams: r
                } = new URL(String(location));
                let n = "true" === r.get("mobileapp_new"),
                    l = "true" === r.get("mobileapp");
                if (!o) {
                    const e = t.get("tv_app") || "";
                    n || (n = ["android", "android_nps"].includes(e)), l || (l = "ios" === e)
                }
                return !("new" !== e && "any" !== e || !n) || !("new" === e || !l)
            }

            function l(e, o = !1) {
                if (n("new", o)) {
                    const o = new URL(e, location.href);
                    o.searchParams.set("mobileapp_new", "true"), e = o.toString()
                }
                if (n("old", o)) {
                    const o = new URL(e, location.href);
                    o.searchParams.set("mobileapp", "true"), e = o.toString()
                }
                return e
            }
        },
        659863: (e, o, r) => {
            r.r(o), r.d(o, {
                qaGlobals: () => t
            });
            const t = new class {
                constructor(e, o) {
                    this._test = e[o] = {}
                }
                provide(e, o) {
                    this._test[e] = o
                }
            }(window, "qaGlobals")
        },
        519073: (e, o, r) => {
            function t(e) {
                return void 0 !== e && e.includes("crypto")
            }

            function n(e, o) {
                return "stock" === e && o.includes("right") || "right" === e
            }

            function l(e, o) {
                return c(e, o) || "stock" === e && o.includes("fund") && o.includes("etf") || "structured" === e && o.includes("etn")
            }

            function c(e, o) {
                return "fund" === e && o.includes("etf")
            }

            function i(e, o) {
                return "bond" === e && o.includes("corporate")
            }

            function a(e) {
                return "economic" === e
            }

            function s(e, o, r) {
                return t(o) && "spot" === e && "USD" === r
            }

            function _(e, o) {
                return "spot" === e && o.includes("cryptoasset")
            }

            function u(e, o, r) {
                return Boolean("bond" === e && r && o.includes("government"))
            }

            function d(e) {
                var o;
                return Boolean(null === (o = e.typespecs) || void 0 === o ? void 0 : o.includes("yield"))
            }

            function g(e, o) {
                return "stock" === e && o.includes("common") || "stock" === e && o.includes("preferred") || "stock" === e && o.includes("forward") || "stock" === e && o.includes("bonus") || "stock" === e && o.includes("cfd") || "fund" === e && o.includes("mutual") || "fund" === e && o.includes("unit") || "fund" === e && o.includes("trust") || "fund" === e && o.includes("reit") || "fund" === e && o.includes("etn") || "fund" === e && o.includes("closedend") || "bond" === e && o.includes("convertible") || "dr" === e || "warrant" === e || "structured" === e && !o.includes("etn")
            }

            function p(e) {
                var o;
                return null !== (o = null == e ? void 0 : e.includes("discontinued")) && void 0 !== o && o
            }
            r.d(o, {
                hasCryptoTypespec: () => t,
                isCorporateBond: () => i,
                isCryptoSpotUsd: () => s,
                isCryptoassetSpot: () => _,
                isEconomicSymbol: () => a,
                isEtf: () => l,
                isFundEtf: () => c,
                isGovernmentBenchmarkBond: () => u,
                isRight: () => n,
                isStocksSymbol: () => g,
                isSymbolDelisted: () => p,
                isYield: () => d
            })
        },
        779923: (e, o, r) => {
            async function t(e, o) {
                const t = await Promise.all([r.e(87136), r.e(75816), r.e(46445), r.e(93703), r.e(21356), r.e(62093), r.e(44524), r.e(53799), r.e(46489), r.e(74600), r.e(25480), r.e(88015), r.e(30614), r.e(29614), r.e(62526), r.e(38890)]).then(r.bind(r, 872462));
                return t.showSimpleDialog(e, t.renameModule, o)
            }
            async function n(e, o) {
                const t = await Promise.all([r.e(87136), r.e(75816), r.e(46445), r.e(93703), r.e(21356), r.e(62093), r.e(44524), r.e(53799), r.e(46489), r.e(74600), r.e(25480), r.e(88015), r.e(30614), r.e(29614), r.e(62526), r.e(38890)]).then(r.bind(r, 872462));
                return t.showSimpleDialog(e, t.confirmModule, o)
            }
            async function l(e, o) {
                const t = await Promise.all([r.e(87136), r.e(75816), r.e(46445), r.e(93703), r.e(21356), r.e(62093), r.e(44524), r.e(53799), r.e(46489), r.e(74600), r.e(25480), r.e(88015), r.e(30614), r.e(29614), r.e(62526), r.e(38890)]).then(r.bind(r, 872462));
                return t.showSimpleDialog(e, t.warningModule, o)
            }
            r.r(o), r.d(o, {
                showConfirm: () => n,
                showRename: () => t,
                showWarning: () => l
            })
        },
        176637: (e, o, r) => {
            r.r(o), r.d(o, {
                QUOTE_FIELDS: () => l,
                QUOTE_FIELDS_CACHE: () => c,
                QuoteCache: () => n
            });
            var t = r(650151);
            class n {
                constructor(e) {
                    this._cache = new Map, this._fields = [...e.fields]
                }
                update(e, o, r) {
                    const n = (0, t.ensureDefined)(e.symbolname);
                    if (this._cache.has(n) || this._cache.set(n, {
                            symbolname: n,
                            status: e.status,
                            values: {}
                        }), "error" === e.status) return;
                    const l = (0, t.ensureDefined)(this._cache.get(n));
                    l.status = e.status;
                    for (const t of this._fields) o.has(t) && (r || void 0 !== e.values[t]) && (l.values[t] = e.values[t])
                }
                get(e) {
                    var o;
                    return null !== (o = this._cache.get(e)) && void 0 !== o ? o : null
                }
                fields() {
                    return this._fields
                }
            }
            const l = new Set(["pro_name", "base_name", "logoid", "currency-logoid", "base-currency-logoid", "source-logoid", "short_name", "web_site_url", "pro_perm", "timezone", "current_session", "last_price", "lp_time", "prev_close_price", "open_price", "high_price", "low_price", "price_52_week_high", "price_52_week_low", "ask", "ask_size", "bid", "bid_size", "rch", "rchp", "rtc", "rtc_time", "data_frequency", "reference-last-period-start", "business_description", "web_site_url", "figi", "number_of_employees", "float_shares_outstanding", "earnings_release_next_calendar_date", "root", "description", "exchange", "listed_exchange", "type", "country_code", "provider_id", "sector", "typespecs", "visible-plots-set", "industry", "currency_id", "last_price", "fractional", "minmov", "minmove2", "pricescale", "variable_tick_size", "change", "change_percent", "volume", "average_volume", "market_cap_basic", "market_cap_calc", "total_revenue", "earnings_per_share_basic_ttm", "price_earnings_ttm", "beta_1_year", "dps_common_stock_prim_issue_fy", "dividends_yield", "earnings_release_next_date", "earnings_per_share_forecast_next_fq", "earnings_publication_type_next_fq", "earnings_release_date", "earnings_per_share_fq", "earnings_per_share_forecast_fq", "forecast_raw", "last_release_date", "next_release_date", "reference_last_period", "fundamental_currency_code", "number_of_employees", "web_site_url", "business_description", "founded", "ceo", "float_shares_outstanding", "total_shares_outstanding", "dividend_payout_ratio_ttm", "dividends_yield_current", "dividend_ex_date_upcoming", "dividend_amount_upcoming", "dividend_amount_recent", "dividend_ex_date_recent", "total_revenue_fq_h", "total_revenue_fy_h", "net_income_fy_h", "net_income_fq_h", "total_assets_fy_h", "total_assets_fq_h", "total_liabilities_fy_h", "total_liabilities_fq_h", "cash_f_operating_activities_fy_h", "cash_f_operating_activities_fq_h", "cash_f_investing_activities_fy_h", "cash_f_investing_activities_fq_h", "cash_f_financing_activities_fy_h", "cash_f_financing_activities_fq_h", "fiscal_period_fy_h", "fiscal_period_fq_h", "fiscal_period_fh_h", "earnings_release_date_fq_h", "earnings_release_next_date_fq", "earnings_per_share_forecast_next_fq", "earnings_per_share_forecast_fq_h", "earnings_per_share_fq_h", "earnings_fiscal_period_fq_h", "next_earnings_fiscal_period_fq", "is_next_earnings_release_date_estimated", "symbol-primaryname", "currency_code", "rates_mc", "rates_fy", "rates_ttm", "measure", "value_unit_id", "value-unit-id", "update_mode", "language", "local_description", "short_description", "source", "source2", "format", "recommendation_mark", "last_report_frequency", "price_target_estimates_num", "price_target_average", "update_mode_seconds", "recommendation_total", "recommendation_buy", "recommendation_over", "recommendation_hold", "recommendation_under", "recommendation_sell", "recommendation_total", "price_target_high", "price_target_low", "rates_pt", "rates_pt", "total_revenue_fy_h", "total_revenue_fq_h", "total_revenue_fh_h", "net_income_fy_h", "net_income_fq_h", "net_income_fh_h", "total_assets_fy_h", "total_assets_fq_h", "total_assets_fh_h", "total_liabilities_fy_h", "total_liabilities_fq_h", "total_liabilities_fh_h", "cash_f_operating_activities_fy_h", "cash_f_operating_activities_fq_h", "cash_f_operating_activities_fh_h", "cash_f_investing_activities_fy_h", "cash_f_investing_activities_fq_h", "cash_f_investing_activities_fh_h", "cash_f_financing_activities_fy_h", "cash_f_financing_activities_fq_h", "cash_f_financing_activities_fh_h", "fiscal_period_fy", "fiscal_period_fq", "fiscal_period_fh", "earnings_release_date_fq_h", "earnings_release_date_fy_h", "earnings_release_date_fh_h", "earnings_release_next_date_fq", "earnings_release_next_date_fy", "earnings_release_next_date_fh", "earnings_release_next_time", "earnings_release_time", "is_next_earnings_release_date_estimated", "earnings_per_share_forecast_next_fq", "earnings_per_share_forecast_next_fy", "earnings_per_share_forecast_next_fh", "earnings_per_share_forecast_fq_h", "earnings_per_share_forecast_fy_h", "earnings_per_share_forecast_fh_h", "earnings_per_share_fq_h", "earnings_per_share_fy_h", "earnings_per_share_fh_h", "earnings_fiscal_period_fq_h", "earnings_fiscal_period_fy_h", "earnings_fiscal_period_fh_h", "next_earnings_fiscal_period_fq", "next_earnings_fiscal_period_fy", "next_earnings_fiscal_period_fh", "revenue_fq_h", "revenue_fy_h", "revenue_fh_h", "revenue_forecast_fq_h", "revenue_forecast_fy_h", "revenue_forecast_fh_h", "revenue_forecast_next_fq", "revenue_forecast_next_fy", "revenue_forecast_next_fh", "revenue_seg_by_business_h", "revenue_seg_by_region_h", "dividend_payout_ratio_ttm", "dividends_yield_current", "dividend_ex_date_upcoming", "dividend_amount_upcoming", "dividend_amount_recent", "dividend_ex_date_recent", "dividend_amount_h", "total_revenue_fy", "total_revenue_fq", "total_revenue_fh", "gross_profit_fy", "gross_profit_fq", "gross_profit_fh", "ebitda_fy", "ebit_fy", "net_income_fy", "net_income_fq", "net_income_fh", "total_debt_fy_h", "total_debt_fq_h", "total_debt_fh_h", "free_cash_flow_fy_h", "free_cash_flow_fq_h", "free_cash_flow_fh_h", "cash_n_equivalents_fy_h", "cash_n_equivalents_fq_h", "cash_n_equivalents_fh_h", "total_current_assets_fy", "total_current_assets_fq", "total_current_assets_fh", "total_current_liabilities_fy", "total_current_liabilities_fq", "total_current_liabilities_fh", "total_non_current_assets_fy", "total_non_current_assets_fq", "total_non_current_assets_fh", "total_non_current_liabilities_fy", "total_non_current_liabilities_fq", "total_non_current_liabilities_fh", "loans_net_fy", "loans_net_fy_h", "loans_net_fq_h", "loans_net_fh_h", "total_deposits_fy", "total_deposits_fy_h", "total_deposits_fq_h", "total_deposits_fh_h", "loan_loss_allowances_fy", "loan_loss_allowances_fy_h", "loan_loss_allowances_fq_h", "loan_loss_allowances_fh_h", "reserve_to_total_capital_fy_h", "reserve_to_total_capital_fq_h", "reserve_to_total_capital_fh_h", "unearned_premium_to_total_capital_fy_h", "unearned_premium_to_total_capital_fq_h", "unearned_premium_to_total_capital_fh_h", "insurance_reserves_fy_h", "insurance_reserves_fq_h", "insurance_reserves_fh_h", "policy_claims_fy_h", "policy_claims_fq_h", "policy_claims_fh_h", "premiums_earned_fy_h", "premiums_earned_fq_h", "premiums_earned_fh_h", "price_earnings_fq_h", "price_earnings_fy_h", "price_earnings_fh_h", "price_sales_fq_h", "price_sales_fy_h", "price_sales_fh_h", "diluted_net_income_ttm", "total_revenue_ttm", "price_earnings_current", "price_sales_current", "isin-displayed", "interest_income_fy_h", "interest_income_fq_h", "interest_income_fh_h", "non_interest_income_fy_h", "non_interest_income_fq_h", "non_interest_income_fh_h", "website", "doc", "explorer", "sources", "contracts", "crypto_common_categories", "crypto_asset", "community", "dividends_availability", "earnings_availability", "financials_availability", "etf_asset_type_exposure", "etf_region_exposure", "top_holdings", "unit-id", "options-info", "interest_income_fy", "interest_income_fq", "interest_income_fh", "non_interest_income_fy", "non_interest_income_fq", "non_interest_income_fh", "interest_expense_fy", "interest_expense_fq", "interest_expense_fh", "loan_loss_provision_fy", "loan_loss_provision_fq", "loan_loss_provision_fh", "non_interest_expense_fy", "non_interest_expense_fq", "non_interest_expense_fh", "non_oper_income_fy", "non_oper_income_fq", "non_oper_income_fh", "unusual_expense_inc_fy", "unusual_expense_inc_fq", "unusual_expense_inc_fh", "pretax_income_fy", "pretax_income_fq", "pretax_income_fh", "income_tax_fy", "income_tax_fq", "income_tax_fh", "after_tax_other_income_fy", "after_tax_other_income_fq", "after_tax_other_income_fh", "total_non_oper_income_fy", "total_non_oper_income_fq", "total_non_oper_income_fh", "oper_income_fy", "oper_income_fq", "oper_income_fh", "operating_expenses_fy", "operating_expenses_fq", "operating_expenses_fh", "cost_of_goods_fy", "cost_of_goods_fq", "cost_of_goods_fh", "equity_in_earnings_fy", "equity_in_earnings_fq", "equity_in_earnings_fh", "minority_interest_exp_fy", "minority_interest_exp_fq", "minority_interest_exp_fh", "discontinued_operations_fy", "discontinued_operations_fq", "discontinued_operations_fh", "front_contract", "pointvalue", "unit_id", "expiration", "aum", "asset_class", "focus", "expense_ratio", "launch_date", "issuer", "brand", "homepage", "index_tracked", "actively_managed", "fund_view_mode", "common_equity_tier1_ratio_fy_h", "common_equity_tier1_ratio_fq_h", "common_equity_tier1_ratio_fh_h", "tier1_capital_ratio_fy_h", "tier1_capital_ratio_fq_h", "tier1_capital_ratio_fh_h", "total_capital_ratio_fy_h", "total_capital_ratio_fq_h", "total_capital_ratio_fh_h", "preferred_stock_carrying_value_fh", "preferred_stock_carrying_value_fq", "total_debt_fq", "minority_interest_fh", "minority_interest_fq", "cash_n_short_term_invest_fq", "cash_n_due_f_banks_fh", "cash_n_due_f_banks_fq", "enterprise_value_current", "etf_holdings_count", "contract-description", "reference-last-period", "all_time_high", "all_time_high_day", "all_time_low", "all_time_low_day", "outstanding_amount", "nominal_value", "denom_min", "current_coupon", "coupon_type_general", "coupon_frequency", "yield_to_maturity", "maturity-date", "days_to_maturity", "bond_issuer", "issue_date", "bond_issuer_stock_symbol", "total_issued_amount", "paid_amount", "bond_snp_rating_lt_h", "placement_type", "duration_type", "maturity_type", "offer_type", "redemption_type", "conversion_option", "sinking_fund", "ownership_form", "daily-summary-ast"]),
                c = new n({
                    fields: l
                })
        },
        641066: (e, o, r) => {
            r.d(o, {
                numOfDecimalPlaces: () => n
            });
            var t = r(960521);

            function n(e) {
                return (new t.Big(e).toFixed().split(".")[1] || "").length
            }
        },
        296244: (e, o, r) => {
            r.d(o, {
                getMinTick: () => s,
                getMinTickData: () => a,
                makeVariableMinTickData: () => u
            });
            var t = r(960521),
                n = r(150335),
                l = r(124829),
                c = r(641066);

            function i(e) {
                return e ? (0, t.Big)(e.minMove).div(e.priceScale).toNumber() : NaN
            }

            function a(e) {
                const {
                    minTick: o,
                    price: r,
                    variableMinTickData: t,
                    shouldCheckForEquality: l
                } = e, c = (0, n.isNumber)(o) ? _(o) : o;
                return void 0 === t ? c : function(e, o, r = !1) {
                    for (let t = 0; t < o.length; t++) {
                        if (e < o[t].price) return o[t].minTick;
                        if (r && e === o[t].price) return o[t].minTick
                    }
                    return o[o.length - 1].minTick
                }(r, t, l)
            }

            function s(e) {
                return i(a(e))
            }

            function _(e) {
                const o = (0, c.numOfDecimalPlaces)(e),
                    r = Math.pow(10, o);
                return {
                    priceScale: r,
                    minMove: (0, t.Big)(e).mul(r).toNumber()
                }
            }

            function u(e, o) {
                var r, c, a, s, u;
                const d = [{
                    minTick: (0, n.isNumber)(e) ? _(e) : e,
                    price: 1 / 0,
                    maxIndex: 1 / 0
                }];
                try {
                    const e = o.split(" ").map(((e, o) => (0, l.isEven)(o) ? function(e) {
                        const o = Number(e);
                        if (Number.isFinite(o)) return _(o); {
                            const o = e.split("/");
                            if (o.length < 2 || o.length > 3) throw new Error(`Unexpected mintick: ${e}`);
                            const r = Number(o[1]),
                                t = Number(o[0]);
                            if (!Number.isFinite(r) || !Number.isFinite(t)) throw new Error(`Unexpected mintick: ${e}`);
                            const n = 3 === o.length ? Number(o[2]) : void 0;
                            if (void 0 !== n && !Number.isFinite(n)) throw new Error(`Unexpected mintick: ${e}`);
                            const l = {
                                priceScale: r,
                                minMove: t
                            };
                            return void 0 !== n && (l.minMove2 = n), l
                        }
                    }(e) : function(e) {
                        const o = Number(e);
                        if (Number.isNaN(o)) throw new Error(`Unexpected price limit: ${e}`);
                        return o
                    }(e)));
                    if ((0, l.isEven)(e.length)) throw new Error("Theme must not be event number of elements");
                    const n = [];
                    for (let o = 0; o < e.length; o += 2) {
                        const l = null !== (r = e[o + 1]) && void 0 !== r ? r : 1 / 0,
                            _ = null !== (a = null === (c = n[n.length - 1]) || void 0 === c ? void 0 : c.price) && void 0 !== a ? a : 0,
                            d = null !== (u = null === (s = n[n.length - 1]) || void 0 === s ? void 0 : s.maxIndex) && void 0 !== u ? u : 0,
                            g = l === 1 / 0 ? 1 / 0 : new t.Big(l).minus(_).div(i(e[o])).plus(d).toNumber();
                        n.push({
                            minTick: e[o],
                            price: l,
                            maxIndex: g
                        })
                    }
                    return n
                } catch (e) {
                    return d
                }
            }
        },
        375397: (e, o, r) => {
            r.d(o, {
                WatchedValue: () => a
            });
            var t = r(805578),
                n = r(692558),
                l = r(728832);
            const c = (0, n.getLogger)("Common.WatchedValue");

            function i(e) {
                c.logError(`${e&&(e.stack||e.message)}`)
            }
            class a {
                constructor(...e) {
                    this._listeners = [], e.length > 0 && (this._value = e[0])
                }
                destroy() {
                    this.unsubscribe()
                }
                value() {
                    return this._owner ? this._owner._value : this._value
                }
                setValue(e, o) {
                    const r = this._owner ? this._owner : this;
                    if (r.writeLock) return;
                    const t = r._value === e || Number.isNaN(r._value) && Number.isNaN(e);
                    if (!o && t && r.hasOwnProperty("_value")) return;
                    r._value = e;
                    const n = r._listeners.slice();
                    let l = 0;
                    for (let o = 0; o < n.length; o++) {
                        n[o].once && (r._listeners.splice(o - l, 1), l++);
                        try {
                            n[o].cb(e)
                        } catch (e) {
                            i(e)
                        }
                    }
                }
                deleteValue() {
                    this.setValue(void 0)
                }
                subscribe(e, o) {
                    if ("function" != typeof e) throw new TypeError("callback must be a function");
                    const r = !!o && !!o.once,
                        t = !!o && !!o.callWithLast,
                        n = this._owner ? this._owner : this;
                    if (t && n.hasOwnProperty("_value")) {
                        try {
                            e(n._value)
                        } catch (e) {
                            i(e)
                        }
                        if (r) return
                    }
                    n._listeners.push({
                        cb: e,
                        owner: this,
                        once: !!o && !!o.once
                    })
                }
                unsubscribe(e) {
                    const o = this._owner ? this._owner : this;
                    void 0 === e && (e = null);
                    const r = o._listeners;
                    for (let t = r.length; t--;) r[t].owner !== this && o !== this || r[t].cb !== e && null !== e || r.splice(t, 1)
                }
                readonly() {
                    if (this._readonlyInstance) return this._readonlyInstance;
                    const e = {
                        subscribe: this.subscribe.bind(this),
                        unsubscribe: this.unsubscribe.bind(this),
                        value: this.value.bind(this),
                        when: this.when.bind(this),
                        ownership: this.ownership.bind(this),
                        spawnOwnership: this.spawnOwnership.bind(this),
                        weakReference: this.weakReference.bind(this),
                        spawn: e => this.spawn(e).readonly(),
                        destroy: this.destroy.bind(this)
                    };
                    return this._readonlyInstance = e, e
                }
                spawn(e) {
                    return new s(this._owner || this, e)
                }
                when(e) {
                    (0, l.callWhen)(this, (e => Boolean(e)), (() => {
                        try {
                            e(this.value())
                        } catch (e) {
                            i(e)
                        }
                    }))
                }
                assertNoSubscriptions() {
                    0
                }
                ownership() {
                    return (0, t.ownership)(this)
                }
                spawnOwnership() {
                    return (0, t.ownership)(this.spawn())
                }
                weakReference() {
                    return (0, t.weakReference)(this)
                }
            }
            class s extends a {
                constructor(e, o) {
                    super(), delete this._listeners, this._owner = e, this._onDestroy = o
                }
                destroy() {
                    var e;
                    try {
                        null === (e = this._onDestroy) || void 0 === e || e.call(this)
                    } catch (e) {
                        i(e)
                    }
                    super.destroy()
                }
                readonly() {
                    return super.readonly()
                }
            }
        },
        574313: (e, o, r) => {
            r.d(o, {
                numDependencyFormatter: () => l,
                numberToStringWithLeadingZero: () => n
            });
            var t = r(124829);

            function n(e, o) {
                if (!(0, t.isNumber)(e)) return "n/a";
                if (!(0, t.isInteger)(o)) throw new TypeError("invalid length");
                if (o < 0 || o > 24) throw new TypeError("invalid length");
                if (0 === o) return e.toString();
                return ("0000000000000000" + e.toString()).slice(-o)
            }

            function l(e) {
                const o = new Map;
                return r => {
                    const t = null != r ? r : -1;
                    let n = o.get(t);
                    return n || (n = e(r), o.set(t, n)), n
                }
            }
        },
        397566: (e, o, r) => {
            r.d(o, {
                NumericFormatter: () => l
            });
            var t = r(676323),
                n = r(96900);
            class l {
                constructor(e = {}) {
                    this._options = e
                }
                format(e, o) {
                    if (!Number.isFinite(e)) return String(e);
                    const {
                        ignoreLocaleNumberFormat: r,
                        precision: c,
                        minPrecision: i
                    } = this._options, a = (0, n.getNumberFormat)(r || (null == o ? void 0 : o.ignoreLocaleNumberFormat));
                    return void 0 === c ? l._formatNoEImpl(e, a, c, i) : (0, t.formatNumber)(e, a, c, void 0, i)
                }
                parse(e, o) {
                    const {
                        ignoreLocaleNumberFormat: r,
                        precision: l
                    } = this._options, c = (0, n.getNumberFormat)(r || (null == o ? void 0 : o.ignoreLocaleNumberFormat));
                    let i = (0, t.parseNumber)(e, c);
                    return Number.isFinite(i) ? (l && (i = +i.toFixed(l)), {
                        res: !0,
                        value: i
                    }) : {
                        res: !1
                    }
                }
                static formatNoE(e, o) {
                    return this._formatNoEImpl(e, o)
                }
                static _formatNoEImpl(e, o, r, n) {
                    return Number.isFinite(e) ? (o = null != o ? o : {
                        groupingSeparator: "",
                        decimalSign: "."
                    }, (0, t.formatNumber)(e, o, r, !0, n)) : String(e)
                }
            }
        },
        142567: (e, o, r) => {
            r.d(o, {
                PercentageFormatter: () => l
            });
            var t = r(735211),
                n = r(881025);
            class l extends t.PriceFormatter {
                constructor(e = {}) {
                    void 0 !== e.decimalPlaces && (e.priceScale = Math.pow(10, e.decimalPlaces)), super(e), this.type = "percentage"
                }
                state() {
                    return { ...super.state(),
                        percent: !0
                    }
                }
                parse(e, o) {
                    return e = e.replace("%", ""), super.parse(e, o)
                }
                format(e, o = {}) {
                    const {
                        useRtlFormat: r = !0
                    } = o, t = super.format(e, { ...o,
                        useRtlFormat: !1
                    }) + "%";
                    return r ? (0, n.forceLTRStr)(t) : t
                }
                static serialize(e) {
                    return e.state()
                }
                static deserialize(e) {
                    return new l(e)
                }
            }
        },
        702598: (e, o, r) => {
            r.d(o, {
                fetch: () => n
            });
            const t = (0, r(338619).getLogger)("Fetch");

            function n(e, o, r = {}) {
                {
                    const {
                        logOnErrorStatus: n = !0,
                        logBodyOnError: l = !1
                    } = r;
                    o = o || {},
                        function(e) {
                            return new URL(e, document.baseURI).origin === location.origin
                        }(e) && (o.headers ? o.headers instanceof Headers || (o.headers = new Headers(o.headers)) : o.headers = new Headers, window.locale && o.headers.set("X-Language", window.locale), o.headers.set("X-Requested-With", "XMLHttpRequest")), void 0 === o.credentials && (o.credentials = "same-origin");
                    const c = window.fetch(e, o);
                    return c.then((r => {
                        if (!r.ok && n) {
                            let n = "";
                            o.method && (n += `${o.method.toUpperCase()} `), n += e, n += `. Status ${r.status}`, r.statusText && (n += `. ${r.statusText}`), r.headers.via && (n += `. Via: ${r.headers.via}`), l && "string" == typeof o.body && (n += `. Body: ${o.body.slice(0,1024)}`), t.logError(n)
                        }
                        return r
                    }), (r => {
                        if (r && "AbortError" === r.name) return;
                        let n = "";
                        o.method && (n += `${o.method.toUpperCase()} `), n += e, navigator.onLine ? n += `. ${r}` : n += ". User is offline.", t.logError(n)
                    })), c
                }
            }
        },
        338619: (e, o, r) => {
            r.r(o), r.d(o, {
                LOGLEVEL: () => t.LOGLEVEL,
                getLogHistory: () => t.getLogHistory,
                getLogLevel: () => t.getLogLevel,
                getLogger: () => t.getLogger,
                getRawLogHistory: () => t.getRawLogHistory,
                isHighRateEnabled: () => t.isHighRateEnabled,
                loggingOff: () => t.loggingOff,
                loggingOn: () => t.loggingOn,
                serializeLogHistoryEntry: () => t.serializeLogHistoryEntry,
                setLogLevel: () => t.setLogLevel
            });
            var t = r(692558)
        },
        776456: (e, o, r) => {
            var t;
            r.d(o, {
                    BillingCycle: () => t
                }),
                function(e) {
                    e.Monthly = "m", e.ThreeMonths = "3m", e.OneYear = "y", e.TwoYears = "2y"
                }(t || (t = {}))
        },
        549358: (e, o, r) => {
            r.r(o), r.d(o, {
                CUSTOM_SUFFIX: () => i,
                EA_SUFFIX: () => c,
                TRIAL_SUFFIX: () => l,
                billingCycleToMonth: () => x,
                billingCycleToTimeUnit: () => a,
                billingPeriodText: () => u,
                countDiscountByBillingCycle: () => v,
                countPriceIncludeExtraDays: () => w,
                floor0: () => E,
                getDiscountFromEarlyAccess: () => f,
                getDiscountProductId: () => h,
                getPlanName: () => D,
                getProductForTrial: () => p,
                getReadableCycle: () => s,
                getReadableNumericCycle: () => _,
                getRelativeAmountOfDaysFromBillingCycle: () => b,
                humanizeCardPlan: () => y,
                humanizeProPlan: () => m,
                isEarlyAccess: () => d,
                isOldUser: () => N,
                isTrialProduct: () => g,
                round0: () => F,
                round1or0: () => q,
                round2: () => k,
                round2or0: () => C,
                roundMinimal: () => B
            });
            r(466281);
            var t = r(444372),
                n = r(776456);
            const l = "_trial",
                c = "_discount",
                i = "_custom";

            function a(e) {
                return {
                    y: t.t(null, {
                        plural: "years",
                        count: 1
                    }, r(993205)),
                    m: t.t(null, {
                        plural: "months",
                        count: 1
                    }, r(898393)),
                    "3m": t.t(null, void 0, r(81277)),
                    "2y": t.t(null, void 0, r(514225))
                }[e]
            }

            function s(e) {
                return {
                    m: t.t(null, void 0, r(173039)),
                    y: t.t(null, void 0, r(317310)),
                    "3m": t.t(null, void 0, r(820877)),
                    "2y": t.t(null, void 0, r(140911))
                }[e] || ""
            }

            function _(e) {
                return {
                    [n.BillingCycle.Monthly]: t.t(null, void 0, r(173039)),
                    [n.BillingCycle.OneYear]: t.t(null, void 0, r(744479)),
                    [n.BillingCycle.ThreeMonths]: t.t(null, void 0, r(820877)),
                    [n.BillingCycle.TwoYears]: t.t(null, void 0, r(569727))
                }[e] || ""
            }

            function u(e) {
                var o;
                return null !== (o = {
                    y: t.t(null, void 0, r(967752)),
                    m: t.t(null, void 0, r(745504)),
                    "2y": t.t(null, void 0, r(328023))
                }[e]) && void 0 !== o ? o : ""
            }

            function d(e) {
                return /\d{0,2}_discount$/.test(e)
            }

            function g(e) {
                return new RegExp(l + "$").test(e)
            }

            function p(e) {
                return e.split(l)[0]
            }

            function f(e) {
                const o = e.match(new RegExp("^(d{0,2})" + c + "$"));
                return o ? +o[1] || 50 : 0
            }

            function h(e, o, r) {
                return `${e}_${o}${r}`
            }

            function m(e, o) {
                let n = e;
                switch (e) {
                    case "free":
                        n = "Basic";
                        break;
                    case "pro":
                        n = "Essential";
                        break;
                    case "pro_realtime":
                        n = "Plus";
                        break;
                    case "pro_premium":
                        n = "Premium";
                        break;
                    case "pro_expert":
                        n = "Expert";
                        break;
                    case "pro_premium_expert":
                        n = "Ultimate"
                }
                return o && (n += " " + t.t(null, void 0, r(233969))), n
            }

            function y(e) {
                let o = e;
                switch (e) {
                    case "pro":
                        o = "Essential";
                        break;
                    case "pro_realtime":
                        o = "Plus";
                        break;
                    case "pro_premium":
                        o = "Premium";
                        break;
                    case "pro_expert":
                        o = "Expert";
                        break;
                    case "pro_premium_expert":
                        o = "Ultimate";
                        break;
                    case "free":
                        o = "Basic"
                }
                return o
            }

            function b(e, o) {
                const r = o || new Date,
                    t = x(e),
                    n = r.getMonth() + t,
                    l = new Date(new Date(r).setMonth(n));
                return l.getMonth() > n % 12 && l.setDate(0),
                    function(e, o) {
                        const r = o.getTime() - e.getTime();
                        return Math.round(r / 1e3 / 60 / 60 / 24)
                    }(r, l)
            }

            function v(e, o, r) {
                return Math.round((o - e) * x(r))
            }

            function w(e, o, r = 0) {
                return e / (30 * x(o) + r) * (30 * x(n.BillingCycle.Monthly))
            }

            function x(e) {
                switch (e) {
                    case n.BillingCycle.TwoYears:
                        return 24;
                    case n.BillingCycle.OneYear:
                        return 12;
                    case n.BillingCycle.ThreeMonths:
                        return 3;
                    default:
                        return 1
                }
            }

            function k(e) {
                return (Math.round(100 * e) / 100).toFixed(2)
            }

            function F(e) {
                const o = Math.round(100 * e) / 100;
                return Math.round(o).toFixed(0)
            }

            function E(e) {
                return Math.floor(e).toString()
            }

            function C(e) {
                const o = Math.round(100 * e) / 100,
                    r = Math.round(o);
                return Math.abs(o - r) > 0 ? o.toFixed(2) : r.toFixed(0)
            }

            function q(e) {
                return Number.isInteger(e) ? e.toFixed(0) : (Math.round(10 * e) / 10).toFixed(1)
            }

            function B(e) {
                const o = Math.round(100 * e) / 100,
                    r = Math.round(10 * e) / 10,
                    t = Math.round(o);
                return Math.abs(o - t) > 0 ? Math.abs(o - r) > 0 ? o.toFixed(2) : r.toFixed(1) : t.toFixed(0)
            }

            function D(e) {
                const o = t.t(null, void 0, r(946530));
                if (g(e)) {
                    const r = m(p(e));
                    return o.format({
                        proPlanName: r
                    })
                }
                return m(e)
            }

            function N() {
                return !!window.user.date_joined && new Date(window.user.date_joined).getTime() < new Date("2022-05-26").getTime()
            }
        },
        79342: (e, o, r) => {
            r.r(o), r.d(o, {
                guid: () => n,
                randomHash: () => l,
                randomHashN: () => c
            });
            const t = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

            function n() {
                return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (e => {
                    const o = 16 * Math.random() | 0;
                    return ("x" === e ? o : 3 & o | 8).toString(16)
                }))
            }

            function l() {
                return c(12)
            }

            function c(e) {
                let o = "";
                for (let r = 0; r < e; ++r) {
                    const e = Math.floor(Math.random() * t.length);
                    o += t[e]
                }
                return o
            }
        },
        715050: (e, o, r) => {
            r.d(o, {
                parseHtml: () => n,
                parseHtmlElement: () => l
            });
            const t = new WeakMap;

            function n(e, o) {
                let r, n;
                return r = null == o ? document.documentElement : 9 === o.nodeType ? o.documentElement : o, t && (n = t.get(r)), n || (n = r.ownerDocument.createRange(), n.selectNodeContents(r), t && t.set(r, n)), n.createContextualFragment(e)
            }

            function l(e, o) {
                const r = n(e, o),
                    t = r.firstElementChild;
                return null !== t && r.removeChild(t), t
            }
        },
        523863: (e, o, r) => {
            function t(e) {
                return e.reduce((function(e, o, r) {
                    return ~e.indexOf(o) || e.push(o), e
                }), [])
            }
            r.r(o), r.d(o, {
                uniq: () => t
            })
        },
        226057: (e, o, r) => {
            function t(e) {
                return decodeURIComponent(e.replace(/\+/g, " ")).replace(/<\/?[^>]+(>|$)/g, "")
            }

            function n(e) {
                const o = /([^&=]+)=?([^&]*)/g,
                    r = {};
                if (!e) return r;
                let n = o.exec(e);
                for (; n;) r[t(n[1])] = t(n[2]), n = o.exec(e);
                return r
            }

            function l() {
                return n(window.location.search.substring(1))
            }

            function c() {
                const e = window.location.href.split("#")[0];
                window.history.replaceState("", document.title, e)
            }

            function i(e) {
                const o = [];
                for (const r in e) e.hasOwnProperty(r) && null != e[r] && o.push({
                    key: r,
                    pair: encodeURIComponent(r) + "=" + encodeURIComponent(e[r])
                });
                return o.sort(((e, o) => e.key > o.key ? 1 : e.key < o.key ? -1 : 0)).map((e => e.pair)).join("&")
            }
            r.d(o, {
                createUrlParams: () => i,
                getUrlParams: () => l,
                removeHashFromUrl: () => c
            })
        }
    }
]);